recoil-toolkit
Version:
52 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RecoilDevTools = void 0;
var react_1 = require("react");
var recoil_1 = require("recoil");
var consts_1 = require("./consts");
var getSnapshotState_1 = require("./getSnapshotState");
/*const stringifyCircularJSON = obj => {
const seen = new WeakSet();
return JSON.stringify(obj, (k, v) => {
if (v !== null && typeof v === 'object') {
if (seen.has(v)) return '[Circular]';
seen.add(v);
}
return v;
});
};*/
var RecoilDevTools = function (_a) {
var enableConsole = _a.enableConsole, forceSerialize = _a.forceSerialize, serializer = _a.serializer;
var snapshot = (0, recoil_1.useRecoilSnapshot)();
(0, react_1.useEffect)(function () {
window.postMessage({ type: consts_1.RecoilToolkitDevTools.enableConsole, enable: !!enableConsole }, '*');
}, [enableConsole]);
/** Send Snapshot to DevTools **/
(0, react_1.useEffect)(function () {
var snapState = (0, getSnapshotState_1.getSnapshotState)(snapshot);
window.postMessage({
type: consts_1.RecoilToolkitDevTools.eventMessageFromPage,
data: forceSerialize
? JSON.parse(serializer ? serializer(snapState) : JSON.stringify(snapState))
: snapState,
}, '*');
}, [snapshot]); //eslint-disable-line
/** Listen messages from DevTools **/
(0, react_1.useEffect)(function () {
var onMessage = function (event) {
// We only accept messages from ourselves
if (event.source !== window)
return;
if (event.data.type && event.data.type === consts_1.RecoilToolkitDevTools.eventMessageToPage) {
console.log('DebugObserver Message Received: ', event.data);
}
};
window.addEventListener('message', onMessage, false);
return function () {
window.removeEventListener('message', onMessage, false);
};
}, []);
return null;
};
exports.RecoilDevTools = RecoilDevTools;
//# sourceMappingURL=RecoilDevTools.js.map