UNPKG

mobx-react-lite

Version:

Lightweight React bindings for MobX based on React 16.8+ and Hooks

3 lines (2 loc) 5.59 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("mobx"),t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,o=require("react-dom");if(!t.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!r.makeObservable)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");function u(e){e()}function i(e){e||(e=u),r.configure({reactionScheduler:e})}function a(e){return r.getDependencyTree(e)}var c="undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry;function f(e){return{reaction:e,mounted:!1,changedBeforeMount:!1,cleanAt:Date.now()+s}}var s=1e4;function l(e){var r=new Map,t=1,n=new e((function(e){var t=r.get(e);t&&(t.reaction.dispose(),r.delete(e))}));return{addReactionToTrack:function(e,o,u){var i=t++;return n.register(u,i,e),e.current=f(o),e.current.finalizationRegistryCleanupToken=i,r.set(i,e.current),e.current},recordReactionAsCommitted:function(e){n.unregister(e),e.current&&e.current.finalizationRegistryCleanupToken&&r.delete(e.current.finalizationRegistryCleanupToken)},forceCleanupTimerToRunNowForTests:function(){},resetCleanupScheduleForTests:function(){}}}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function p(){var e,r=new Set;function t(){void 0===e&&(e=setTimeout(n,1e4))}function n(){e=void 0;var n=Date.now();r.forEach((function(e){var t=e.current;t&&n>=t.cleanAt&&(t.reaction.dispose(),e.current=null,r.delete(e))})),r.size>0&&t()}return{addReactionToTrack:function(e,n,o){return e.current=f(n),r.add(e),t(),e.current},recordReactionAsCommitted:function(e){r.delete(e)},forceCleanupTimerToRunNowForTests:function(){e&&(clearTimeout(e),n())},resetCleanupScheduleForTests:function(){if(r.size>0){for(var t,n=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return d(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,void 0):void 0}}(e))){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r);!(t=n()).done;){var o=t.value,u=o.current;u&&(u.reaction.dispose(),o.current=null)}r.clear()}e&&(clearTimeout(e),e=void 0)}}}var v=c?l(c):p(),m=v.addReactionToTrack,b=v.recordReactionAsCommitted,y=v.resetCleanupScheduleForTests,w=!1;function h(e){w=e}function g(){return w}function T(e){return"observer"+e}var R=function(){};function S(){return new R}function x(e,t){if(void 0===t&&(t="observed"),g())return e();var o=n.useState(S)[0],u=n.useState()[1],i=function(){return u([])},c=n.useRef(null);if(!c.current)var f=new r.Reaction(T(t),(function(){s.mounted?i():s.changedBeforeMount=!0})),s=m(c,f,o);var l,d,p=c.current.reaction;if(n.useDebugValue(p,a),n.useEffect((function(){return b(c),c.current?(c.current.mounted=!0,c.current.changedBeforeMount&&(c.current.changedBeforeMount=!1,i())):(c.current={reaction:new r.Reaction(T(t),(function(){i()})),mounted:!0,changedBeforeMount:!1,cleanAt:Infinity},i()),function(){c.current.reaction.dispose(),c.current=null}}),[]),p.track((function(){try{l=e()}catch(e){d=e}})),d)throw d;return l}var O="function"==typeof Symbol&&Symbol.for,A=O?Symbol.for("react.forward_ref"):"function"==typeof t.forwardRef&&t.forwardRef((function(e){return null})).$$typeof,C=O?Symbol.for("react.memo"):"function"==typeof t.memo&&t.memo((function(e){return null})).$$typeof,$={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function k(e){var r=e.children||e.render;return"function"!=typeof r?null:x(r)}function j(e){var n=t.useState((function(){return r.observable(e,{},{deep:!1})}))[0];return r.runInAction((function(){Object.assign(n,e)})),n}k.displayName="Observer",i(o.unstable_batchedUpdates),exports.Observer=k,exports.clearTimers=y,exports.enableStaticRendering=h,exports.isObserverBatched=function(){return!0},exports.isUsingStaticRendering=g,exports.observer=function(e,r){var n;if(C&&e.$$typeof===C)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(g())return e;var o=null!=(n=null==r?void 0:r.forwardRef)&&n,u=e,i=e.displayName||e.name;if(A&&e.$$typeof===A&&(o=!0,"function"!=typeof(u=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var a,c,f=function(e,r){return x((function(){return u(e,r)}),i)};return""!==i&&(f.displayName=i),e.contextTypes&&(f.contextTypes=e.contextTypes),o&&(f=t.forwardRef(f)),f=t.memo(f),a=e,c=f,Object.keys(a).forEach((function(e){$[e]||Object.defineProperty(c,e,Object.getOwnPropertyDescriptor(a,e))})),f},exports.observerBatching=i,exports.useAsObservableSource=j,exports.useLocalObservable=function(e,n){return t.useState((function(){return r.observable(e(),n,{autoBind:!0})}))[0]},exports.useLocalStore=function(e,n){var o=n&&j(n);return t.useState((function(){return r.observable(e(o),void 0,{autoBind:!0})}))[0]},exports.useObserver=function(e,r){return void 0===r&&(r="observed"),x(e,r)},exports.useStaticRendering=function(e){h(e)}; //# sourceMappingURL=mobxreactlite.cjs.production.min.js.map