UNPKG

ts-bus

Version:

<p align="center"> <img src="logo.png" width="100" height="100"/> </p>

31 lines 1.18 kB
"use strict"; 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