ditox-react
Version:
Dependency injection container for React.js
3 lines (2 loc) • 1.14 kB
JavaScript
import{createContainer as r,bindModule as n}from"ditox";import e,{createContext as t,useContext as o,useMemo as i,useEffect as u,useCallback as c}from"react";var v=t(void 0);function a(n){var t=n.children,c=n.root,a=n.binder,l=o(v),d=i((function(){var n=r(c?void 0:l);return null==a||a(n),n}),[a,l,c]);return u((function(){return function(){return d.removeAll()}}),[d]),e.createElement(v.Provider,{value:d},t)}function l(r){var n=r.children,t=r.container;return e.createElement(v.Provider,{value:t},n)}function d(r){var n=o(v);if(!n&&"strict"===r)throw new Error("Container is not provided by DependencyContainer component");return n}function f(r){var n=d("strict");return i((function(){return n.resolve(r)}),[n,r])}function m(r){var n=d();return i((function(){return null==n?void 0:n.get(r)}),[n,r])}function p(r){var t=r.children,o=r.module,i=r.scope,u=c((function(r){return n(r,o,{scope:i})}),[o,i]);return e.createElement(a,{binder:u},t)}export{l as CustomDependencyContainer,a as DependencyContainer,p as DependencyModule,f as useDependency,d as useDependencyContainer,m as useOptionalDependency};
//# sourceMappingURL=index.js.map