reactant
Version:
A framework for building React web applications
2 lines (1 loc) • 4.12 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("reactant-module"),require("react"),require("react-redux")):"function"==typeof define&&define.amd?define(["exports","reactant-module","react","react-redux"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).reactant={},e.reactantModule,e.React,e.reactRedux)}(this,(function(e,t,r,o){"use strict";var n=function(){return n=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},n.apply(this,arguments)};function a(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i}function i(e,t,r){if(r||2===arguments.length)for(var o,n=0,a=t.length;n<a;n++)!o&&n in t||(o||(o=Array.prototype.slice.call(t,0,n)),o[n]=t[n]);return e.concat(o||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var l=r.createContext(null);function c(e){var c=e.main,u=e.render,d=e.modules,s=void 0===d?[]:d,f=e.containerOptions,p=e.preloadedState,y=e.devOptions,v=i(i([],a(s),!1),[c],!1),m=new Map,h=new Map,b={},S=t.createContainer({ServiceIdentifiers:m,modules:v,options:n(n({defaultScope:"Singleton"},f),{skipBaseClassChecks:!0})}),g={middleware:[],beforeCombineRootReducers:[],afterCombineRootReducers:[],enhancer:[],preloadedStateHandler:[],afterCreateStore:[],provider:[]},w=new Set,M=function(e,r){var o=t.getMetadata(t.METADATA_KEY.multiple),n=e.filter((function(e){var t="function"==typeof e?e:"object"==typeof e?e.provide:void 0;return!t||(o.has(t)||!o.has(t)&&!S.isBound(t))}));t.bindModules(S,n),t.createStore({modules:n,container:S,ServiceIdentifiers:m,loadedModules:w,load:M,dynamicModules:h,pluginHooks:g,preloadedState:void 0,devOptions:y,originalStore:E,beforeReplaceReducer:function(){null==r||r(S)},modulesMap:b})},E=t.createStore({modules:v,container:S,ServiceIdentifiers:m,loadedModules:w,load:M,dynamicModules:h,pluginHooks:g,preloadedState:p,devOptions:y,modulesMap:b}),O=null===E.getState(),x=S.get("object"==typeof c?c.provide:c);return{instance:x,container:S,store:O?null:E,modules:x[t.modulesKey],destroy:function(){var e=x[t.modulesKey];Object.keys(e).forEach((function(r){var o,n,a=e[r],i=null==a?void 0:a[t.unsubscriptionsKey];if(i)try{for(var l=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(i),c=l.next();!c.done;c=l.next()){(0,c.value)()}}catch(e){o={error:e}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(o)throw o.error}}}))},bootstrap:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(!(x instanceof t.ViewModule))throw new Error("Main module should be a 'ViewModule'.");var c=e[0],d="function"==typeof c?c(x.component):r.createElement(x.component,null),s=g.provider.reverse().reduce((function(e,t){return r.createElement(t,null,e)}),d),f=O?r.createElement(l.Provider,{value:S},s):r.createElement(l.Provider,{value:S},r.createElement(o.Provider,{store:E},s));return u.apply(void 0,i([(null==y?void 0:y.strict)?r.createElement(r.StrictMode,null,f):f],a(e),!1))}}}var u=o.batch;e.ContainerContext=l,e.batch=u,e.createApp=c,e.testBed=function(e){return c(n(n({},e),{render:e.render||function(){console.log("No render function is configured.")}}))},e.useConnector=function(e,n){try{var a=r.useContext(l);return o.useSelector((function(){return e(a)}),n||t.areShallowEqualWithObject)}catch(e){try{o.useStore()}catch(t){throw console.error("No class with a field decorated by '@state' is injected."),e}throw e}},Object.keys(t).forEach((function(r){"default"===r||Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[r]}})}))}));