UNPKG

react-sweet-state

Version:

Global + local state combining the best of Redux and Context API

86 lines (69 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defaults = _interopRequireDefault(require("../defaults")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var connectDevTools = function connectDevTools(storeState, config) { var devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({ name: "Store ".concat(storeState.key), serialize: true, trace: true }, config)); devTools.init(storeState.getState()); devTools.subscribe(function (message) { if (message.type === 'DISPATCH') { switch (message.payload.type) { case 'RESET': storeState.resetState(); devTools.init(storeState.getState()); return; case 'COMMIT': devTools.init(storeState.getState()); return; case 'ROLLBACK': storeState.setState(JSON.parse(message.state)); devTools.init(storeState.getState()); return; case 'JUMP_TO_STATE': case 'JUMP_TO_ACTION': storeState.setState(JSON.parse(message.state)); return; } } else if (message.type === 'ACTION') { var action = JSON.parse(message.payload); storeState.setState(action.payload); } }); return devTools; }; var withDevtools = function withDevtools(createStoreState) { return function () { var storeState = createStoreState.apply(void 0, arguments); if (_defaults["default"].devtools && window && window.__REDUX_DEVTOOLS_EXTENSION__) { var origMutator = storeState.mutator; var devTools; var devtoolMutator = function devtoolMutator(arg) { var result = origMutator(arg); try { if (!devTools) { var config = typeof _defaults["default"].devtools === 'function' ? _defaults["default"].devtools(storeState) : {}; devTools = connectDevTools(storeState, config); } devTools.send({ type: storeState.mutator.actionName, payload: arg }, storeState.getState(), {}, storeState.key); } catch (err) { /* ignore devtools errors */ } return result; }; storeState.mutator = devtoolMutator; } return storeState; }; }; var _default = withDevtools; exports["default"] = _default;