@rasenjs/html 0.1.3-alpha → 0.1.4-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.ts","../src/components/element.ts","../src/components/text.ts","../src/components/fragment.ts","../src/components/elements.ts","../src/jsx-runtime.ts"],"names":["text","html","unrefValue","getReactiveRuntime","setTextPrimitive","setFragmentPrimitive","configureTags"],"mappings":"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","file":"jsx-runtime.cjs","sourcesContent":["/**\n * HTML 转义字符映射\n */\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n}\n\n/**\n * 转义 HTML 特殊字符,防止 XSS\n */\nexport function escapeHtml(text: string): string {\n return text.replace(/[&<>\"']/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 转义属性值\n */\nexport function escapeAttr(value: string): string {\n return value.replace(/[&<>\"]/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 将属性值转换为字符串\n */\nexport function stringifyAttr(\n name: string,\n value: string | number | boolean | null | undefined\n): string {\n if (value === null || value === undefined || value === false) {\n return ''\n }\n if (value === true) {\n return ` ${name}`\n }\n return ` ${name}=\"${escapeAttr(String(value))}\"`\n}\n\n/**\n * 将样式对象转换为 style 属性字符串\n */\nexport function stringifyStyle(\n styles: Record<string, string | number | null | undefined>\n): string {\n const parts: string[] = []\n for (const [key, value] of Object.entries(styles)) {\n if (value !== null && value !== undefined) {\n // 将 camelCase 转换为 kebab-case\n const kebabKey = key.replace(/([A-Z])/g, '-$1').toLowerCase()\n parts.push(`${kebabKey}: ${value}`)\n }\n }\n return parts.join('; ')\n}\n\n/**\n * 将类名数组或对象转换为 class 属性字符串\n */\nexport function stringifyClass(\n className: string | string[] | Record<string, boolean> | undefined\n): string {\n if (!className) {\n return ''\n }\n if (typeof className === 'string') {\n return className\n }\n if (Array.isArray(className)) {\n return className.filter(Boolean).join(' ')\n }\n // 对象形式 { 'class-name': true/false }\n return Object.entries(className)\n .filter(([, value]) => value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * 自闭合标签列表\n */\nexport const VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n])\n\n/**\n * 判断是否为自闭合标签\n */\nexport function isVoidElement(tag: string): boolean {\n return VOID_ELEMENTS.has(tag.toLowerCase())\n}\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport { unrefValue } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport {\n stringifyAttr,\n stringifyStyle,\n escapeHtml,\n isVoidElement\n} from '../utils'\n\n/**\n * element 组件 - 通用 HTML 元素组件(字符串版本)\n *\n * SSR 场景下不需要响应式更新,直接取值渲染\n */\nexport const element = (props: {\n tag: string\n id?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions (including reactive text functions) */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n value?: PropValue<string | number>\n // SSR does not need events - removed for consistency\n}): Mountable<StringHost> => {\n return (host: StringHost) => {\n const tag = props.tag\n const isVoid = isVoidElement(tag)\n\n // 构建开始标签\n let html = `<${tag}`\n\n // id\n const id = unrefValue(props.id)\n if (id) {\n html += stringifyAttr('id', id)\n }\n\n // className\n const className = unrefValue(props.className)\n if (className) {\n html += stringifyAttr('class', className)\n }\n\n // style\n const style = unrefValue(props.style)\n if (style && Object.keys(style).length > 0) {\n html += stringifyAttr('style', stringifyStyle(style))\n }\n\n // value (for input, textarea, select)\n const value = unrefValue(props.value)\n if (value !== undefined) {\n html += stringifyAttr('value', String(value))\n }\n\n // attrs (other attributes)\n const attrs = unrefValue(props.attrs)\n if (attrs) {\n for (const [key, val] of Object.entries(attrs)) {\n // 跳过无效的属性名(数字开头或纯数字)\n if (/^\\d/.test(key)) continue\n html += stringifyAttr(key, val)\n }\n }\n \n // 处理其他props(除了特殊props和已处理的)\n const specialProps = new Set(['tag', 'id', 'className', 'style', 'value', 'attrs', 'children', 'on'])\n for (const [key, val] of Object.entries(props)) {\n if (specialProps.has(key)) continue\n if (key.startsWith('on')) continue // 跳过事件处理器(SSR不需要)\n if (val === undefined || val === null) continue\n \n const attrValue = unrefValue(val as PropValue<unknown>)\n if (attrValue !== undefined && attrValue !== null) {\n // 只处理基本类型(string, number, boolean)\n if (typeof attrValue === 'string' || typeof attrValue === 'number' || typeof attrValue === 'boolean') {\n html += stringifyAttr(key, attrValue)\n }\n }\n }\n\n html += '>'\n\n // 自闭合标签不需要内容和结束标签\n if (isVoid) {\n host.append(html)\n return undefined\n }\n\n // children (text content or mount functions)\n const children = props.children\n if (children !== undefined) {\n if (typeof children === 'string' || (typeof children === 'object' && 'value' in (children as any))) {\n // String content (or ref to string)\n html += escapeHtml(String(unrefValue(children as PropValue<string>)))\n } else if (Array.isArray(children) && children.length > 0) {\n // Array of children - 创建子宿主收集子元素内容\n const childHost: StringHost = {\n fragments: [],\n append(s: string) {\n this.fragments.push(s)\n },\n toString() {\n return this.fragments.join('')\n }\n }\n\n for (const child of children) {\n if (child === null || child === undefined) continue\n \n if (typeof child === 'string') {\n // String child\n childHost.append(escapeHtml(child))\n } else if (typeof child === 'function') {\n // Function - could be Mountable or reactive text function\n // Call it with childHost and check the return value type\n const result = (child as any)(childHost)\n \n // If it returns string/number, it's a reactive text function that ignored our parameter\n if (typeof result === 'string' || typeof result === 'number') {\n childHost.append(escapeHtml(String(result)))\n }\n // Otherwise it's a Mountable, already executed correctly\n }\n }\n\n html += childHost.toString()\n }\n }\n\n // 结束标签\n html += `</${tag}>`\n\n host.append(html)\n\n // SSR 不需要 unmount\n return undefined\n }\n}\n","/**\n * Text node component for HTML (SSR)\n * \n * Outputs escaped text content\n */\n\nimport type { Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\nexport interface TextProps {\n /** Text content - can be static string/number or reactive getter */\n content: string | number | (() => string | number)\n}\n\n/**\n * Create a text node for SSR\n * \n * @example\n * ```ts\n * // Static text\n * text({ content: 'Hello' })\n * \n * // Reactive text (evaluates immediately in SSR)\n * text({ content: () => count.value })\n * ```\n */\nexport function text(props: TextProps): Mountable<StringHost> {\n const { content } = props\n\n return (host: StringHost) => {\n // Resolve content\n const textContent = typeof content === 'function' \n ? String(content())\n : String(content)\n \n // Append escaped text\n host.append(escapeHtml(textContent))\n \n return undefined\n }\n}\n","/**\n * HTML fragment implementation for SSR\n */\nimport { getReactiveRuntime, type Mountable, type FragmentChild } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\n/**\n * HTML fragment uses empty comments as separators between text nodes\n * to preserve the same structure as client-side rendering for proper hydration\n */\nconst hostHooks = {\n createTextNode: (text: string) => {\n // Wrap each text piece with comment markers for hydration matching\n return `<!-- t -->${escapeHtml(text)}<!-- /t -->`\n },\n appendNode: (host: StringHost, node: string) => host.append(node),\n updateTextNode: () => {\n // SSR 中不需要更新文本节点\n },\n removeNode: () => {\n // SSR 中不需要移除节点\n }\n}\n\n/**\n * Fragment function interface for HTML/SSR\n */\ninterface FragmentFunction {\n (config: { children: Array<Mountable<StringHost>> }): Mountable<StringHost>\n (strings: TemplateStringsArray, ...values: FragmentChild<StringHost>[]): Mountable<StringHost>\n}\n\n/**\n * fragment - 组合多个子组件\n * \n * 注意:在 SSR 中,响应式值会被立即求值并转换为静态字符串\n * \n * @example\n * // 对象参数用法\n * fragment({ children: [child1, child2] })\n * \n * // Tagged template 用法\n * const count = ref(0)\n * fragment`Count: ${count} items` // SSR: 立即求值\n * \n * // 别名\n * f`Count: ${count} items`\n */\nexport const fragment: FragmentFunction = (\n configOrStrings: { children: Array<Mountable<StringHost>> } | TemplateStringsArray,\n ...values: FragmentChild<StringHost>[]\n): Mountable<StringHost> => {\n const runtime = getReactiveRuntime()\n \n // 检测是否是 tagged template 调用\n if (Array.isArray(configOrStrings) && 'raw' in configOrStrings) {\n const strings = configOrStrings as TemplateStringsArray\n \n // 直接生成 HTML 字符串而不是通过 core fragment\n // 这样可以避免每个片段都被包装,减少注释标记\n return (host: StringHost) => {\n let html = ''\n for (let i = 0; i < strings.length; i++) {\n if (strings[i]) {\n html += escapeHtml(strings[i])\n }\n if (i < values.length) {\n const value = values[i]\n // Check if it's a ref\n if (runtime.isRef(value)) {\n html += escapeHtml(String((value as any).value))\n } else if (typeof value === 'string' || typeof value === 'number') {\n html += escapeHtml(String(value))\n }\n // Mountables not supported in template strings for SSR\n }\n }\n host.append(html)\n return undefined\n }\n }\n \n // For object config, import core fragment\n const { fragment: coreFragment } = require('@rasenjs/core')\n const config = configOrStrings as { children: Array<Mountable<StringHost>> }\n return coreFragment({ children: config.children, hooks: hostHooks })\n}\n\n/**\n * f - fragment 的简写别名\n */\nexport const f = fragment\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { element } from './element'\n\n// ============================================================================\n// Type definitions\n// ============================================================================\n\ninterface BaseProps {\n id?: PropValue<string>\n class?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n // SSR does not support events - removed on, onClick, onInput, etc.\n}\n\n/** Child type - 响应式文本函数优先匹配 */\ntype Child = string | (() => string | number) | Mountable<StringHost>\n\n/**\n * Factory function to create HTML element components\n * Supports: el(), el('text'), el(child), el(props), el(props, ...children)\n */\nfunction createElement(tag: string) {\n return (\n propsOrChild?: BaseProps | Child,\n ...restChildren: Child[]\n ): Mountable<StringHost> => {\n // No arguments\n if (propsOrChild === undefined) {\n return element({ tag })\n }\n\n // First argument is string or function (Mountable or reactive text), treat as child\n if (\n typeof propsOrChild === 'string' ||\n typeof propsOrChild === 'function'\n ) {\n const children = [propsOrChild, ...restChildren]\n return element({ tag, children })\n }\n \n // First argument is props object\n const props = propsOrChild as BaseProps\n \n // Normalize props: convert `class` to `className` for element()\n const { class: cls, className, ...restProps } = props as any\n const normalizedProps = {\n ...restProps,\n className: className || cls\n }\n \n if (restChildren.length > 0) {\n // Merge children\n const existingChildren = props.children\n const children = Array.isArray(existingChildren)\n ? [...existingChildren, ...restChildren]\n : existingChildren !== undefined\n ? [existingChildren, ...restChildren]\n : restChildren\n \n return element({ tag, ...normalizedProps, children })\n }\n\n return element({ tag, ...normalizedProps })\n }\n}\n\n// ============================================================================\n// Common elements\n// ============================================================================\n\nexport const div = createElement('div')\nexport const span = createElement('span')\nexport const button = createElement('button')\nexport const a = createElement('a')\nexport const p = createElement('p')\n\n// Headings\nexport const h1 = createElement('h1')\nexport const h2 = createElement('h2')\nexport const h3 = createElement('h3')\nexport const h4 = createElement('h4')\nexport const h5 = createElement('h5')\nexport const h6 = createElement('h6')\n\n// Lists\nexport const ul = createElement('ul')\nexport const ol = createElement('ol')\nexport const li = createElement('li')\n\n// Forms\nexport const form = createElement('form')\nexport const label = createElement('label')\nexport const select = createElement('select')\n\n// Tables\nexport const table = createElement('table')\nexport const thead = createElement('thead')\nexport const tbody = createElement('tbody')\nexport const tfoot = createElement('tfoot')\nexport const tr = createElement('tr')\nexport const th = createElement('th')\nexport const td = createElement('td')\n\n// Semantic layout\nexport const section = createElement('section')\nexport const article = createElement('article')\nexport const header = createElement('header')\nexport const footer = createElement('footer')\nexport const nav = createElement('nav')\nexport const main = createElement('main')\nexport const aside = createElement('aside')\n\n// Other common elements\nexport const pre = createElement('pre')\nexport const code = createElement('code')\nexport const blockquote = createElement('blockquote')\nexport const strong = createElement('strong')\nexport const em = createElement('em')\nexport const small = createElement('small')\nexport const mark = createElement('mark')\nexport const del = createElement('del')\nexport const ins = createElement('ins')\nexport const sub = createElement('sub')\nexport const sup = createElement('sup')\nexport const svg = createElement('svg')\n\n// Self-closing elements\nexport const br = () => element({ tag: 'br' })\nexport const hr = () => element({ tag: 'hr' })\n\n// ============================================================================\n// Special elements with extended props\n// ============================================================================\n\n/**\n * input component\n */\nexport const input = (\n props: BaseProps & {\n type?: PropValue<string>\n value?: PropValue<string | any>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { type, value, placeholder, disabled, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(type !== undefined ? { type } : {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {})\n }\n\n return element({\n tag: 'input',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { value } : {})\n })\n}\n\n/**\n * img component\n */\nexport const img = (props: BaseProps & {\n src?: PropValue<string>\n alt?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n}): Mountable<StringHost> => {\n return element({ tag: 'img', ...props })\n}\n\n/**\n * textarea component\n */\nexport const textarea = (\n props: BaseProps & {\n value?: PropValue<string>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n rows?: PropValue<number>\n cols?: PropValue<number>\n }\n): Mountable<StringHost> => {\n const { value, placeholder, disabled, rows, cols, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(rows !== undefined ? { rows } : {}),\n ...(cols !== undefined ? { cols } : {})\n }\n\n // textarea value should be children (text content)\n return element({\n tag: 'textarea',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { children: String(value) } : {})\n })\n}\n\n/**\n * option component\n */\nexport const option = (\n props: BaseProps & {\n value?: PropValue<string | number>\n selected?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { value, selected, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(value !== undefined ? { value } : {}),\n ...(selected ? { selected: true } : {})\n }\n\n return element({\n tag: 'option',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * video component\n */\nexport const video = (\n props: BaseProps & {\n src?: PropValue<string>\n poster?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, poster, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(poster !== undefined ? { poster } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'video',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * audio component\n */\nexport const audio = (\n props: BaseProps & {\n src?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'audio',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * source component\n */\nexport const source = (\n props: BaseProps & {\n src?: PropValue<string>\n type?: PropValue<string>\n }\n): Mountable<StringHost> => {\n const { src, type, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(type !== undefined ? { type } : {})\n }\n\n return element({\n tag: 'source',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * iframe component\n */\nexport const iframe = (\n props: BaseProps & {\n src?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n frameborder?: PropValue<string | number>\n allowfullscreen?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, width, height, frameborder, allowfullscreen, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(frameborder !== undefined ? { frameborder } : {}),\n ...(allowfullscreen ? { allowfullscreen: true } : {})\n }\n\n return element({\n tag: 'iframe',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * canvas component (SSR only renders empty canvas tag)\n */\nexport const canvas = (\n props: BaseProps & {\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n }\n): Mountable<StringHost> => {\n const { width, height, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {})\n }\n\n return element({\n tag: 'canvas',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n","/**\n * JSX Runtime integration for @rasenjs/html (SSR/SSG)\n * \n * Auto-configures jsx-runtime with HTML string primitives and tags.\n */\n\nimport { setTextPrimitive, setFragmentPrimitive, configureTags, type TextPrimitive, type FragmentPrimitive } from '@rasenjs/jsx-runtime'\nimport {\n text,\n fragment,\n // Text elements\n div,\n span,\n p,\n a,\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n // Form elements\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n // Lists\n ul,\n ol,\n li,\n // Media\n img,\n canvas,\n // Semantic HTML5\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n // Formatting\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n} from './index'\n\n// Configure primitives\nsetTextPrimitive(text as TextPrimitive)\nsetFragmentPrimitive(fragment as FragmentPrimitive)\n\n// Configure all HTML tags\nconfigureTags({\n '': {\n div,\n span,\n p,\n a,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n ul,\n ol,\n li,\n img,\n canvas,\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n }\n})\n\n// Re-export jsx-runtime\nexport * from '@rasenjs/jsx-runtime'\n"]}
1
+ {"version":3,"sources":["../src/utils.ts","../src/components/element.ts","../src/components/text.ts","../src/marker-constants.ts","../src/components/fragment.ts","../src/components/elements.ts","../src/jsx-runtime.ts"],"names":["text","html","unrefValue","MARKERS","getReactiveRuntime","setTextPrimitive","setFragmentPrimitive","configureTags"],"mappings":"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","file":"jsx-runtime.cjs","sourcesContent":["/**\n * HTML 转义字符映射\n */\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n}\n\n/**\n * 转义 HTML 特殊字符,防止 XSS\n */\nexport function escapeHtml(text: string): string {\n return text.replace(/[&<>\"']/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 转义属性值\n */\nexport function escapeAttr(value: string): string {\n return value.replace(/[&<>\"]/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 将属性值转换为字符串\n */\nexport function stringifyAttr(\n name: string,\n value: string | number | boolean | null | undefined\n): string {\n if (value === null || value === undefined || value === false) {\n return ''\n }\n if (value === true) {\n return ` ${name}`\n }\n return ` ${name}=\"${escapeAttr(String(value))}\"`\n}\n\n/**\n * 将样式对象转换为 style 属性字符串\n */\nexport function stringifyStyle(\n styles: Record<string, string | number | null | undefined>\n): string {\n const parts: string[] = []\n for (const [key, value] of Object.entries(styles)) {\n if (value !== null && value !== undefined) {\n // 将 camelCase 转换为 kebab-case\n const kebabKey = key.replace(/([A-Z])/g, '-$1').toLowerCase()\n parts.push(`${kebabKey}: ${value}`)\n }\n }\n return parts.join('; ')\n}\n\n/**\n * 将类名数组或对象转换为 class 属性字符串\n */\nexport function stringifyClass(\n className: string | string[] | Record<string, boolean> | undefined\n): string {\n if (!className) {\n return ''\n }\n if (typeof className === 'string') {\n return className\n }\n if (Array.isArray(className)) {\n return className.filter(Boolean).join(' ')\n }\n // 对象形式 { 'class-name': true/false }\n return Object.entries(className)\n .filter(([, value]) => value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * 自闭合标签列表\n */\nexport const VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n])\n\n/**\n * 判断是否为自闭合标签\n */\nexport function isVoidElement(tag: string): boolean {\n return VOID_ELEMENTS.has(tag.toLowerCase())\n}\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport { unrefValue } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport {\n stringifyAttr,\n stringifyStyle,\n escapeHtml,\n isVoidElement\n} from '../utils'\n\n/**\n * element 组件 - 通用 HTML 元素组件(字符串版本)\n *\n * SSR 场景下不需要响应式更新,直接取值渲染\n */\nexport const element = (props: {\n tag: string\n id?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions (including reactive text functions) */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n value?: PropValue<string | number>\n // SSR does not need events - removed for consistency\n}): Mountable<StringHost> => {\n return (host: StringHost) => {\n const tag = props.tag\n const isVoid = isVoidElement(tag)\n\n // 构建开始标签\n let html = `<${tag}`\n\n // id\n const id = unrefValue(props.id)\n if (id) {\n html += stringifyAttr('id', id)\n }\n\n // className\n const className = unrefValue(props.className)\n if (className) {\n html += stringifyAttr('class', className)\n }\n\n // style\n const style = unrefValue(props.style)\n if (style && Object.keys(style).length > 0) {\n html += stringifyAttr('style', stringifyStyle(style))\n }\n\n // value (for input, textarea, select)\n const value = unrefValue(props.value)\n if (value !== undefined) {\n html += stringifyAttr('value', String(value))\n }\n\n // attrs (other attributes)\n const attrs = unrefValue(props.attrs)\n if (attrs) {\n for (const [key, val] of Object.entries(attrs)) {\n // 跳过无效的属性名(数字开头或纯数字)\n if (/^\\d/.test(key)) continue\n html += stringifyAttr(key, val)\n }\n }\n \n // 处理其他props(除了特殊props和已处理的)\n const specialProps = new Set(['tag', 'id', 'className', 'style', 'value', 'attrs', 'children', 'on'])\n for (const [key, val] of Object.entries(props)) {\n if (specialProps.has(key)) continue\n if (key.startsWith('on')) continue // 跳过事件处理器(SSR不需要)\n if (val === undefined || val === null) continue\n \n const attrValue = unrefValue(val as PropValue<unknown>)\n if (attrValue !== undefined && attrValue !== null) {\n // 只处理基本类型(string, number, boolean)\n if (typeof attrValue === 'string' || typeof attrValue === 'number' || typeof attrValue === 'boolean') {\n html += stringifyAttr(key, attrValue)\n }\n }\n }\n\n html += '>'\n\n // 自闭合标签不需要内容和结束标签\n if (isVoid) {\n host.append(html)\n return undefined\n }\n\n // children (text content or mount functions)\n const children = props.children\n if (children !== undefined) {\n if (typeof children === 'string' || (typeof children === 'object' && 'value' in (children as any))) {\n // String content (or ref to string)\n html += escapeHtml(String(unrefValue(children as PropValue<string>)))\n } else if (Array.isArray(children) && children.length > 0) {\n // Array of children - 创建子宿主收集子元素内容\n const childHost: StringHost = {\n fragments: [],\n append(s: string) {\n this.fragments.push(s)\n },\n toString() {\n return this.fragments.join('')\n }\n }\n\n for (const child of children) {\n if (child === null || child === undefined) continue\n \n if (typeof child === 'string') {\n // String child\n childHost.append(escapeHtml(child))\n } else if (typeof child === 'function') {\n // Function - could be Mountable or reactive text function\n // Call it with childHost and check the return value type\n const result = (child as any)(childHost)\n \n // If it returns string/number, it's a reactive text function that ignored our parameter\n if (typeof result === 'string' || typeof result === 'number') {\n childHost.append(escapeHtml(String(result)))\n }\n // Otherwise it's a Mountable, already executed correctly\n }\n }\n\n html += childHost.toString()\n }\n }\n\n // 结束标签\n html += `</${tag}>`\n\n host.append(html)\n\n // SSR 不需要 unmount\n return undefined\n }\n}\n","/**\n * Text node component for HTML (SSR)\n * \n * Outputs escaped text content\n */\n\nimport type { Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\nexport interface TextProps {\n /** Text content - can be static string/number or reactive getter */\n content: string | number | (() => string | number)\n}\n\n/**\n * Create a text node for SSR\n * \n * @example\n * ```ts\n * // Static text\n * text({ content: 'Hello' })\n * \n * // Reactive text (evaluates immediately in SSR)\n * text({ content: () => count.value })\n * ```\n */\nexport function text(props: TextProps): Mountable<StringHost> {\n const { content } = props\n\n return (host: StringHost) => {\n // Resolve content\n const textContent = typeof content === 'function' \n ? String(content())\n : String(content)\n \n // Append escaped text\n host.append(escapeHtml(textContent))\n \n return undefined\n }\n}\n","/**\n * HTML/SSR-specific marker utilities\n * \n * Re-exports marker constants from @rasenjs/core and provides\n * HTML-specific helper functions for generating comment markers.\n */\nexport { MARKERS, MARKER_DEBUG_MAP, type MarkerType } from '@rasenjs/core'\n\n/**\n * Create an HTML comment marker\n * @example\n * createMarker(MARKERS.FRAGMENT_START) // <!-- f -->\n * createMarker(MARKERS.WHEN_END) // <!-- /w -->\n */\nexport function createMarker(type: string): string {\n return `<!-- ${type} -->`\n}\n\n","/**\n * HTML fragment implementation for SSR\n */\nimport { getReactiveRuntime, type Mountable, type FragmentChild } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\nimport { MARKERS, createMarker } from '../marker-constants'\n\n/**\n * HTML fragment uses comment markers to preserve boundaries for hydration\n * Following the same pattern as text nodes: <!-- f --> and <!-- /f -->\n */\nconst hostHooks = {\n createTextNode: (text: string) => {\n // Wrap each text piece with comment markers for hydration matching\n return `${createMarker(MARKERS.TEXT_START)}${escapeHtml(text)}${createMarker(MARKERS.TEXT_END)}`\n },\n appendNode: (host: StringHost, node: string) => host.append(node),\n updateTextNode: () => {\n // SSR 中不需要更新文本节点\n },\n removeNode: () => {\n // SSR 中不需要移除节点\n },\n createMarker: (_host: StringHost, content: string) => {\n return createMarker(content)\n },\n appendMarker: (host: StringHost, marker: string) => host.append(marker),\n removeMarker: () => {\n // SSR 中不需要移除标记\n }\n}\n\n/**\n * Fragment function interface for HTML/SSR\n */\ninterface FragmentFunction {\n (config: { children: Array<Mountable<StringHost>> }): Mountable<StringHost>\n (strings: TemplateStringsArray, ...values: FragmentChild<StringHost>[]): Mountable<StringHost>\n}\n\n/**\n * fragment - 组合多个子组件\n * \n * 注意:在 SSR 中,响应式值会被立即求值并转换为静态字符串\n * \n * @example\n * // 对象参数用法\n * fragment({ children: [child1, child2] })\n * \n * // Tagged template 用法\n * const count = ref(0)\n * fragment`Count: ${count} items` // SSR: 立即求值\n * \n * // 别名\n * f`Count: ${count} items`\n */\nexport const fragment: FragmentFunction = (\n configOrStrings: { children: Array<Mountable<StringHost>> } | TemplateStringsArray,\n ...values: FragmentChild<StringHost>[]\n): Mountable<StringHost> => {\n const runtime = getReactiveRuntime()\n \n // 检测是否是 tagged template 调用\n if (Array.isArray(configOrStrings) && 'raw' in configOrStrings) {\n const strings = configOrStrings as TemplateStringsArray\n \n // 直接生成 HTML 字符串而不是通过 core fragment\n // 这样可以避免每个片段都被包装,减少注释标记\n return (host: StringHost) => {\n let html = ''\n for (let i = 0; i < strings.length; i++) {\n if (strings[i]) {\n html += escapeHtml(strings[i])\n }\n if (i < values.length) {\n const value = values[i]\n // Check if it's a ref\n if (runtime.isRef(value)) {\n html += escapeHtml(String((value as any).value))\n } else if (typeof value === 'string' || typeof value === 'number') {\n html += escapeHtml(String(value))\n }\n // Mountables not supported in template strings for SSR\n }\n }\n host.append(html)\n return undefined\n }\n }\n \n // For object config, import core fragment\n const { fragment: coreFragment } = require('@rasenjs/core')\n const config = configOrStrings as { children: Array<Mountable<StringHost>> }\n return coreFragment({ children: config.children, hooks: hostHooks })\n}\n\n/**\n * f - fragment 的简写别名\n */\nexport const f = fragment\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { element } from './element'\n\n// ============================================================================\n// Type definitions\n// ============================================================================\n\ninterface BaseProps {\n id?: PropValue<string>\n class?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n // SSR does not support events - removed on, onClick, onInput, etc.\n}\n\n/** Child type - 响应式文本函数优先匹配 */\ntype Child = string | (() => string | number) | Mountable<StringHost>\n\n/**\n * Factory function to create HTML element components\n * Supports: el(), el('text'), el(child), el(props), el(props, ...children)\n */\nfunction createElement(tag: string) {\n return (\n propsOrChild?: BaseProps | Child,\n ...restChildren: Child[]\n ): Mountable<StringHost> => {\n // No arguments\n if (propsOrChild === undefined) {\n return element({ tag })\n }\n\n // First argument is string or function (Mountable or reactive text), treat as child\n if (\n typeof propsOrChild === 'string' ||\n typeof propsOrChild === 'function'\n ) {\n const children = [propsOrChild, ...restChildren]\n return element({ tag, children })\n }\n \n // First argument is props object\n const props = propsOrChild as BaseProps\n \n // Normalize props: convert `class` to `className` for element()\n const { class: cls, className, ...restProps } = props as any\n const normalizedProps = {\n ...restProps,\n className: className || cls\n }\n \n if (restChildren.length > 0) {\n // Merge children\n const existingChildren = props.children\n const children = Array.isArray(existingChildren)\n ? [...existingChildren, ...restChildren]\n : existingChildren !== undefined\n ? [existingChildren, ...restChildren]\n : restChildren\n \n return element({ tag, ...normalizedProps, children })\n }\n\n return element({ tag, ...normalizedProps })\n }\n}\n\n// ============================================================================\n// Common elements\n// ============================================================================\n\nexport const div = createElement('div')\nexport const span = createElement('span')\nexport const button = createElement('button')\nexport const a = createElement('a')\nexport const p = createElement('p')\n\n// Headings\nexport const h1 = createElement('h1')\nexport const h2 = createElement('h2')\nexport const h3 = createElement('h3')\nexport const h4 = createElement('h4')\nexport const h5 = createElement('h5')\nexport const h6 = createElement('h6')\n\n// Lists\nexport const ul = createElement('ul')\nexport const ol = createElement('ol')\nexport const li = createElement('li')\n\n// Forms\nexport const form = createElement('form')\nexport const label = createElement('label')\nexport const select = createElement('select')\n\n// Tables\nexport const table = createElement('table')\nexport const thead = createElement('thead')\nexport const tbody = createElement('tbody')\nexport const tfoot = createElement('tfoot')\nexport const tr = createElement('tr')\nexport const th = createElement('th')\nexport const td = createElement('td')\n\n// Semantic layout\nexport const section = createElement('section')\nexport const article = createElement('article')\nexport const header = createElement('header')\nexport const footer = createElement('footer')\nexport const nav = createElement('nav')\nexport const main = createElement('main')\nexport const aside = createElement('aside')\n\n// Other common elements\nexport const pre = createElement('pre')\nexport const code = createElement('code')\nexport const blockquote = createElement('blockquote')\nexport const strong = createElement('strong')\nexport const em = createElement('em')\nexport const small = createElement('small')\nexport const mark = createElement('mark')\nexport const del = createElement('del')\nexport const ins = createElement('ins')\nexport const sub = createElement('sub')\nexport const sup = createElement('sup')\nexport const svg = createElement('svg')\n\n// Self-closing elements\nexport const br = () => element({ tag: 'br' })\nexport const hr = () => element({ tag: 'hr' })\n\n// ============================================================================\n// Special elements with extended props\n// ============================================================================\n\n/**\n * input component\n */\nexport const input = (\n props: BaseProps & {\n type?: PropValue<string>\n value?: PropValue<string | any>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { type, value, placeholder, disabled, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(type !== undefined ? { type } : {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {})\n }\n\n return element({\n tag: 'input',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { value } : {})\n })\n}\n\n/**\n * img component\n */\nexport const img = (props: BaseProps & {\n src?: PropValue<string>\n alt?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n}): Mountable<StringHost> => {\n return element({ tag: 'img', ...props })\n}\n\n/**\n * textarea component\n */\nexport const textarea = (\n props: BaseProps & {\n value?: PropValue<string>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n rows?: PropValue<number>\n cols?: PropValue<number>\n }\n): Mountable<StringHost> => {\n const { value, placeholder, disabled, rows, cols, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(rows !== undefined ? { rows } : {}),\n ...(cols !== undefined ? { cols } : {})\n }\n\n // textarea value should be children (text content)\n return element({\n tag: 'textarea',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { children: String(value) } : {})\n })\n}\n\n/**\n * option component\n */\nexport const option = (\n props: BaseProps & {\n value?: PropValue<string | number>\n selected?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { value, selected, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(value !== undefined ? { value } : {}),\n ...(selected ? { selected: true } : {})\n }\n\n return element({\n tag: 'option',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * video component\n */\nexport const video = (\n props: BaseProps & {\n src?: PropValue<string>\n poster?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, poster, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(poster !== undefined ? { poster } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'video',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * audio component\n */\nexport const audio = (\n props: BaseProps & {\n src?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'audio',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * source component\n */\nexport const source = (\n props: BaseProps & {\n src?: PropValue<string>\n type?: PropValue<string>\n }\n): Mountable<StringHost> => {\n const { src, type, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(type !== undefined ? { type } : {})\n }\n\n return element({\n tag: 'source',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * iframe component\n */\nexport const iframe = (\n props: BaseProps & {\n src?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n frameborder?: PropValue<string | number>\n allowfullscreen?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, width, height, frameborder, allowfullscreen, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(frameborder !== undefined ? { frameborder } : {}),\n ...(allowfullscreen ? { allowfullscreen: true } : {})\n }\n\n return element({\n tag: 'iframe',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * canvas component (SSR only renders empty canvas tag)\n */\nexport const canvas = (\n props: BaseProps & {\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n }\n): Mountable<StringHost> => {\n const { width, height, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {})\n }\n\n return element({\n tag: 'canvas',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n","/**\n * JSX Runtime integration for @rasenjs/html (SSR/SSG)\n * \n * Auto-configures jsx-runtime with HTML string primitives and tags.\n */\n\nimport { setTextPrimitive, setFragmentPrimitive, configureTags, type TextPrimitive, type FragmentPrimitive } from '@rasenjs/jsx-runtime'\nimport {\n text,\n fragment,\n // Text elements\n div,\n span,\n p,\n a,\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n // Form elements\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n // Lists\n ul,\n ol,\n li,\n // Media\n img,\n canvas,\n // Semantic HTML5\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n // Formatting\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n} from './index'\n\n// Configure primitives\nsetTextPrimitive(text as TextPrimitive)\nsetFragmentPrimitive(fragment as FragmentPrimitive)\n\n// Configure all HTML tags\nconfigureTags({\n '': {\n div,\n span,\n p,\n a,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n ul,\n ol,\n li,\n img,\n canvas,\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n }\n})\n\n// Re-export jsx-runtime\nexport * from '@rasenjs/jsx-runtime'\n"]}
@@ -1,6 +1,6 @@
1
1
  import { setTextPrimitive, setFragmentPrimitive, configureTags } from '@rasenjs/jsx-runtime';
2
2
  export * from '@rasenjs/jsx-runtime';
3
- import { getReactiveRuntime, unrefValue } from '@rasenjs/core';
3
+ import { getReactiveRuntime, unrefValue, MARKERS } from '@rasenjs/core';
4
4
 
5
5
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
6
6
  get: (a2, b) => (typeof require !== "undefined" ? require : a2)[b]
@@ -151,14 +151,25 @@ function text(props) {
151
151
  return void 0;
152
152
  };
153
153
  }
