UNPKG

@ogre-tools/injectable-extension-for-mobx

Version:

MobX support for Injectable in Ogre Tools

1 lines 2.08 kB
(()=>{"use strict";var e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{computedInjectManyInjectable:()=>m,computedInjectManyWithMetaInjectable:()=>b,registerMobX:()=>g});const n=require("@ogre-tools/injectable"),i=require("mobx"),a=Symbol("isInternalOfComputedInjectMany"),c=(0,n.getInjectable)({id:"invalidability-for-reactive-instances",instantiate:(e,t)=>(0,i.createAtom)(`reactivity-for-${t.id}`),lifecycle:n.lifecycleEnum.keyedSingleton({getInstanceKey:(e,t)=>t}),[a]:!0,decorable:!1}),o=e=>t=>{t.injectionToken&&e.inject(c,t.injectionToken).reportChanged()},r=(0,n.getInjectable)({id:"invalidate-reactive-instances-on-register",instantiate:o,injectionToken:n.registrationCallbackToken,[a]:!0,decorable:!1}),l=(0,n.getInjectable)({id:"invalidate-reactive-instances-on-deregister",instantiate:o,injectionToken:n.deregistrationCallbackToken,[a]:!0,decorable:!1}),s=({id:e,methodInDiToInjectMany:t})=>(0,n.getInjectable)({id:e,instantiate:(e,{injectionToken:n,instantiationParameter:a})=>{const o=e.inject(c,n);return(0,i.computed)((()=>(o.reportObserved(),e[t](n,a))))},lifecycle:n.lifecycleEnum.keyedSingleton({getInstanceKey:(e,{injectionToken:t,instantiationParameter:i})=>(0,n.getKeyedSingletonCompositeKey)(t,i)}),cannotCauseCycles:!0}),d=s({id:"reactive-instances",methodInDiToInjectMany:"injectMany"}),y=s({id:"reactive-instances-with-meta",methodInDiToInjectMany:"injectManyWithMeta"}),j=({id:e,reactiveInstances:t})=>(0,n.getInjectable)({id:e,instantiate:e=>(n,i)=>e.inject(t,{injectionToken:n,instantiationParameter:i}),lifecycle:n.lifecycleEnum.transient,cannotCauseCycles:!0}),m=j({id:"computed-inject-many",reactiveInstances:d}),b=j({id:"computed-inject-many-with-meta",reactiveInstances:y}),g=e=>{(0,i.runInAction)((()=>{e.register(c,d,y,m,b,r,l)}))};module.exports=t})();