UNPKG

@expressive/react

Version:
62 lines (60 loc) 1.65 kB
const require_chunk = require('./chunk-BE-pF4vm.js'); let _expressive_state = require("@expressive/state"); let react = require("react"); //#region src/context.ts const Layers = (0, react.createContext)(new _expressive_state.Context()); _expressive_state.Context.use = (create) => { const ambient = (0, react.useContext)(Layers); return create ? (0, react.useMemo)(() => ambient.push(), [ambient]) : ambient; }; function Consumer(props) { return props.for.get((i) => props.children(i)); } function Provider(props) { const context = _expressive_state.Context.use(true); (0, react.useEffect)(() => () => context.pop(), [context]); context.use(props.for, (state) => { if (props.forEach) { const cleanup = props.forEach(state); if (cleanup) state.set(cleanup, null); } }); return provide(context, props.children, props.fallback, props.name); } function provide(context, children, fallback, name) { if (fallback !== void 0) children = (0, react.createElement)(react.Suspense, { fallback, name }, children); return (0, react.createElement)(Layers.Provider, { key: context.id, value: context, children }); } //#endregion Object.defineProperty(exports, 'Consumer', { enumerable: true, get: function () { return Consumer; } }); Object.defineProperty(exports, 'Layers', { enumerable: true, get: function () { return Layers; } }); Object.defineProperty(exports, 'Provider', { enumerable: true, get: function () { return Provider; } }); Object.defineProperty(exports, 'provide', { enumerable: true, get: function () { return provide; } }); //# sourceMappingURL=context-DEag_HVs.js.map