154
+ function createMarker(type) {
155
+ return `<!-- ${type} -->`;
156
+ }
157
+
158
+ // src/components/fragment.ts
154
159
  var hostHooks = {
155
160
  createTextNode: (text2) => {
156
- return `<!-- t -->${escapeHtml(text2)}<!-- /t -->`;
161
+ return `${createMarker(MARKERS.TEXT_START)}${escapeHtml(text2)}${createMarker(MARKERS.TEXT_END)}`;
157
162
  },
158
163
  appendNode: (host, node) => host.append(node),
159
164
  updateTextNode: () => {
160
165
  },
161
166
  removeNode: () => {
167
+ },
168
+ createMarker: (_host, content) => {
169
+ return createMarker(content);
170
+ },
171
+ appendMarker: (host, marker) => host.append(marker),
172
+ removeMarker: () => {
162
173
  }
163
174
  };
164
175
  var fragment = (configOrStrings, ...values) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.ts","../src/components/element.ts","../src/components/text.ts","../src/components/fragment.ts","../src/components/elements.ts","../src/jsx-runtime.ts"],"names":["text","html"],"mappings":"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","file":"jsx-runtime.js","sourcesContent":["/**\n * HTML 转义字符映射\n */\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n}\n\n/**\n * 转义 HTML 特殊字符,防止 XSS\n */\nexport function escapeHtml(text: string): string {\n return text.replace(/[&<>\"']/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 转义属性值\n */\nexport function escapeAttr(value: string): string {\n return value.replace(/[&<>\"]/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 将属性值转换为字符串\n */\nexport function stringifyAttr(\n name: string,\n value: string | number | boolean | null | undefined\n): string {\n if (value === null || value === undefined || value === false) {\n return ''\n }\n if (value === true) {\n return ` ${name}`\n }\n return ` ${name}=\"${escapeAttr(String(value))}\"`\n}\n\n/**\n * 将样式对象转换为 style 属性字符串\n */\nexport function stringifyStyle(\n styles: Record<string, string | number | null | undefined>\n): string {\n const parts: string[] = []\n for (const [key, value] of Object.entries(styles)) {\n if (value !== null && value !== undefined) {\n // 将 camelCase 转换为 kebab-case\n const kebabKey = key.replace(/([A-Z])/g, '-$1').toLowerCase()\n parts.push(`${kebabKey}: ${value}`)\n }\n }\n return parts.join('; ')\n}\n\n/**\n * 将类名数组或对象转换为 class 属性字符串\n */\nexport function stringifyClass(\n className: string | string[] | Record<string, boolean> | undefined\n): string {\n if (!className) {\n return ''\n }\n if (typeof className === 'string') {\n return className\n }\n if (Array.isArray(className)) {\n return className.filter(Boolean).join(' ')\n }\n // 对象形式 { 'class-name': true/false }\n return Object.entries(className)\n .filter(([, value]) => value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * 自闭合标签列表\n */\nexport const VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n])\n\n/**\n * 判断是否为自闭合标签\n */\nexport function isVoidElement(tag: string): boolean {\n return VOID_ELEMENTS.has(tag.toLowerCase())\n}\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport { unrefValue } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport {\n stringifyAttr,\n stringifyStyle,\n escapeHtml,\n isVoidElement\n} from '../utils'\n\n/**\n * element 组件 - 通用 HTML 元素组件(字符串版本)\n *\n * SSR 场景下不需要响应式更新,直接取值渲染\n */\nexport const element = (props: {\n tag: string\n id?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions (including reactive text functions) */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n value?: PropValue<string | number>\n // SSR does not need events - removed for consistency\n}): Mountable<StringHost> => {\n return (host: StringHost) => {\n const tag = props.tag\n const isVoid = isVoidElement(tag)\n\n // 构建开始标签\n let html = `<${tag}`\n\n // id\n const id = unrefValue(props.id)\n if (id) {\n html += stringifyAttr('id', id)\n }\n\n // className\n const className = unrefValue(props.className)\n if (className) {\n html += stringifyAttr('class', className)\n }\n\n // style\n const style = unrefValue(props.style)\n if (style && Object.keys(style).length > 0) {\n html += stringifyAttr('style', stringifyStyle(style))\n }\n\n // value (for input, textarea, select)\n const value = unrefValue(props.value)\n if (value !== undefined) {\n html += stringifyAttr('value', String(value))\n }\n\n // attrs (other attributes)\n const attrs = unrefValue(props.attrs)\n if (attrs) {\n for (const [key, val] of Object.entries(attrs)) {\n // 跳过无效的属性名(数字开头或纯数字)\n if (/^\\d/.test(key)) continue\n html += stringifyAttr(key, val)\n }\n }\n \n // 处理其他props(除了特殊props和已处理的)\n const specialProps = new Set(['tag', 'id', 'className', 'style', 'value', 'attrs', 'children', 'on'])\n for (const [key, val] of Object.entries(props)) {\n if (specialProps.has(key)) continue\n if (key.startsWith('on')) continue // 跳过事件处理器(SSR不需要)\n if (val === undefined || val === null) continue\n \n const attrValue = unrefValue(val as PropValue<unknown>)\n if (attrValue !== undefined && attrValue !== null) {\n // 只处理基本类型(string, number, boolean)\n if (typeof attrValue === 'string' || typeof attrValue === 'number' || typeof attrValue === 'boolean') {\n html += stringifyAttr(key, attrValue)\n }\n }\n }\n\n html += '>'\n\n // 自闭合标签不需要内容和结束标签\n if (isVoid) {\n host.append(html)\n return undefined\n }\n\n // children (text content or mount functions)\n const children = props.children\n if (children !== undefined) {\n if (typeof children === 'string' || (typeof children === 'object' && 'value' in (children as any))) {\n // String content (or ref to string)\n html += escapeHtml(String(unrefValue(children as PropValue<string>)))\n } else if (Array.isArray(children) && children.length > 0) {\n // Array of children - 创建子宿主收集子元素内容\n const childHost: StringHost = {\n fragments: [],\n append(s: string) {\n this.fragments.push(s)\n },\n toString() {\n return this.fragments.join('')\n }\n }\n\n for (const child of children) {\n if (child === null || child === undefined) continue\n \n if (typeof child === 'string') {\n // String child\n childHost.append(escapeHtml(child))\n } else if (typeof child === 'function') {\n // Function - could be Mountable or reactive text function\n // Call it with childHost and check the return value type\n const result = (child as any)(childHost)\n \n // If it returns string/number, it's a reactive text function that ignored our parameter\n if (typeof result === 'string' || typeof result === 'number') {\n childHost.append(escapeHtml(String(result)))\n }\n // Otherwise it's a Mountable, already executed correctly\n }\n }\n\n html += childHost.toString()\n }\n }\n\n // 结束标签\n html += `</${tag}>`\n\n host.append(html)\n\n // SSR 不需要 unmount\n return undefined\n }\n}\n","/**\n * Text node component for HTML (SSR)\n * \n * Outputs escaped text content\n */\n\nimport type { Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\nexport interface TextProps {\n /** Text content - can be static string/number or reactive getter */\n content: string | number | (() => string | number)\n}\n\n/**\n * Create a text node for SSR\n * \n * @example\n * ```ts\n * // Static text\n * text({ content: 'Hello' })\n * \n * // Reactive text (evaluates immediately in SSR)\n * text({ content: () => count.value })\n * ```\n */\nexport function text(props: TextProps): Mountable<StringHost> {\n const { content } = props\n\n return (host: StringHost) => {\n // Resolve content\n const textContent = typeof content === 'function' \n ? String(content())\n : String(content)\n \n // Append escaped text\n host.append(escapeHtml(textContent))\n \n return undefined\n }\n}\n","/**\n * HTML fragment implementation for SSR\n */\nimport { getReactiveRuntime, type Mountable, type FragmentChild } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\n/**\n * HTML fragment uses empty comments as separators between text nodes\n * to preserve the same structure as client-side rendering for proper hydration\n */\nconst hostHooks = {\n createTextNode: (text: string) => {\n // Wrap each text piece with comment markers for hydration matching\n return `<!-- t -->${escapeHtml(text)}<!-- /t -->`\n },\n appendNode: (host: StringHost, node: string) => host.append(node),\n updateTextNode: () => {\n // SSR 中不需要更新文本节点\n },\n removeNode: () => {\n // SSR 中不需要移除节点\n }\n}\n\n/**\n * Fragment function interface for HTML/SSR\n */\ninterface FragmentFunction {\n (config: { children: Array<Mountable<StringHost>> }): Mountable<StringHost>\n (strings: TemplateStringsArray, ...values: FragmentChild<StringHost>[]): Mountable<StringHost>\n}\n\n/**\n * fragment - 组合多个子组件\n * \n * 注意:在 SSR 中,响应式值会被立即求值并转换为静态字符串\n * \n * @example\n * // 对象参数用法\n * fragment({ children: [child1, child2] })\n * \n * // Tagged template 用法\n * const count = ref(0)\n * fragment`Count: ${count} items` // SSR: 立即求值\n * \n * // 别名\n * f`Count: ${count} items`\n */\nexport const fragment: FragmentFunction = (\n configOrStrings: { children: Array<Mountable<StringHost>> } | TemplateStringsArray,\n ...values: FragmentChild<StringHost>[]\n): Mountable<StringHost> => {\n const runtime = getReactiveRuntime()\n \n // 检测是否是 tagged template 调用\n if (Array.isArray(configOrStrings) && 'raw' in configOrStrings) {\n const strings = configOrStrings as TemplateStringsArray\n \n // 直接生成 HTML 字符串而不是通过 core fragment\n // 这样可以避免每个片段都被包装,减少注释标记\n return (host: StringHost) => {\n let html = ''\n for (let i = 0; i < strings.length; i++) {\n if (strings[i]) {\n html += escapeHtml(strings[i])\n }\n if (i < values.length) {\n const value = values[i]\n // Check if it's a ref\n if (runtime.isRef(value)) {\n html += escapeHtml(String((value as any).value))\n } else if (typeof value === 'string' || typeof value === 'number') {\n html += escapeHtml(String(value))\n }\n // Mountables not supported in template strings for SSR\n }\n }\n host.append(html)\n return undefined\n }\n }\n \n // For object config, import core fragment\n const { fragment: coreFragment } = require('@rasenjs/core')\n const config = configOrStrings as { children: Array<Mountable<StringHost>> }\n return coreFragment({ children: config.children, hooks: hostHooks })\n}\n\n/**\n * f - fragment 的简写别名\n */\nexport const f = fragment\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { element } from './element'\n\n// ============================================================================\n// Type definitions\n// ============================================================================\n\ninterface BaseProps {\n id?: PropValue<string>\n class?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n // SSR does not support events - removed on, onClick, onInput, etc.\n}\n\n/** Child type - 响应式文本函数优先匹配 */\ntype Child = string | (() => string | number) | Mountable<StringHost>\n\n/**\n * Factory function to create HTML element components\n * Supports: el(), el('text'), el(child), el(props), el(props, ...children)\n */\nfunction createElement(tag: string) {\n return (\n propsOrChild?: BaseProps | Child,\n ...restChildren: Child[]\n ): Mountable<StringHost> => {\n // No arguments\n if (propsOrChild === undefined) {\n return element({ tag })\n }\n\n // First argument is string or function (Mountable or reactive text), treat as child\n if (\n typeof propsOrChild === 'string' ||\n typeof propsOrChild === 'function'\n ) {\n const children = [propsOrChild, ...restChildren]\n return element({ tag, children })\n }\n \n // First argument is props object\n const props = propsOrChild as BaseProps\n \n // Normalize props: convert `class` to `className` for element()\n const { class: cls, className, ...restProps } = props as any\n const normalizedProps = {\n ...restProps,\n className: className || cls\n }\n \n if (restChildren.length > 0) {\n // Merge children\n const existingChildren = props.children\n const children = Array.isArray(existingChildren)\n ? [...existingChildren, ...restChildren]\n : existingChildren !== undefined\n ? [existingChildren, ...restChildren]\n : restChildren\n \n return element({ tag, ...normalizedProps, children })\n }\n\n return element({ tag, ...normalizedProps })\n }\n}\n\n// ============================================================================\n// Common elements\n// ============================================================================\n\nexport const div = createElement('div')\nexport const span = createElement('span')\nexport const button = createElement('button')\nexport const a = createElement('a')\nexport const p = createElement('p')\n\n// Headings\nexport const h1 = createElement('h1')\nexport const h2 = createElement('h2')\nexport const h3 = createElement('h3')\nexport const h4 = createElement('h4')\nexport const h5 = createElement('h5')\nexport const h6 = createElement('h6')\n\n// Lists\nexport const ul = createElement('ul')\nexport const ol = createElement('ol')\nexport const li = createElement('li')\n\n// Forms\nexport const form = createElement('form')\nexport const label = createElement('label')\nexport const select = createElement('select')\n\n// Tables\nexport const table = createElement('table')\nexport const thead = createElement('thead')\nexport const tbody = createElement('tbody')\nexport const tfoot = createElement('tfoot')\nexport const tr = createElement('tr')\nexport const th = createElement('th')\nexport const td = createElement('td')\n\n// Semantic layout\nexport const section = createElement('section')\nexport const article = createElement('article')\nexport const header = createElement('header')\nexport const footer = createElement('footer')\nexport const nav = createElement('nav')\nexport const main = createElement('main')\nexport const aside = createElement('aside')\n\n// Other common elements\nexport const pre = createElement('pre')\nexport const code = createElement('code')\nexport const blockquote = createElement('blockquote')\nexport const strong = createElement('strong')\nexport const em = createElement('em')\nexport const small = createElement('small')\nexport const mark = createElement('mark')\nexport const del = createElement('del')\nexport const ins = createElement('ins')\nexport const sub = createElement('sub')\nexport const sup = createElement('sup')\nexport const svg = createElement('svg')\n\n// Self-closing elements\nexport const br = () => element({ tag: 'br' })\nexport const hr = () => element({ tag: 'hr' })\n\n// ============================================================================\n// Special elements with extended props\n// ============================================================================\n\n/**\n * input component\n */\nexport const input = (\n props: BaseProps & {\n type?: PropValue<string>\n value?: PropValue<string | any>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { type, value, placeholder, disabled, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(type !== undefined ? { type } : {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {})\n }\n\n return element({\n tag: 'input',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { value } : {})\n })\n}\n\n/**\n * img component\n */\nexport const img = (props: BaseProps & {\n src?: PropValue<string>\n alt?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n}): Mountable<StringHost> => {\n return element({ tag: 'img', ...props })\n}\n\n/**\n * textarea component\n */\nexport const textarea = (\n props: BaseProps & {\n value?: PropValue<string>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n rows?: PropValue<number>\n cols?: PropValue<number>\n }\n): Mountable<StringHost> => {\n const { value, placeholder, disabled, rows, cols, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(rows !== undefined ? { rows } : {}),\n ...(cols !== undefined ? { cols } : {})\n }\n\n // textarea value should be children (text content)\n return element({\n tag: 'textarea',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { children: String(value) } : {})\n })\n}\n\n/**\n * option component\n */\nexport const option = (\n props: BaseProps & {\n value?: PropValue<string | number>\n selected?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { value, selected, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(value !== undefined ? { value } : {}),\n ...(selected ? { selected: true } : {})\n }\n\n return element({\n tag: 'option',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * video component\n */\nexport const video = (\n props: BaseProps & {\n src?: PropValue<string>\n poster?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, poster, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(poster !== undefined ? { poster } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'video',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * audio component\n */\nexport const audio = (\n props: BaseProps & {\n src?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'audio',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * source component\n */\nexport const source = (\n props: BaseProps & {\n src?: PropValue<string>\n type?: PropValue<string>\n }\n): Mountable<StringHost> => {\n const { src, type, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(type !== undefined ? { type } : {})\n }\n\n return element({\n tag: 'source',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * iframe component\n */\nexport const iframe = (\n props: BaseProps & {\n src?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n frameborder?: PropValue<string | number>\n allowfullscreen?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, width, height, frameborder, allowfullscreen, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(frameborder !== undefined ? { frameborder } : {}),\n ...(allowfullscreen ? { allowfullscreen: true } : {})\n }\n\n return element({\n tag: 'iframe',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * canvas component (SSR only renders empty canvas tag)\n */\nexport const canvas = (\n props: BaseProps & {\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n }\n): Mountable<StringHost> => {\n const { width, height, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {})\n }\n\n return element({\n tag: 'canvas',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n","/**\n * JSX Runtime integration for @rasenjs/html (SSR/SSG)\n * \n * Auto-configures jsx-runtime with HTML string primitives and tags.\n */\n\nimport { setTextPrimitive, setFragmentPrimitive, configureTags, type TextPrimitive, type FragmentPrimitive } from '@rasenjs/jsx-runtime'\nimport {\n text,\n fragment,\n // Text elements\n div,\n span,\n p,\n a,\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n // Form elements\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n // Lists\n ul,\n ol,\n li,\n // Media\n img,\n canvas,\n // Semantic HTML5\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n // Formatting\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n} from './index'\n\n// Configure primitives\nsetTextPrimitive(text as TextPrimitive)\nsetFragmentPrimitive(fragment as FragmentPrimitive)\n\n// Configure all HTML tags\nconfigureTags({\n '': {\n div,\n span,\n p,\n a,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n ul,\n ol,\n li,\n img,\n canvas,\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n }\n})\n\n// Re-export jsx-runtime\nexport * from '@rasenjs/jsx-runtime'\n"]}
1
+ {"version":3,"sources":["../src/utils.ts","../src/components/element.ts","../src/components/text.ts","../src/marker-constants.ts","../src/components/fragment.ts","../src/components/elements.ts","../src/jsx-runtime.ts"],"names":["text","html"],"mappings":"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","file":"jsx-runtime.js","sourcesContent":["/**\n * HTML 转义字符映射\n */\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n}\n\n/**\n * 转义 HTML 特殊字符,防止 XSS\n */\nexport function escapeHtml(text: string): string {\n return text.replace(/[&<>\"']/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 转义属性值\n */\nexport function escapeAttr(value: string): string {\n return value.replace(/[&<>\"]/g, (char) => HTML_ESCAPE_MAP[char] || char)\n}\n\n/**\n * 将属性值转换为字符串\n */\nexport function stringifyAttr(\n name: string,\n value: string | number | boolean | null | undefined\n): string {\n if (value === null || value === undefined || value === false) {\n return ''\n }\n if (value === true) {\n return ` ${name}`\n }\n return ` ${name}=\"${escapeAttr(String(value))}\"`\n}\n\n/**\n * 将样式对象转换为 style 属性字符串\n */\nexport function stringifyStyle(\n styles: Record<string, string | number | null | undefined>\n): string {\n const parts: string[] = []\n for (const [key, value] of Object.entries(styles)) {\n if (value !== null && value !== undefined) {\n // 将 camelCase 转换为 kebab-case\n const kebabKey = key.replace(/([A-Z])/g, '-$1').toLowerCase()\n parts.push(`${kebabKey}: ${value}`)\n }\n }\n return parts.join('; ')\n}\n\n/**\n * 将类名数组或对象转换为 class 属性字符串\n */\nexport function stringifyClass(\n className: string | string[] | Record<string, boolean> | undefined\n): string {\n if (!className) {\n return ''\n }\n if (typeof className === 'string') {\n return className\n }\n if (Array.isArray(className)) {\n return className.filter(Boolean).join(' ')\n }\n // 对象形式 { 'class-name': true/false }\n return Object.entries(className)\n .filter(([, value]) => value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * 自闭合标签列表\n */\nexport const VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n])\n\n/**\n * 判断是否为自闭合标签\n */\nexport function isVoidElement(tag: string): boolean {\n return VOID_ELEMENTS.has(tag.toLowerCase())\n}\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport { unrefValue } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport {\n stringifyAttr,\n stringifyStyle,\n escapeHtml,\n isVoidElement\n} from '../utils'\n\n/**\n * element 组件 - 通用 HTML 元素组件(字符串版本)\n *\n * SSR 场景下不需要响应式更新,直接取值渲染\n */\nexport const element = (props: {\n tag: string\n id?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions (including reactive text functions) */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n value?: PropValue<string | number>\n // SSR does not need events - removed for consistency\n}): Mountable<StringHost> => {\n return (host: StringHost) => {\n const tag = props.tag\n const isVoid = isVoidElement(tag)\n\n // 构建开始标签\n let html = `<${tag}`\n\n // id\n const id = unrefValue(props.id)\n if (id) {\n html += stringifyAttr('id', id)\n }\n\n // className\n const className = unrefValue(props.className)\n if (className) {\n html += stringifyAttr('class', className)\n }\n\n // style\n const style = unrefValue(props.style)\n if (style && Object.keys(style).length > 0) {\n html += stringifyAttr('style', stringifyStyle(style))\n }\n\n // value (for input, textarea, select)\n const value = unrefValue(props.value)\n if (value !== undefined) {\n html += stringifyAttr('value', String(value))\n }\n\n // attrs (other attributes)\n const attrs = unrefValue(props.attrs)\n if (attrs) {\n for (const [key, val] of Object.entries(attrs)) {\n // 跳过无效的属性名(数字开头或纯数字)\n if (/^\\d/.test(key)) continue\n html += stringifyAttr(key, val)\n }\n }\n \n // 处理其他props(除了特殊props和已处理的)\n const specialProps = new Set(['tag', 'id', 'className', 'style', 'value', 'attrs', 'children', 'on'])\n for (const [key, val] of Object.entries(props)) {\n if (specialProps.has(key)) continue\n if (key.startsWith('on')) continue // 跳过事件处理器(SSR不需要)\n if (val === undefined || val === null) continue\n \n const attrValue = unrefValue(val as PropValue<unknown>)\n if (attrValue !== undefined && attrValue !== null) {\n // 只处理基本类型(string, number, boolean)\n if (typeof attrValue === 'string' || typeof attrValue === 'number' || typeof attrValue === 'boolean') {\n html += stringifyAttr(key, attrValue)\n }\n }\n }\n\n html += '>'\n\n // 自闭合标签不需要内容和结束标签\n if (isVoid) {\n host.append(html)\n return undefined\n }\n\n // children (text content or mount functions)\n const children = props.children\n if (children !== undefined) {\n if (typeof children === 'string' || (typeof children === 'object' && 'value' in (children as any))) {\n // String content (or ref to string)\n html += escapeHtml(String(unrefValue(children as PropValue<string>)))\n } else if (Array.isArray(children) && children.length > 0) {\n // Array of children - 创建子宿主收集子元素内容\n const childHost: StringHost = {\n fragments: [],\n append(s: string) {\n this.fragments.push(s)\n },\n toString() {\n return this.fragments.join('')\n }\n }\n\n for (const child of children) {\n if (child === null || child === undefined) continue\n \n if (typeof child === 'string') {\n // String child\n childHost.append(escapeHtml(child))\n } else if (typeof child === 'function') {\n // Function - could be Mountable or reactive text function\n // Call it with childHost and check the return value type\n const result = (child as any)(childHost)\n \n // If it returns string/number, it's a reactive text function that ignored our parameter\n if (typeof result === 'string' || typeof result === 'number') {\n childHost.append(escapeHtml(String(result)))\n }\n // Otherwise it's a Mountable, already executed correctly\n }\n }\n\n html += childHost.toString()\n }\n }\n\n // 结束标签\n html += `</${tag}>`\n\n host.append(html)\n\n // SSR 不需要 unmount\n return undefined\n }\n}\n","/**\n * Text node component for HTML (SSR)\n * \n * Outputs escaped text content\n */\n\nimport type { Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\n\nexport interface TextProps {\n /** Text content - can be static string/number or reactive getter */\n content: string | number | (() => string | number)\n}\n\n/**\n * Create a text node for SSR\n * \n * @example\n * ```ts\n * // Static text\n * text({ content: 'Hello' })\n * \n * // Reactive text (evaluates immediately in SSR)\n * text({ content: () => count.value })\n * ```\n */\nexport function text(props: TextProps): Mountable<StringHost> {\n const { content } = props\n\n return (host: StringHost) => {\n // Resolve content\n const textContent = typeof content === 'function' \n ? String(content())\n : String(content)\n \n // Append escaped text\n host.append(escapeHtml(textContent))\n \n return undefined\n }\n}\n","/**\n * HTML/SSR-specific marker utilities\n * \n * Re-exports marker constants from @rasenjs/core and provides\n * HTML-specific helper functions for generating comment markers.\n */\nexport { MARKERS, MARKER_DEBUG_MAP, type MarkerType } from '@rasenjs/core'\n\n/**\n * Create an HTML comment marker\n * @example\n * createMarker(MARKERS.FRAGMENT_START) // <!-- f -->\n * createMarker(MARKERS.WHEN_END) // <!-- /w -->\n */\nexport function createMarker(type: string): string {\n return `<!-- ${type} -->`\n}\n\n","/**\n * HTML fragment implementation for SSR\n */\nimport { getReactiveRuntime, type Mountable, type FragmentChild } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { escapeHtml } from '../utils'\nimport { MARKERS, createMarker } from '../marker-constants'\n\n/**\n * HTML fragment uses comment markers to preserve boundaries for hydration\n * Following the same pattern as text nodes: <!-- f --> and <!-- /f -->\n */\nconst hostHooks = {\n createTextNode: (text: string) => {\n // Wrap each text piece with comment markers for hydration matching\n return `${createMarker(MARKERS.TEXT_START)}${escapeHtml(text)}${createMarker(MARKERS.TEXT_END)}`\n },\n appendNode: (host: StringHost, node: string) => host.append(node),\n updateTextNode: () => {\n // SSR 中不需要更新文本节点\n },\n removeNode: () => {\n // SSR 中不需要移除节点\n },\n createMarker: (_host: StringHost, content: string) => {\n return createMarker(content)\n },\n appendMarker: (host: StringHost, marker: string) => host.append(marker),\n removeMarker: () => {\n // SSR 中不需要移除标记\n }\n}\n\n/**\n * Fragment function interface for HTML/SSR\n */\ninterface FragmentFunction {\n (config: { children: Array<Mountable<StringHost>> }): Mountable<StringHost>\n (strings: TemplateStringsArray, ...values: FragmentChild<StringHost>[]): Mountable<StringHost>\n}\n\n/**\n * fragment - 组合多个子组件\n * \n * 注意:在 SSR 中,响应式值会被立即求值并转换为静态字符串\n * \n * @example\n * // 对象参数用法\n * fragment({ children: [child1, child2] })\n * \n * // Tagged template 用法\n * const count = ref(0)\n * fragment`Count: ${count} items` // SSR: 立即求值\n * \n * // 别名\n * f`Count: ${count} items`\n */\nexport const fragment: FragmentFunction = (\n configOrStrings: { children: Array<Mountable<StringHost>> } | TemplateStringsArray,\n ...values: FragmentChild<StringHost>[]\n): Mountable<StringHost> => {\n const runtime = getReactiveRuntime()\n \n // 检测是否是 tagged template 调用\n if (Array.isArray(configOrStrings) && 'raw' in configOrStrings) {\n const strings = configOrStrings as TemplateStringsArray\n \n // 直接生成 HTML 字符串而不是通过 core fragment\n // 这样可以避免每个片段都被包装,减少注释标记\n return (host: StringHost) => {\n let html = ''\n for (let i = 0; i < strings.length; i++) {\n if (strings[i]) {\n html += escapeHtml(strings[i])\n }\n if (i < values.length) {\n const value = values[i]\n // Check if it's a ref\n if (runtime.isRef(value)) {\n html += escapeHtml(String((value as any).value))\n } else if (typeof value === 'string' || typeof value === 'number') {\n html += escapeHtml(String(value))\n }\n // Mountables not supported in template strings for SSR\n }\n }\n host.append(html)\n return undefined\n }\n }\n \n // For object config, import core fragment\n const { fragment: coreFragment } = require('@rasenjs/core')\n const config = configOrStrings as { children: Array<Mountable<StringHost>> }\n return coreFragment({ children: config.children, hooks: hostHooks })\n}\n\n/**\n * f - fragment 的简写别名\n */\nexport const f = fragment\n","import type { PropValue, Mountable } from '@rasenjs/core'\nimport type { StringHost } from '../types'\nimport { element } from './element'\n\n// ============================================================================\n// Type definitions\n// ============================================================================\n\ninterface BaseProps {\n id?: PropValue<string>\n class?: PropValue<string>\n className?: PropValue<string>\n style?: PropValue<Record<string, string | number>>\n attrs?: PropValue<Record<string, string | number | boolean>>\n /** Text content or child mount functions */\n children?: PropValue<string> | Array<string | (() => string | number) | Mountable<StringHost>>\n // SSR does not support events - removed on, onClick, onInput, etc.\n}\n\n/** Child type - 响应式文本函数优先匹配 */\ntype Child = string | (() => string | number) | Mountable<StringHost>\n\n/**\n * Factory function to create HTML element components\n * Supports: el(), el('text'), el(child), el(props), el(props, ...children)\n */\nfunction createElement(tag: string) {\n return (\n propsOrChild?: BaseProps | Child,\n ...restChildren: Child[]\n ): Mountable<StringHost> => {\n // No arguments\n if (propsOrChild === undefined) {\n return element({ tag })\n }\n\n // First argument is string or function (Mountable or reactive text), treat as child\n if (\n typeof propsOrChild === 'string' ||\n typeof propsOrChild === 'function'\n ) {\n const children = [propsOrChild, ...restChildren]\n return element({ tag, children })\n }\n \n // First argument is props object\n const props = propsOrChild as BaseProps\n \n // Normalize props: convert `class` to `className` for element()\n const { class: cls, className, ...restProps } = props as any\n const normalizedProps = {\n ...restProps,\n className: className || cls\n }\n \n if (restChildren.length > 0) {\n // Merge children\n const existingChildren = props.children\n const children = Array.isArray(existingChildren)\n ? [...existingChildren, ...restChildren]\n : existingChildren !== undefined\n ? [existingChildren, ...restChildren]\n : restChildren\n \n return element({ tag, ...normalizedProps, children })\n }\n\n return element({ tag, ...normalizedProps })\n }\n}\n\n// ============================================================================\n// Common elements\n// ============================================================================\n\nexport const div = createElement('div')\nexport const span = createElement('span')\nexport const button = createElement('button')\nexport const a = createElement('a')\nexport const p = createElement('p')\n\n// Headings\nexport const h1 = createElement('h1')\nexport const h2 = createElement('h2')\nexport const h3 = createElement('h3')\nexport const h4 = createElement('h4')\nexport const h5 = createElement('h5')\nexport const h6 = createElement('h6')\n\n// Lists\nexport const ul = createElement('ul')\nexport const ol = createElement('ol')\nexport const li = createElement('li')\n\n// Forms\nexport const form = createElement('form')\nexport const label = createElement('label')\nexport const select = createElement('select')\n\n// Tables\nexport const table = createElement('table')\nexport const thead = createElement('thead')\nexport const tbody = createElement('tbody')\nexport const tfoot = createElement('tfoot')\nexport const tr = createElement('tr')\nexport const th = createElement('th')\nexport const td = createElement('td')\n\n// Semantic layout\nexport const section = createElement('section')\nexport const article = createElement('article')\nexport const header = createElement('header')\nexport const footer = createElement('footer')\nexport const nav = createElement('nav')\nexport const main = createElement('main')\nexport const aside = createElement('aside')\n\n// Other common elements\nexport const pre = createElement('pre')\nexport const code = createElement('code')\nexport const blockquote = createElement('blockquote')\nexport const strong = createElement('strong')\nexport const em = createElement('em')\nexport const small = createElement('small')\nexport const mark = createElement('mark')\nexport const del = createElement('del')\nexport const ins = createElement('ins')\nexport const sub = createElement('sub')\nexport const sup = createElement('sup')\nexport const svg = createElement('svg')\n\n// Self-closing elements\nexport const br = () => element({ tag: 'br' })\nexport const hr = () => element({ tag: 'hr' })\n\n// ============================================================================\n// Special elements with extended props\n// ============================================================================\n\n/**\n * input component\n */\nexport const input = (\n props: BaseProps & {\n type?: PropValue<string>\n value?: PropValue<string | any>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { type, value, placeholder, disabled, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(type !== undefined ? { type } : {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {})\n }\n\n return element({\n tag: 'input',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { value } : {})\n })\n}\n\n/**\n * img component\n */\nexport const img = (props: BaseProps & {\n src?: PropValue<string>\n alt?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n}): Mountable<StringHost> => {\n return element({ tag: 'img', ...props })\n}\n\n/**\n * textarea component\n */\nexport const textarea = (\n props: BaseProps & {\n value?: PropValue<string>\n placeholder?: PropValue<string>\n disabled?: PropValue<boolean>\n rows?: PropValue<number>\n cols?: PropValue<number>\n }\n): Mountable<StringHost> => {\n const { value, placeholder, disabled, rows, cols, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(placeholder !== undefined ? { placeholder } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(rows !== undefined ? { rows } : {}),\n ...(cols !== undefined ? { cols } : {})\n }\n\n // textarea value should be children (text content)\n return element({\n tag: 'textarea',\n ...restProps,\n attrs: newAttrs as any,\n ...(value !== undefined ? { children: String(value) } : {})\n })\n}\n\n/**\n * option component\n */\nexport const option = (\n props: BaseProps & {\n value?: PropValue<string | number>\n selected?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { value, selected, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(value !== undefined ? { value } : {}),\n ...(selected ? { selected: true } : {})\n }\n\n return element({\n tag: 'option',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * video component\n */\nexport const video = (\n props: BaseProps & {\n src?: PropValue<string>\n poster?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, poster, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(poster !== undefined ? { poster } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'video',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * audio component\n */\nexport const audio = (\n props: BaseProps & {\n src?: PropValue<string>\n controls?: PropValue<boolean>\n autoplay?: PropValue<boolean>\n loop?: PropValue<boolean>\n muted?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, controls, autoplay, loop, muted, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(controls ? { controls: true } : {}),\n ...(autoplay ? { autoplay: true } : {}),\n ...(loop ? { loop: true } : {}),\n ...(muted ? { muted: true } : {})\n }\n\n return element({\n tag: 'audio',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * source component\n */\nexport const source = (\n props: BaseProps & {\n src?: PropValue<string>\n type?: PropValue<string>\n }\n): Mountable<StringHost> => {\n const { src, type, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(type !== undefined ? { type } : {})\n }\n\n return element({\n tag: 'source',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * iframe component\n */\nexport const iframe = (\n props: BaseProps & {\n src?: PropValue<string>\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n frameborder?: PropValue<string | number>\n allowfullscreen?: PropValue<boolean>\n }\n): Mountable<StringHost> => {\n const { src, width, height, frameborder, allowfullscreen, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(src !== undefined ? { src } : {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n ...(frameborder !== undefined ? { frameborder } : {}),\n ...(allowfullscreen ? { allowfullscreen: true } : {})\n }\n\n return element({\n tag: 'iframe',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n\n/**\n * canvas component (SSR only renders empty canvas tag)\n */\nexport const canvas = (\n props: BaseProps & {\n width?: PropValue<string | number>\n height?: PropValue<string | number>\n }\n): Mountable<StringHost> => {\n const { width, height, attrs, ...restProps } = props as any\n\n const newAttrs = {\n ...(attrs || {}),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {})\n }\n\n return element({\n tag: 'canvas',\n ...restProps,\n attrs: newAttrs as any\n })\n}\n","/**\n * JSX Runtime integration for @rasenjs/html (SSR/SSG)\n * \n * Auto-configures jsx-runtime with HTML string primitives and tags.\n */\n\nimport { setTextPrimitive, setFragmentPrimitive, configureTags, type TextPrimitive, type FragmentPrimitive } from '@rasenjs/jsx-runtime'\nimport {\n text,\n fragment,\n // Text elements\n div,\n span,\n p,\n a,\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n // Form elements\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n // Lists\n ul,\n ol,\n li,\n // Media\n img,\n canvas,\n // Semantic HTML5\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n // Formatting\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n} from './index'\n\n// Configure primitives\nsetTextPrimitive(text as TextPrimitive)\nsetFragmentPrimitive(fragment as FragmentPrimitive)\n\n// Configure all HTML tags\nconfigureTags({\n '': {\n div,\n span,\n p,\n a,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n button,\n input,\n textarea,\n select,\n option,\n label,\n form,\n ul,\n ol,\n li,\n img,\n canvas,\n section,\n article,\n header,\n footer,\n nav,\n main,\n aside,\n code,\n pre,\n strong,\n em,\n small,\n br,\n hr,\n }\n})\n\n// Re-export jsx-runtime\nexport * from '@rasenjs/jsx-runtime'\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasenjs/html",
3
- "version": "0.1.3-alpha",
3
+ "version": "0.1.4-alpha",
4
4
  "description": "Rasen HTML renderer for SSR/SSG",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -56,7 +56,7 @@
56
56
  "author": "Rasen Contributors",
57
57
  "license": "MIT",
58
58
  "dependencies": {
59
- "@rasenjs/core": "^0.1.5-alpha",
59
+ "@rasenjs/core": "^0.1.6-alpha",
60
60
  "@rasenjs/jsx-runtime": "^0.1.6-alpha"
61
61
  }
62
62
  }