UNPKG

ditox-react

Version:

Dependency injection container for React.js

39 lines 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useOptionalDependency = exports.useDependency = exports.useDependencyContainer = void 0; const react_1 = require("react"); const DependencyContainer_1 = require("./DependencyContainer"); /** * @internal */ function useDependencyContainer(mode) { const container = (0, react_1.useContext)(DependencyContainer_1.DependencyContainerContext); if (!container && mode === 'strict') { throw new Error('Container is not provided by DependencyContainer component'); } return container; } exports.useDependencyContainer = useDependencyContainer; /** * @category Hook * * Returns a dependency by token, or fails with an error. */ function useDependency(token) { const container = useDependencyContainer('strict'); const value = (0, react_1.useMemo)(() => container.resolve(token), [container, token]); return value; } exports.useDependency = useDependency; /** * @category Hook * * Returns a dependency by token, or `undefined` in case the dependency is not provided. */ function useOptionalDependency(token) { const container = useDependencyContainer(); const value = (0, react_1.useMemo)(() => container === null || container === void 0 ? void 0 : container.get(token), [container, token]); return value; } exports.useOptionalDependency = useOptionalDependency; //# sourceMappingURL=hooks.js.map