ts-bus
Version:
<p align="center"> <img src="logo.png" width="100" height="100"/> </p>
31 lines • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var react_2 = require("./react");
exports.stateSubscriber = function () {
var definition = [];
for (var _i = 0; _i < arguments.length; _i++) {
definition[_i] = arguments[_i];
}
return function (dispatch, bus) {
return bus.subscribe(definition, function (ev) { return dispatch(ev.payload); });
};
};
var useStateCreator = function (subscriber) { return function (initState) {
var bus = react_2.useBus();
var _a = react_1.useState(initState), state = _a[0], dispatch = _a[1];
react_1.useLayoutEffect(function () { return subscriber(dispatch, bus); }, [dispatch, bus]);
return state;
}; };
function useBusState(initState, event) {
var bus = react_2.useBus();
var useState = useStateCreator(function (dispatch, bus) {
return bus.subscribe(event, function (ev) { return dispatch(ev.payload); });
});
return useState(initState);
}
exports.useBusState = useBusState;
useBusState.configure = function (options) {
return useStateCreator(options.subscriber);
};
//# sourceMappingURL=useBusState.js.map