UNPKG

ts-bus

Version:

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

51 lines 1.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importDefault(require("react")); var react_2 = require("./react"); function indentity(a) { return a; } function _defaultSubscriber(dispatch, bus) { return bus.subscribe("**", dispatch); } exports._defaultSubscriber = _defaultSubscriber; exports.reducerSubscriber = function () { var definition = []; for (var _i = 0; _i < arguments.length; _i++) { definition[_i] = arguments[_i]; } return function (dispatch, bus) { return bus.subscribe(definition, dispatch); }; }; var useReducerCreator = function (subscriber, useReducer) { if (subscriber === void 0) { subscriber = _defaultSubscriber; } if (useReducer === void 0) { useReducer = react_1.default.useReducer; } return function (reducer, initState, init) { if (init === void 0) { init = indentity; } // Pull the bus from context var bus = react_2.useBus(); // Run the reducer var _a = useReducer(reducer, initState, init), state = _a[0], dispatch = _a[1]; // Run the subscriber synchronously react_1.default.useLayoutEffect(function () { return subscriber(dispatch, bus); }, [ subscriber, dispatch, bus ]); return state; }; }; function useBusReducer(reducer, initState, init) { if (init === void 0) { init = indentity; } var useReducerFn = useReducerCreator(_defaultSubscriber); return useReducerFn(reducer, initState, init); } exports.useBusReducer = useBusReducer; useBusReducer.configure = function (options) { return useReducerCreator(options.subscriber, options.useReducer); }; //# sourceMappingURL=useBusReducer.js.map