jsketcher/modules/ui/bind.js
2022-08-14 21:04:34 -07:00

16 lines
515 B
JavaScript

import React, {useContext} from 'react';
import {useStreamWithUpdater} from "./effects";
import {ReactApplicationContext} from "cad/dom/ReactApplicationContext";
export default function bind(streamProvider) {
return function (Component) {
return function Connected (props) {
const context = useContext(ReactApplicationContext);
const [value, updater] = useStreamWithUpdater(streamProvider(context, props));
return <Component value={value} onChange={updater} {...props} />;
};
};
}