UNPKG

@expressive/react

Version:
67 lines (65 loc) 2.13 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_chunk = require('./chunk-BE-pF4vm.js'); const require_context = require('./context-DEag_HVs.js'); let _expressive_state = require("@expressive/state"); let react = require("react"); let src_state = require("./state"); let react_jsx_runtime = require("react/jsx-runtime"); react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime); //#region src/jsx-runtime.ts const RENDER = /* @__PURE__ */ new WeakMap(); function patch(type, ...args) { if (_expressive_state.State.is(type)) if (RENDER.has(type)) type = RENDER.get(type); else RENDER.set(type, type = Render.bind(type)); return this(type, ...args); } const jsx = patch.bind(react_jsx_runtime.default.jsx); const jsxs = patch.bind(react_jsx_runtime.default.jsxs); function Render(props, props2) { const { is, ...rest } = { ...props, ...props2 }; const ambient = _expressive_state.Context.use(); const state = src_state.Pragma.useState(() => { const instance = this.new(rest, is && ((x) => void is(x))); const context = ambient.push(instance); let ready; let active; (0, _expressive_state.watch)(instance, (current) => { active = current; if (ready) state[1]((x) => x.bind(null)); }); function didMount() { ready = true; return () => { context.pop(); instance.set(null); }; } function Render(props) { const render = _expressive_state.METHOD.get(active.render) || active.render; return render ? render.call(active, props, active) : props.children; } return (props) => { ready = false; src_state.Pragma.useEffect(didMount, []); Promise.resolve(instance.set(props)).finally(() => { ready = true; }); return require_context.provide(context, src_state.Pragma.createElement(Render, props), props.fallback || active.fallback, String(instance)); }; }); return state[0](rest); } //#endregion Object.defineProperty(exports, 'Fragment', { enumerable: true, get: function () { return react.Fragment; } }); exports.jsx = jsx; exports.jsxs = jsxs; exports.patch = patch; //# sourceMappingURL=jsx-runtime.js.map