UNPKG

hono

Version:

Web framework built on Web Standards

49 lines (48 loc) 1.14 kB
// src/jsx/dom/context.ts import { DOM_ERROR_HANDLER } from "../constants.js"; import { globalContexts } from "../context.js"; import { newJSXNode, setInternalTagFlag } from "./utils.js"; var createContextProviderFunction = (values) => ({ value, children }) => { if (!children) { return void 0; } const props = { children: [ { tag: setInternalTagFlag(() => { values.push(value); }), props: {} } ] }; if (Array.isArray(children)) { props.children.push(...children.flat()); } else { props.children.push(children); } props.children.push({ tag: setInternalTagFlag(() => { values.pop(); }), props: {} }); const res = newJSXNode({ tag: "", props }); res[DOM_ERROR_HANDLER] = (err) => { values.pop(); throw err; }; return res; }; var createContext = (defaultValue) => { const values = [defaultValue]; const context = createContextProviderFunction(values); context.values = values; context.Provider = context; globalContexts.push(context); return context; }; export { createContext, createContextProviderFunction };