UNPKG

woby

Version:

A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.

59 lines (58 loc) 2.49 kB
"use strict"; require("./fragment-DZv7GBzl.cjs"); const wrap_clone_element = require("./wrap_clone_element-C4XivH3I.cjs"); const setters = require("./setters-CyO2VUT6.cjs"); const createElement = (component, _props, ..._children) => { const children = _children.length > 1 ? _children : _children.length > 0 ? _children[0] : void 0; const hasChildren = !setters.isVoidChild(children); const { ...rest } = _props ?? {}; if (hasChildren && setters.isObject(_props) && "children" in _props) { throw new Error('Providing "children" both as a prop and as rest arguments is forbidden'); } if (setters.isFunction(component)) { const props = hasChildren ? { ..._props, children } : _props; return wrap_clone_element.wrapElement(() => { return setters.untrack(() => component.call(component, props)); }); } else if (setters.isString(component)) { const isSVG = setters.isSVGElement(component); const createNode = isSVG ? setters.createSVGNode : setters.createHTMLNode; return wrap_clone_element.wrapElement(() => { const child = createNode(component); if (isSVG) child["isSVG"] = true; const stack = new Error(); setters.untrack(() => { if (_props) { setters.setProps(child, _props, stack); } if (hasChildren) { setters.setChild(child, children, setters.FragmentUtils.make(), stack); } }); return child; }); } else if (setters.isNode(component)) { return wrap_clone_element.wrapElement(() => component); } else { throw new Error("Invalid component"); } }; function jsx(component, props, ...children) { if (typeof children === "string") return wrap_clone_element.wrapCloneElement(createElement(component, props ?? {}, children), component, props); if (!props) props = {}; if (typeof children === "string") Object.assign(props, { children }); return wrap_clone_element.wrapCloneElement(createElement(component, props, props == null ? void 0 : props.key), component, props); } const jsxDEV = (component, props, key, isStatic, source, self) => { if (key) Object.assign(props, { key }); return wrap_clone_element.wrapCloneElement(createElement(component, props), component, props); }; const getMeta = (target) => target == null ? void 0 : target[setters.SYMBOL_CLONE]; exports.createElement = createElement; exports.getMeta = getMeta; exports.jsx = jsx; exports.jsxDEV = jsxDEV; //# sourceMappingURL=runtime-BkkHnWaw.cjs.map