{"version":3,"file":"create_element.ssr-B13vRb_y.cjs","sources":["../../wxt/node_modules/.pnpm/vhtml@2.2.0/node_modules/vhtml/src/empty-tags.js","../../wxt/node_modules/.pnpm/vhtml@2.2.0/node_modules/vhtml/src/vhtml.js","../src/utils/creators.ssr.ts","../src/methods/create_element.ssr.ts"],"sourcesContent":["export default [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];","import emptyTags from './empty-tags';\n\n// escape an attribute\nlet esc = str => String(str).replace(/[&<>\"']/g, s=>`&${map[s]};`);\nlet map = {'&':'amp','<':'lt','>':'gt','\"':'quot',\"'\":'apos'};\nlet setInnerHTMLAttr = 'dangerouslySetInnerHTML';\nlet DOMAttributeNames = {\n\tclassName: 'class',\n\thtmlFor: 'for'\n};\n\nlet sanitized = {};\n\n/** Hyperscript reviver that constructs a sanitized HTML string. */\nexport default function h(name, attrs) {\n\tlet stack=[], s = '';\n\tattrs = attrs || {};\n\tfor (let i=arguments.length; i-- > 2; ) {\n\t\tstack.push(arguments[i]);\n\t}\n\n\t// Sortof component support!\n\tif (typeof name==='function') {\n\t\tattrs.children = stack.reverse();\n\t\treturn name(attrs);\n\t\t// return name(attrs, stack.reverse());\n\t}\n\n\tif (name) {\n\t\ts += '<' + name;\n\t\tif (attrs) for (let i in attrs) {\n\t\t\tif (attrs[i]!==false && attrs[i]!=null && i !== setInnerHTMLAttr) {\n\t\t\t\ts += ` ${DOMAttributeNames[i] ? DOMAttributeNames[i] : esc(i)}=\"${esc(attrs[i])}\"`;\n\t\t\t}\n\t\t}\n\t\ts += '>';\n\t}\n\n\tif (emptyTags.indexOf(name) === -1) {\n\t\tif (attrs[setInnerHTMLAttr]) {\n\t\t\ts += attrs[setInnerHTMLAttr].__html;\n\t\t}\n\t\telse while (stack.length) {\n\t\t\tlet child = stack.pop();\n\t\t\tif (child) {\n\t\t\t\tif (child.pop) {\n\t\t\t\t\tfor (let i=child.length; i--; ) stack.push(child[i]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ts += sanitized[child]===true ? child : esc(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts += name ? `</${name}>` : '';\n\t}\n\n\tsanitized[s] = true;\n\treturn s;\n}\n","\r\n/* IMPORT */\r\nimport h from 'vhtml'\r\nimport type { FN } from '../types'\r\n\r\nexport const createComment = ((name: string, props?: any, ...args: any[]) => h('!', props, ...args)) as any as FN<[any], Comment>\r\nexport const createHTMLNode = h //as any as FN<[ComponentIntrinsicElement], HTMLElement>\r\nexport const createSVGNode = h //as any as FN<[ComponentIntrinsicElement], SVGElement>\r\nexport const createText = ((text: string) => h('text', null, text)) as any as FN<[any], Text>\r\n// export const createDocumentFragment = document.createDocumentFragment as any as FN<[], DocumentFragment>\r\n\r\n\r\n","\r\n/* IMPORT */\r\n\r\n// import untrack from '../methods/untrack'\r\nimport wrapElement from '../methods/wrap_element'\r\nimport { createHTMLNode, createSVGNode } from '../utils/creators.ssr'\r\nimport { isFunction, isNode, isObject, isString, isSVGElement, isVoidChild } from '../utils/lang'\r\nimport { setChild, setProps } from '../utils/setters'\r\nimport type { Child, Component, Element } from '../types'\r\n\r\nimport { untrack } from 'soby'\r\n// import { JSX } from '../jsx/types';\r\n\r\n/* MAIN */\r\n\r\n// It's important to wrap components, so that they can be executed in the right order, from parent to child, rather than from child to parent in some cases\r\n\r\nconst createElement = <P = { children?: Child }>(component: Component<P>, _props?: P | null, ..._children: Child[]): Element => {\r\n\r\n    const children = _children.length > 1 ? _children : (_children.length > 0 ? _children[0] : undefined)\r\n    const hasChildren = !isVoidChild(children)\r\n\r\n    // const { ...rest } = props ?? {}\r\n\r\n    if (hasChildren && isObject(_props) && 'children' in _props) {\r\n\r\n        throw new Error('Providing \"children\" both as a prop and as rest arguments is forbidden')\r\n\r\n    }\r\n\r\n    if (isFunction(component)) {\r\n\r\n        // return wrapElement(() => component.call(component, _props as P) as any)\r\n\r\n        const props = hasChildren ? { ..._props, children } : _props\r\n\r\n        return wrapElement(() => {\r\n\r\n            return untrack(() => component.call(component, props as P)) //TSC\r\n\r\n        })\r\n\r\n    } else if (isString(component)) {\r\n\r\n        // const props = rest\r\n        const isSVG = isSVGElement(component)\r\n        const createNode = isSVG ? createSVGNode : createHTMLNode\r\n        const stack = new Error()\r\n\r\n        return wrapElement((): Child => {\r\n            // if (isSVG) child['isSVG'] = true\r\n            const p = { children: null }\r\n            untrack(() => {\r\n                if (_props) {\r\n                    setProps(p as any, _props as any, stack)\r\n                }\r\n\r\n                if (hasChildren) {\r\n                    setProps(p as any, children, stack)\r\n                }\r\n            })\r\n            const { children, ...pp } = p\r\n\r\n            return createNode(component, pp, ...[children].flat(Infinity))\r\n        })\r\n\r\n    } else if (isNode(component)) {\r\n\r\n        return wrapElement(() => component)\r\n\r\n    } else {\r\n\r\n        throw new Error('Invalid component')\r\n\r\n    }\r\n\r\n}\r\n\r\n/* EXPORT */\r\n\r\nexport default createElement\r\n"],"names":["isVoidChild","isObject","isFunction","wrapElement","untrack","isString","isSVGElement","setProps","children","isNode"],"mappings":"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","x_google_ignoreList":[0,1]}