UNPKG

mobx-react

Version:

React bindings for MobX. Create fully reactive components.

3 lines (2 loc) 4.32 kB
function e(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function t(e,t,...n){t.locks++;try{let t;return null!=e&&(t=e.apply(this,n)),t}finally{t.locks--,0===t.locks&&t.methods.forEach(e=>{e.apply(this,n)})}}function n(e,n){return function(...r){t.call(this,e,n,...r)}}function r(e,t,n){const r=function(e,t){const n=e[y]=e[y]||{},r=n[t]=n[t]||{};return r.locks=r.locks||0,r.methods=r.methods||[],r}(e,t);r.methods.indexOf(n)<0&&r.methods.push(n);const i=Object.getOwnPropertyDescriptor(e,t);if(i&&i[g])return;const s=o(e,t,i?i.enumerable:void 0,r,e[t]);Object.defineProperty(e,t,s)}function o(e,t,r,i,s){let c=n(s,i);return{[g]:!0,get:function(){return c},set:function(s){if(this===e)c=n(s,i);else{const e=o(this,t,r,i,s);Object.defineProperty(this,t,e)}},configurable:!0,enumerable:r}}function i(e){var t;return null!=(t=e[O])?t:e[O]={reaction:null,mounted:!1,reactionInvalidatedBeforeMount:!1,forceUpdate:null,name:s(e.constructor),state:void 0,props:void 0,context:void 0}}function s(e){return e.displayName||e.name||"<component>"}function c(e){const t=e.bind(this),n=i(this);return function(){let e,r;if(n.reaction||(n.reaction=function(e){return new f(`${e.name}.render()`,()=>{if(e.mounted)try{null==e.forceUpdate||e.forceUpdate()}catch(n){var t;null==(t=e.reaction)||t.dispose(),e.reaction=null}else e.reactionInvalidatedBeforeMount=!0})}(n),n.mounted||v.register(this,n,this)),n.reaction.track(()=>{try{r=u(!1,t)}catch(t){e=t}}),e)throw e;return r}}function a(t,n){return p()&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==n||!function(t,n){if(e(t,n))return!0;if("object"!=typeof t||null===t||"object"!=typeof n||null===n)return!1;const r=Object.keys(t),o=Object.keys(n);if(r.length!==o.length)return!1;for(let o=0;o<r.length;o++)if(!Object.hasOwnProperty.call(n,r[o])||!e(t[r[o]],n[r[o]]))return!1;return!0}(this.props,t)}function l(e,t){if(t&&"class"!==t.kind)throw new Error("The @observer decorator can be used on classes only");return Object.prototype.isPrototypeOf.call(m.Component,e)||Object.prototype.isPrototypeOf.call(m.PureComponent,e)?function(e){const{prototype:t}=e;if(e[x]){const t=s(e);throw new Error(`The provided component class (${t}) has already been declared as an observer component.`)}if(e[x]=!0,t.componentWillReact)throw new Error("The componentWillReact life-cycle event is no longer supported");if(e.__proto__!==d)if(t.shouldComponentUpdate){if(t.shouldComponentUpdate!==a)throw new Error("It is not allowed to use shouldComponentUpdate in observer based components.")}else t.shouldComponentUpdate=a;const n=t.render;if("function"!=typeof n){const t=s(e);throw new Error(`[mobx-react] class component (${t}) is missing \`render\` method.\n\`observer\` requires \`render\` being a function defined on prototype.\n\`render = () => {}\` or \`render = function() {}\` is not supported.`)}t.render=function(){return Object.defineProperty(this,"render",{configurable:!1,writable:!1,value:p()?n:c.call(this,n)}),this.render()};const o=t.componentDidMount;return t.componentDidMount=function(){const e=i(this);return e.mounted=!0,v.unregister(this),e.forceUpdate=()=>this.forceUpdate(),e.reaction&&!e.reactionInvalidatedBeforeMount||e.forceUpdate(),null==o?void 0:o.apply(this,arguments)},r(t,"componentWillUnmount",function(){var e;if(p())return;const t=i(this);null==(e=t.reaction)||e.dispose(),t.reaction=null,t.forceUpdate=null,t.mounted=!1,t.reactionInvalidatedBeforeMount=!1}),e}(e):w(e)}import{_allowStateChanges as u,Reaction as f,observable as b}from"mobx";import*as m from"react";import{PureComponent as d,Component as h}from"react";import{isUsingStaticRendering as p,_observerFinalizationRegistry as v,observer as w}from"mobx-react-lite";export{Observer,_observerFinalizationRegistry,clearTimers,enableStaticRendering,isUsingStaticRendering,useLocalObservable}from"mobx-react-lite";const y=Symbol("patchMixins"),g=Symbol("patchedDefinition"),O=Symbol("ObserverAdministration"),x=Symbol("isMobXReactObserver");if(!h)throw new Error("mobx-react requires React to be available");if(!b)throw new Error("mobx-react requires mobx to be available");export{l as observer}; //# sourceMappingURL=mobxreact.esm.production.min.js.map