mobx-react-lite
Version:
Lightweight React bindings for MobX based on React 16.8+ and Hooks
3 lines (2 loc) • 4.41 kB
JavaScript
import{makeObservable as e,configure as t,getDependencyTree as r,Reaction as n,observable as o,runInAction as i}from"mobx";import a,{useState as u,forwardRef as s,memo as c}from"react";import{unstable_batchedUpdates as f}from"react-dom";import{useSyncExternalStore as l}from"use-sync-external-store/shim";if(!u)throw new Error("mobx-react-lite requires React with Hooks support");if(!e)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");function p(e){e()}function m(e){e||(e=p),t({reactionScheduler:e})}var d=function(){return!0};function v(e){return r(e)}var y=!1;function b(e){y=e}function h(){return y}var w,g,S=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:function(){function e(e){var t=this;this.finalize=void 0,this.registrations=new Map,this.sweepTimeout=void 0,this.sweep=function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var r=Date.now();t.registrations.forEach((function(n,o){r-n.registeredAt>=e&&(t.finalize(n.value),t.registrations.delete(o))})),t.registrations.size>0&&t.scheduleSweep()},this.finalizeAllImmediately=function(){t.sweep(0)},this.finalize=e}var t=e.prototype;return t.register=function(e,t,r){this.registrations.set(r,{value:t,registeredAt:Date.now()}),this.scheduleSweep()},t.unregister=function(e){this.registrations.delete(e)},t.scheduleSweep=function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))},e}())((function(e){var t;null==(t=e.reaction)||t.dispose(),e.reaction=null}));function x(e){e.reaction=new n("observer"+e.name,(function(){e.stateVersion=Symbol(),null==e.onStoreChange||e.onStoreChange()}))}function O(e,t){if(void 0===t&&(t="observed"),h())return e();var r=a.useRef(null);if(!r.current){var n={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:t,subscribe:function(e){return S.unregister(n),n.onStoreChange=e,n.reaction||(x(n),n.stateVersion=Symbol()),function(){var e;n.onStoreChange=null,null==(e=n.reaction)||e.dispose(),n.reaction=null}},getSnapshot:function(){return n.stateVersion}};r.current=n}var o,i,u=r.current;if(u.reaction||(x(u),S.register(r,u,u)),a.useDebugValue(u.reaction,v),l(u.subscribe,u.getSnapshot,u.getSnapshot),u.reaction.track((function(){try{o=e()}catch(e){i=e}})),i)throw i;return o}var T="function"==typeof Symbol&&Symbol.for,$=null!=(w=null==(g=Object.getOwnPropertyDescriptor((function(){}),"name"))?void 0:g.configurable)&&w,z=T?Symbol.for("react.forward_ref"):"function"==typeof s&&s((function(e){return null})).$$typeof,R=T?Symbol.for("react.memo"):"function"==typeof c&&c((function(e){return null})).$$typeof;function j(e,t){var r;if(R&&e.$$typeof===R)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(h())return e;var n=null!=(r=null==t?void 0:t.forwardRef)&&r,o=e,i=e.displayName||e.name;if(z&&e.$$typeof===z&&(n=!0,"function"!=typeof(o=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var a,u,f=function(e,t){return O((function(){return o(e,t)}),i)};return f.displayName=e.displayName,$&&Object.defineProperty(f,"name",{value:e.name,writable:!0,configurable:!0}),e.contextTypes&&(f.contextTypes=e.contextTypes),n&&(f=s(f)),f=c(f),a=e,u=f,Object.keys(a).forEach((function(e){C[e]||Object.defineProperty(u,e,Object.getOwnPropertyDescriptor(a,e))})),f}var E,C={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function D(e){var t=e.children||e.render;return"function"!=typeof t?null:O(t)}function N(e,t){return u((function(){return o(e(),t,{autoBind:!0})}))[0]}function V(e){var t=u((function(){return o(e,{},{deep:!1})}))[0];return i((function(){Object.assign(t,e)})),t}function A(e,t){var r=t&&V(t);return u((function(){return o(e(r),void 0,{autoBind:!0})}))[0]}D.displayName="Observer",m(f);var F=null!=(E=S.finalizeAllImmediately)?E:function(){};function P(e,t){return void 0===t&&(t="observed"),O(e,t)}function k(e){b(e)}export{D as Observer,S as _observerFinalizationRegistry,F as clearTimers,b as enableStaticRendering,d as isObserverBatched,h as isUsingStaticRendering,j as observer,m as observerBatching,V as useAsObservableSource,N as useLocalObservable,A as useLocalStore,P as useObserver,k as useStaticRendering};
//# sourceMappingURL=mobxreactlite.esm.production.min.js.map