react-ioc
Version:
Hierarchical Dependency Injection for React
3 lines (2 loc) • 2.83 kB
JavaScript
import"reflect-metadata";import{__extends as n}from"tslib";import t from"hoist-non-react-statics";import{Component as r,createContext as u,createElement as e,useContext as i,useRef as o}from"react";function f(n){return"function"==typeof n}function c(n){return n&&"object"==typeof n}var a=u(null),l=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return n(r,t),r}(r);function v(n){var t=n[b];return t||((t=s||n.context)instanceof l?(n[b]=t,t):null)}var s=null,b="function"==typeof Symbol?Symbol():"__injector__";function m(n,t){for(p.length>0&&(p.forEach(function(n){n()}),p.length=0);n;){var r=n.n.get(t);if(void 0!==r)return r;var u=n.t.get(t);if(u){var e=s;s=n;try{r=u(n)}finally{s=e}return n.n.set(t,r),r}n=n.r}}var p=[];function y(n,t){return f(t)?h(n,t):t?u(n,t):(r=n,u);var r;function u(n,t){n.constructor.contextType=a,r||(r=Reflect.getMetadata("design:type",n,t));var u={configurable:!0,enumerable:!0,get:function(){var n=h(this,r);return Object.defineProperty(this,t,{enumerable:!0,writable:!0,value:n}),n},set:function(n){Object.defineProperty(this,t,{enumerable:!0,writable:!0,value:n})}};return Object.defineProperty(n,t,u),u}}function h(n,t){return m(v(n),t)}function _(n){return S(function(t){var r=new n;return r[b]||(r[b]=t),r})}function d(n,t){return S(t?function(r){return t.apply(void 0,n.map(function(n){return m(r,n)}))}:n)}function j(n){return S(function(){return n})}function g(n){return S(function(t){return m(t,n)})}var w="function"==typeof Symbol?Symbol():"__binding__";function S(n){return n[w]=!0,n}function O(n,t){t.forEach(function(t){var r,u,e;Array.isArray(t)?(u=t[0],e=void 0===(r=t[1])?u:r):u=e=t,n.set(u,e[w]?e:_(e))})}var I=function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return function(u){var i=new Map;O(i,r);var o=function(t){function r(){var n=null!==t&&t.apply(this,arguments)||this;return n.r=n.context,n.t=i,n.n=new Map,n}return n(r,t),r.prototype.componentWillUnmount=function(){this.n.forEach(function(n){c(n)&&f(n.dispose)&&n.dispose()})},r.prototype.render=function(){return e(a.Provider,{value:this},e(u,this.props))},r.register=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];O(i,n)},r.WrappedComponent=u,r}(l);return o.contextType=a,t(o,u)}},M=function(n,t){return function(r){return p.push(function(){n().register(t?[r,t]:r)}),r}};function R(n){var t=o(null),r=i(a);return t.current||(t.current=m(r,n))}function x(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=o(null),u=i(a);return r.current||(r.current=n.map(function(n){return m(u,n)}))}export{y as inject,I as provider,M as registerIn,y as Inject,I as Provider,M as RegisterIn,a as InjectorContext,_ as toClass,d as toFactory,g as toExisting,j as toValue,R as useInstance,x as useInstances};
//# sourceMappingURL=index.esm.min.js.map