{"version":3,"file":"lithentSsr.cjs","sources":["../../jsx-runtime/dist/jsxRuntime.mjs","../src/tests/tostring.tsx","../src/helper/index.ts","../src/renderToString.ts","../src/hydration.ts","../src/index.ts"],"sourcesContent":["import { h as i } from \"lithent\";\nimport { Fragment as h } from \"lithent\";\nfunction f(e, s, t, n, c, a) {\n  const { children: r, ...o } = s;\n  if (r != null) {\n    const u = n && Array.isArray(r) ? r : [r];\n    return i(e, { ...o, key: t }, ...u);\n  }\n  return i(e, { ...o, key: t });\n}\nfunction d(e, s, t, n, c, a) {\n  return f(e, s, t, !0);\n}\nexport {\n  h as Fragment,\n  f as jsx,\n  f as jsxDEV,\n  d as jsxs\n};\n//# sourceMappingURL=jsxRuntime.mjs.map\n","import { mount, Fragment } from 'lithent';\n\nconst Meta = mount(_r => {\n  return () => (\n    <Fragment>\n      <meta name=\"twitter:card1\" content=\"summary_large_image\" />{' '}\n      <meta name=\"twitter:site2\" content=\"@superlucky84\" />\n    </Fragment>\n  );\n});\n\nconst Children = mount(r => {\n  let v = 1;\n  let k = 's';\n\n  const increase = () => {\n    v += 1;\n    k += 's';\n    r();\n  };\n\n  return () => (\n    <div style={{ border: `${v}px solid red` }}>\n      asve\n      <br />\n      <section innerHTML=\"<article>ss</article>\" />\n      <button disabled={false} onClick={increase}>\n        {v} -== a1 - {v}\n        {k}\n      </button>\n      {v}\n      <span id=\"aa11\" data-max-string=\"va\">\n        {'  '}123124\n      </span>\n    </div>\n  );\n});\n\nconst Root = mount(_r => {\n  return () => (\n    <html lang=\"en\">\n      <head>\n        <title>Express with Vite and JSX</title>\n        <Meta />\n        <script src=\"/dist/lithentSsr.umd.js\"></script>\n      </head>\n      <body>\n        <div id=\"app\">\n          <Children />\n        </div>\n      </body>\n    </html>\n  );\n});\n\nexport default Root;\n","const SELF_CLOSE_ALLLOW = [\n  'area',\n  'base',\n  'br',\n  'col',\n  'embed',\n  'hr',\n  'img',\n  'input',\n  'keygen',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr',\n];\n\nexport function isAllowSelfClose(tagname: string) {\n  return SELF_CLOSE_ALLLOW.includes(tagname);\n}\n\nexport function checkExisty(value: unknown) {\n  return value !== null && value !== undefined;\n}\n\nexport function checkVirtualType(type?: string | null) {\n  return type && ['f', 'l'].includes(type);\n}\n\nexport function checkStyleData(\n  dataKey: string,\n  dataValue: unknown\n): dataValue is Record<string, string> {\n  return dataKey === 'style' && typeof dataValue === 'object';\n}\n\nexport function checkRefData(\n  dataKey: string,\n  dataValue: unknown\n): dataValue is {\n  value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} {\n  return dataKey === 'ref' && typeof dataValue === 'object';\n}\n\nexport function styleObjectToString(styleObj: Record<string, string>) {\n  return Object.entries(styleObj)\n    .map(([key, value]) => {\n      // camelCase를 kebab-case로 변환 (예: borderTop -> border-top)\n      const kebabKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n      return `${kebabKey}: ${value};`;\n    })\n    .join(' ');\n}\n","import type { WDom, Props } from 'lithent';\nimport {\n  isAllowSelfClose,\n  checkExisty,\n  checkVirtualType,\n  checkStyleData,\n  checkRefData,\n  styleObjectToString,\n} from './helper';\n\n/**\n * Escape special HTML characters in text node content.\n * Prevents text like `<h-state>` from being parsed as HTML elements by the browser.\n */\nfunction escapeHtml(str: string): string {\n  return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\n/**\n * Escape an attribute value. The value is written inside double quotes, so a\n * `\"` in it would otherwise end the attribute and let the rest be parsed as\n * markup.\n */\nfunction escapeAttr(str: string): string {\n  return escapeHtml(str).replace(/\"/g, '&quot;');\n}\n\n/**\n * Characters that cannot be part of an attribute name. A prop with such a name\n * (possible when props are spread from data) is not written at all.\n */\nconst invalidAttrName = /[\\s\"'<>/=]/;\n\n/**\n * Main function of renderToString\"\n */\nexport function renderToString(wDom: WDom) {\n  return wDomToString(wDom);\n}\n\n/**\n * Converts a chunk of virtual DOM objects into string tags.\n */\nfunction wDomToString(wDom: WDom) {\n  let element = '';\n  const { type, tag, text, props, children = [] } = wDom;\n  const isVirtualType = checkVirtualType(type);\n\n  if (isVirtualType) {\n    element = wDomChildrenToDom(children, element);\n  } else if (type === 'e' && tag) {\n    const innerHTML = props?.innerHTML;\n\n    if (innerHTML) {\n      element = `<${tag}${makeProp(props)}>${innerHTML}</${tag}>`;\n    } else if (isAllowSelfClose(tag) && !children.length) {\n      element = `<${tag}${makeProp(props)} />`;\n    } else {\n      element = `<${tag}${makeProp(props)}>`;\n      element = wDomChildrenToDom(children, element);\n      element = `${element}</${tag}>`;\n    }\n  } else if (type === 't' && checkExisty(text)) {\n    element = escapeHtml(String(text));\n    element = wDomChildrenToDom(children, element);\n  } else {\n    throw new Error(\n      'An attempt was made to render an abnormal virtual DOM object.'\n    );\n  }\n\n  return element;\n}\n\n/**\n * Converts all child nodes of a virtual DOM object into string tags.\n */\nfunction wDomChildrenToDom(children: WDom[], parentElement?: string) {\n  const newString = children.reduce((acc: string, childItem: WDom) => {\n    if (childItem.type) {\n      const childElement = wDomToString(childItem);\n\n      acc += childElement;\n    }\n\n    return acc;\n  }, parentElement || '');\n\n  return newString;\n}\n\n/**\n * Creates and attaches a prop string to the tag.\n */\nfunction makeProp(props?: Props) {\n  let attrGroup: string[] = [];\n\n  Object.entries(props || {}).forEach(\n    ([dataKey, dataValue]: [string, unknown]) => {\n      const isKey = dataKey === 'key';\n      const isPortal = dataKey === 'portal' && typeof dataValue === 'object';\n      const isHtml = dataKey === 'innerHTML' && typeof dataValue === 'string';\n      const isRef = checkRefData(dataKey, dataValue);\n      const isEvent = dataKey.match(/^on/);\n\n      const isInvalid = invalidAttrName.test(dataKey);\n\n      if (!(isKey || isPortal || isHtml || isRef || isEvent || isInvalid)) {\n        if (checkStyleData(dataKey, dataValue)) {\n          const cssString = styleObjectToString(dataValue);\n          attrGroup.push(`style=\"${escapeAttr(cssString)}\"`);\n        } else if (dataKey && dataValue === true) {\n          attrGroup.push(`${dataKey}=\"${dataKey}\"`);\n        } else if (dataKey && typeof dataValue !== 'boolean') {\n          attrGroup.push(`${dataKey}=\"${escapeAttr(String(dataValue))}\"`);\n        }\n      }\n    }\n  );\n\n  return attrGroup.length ? ' ' + attrGroup.join(' ') : '';\n}\n","import { render } from 'lithent';\nimport type { WDom } from 'lithent';\n\n/**\n * hydration\n */\nexport function hydration(wDom: WDom, wrapElement: HTMLElement) {\n  /**\n   * Attach the el property to wDom.\n   */\n  addElement(wDom, wrapElement);\n\n  /**\n   * Attach events to wDom.\n   */\n  return render(wDom, wrapElement, null, true);\n}\n\n/**\n * Attach the el property to wDom.\n */\nfunction addElement(wDomOrig: WDom, wrapElement: HTMLElement) {\n  const isVirtualType = wDomOrig.type && ['f', 'l'].includes(wDomOrig.type);\n\n  if (isVirtualType) {\n    wDomOrig.el = new DocumentFragment();\n  }\n  const wDomList = flatFlagmentFromList(\n    isVirtualType ? [...(wDomOrig.children || [])] : [wDomOrig]\n  );\n\n  const realDomList =\n    wrapElement.tagName === 'HTML'\n      ? [wrapElement]\n      : Array.from(wrapElement.childNodes);\n\n  if (wDomList) {\n    addElementProcessChildren(wDomList, realDomList);\n  }\n}\n\n/**\n * Attach the el property to wDom recursively.\n */\nfunction addElementProcessChildren(wDomList: WDom[], realDomList: ChildNode[]) {\n  let index = 0;\n  realDomList\n    .filter((item: any) => filteredEmptyTextNode(item))\n    .forEach(realDomItem => {\n      let wDomItem = wDomList[index];\n      const nodeType = realDomItem.nodeType;\n      let pass = false;\n\n      if (\n        wDomItem?.type === null ||\n        (wDomItem?.type === 't' && wDomItem?.text === '\\n') ||\n        (wDomItem?.type === 't' && nodeType === 1)\n      ) {\n        index += 1;\n        wDomItem = wDomList[index];\n      }\n\n      if (\n        realDomItem &&\n        wDomItem &&\n        wDomItem.type &&\n        ['t', 'e'].includes(wDomItem.type)\n      ) {\n        if (wDomItem.type === 't' && nodeType === 3) {\n          const { tFragment, nIndex } = processConsecutiveTextNodes(\n            wDomList,\n            index\n          );\n          index = nIndex;\n          realDomItem!.parentElement!.replaceChild(tFragment, realDomItem);\n        } else if (wDomItem.type === 'e' && nodeType === 1) {\n          if (\n            ((realDomItem as HTMLElement).tagName || '').toLowerCase() !==\n            wDomItem.tag\n          ) {\n            // throw new Error('Hydration Error - not matched tagname');\n            pass = true;\n          } else {\n            wDomItem.el = realDomItem as HTMLElement;\n          }\n        }\n\n        if (!pass) {\n          addElementProcessChildren(\n            flatFlagmentFromList(wDomItem.children || []),\n            Array.from(realDomItem.childNodes)\n          );\n        }\n      }\n\n      if (!pass) {\n        index += 1;\n      }\n    });\n}\n\n/**\n * Whitespace or text nodes are ignored.\n */\nfunction filteredEmptyTextNode(item: HTMLElement | Text) {\n  if (item.nodeType === 3 && !(item as Text).data.replace(/\\s*/g, '')) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Flattens nested fragment types.\n */\nfunction flatFlagmentFromList(wDomlist: WDom[]) {\n  return wDomlist.reduce((acc: WDom[], item: WDom) => {\n    if (item.type && ['f', 'l'].includes(item.type)) {\n      item.el = new DocumentFragment();\n      acc.push(...flatFlagmentFromList(item?.children || []));\n    } else {\n      acc.push(item);\n    }\n    return acc;\n  }, []);\n}\n\n/**\n * Hydration is applied to consecutively rendered text node objects.\n */\nfunction processConsecutiveTextNodes(wDomList: WDom[], cIndex: number) {\n  const textWDomList: WDom[] = collectAdjacentTextNode(wDomList, cIndex, []);\n  const tFragment = new DocumentFragment();\n  textWDomList.forEach(item => {\n    const textNode = document.createTextNode(String(item.text));\n    item.el = textNode;\n    tFragment.appendChild(textNode);\n  });\n\n  return {\n    tFragment,\n    nIndex: cIndex + (textWDomList.length - 1),\n  };\n}\n\n/**\n * Collect consecutive text nodes.\n */\nfunction collectAdjacentTextNode(\n  wDomList: WDom[],\n  cIndex: number,\n  acc: WDom[]\n): WDom[] {\n  if (wDomList[cIndex] && wDomList[cIndex].type === 't') {\n    acc.push(wDomList[cIndex]);\n\n    return collectAdjacentTextNode(wDomList, cIndex + 1, [...acc]);\n  }\n  return acc;\n}\n","import { h } from 'lithent';\nimport type { TagFunction } from 'lithent';\nimport Test from './tests/tostring';\nimport { renderToString as _renderToString } from './renderToString';\nimport { hydration as _hydration } from './hydration';\n\nexport const renderToString = _renderToString;\nexport const hydration = _hydration;\n\nexport function renderWithHydration(tagFunction: TagFunction) {\n  if (typeof window !== 'undefined') {\n    return hydration(h(tagFunction, {}), document.documentElement);\n  }\n\n  return _renderToString(h(tagFunction, {}));\n}\n\nlet _run: ((wrap: HTMLElement) => void) | undefined;\n\nif (import.meta.env.MODE === 'development') {\n  _run = (wrap: HTMLElement) => {\n    hydration(h(Test as TagFunction, {}), wrap);\n  };\n}\n\nexport const run = _run;\n"],"names":["f","s","n","c","a","r","o","i","Meta","mount","_r","Fragment","jsx","Children","v","k","increase","jsxs","SELF_CLOSE_ALLLOW","isAllowSelfClose","tagname","checkExisty","value","checkVirtualType","type","checkStyleData","dataKey","dataValue","checkRefData","styleObjectToString","styleObj","key","escapeHtml","str","escapeAttr","invalidAttrName","renderToString","wDom","wDomToString","element","tag","text","props","children","wDomChildrenToDom","innerHTML","makeProp","parentElement","acc","childItem","childElement","attrGroup","isKey","isPortal","isHtml","isRef","isEvent","isInvalid","cssString","hydration","wrapElement","addElement","render","wDomOrig","isVirtualType","wDomList","flatFlagmentFromList","realDomList","addElementProcessChildren","index","item","filteredEmptyTextNode","realDomItem","wDomItem","nodeType","pass","tFragment","nIndex","processConsecutiveTextNodes","wDomlist","cIndex","textWDomList","collectAdjacentTextNode","textNode","_renderToString","_hydration","renderWithHydration","tagFunction","h","_run","run"],"mappings":"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"}