UNPKG

jotai

Version:

👻 Next gen state management that will spook you

2 lines (1 loc) • 5.65 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("jotai")):"function"==typeof define&&define.amd?define(["exports","react","jotai"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jotaiDevtools={},e.React,e.jotai)}(this,(function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=function(e){return e.debugLabel?e+":"+e.debugLabel:""+e},a=function(e){var t={};e[0].forEach((function(e,n){t[u(n)]=e}));var n={};return e[1].forEach((function(e,t){n[u(t)]=Array.from(e).map(u)})),{values:t,dependents:n}};e.useAtomDevtools=function(e,r,o){var u;try{u=window.__REDUX_DEVTOOLS_EXTENSION__}catch(e){}var a=n.useAtom(e,o),i=a[0],c=a[1],s=t.useRef(i),l=t.useRef(!1),f=t.useRef(),d=r||e.debugLabel||e.toString();t.useEffect((function(){if(u){var t=function(t){"function"!=typeof c?console.warn("[Warn] you cannot do write operations (Time-travelling, etc) in read-only atoms\n",e):c(t)};f.current=u.connect({name:d});var n=f.current.subscribe((function(e){var n,r;if("ACTION"===e.type&&e.payload)try{t(JSON.parse(e.payload))}catch(e){console.error("please dispatch a serializable value that JSON.parse() support\n",e)}else if("DISPATCH"===e.type&&e.state){var o,u;"JUMP_TO_ACTION"!==(null==(o=e.payload)?void 0:o.type)&&"JUMP_TO_STATE"!==(null==(u=e.payload)?void 0:u.type)||(l.current=!0,t(JSON.parse(e.state)))}else if("DISPATCH"===e.type&&"COMMIT"===(null==(n=e.payload)?void 0:n.type)){var a;null==(a=f.current)||a.init(s.current)}else if("DISPATCH"===e.type&&"IMPORT_STATE"===(null==(r=e.payload)?void 0:r.type)){var i;((null==(i=e.payload.nextLiftedState)?void 0:i.computedStates)||[]).forEach((function(e,n){var r,o=e.state;0===n?null==(r=f.current)||r.init(o):t(o)}))}}));return f.current.shouldInit=!0,n}}),[e,u,d,c]),t.useEffect((function(){f.current&&(s.current=i,f.current.shouldInit?(f.current.init(i),f.current.shouldInit=!1):l.current?l.current=!1:f.current.send(d+" - "+(new Date).toLocaleString(),i))}),[e,u,d,i])},e.useAtomsDevtools=function(e,r){var u=n.SECRET_INTERNAL_getScopeContext(r),i=t.useContext(u),c=i.s,s=i.w;if(!c.n)throw new Error("useAtomsDevtools can only be used in dev mode.");var l=t.useState((function(){return[new Map,new Map]})),f=l[0],d=l[1];t.useEffect((function(){var e,t=function(){for(var e,t=new Map,n=new Map,r=o((null==(u=c.l)?void 0:u.call(c))||[]);!(e=r()).done;){var u,a,i,s=e.value,l=null==(a=c.a)?void 0:a.call(c,s);if(l){if(l.r===l.i)return;"v"in l&&t.set(s,l.v)}var f=null==(i=c.m)?void 0:i.call(c,s);f&&n.set(s,f.t)}d((function(e){return r=e[0],o=t,r.size===o.size&&Array.from(r).every((function(e){var t=e[0],n=e[1];return Object.is(o.get(t),n)}))&&function(e,t){return e.size===t.size&&Array.from(e).every((function(e){var n=e[0],r=e[1],o=t.get(n);return o&&r.size===o.size&&Array.from(r).every((function(e){return o.has(e)}))}))}(e[1],n)?e:[t,n];var r,o}))},n=null==(e=c.n)?void 0:e.call(c,t);return t(),n}),[c]);var v,p=t.useCallback((function(e){s?s((function(t){c.h(e,t)})):c.h(e)}),[c,s]);try{v=window.__REDUX_DEVTOOLS_EXTENSION__}catch(e){}if(!c.n)throw new Error("useAtomsSnapshot can only be used in dev mode.");var y=t.useRef(!1),h=t.useRef(!0),m=t.useRef(),E=t.useRef([]);t.useEffect((function(){if(v){var t=function(e){void 0===e&&(e=E.current.length-1);var t=E.current[e>=0?e:0];if(!t)throw new Error("snaphost index out of bounds");return t},n=v.connect({name:e}),r=n.subscribe((function(e){var r;if("DISPATCH"===e.type)switch(null==(r=e.payload)?void 0:r.type){case"RESET":break;case"COMMIT":n.init(a(t())),E.current=[];break;case"JUMP_TO_ACTION":case"JUMP_TO_STATE":y.current=!0,p(t(e.payload.actionId-1)[0]);break;case"PAUSE_RECORDING":h.current=!h.current}}));return m.current=n,m.current.shouldInit=!0,r}}),[v,p,e]),t.useEffect((function(){if(m.current)return m.current.shouldInit?(m.current.init(void 0),void(m.current.shouldInit=!1)):void(y.current?y.current=!1:h.current&&(E.current.push(f),m.current.send({type:""+E.current.length,updatedAt:(new Date).toLocaleString()},a(f))))}),[f])},e.useAtomsSnapshot=function(e){var r=n.SECRET_INTERNAL_getScopeContext(e),o=t.useContext(r).s;if(!o.n)throw new Error("useAtomsSnapshot can only be used in dev mode.");var u=t.useState((function(){return new Map})),a=u[0],i=u[1];return t.useEffect((function(){var e,t=function(){var e,t=Array.from((null==(e=o.l)?void 0:e.call(o))||[]);i(function(e,t){var n=t.map((function(t){var n,r,o=null!=(n=null==(r=e.a)?void 0:r.call(e,t))?n:{};return[t,"v"in o?o.v:void 0]}));return new Map(n)}(o,t))},n=null==(e=o.n)?void 0:e.call(o,t);return t(),n}),[o]),a},e.useGotoAtomsSnapshot=function(e){var r=n.SECRET_INTERNAL_getScopeContext(e),o=t.useContext(r).s;if(!o.n)throw new Error("useGotoAtomsSnapshot can only be used in dev mode.");return t.useCallback((function(e){o.h(e)}),[o])},Object.defineProperty(e,"__esModule",{value:!0})}));