undux
Version:
Dead simple state management for React
43 lines • 1.42 kB
JavaScript
export function withReduxDevtools(store) {
let devtools = window.__REDUX_DEVTOOLS_EXTENSION__;
if (!devtools) {
console.error('Undux withReduxDevtools plugin: Cannot find Redux Devtools browser extension. Is it installed?');
return store;
}
let devTools = devtools.connect();
let wasTriggeredByDevtools = false;
let jumpToState = (newState) => {
let oldState = store.getState();
for (let key in newState) {
if (key in oldState) {
wasTriggeredByDevtools = true;
store.set(key)(newState[key]);
wasTriggeredByDevtools = false;
}
}
};
devTools.subscribe((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(({ key }) => {
if (wasTriggeredByDevtools) {
return;
}
devTools.send(key, store.getState());
});
return store;
}
//# sourceMappingURL=withReduxDevtools.js.map