UNPKG

recoil-toolkit

Version:
52 lines 2.12 kB
"use strict"; 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