undux
Version:
Dead simple state management for React
48 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withReduxDevtools = void 0;
function withReduxDevtools(store) {
var devtools = window.__REDUX_DEVTOOLS_EXTENSION__;
if (!devtools) {
console.error('Undux withReduxDevtools plugin: Cannot find Redux Devtools browser extension. Is it installed?');
return store;
}
var devTools = devtools.connect();
var wasTriggeredByDevtools = false;
var jumpToState = function (newState) {
var oldState = store.getState();
for (var key in newState) {
if (key in oldState) {
wasTriggeredByDevtools = true;
store.set(key)(newState[key]);
wasTriggeredByDevtools = false;
}
}
};
devTools.subscribe(function (message) {
switch (message.type) {
case 'START':
devTools.send(null, store.getState());
return;
case 'DISPATCH':
if (!message.state) {
return;
}
switch (message.payload.type) {
case 'JUMP_TO_ACTION':
case 'JUMP_TO_STATE':
jumpToState(JSON.parse(message.state));
}
}
});
store.onAll().subscribe(function (_a) {
var key = _a.key;
if (wasTriggeredByDevtools) {
return;
}
devTools.send(key, store.getState());
});
return store;
}
exports.withReduxDevtools = withReduxDevtools;
//# sourceMappingURL=withReduxDevtools.js.map