UNPKG

mobx-react-lite

Version:

Lightweight React bindings for MobX based on function components and Hooks

3 lines (2 loc) 3.58 kB
function e(e){p=e}function t(){return p}function r(e){e.reaction=new c(`observer${e.name}`,()=>{e.stateVersion=Symbol(),null==e.onStoreChange||e.onStoreChange()})}function n(e,n="observed"){if(t())return e();const o=b.useRef(null);if(!o.current){const e={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:n,subscribe:t=>(y.unregister(e),e.onStoreChange=t,e.reaction||(r(e),e.stateVersion=Symbol()),()=>{var t;e.onStoreChange=null,null==(t=e.reaction)||t.dispose(),e.reaction=null}),getSnapshot:()=>e.stateVersion};o.current=e}const i=o.current;let a,s;if(i.reaction||(r(i),y.register(o,i,i)),b.useDebugValue(i.reaction,l),b.useSyncExternalStore(i.subscribe,i.getSnapshot,i.getSnapshot),i.reaction.track(()=>{try{a=e()}catch(e){s=e}}),s)throw s;return a}function o(e){if(x&&e.$$typeof===x)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(t())return e;let r=!1,o=e;const i=e.displayName||e.name;if(O&&e.$$typeof===O&&(r=!0,o=e.render,"function"!=typeof o))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");let a=(e,t)=>n(()=>o(e,t),i);var s,l;return a.displayName=e.displayName,R&&Object.defineProperty(a,"name",{value:e.name,writable:!0,configurable:!0}),r&&(a=h(a)),a=v(a),s=e,l=a,Object.keys(s).forEach(e=>{j[e]||Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(s,e))}),a}function i({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:n(r)}function a(e,t){return f(()=>u(e(),t,{autoBind:!0}))[0]}import{_getGlobalState as s,getDependencyTree as l,Reaction as c,observable as u}from"mobx";import b,{useState as f,useSyncExternalStore as m,forwardRef as h,memo as v}from"react";var d;if(!f||!m)throw new Error("mobx-react-lite requires React 18 or later");if(!((null==s||null==(d=s())?void 0:d.version)>=7))throw new Error("mobx-react-lite requires mobx at least version 7 to be available");const y=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 p=!1;var w,S;const g="function"==typeof Symbol&&Symbol.for,R=null!=(w=null==(S=Object.getOwnPropertyDescriptor(()=>{},"name"))?void 0:S.configurable)&&w,O=g?Symbol.for("react.forward_ref"):"function"==typeof h&&h(()=>null).$$typeof,x=g?Symbol.for("react.memo"):"function"==typeof v&&v(()=>null).$$typeof,j={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};var E;i.displayName="Observer";const T=null!=(E=y.finalizeAllImmediately)?E:()=>{};export{i as Observer,y as _observerFinalizationRegistry,T as clearTimers,e as enableStaticRendering,t as isUsingStaticRendering,o as observer,a as useLocalObservable}; //# sourceMappingURL=mobxreactlite.esm.production.min.js.map