mobx-react-lite
Version:
Lightweight React bindings for MobX based on React 16.8+ and Hooks
3 lines (2 loc) • 4.52 kB
JavaScript
import{makeObservable as e,configure as r,getDependencyTree as t,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),r({reactionScheduler:e})}var d=function(){return!0};function v(e){return t(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 r=this;this.finalize=void 0,this.registrations=new Map,this.sweepTimeout=void 0,this.sweep=function(e){void 0===e&&(e=1e4),clearTimeout(r.sweepTimeout),r.sweepTimeout=void 0;var t=Date.now();r.registrations.forEach((function(n,o){t-n.registeredAt>=e&&(r.finalize(n.value),r.registrations.delete(o))})),r.registrations.size>0&&r.scheduleSweep()},this.finalizeAllImmediately=function(){r.sweep(0)},this.finalize=e}var r=e.prototype;return r.register=function(e,r,t){this.registrations.set(t,{value:r,registeredAt:Date.now()}),this.scheduleSweep()},r.unregister=function(e){this.registrations.delete(e)},r.scheduleSweep=function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))},e}())((function(e){var r;null==(r=e.reaction)||r.dispose(),e.reaction=null}));function O(e){e.reaction=new n("observer"+e.name,(function(){e.stateVersion=Symbol(),null==e.onStoreChange||e.onStoreChange()}))}function x(e,r){if(void 0===r&&(r="observed"),h())return e();var t=a.useRef(null);if(!t.current){var n={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:r,subscribe:function(e){return S.unregister(n),n.onStoreChange=e,n.reaction||(O(n),n.stateVersion=Symbol()),function(){var e;n.onStoreChange=null,null==(e=n.reaction)||e.dispose(),n.reaction=null}},getSnapshot:function(){return n.stateVersion}};t.current=n}var o,i,u=t.current;if(u.reaction||(O(u),S.register(t,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,r){var t;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!=(t=null==r?void 0:r.forwardRef)&&t,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,r){return x((function(){return o(e,r)}),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){E[e]||Object.defineProperty(u,e,Object.getOwnPropertyDescriptor(a,e))})),f}var D,E={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function C(e){var r=e.children,t=e.render;r&&t&&console.error("MobX Observer: Do not use children and render in the same time in `Observer`");var n=r||t;return"function"!=typeof n?null:x(n)}function N(e,r){return u((function(){return o(e(),r,{autoBind:!0})}))[0]}function V(e){var r=u((function(){return o(e,{},{deep:!1})}))[0];return i((function(){Object.assign(r,e)})),r}function A(e,r){var t=r&&V(r);return u((function(){return o(e(t),void 0,{autoBind:!0})}))[0]}C.displayName="Observer",m(f);var F=null!=(D=S.finalizeAllImmediately)?D:function(){};function P(e,r){return void 0===r&&(r="observed"),x(e,r)}function k(e){b(e)}export{C 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