mobx-react-lite
Version:
Lightweight React bindings for MobX based on function components and Hooks
3 lines (2 loc) • 3.98 kB
JavaScript
var e,t;e=this,t=function(e,t,r){function n(){return c}function o(e){e.reaction=new t.Reaction(`observer${e.name}`,()=>{e.stateVersion=Symbol(),null==e.onStoreChange||e.onStoreChange()})}function i(e,r="observed"){if(n())return e();const i=u.default.useRef(null);if(!i.current){const e={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:r,subscribe:t=>(a.unregister(e),e.onStoreChange=t,e.reaction||(o(e),e.stateVersion=Symbol()),()=>{var t;e.onStoreChange=null,null==(t=e.reaction)||t.dispose(),e.reaction=null}),getSnapshot:()=>e.stateVersion};i.current=e}const l=i.current;let s,c;if(l.reaction||(o(l),a.register(i,l,l)),u.default.useDebugValue(l.reaction,t.getDependencyTree),u.default.useSyncExternalStore(l.subscribe,l.getSnapshot,l.getSnapshot),l.reaction.track(()=>{try{s=e()}catch(e){c=e}}),c)throw c;return s}function l({children:e,render:t}){e&&t&&console.error("MobX Observer: Do not use children and render in the same time in `Observer`");const r=e||t;return"function"!=typeof r?null:i(r)}var s,u=function(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}(r);if(!r.useState||!r.useSyncExternalStore)throw new Error("mobx-react-lite requires React 18 or later");if(!((null==t._getGlobalState||null==(s=t._getGlobalState())?void 0:s.version)>=7))throw new Error("mobx-react-lite requires mobx at least version 7 to be available");const a=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:class{constructor(e){this.finalize=void 0,this.registrations=new Map,this.sweepTimeout=void 0,this.sweep=(e=1e4)=>{clearTimeout(this.sweepTimeout),this.sweepTimeout=void 0;const t=Date.now();this.registrations.forEach((r,n)=>{t-r.registeredAt>=e&&(this.finalize(r.value),this.registrations.delete(n))}),this.registrations.size>0&&this.scheduleSweep()},this.finalizeAllImmediately=()=>{this.sweep(0)},this.finalize=e}register(e,t,r){this.registrations.set(r,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}unregister(e){this.registrations.delete(e)}scheduleSweep(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}})(e=>{var t;null==(t=e.reaction)||t.dispose(),e.reaction=null});let c=!1;var f,b;const h="function"==typeof Symbol&&Symbol.for,d=null!=(f=null==(b=Object.getOwnPropertyDescriptor(()=>{},"name"))?void 0:b.configurable)&&f,m=h?Symbol.for("react.forward_ref"):"function"==typeof r.forwardRef&&r.forwardRef(()=>null).$$typeof,p=h?Symbol.for("react.memo"):"function"==typeof r.memo&&r.memo(()=>null).$$typeof,y={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};var v;l.displayName="Observer";const w=null!=(v=a.finalizeAllImmediately)?v:()=>{};e.Observer=l,e._observerFinalizationRegistry=a,e.clearTimers=w,e.enableStaticRendering=function(e){c=e},e.isUsingStaticRendering=n,e.observer=function(e){if(p&&e.$$typeof===p)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");if(n())return e;let t=!1,o=e;const l=e.displayName||e.name;if(m&&e.$$typeof===m&&(t=!0,o=e.render,"function"!=typeof o))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");let s=(e,t)=>i(()=>o(e,t),l);var u,a;return s.displayName=e.displayName,d&&Object.defineProperty(s,"name",{value:e.name,writable:!0,configurable:!0}),t&&(s=r.forwardRef(s)),s=r.memo(s),u=e,a=s,Object.keys(u).forEach(e=>{y[e]||Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(u,e))}),s},e.useLocalObservable=function(e,n){return r.useState(()=>t.observable(e(),n,{autoBind:!0}))[0]},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("mobx"),require("react")):"function"==typeof define&&define.amd?define(["exports","mobx","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).mobxReactLite={},e.mobx,e.React);
//# sourceMappingURL=mobxreactlite.umd.production.min.js.map