eclipsa 0.1.10 → 0.1.12

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,6 +1,6 @@
1
- import { $ as shouldReconnectDetachedInsertMarkers, I as preserveReusableContentInRoots, Ln as readActionCsrfTokenFromDocument, M as getRuntimeSignalId, Mn as isSuspenseType, Nn as ACTION_CSRF_FIELD, Pn as ACTION_CSRF_INPUT_ATTR, Q as restoreSignalRefs, St as ACTION_FORM_ATTR, U as renderClientInsertable, W as renderClientInsertableForOwner, _t as getRememberedInsertMarkerNodeCount, bt as rememberManagedAttributesForNodes, et as syncRuntimeRefMarker, gt as parseInsertMarker, h as assignRuntimeRef, ht as parseComponentBoundaryMarker, it as tryPatchNodeSequenceInPlace, j as getRuntimeContainer, jt as getComponentMeta, mt as createInsertMarker, rt as tryPatchElementShellInPlace, v as bindRuntimeEvent, vt as rememberInsertMarkerRange, x as createDetachedClientInsertOwner, xt as syncManagedAttributeSnapshot, y as captureClientInsertOwner, yt as rememberManagedAttributesForNode } from "./action-DCc4fBhy.mjs";
2
- import { a as jsxDEV } from "./jsx-dev-runtime-DpbWQ4Q0.mjs";
3
- import { t as effect$1 } from "./signal-DoW9q--8.mjs";
1
+ import { Bn as ACTION_CSRF_FIELD, Ct as rememberManagedAttributesForNode, F as getRuntimeSignalId, K as renderClientInsertable, Mt as getComponentMeta, P as getRuntimeContainer, St as rememberInsertMarkerRange, Tt as syncManagedAttributeSnapshot, Vn as ACTION_CSRF_INPUT_ATTR, Wn as readActionCsrfTokenFromDocument, bt as parseInsertMarker, ct as tryPatchNodeSequenceInPlace, h as assignRuntimeRef, it as syncRuntimeRefMarker, q as renderClientInsertableForOwner, rn as ACTION_FORM_ATTR, rt as shouldReconnectDetachedInsertMarkers, st as tryPatchElementShellInPlace, tt as restoreSignalRefs, v as bindRuntimeEvent, vt as createInsertMarker, wt as rememberManagedAttributesForNodes, x as createDetachedClientInsertOwner, xt as getRememberedInsertMarkerNodeCount, y as captureClientInsertOwner, yt as parseComponentBoundaryMarker, z as preserveReusableContentInRoots, zn as isSuspenseType } from "./action-Uv02N2Rx.mjs";
2
+ import { a as jsxDEV } from "./jsx-dev-runtime-BZ-o1aUQ.mjs";
3
+ import { t as effect$1 } from "./signal-CiJrTMGa.mjs";
4
4
  import { r as withSignalSnapshot } from "./snapshot-BdY3jcVk.mjs";
5
5
  //#region core/client/dom.ts
6
6
  const EMPTY_INSERT_COMMENT = "eclipsa-empty";
@@ -429,4 +429,4 @@ const effect = (fn) => {
429
429
  //#endregion
430
430
  export { hydrate as a, createTemplate as i, attr as n, insert as o, createComponent as r, effect as t };
431
431
 
432
- //# sourceMappingURL=client--uq9YZzN.mjs.map
432
+ //# sourceMappingURL=client-CnFXpfUF.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"client--uq9YZzN.mjs","names":[],"sources":["../core/client/dom.ts","../core/reactive/core.ts"],"sourcesContent":["import { jsxDEV } from '../../jsx/jsx-dev-runtime.ts'\nimport {\n ACTION_CSRF_FIELD,\n ACTION_CSRF_INPUT_ATTR,\n readActionCsrfTokenFromDocument,\n} from '../action-csrf.ts'\nimport type { Component } from '../component.ts'\nimport { getComponentMeta } from '../internal.ts'\nimport { ACTION_FORM_ATTR } from '../runtime/constants.ts'\nimport {\n INSERT_MARKER_PREFIX,\n createInsertMarker,\n parseComponentBoundaryMarker,\n parseInsertMarker,\n} from '../runtime/markers.ts'\nimport {\n assignRuntimeRef,\n bindRuntimeEvent,\n captureClientInsertOwner,\n createDetachedClientInsertOwner,\n getRuntimeSignalId,\n getRuntimeContainer,\n preserveReusableContentInRoots,\n rememberManagedAttributesForNode,\n rememberManagedAttributesForNodes,\n rememberInsertMarkerRange,\n getRememberedInsertMarkerNodeCount,\n renderClientInsertable,\n renderClientInsertableForOwner,\n restoreSignalRefs,\n syncManagedAttributeSnapshot,\n syncRuntimeRefMarker,\n shouldReconnectDetachedInsertMarkers,\n tryPatchElementShellInPlace,\n tryPatchNodeSequenceInPlace,\n} from '../runtime.ts'\nimport { effect } from '../signal.ts'\nimport { isSuspenseType } from '../suspense.ts'\nimport { withSignalSnapshot } from '../snapshot.ts'\nimport type { ClientElementLike, Insertable } from './types.ts'\n\nconst EMPTY_INSERT_COMMENT = 'eclipsa-empty'\nconst ATTR_UNSET = Symbol('eclipsa.attr-unset')\n\nconst createActionCsrfInput = (doc: Document, token: string) => {\n const input = doc.createElement('input')\n input.setAttribute(ACTION_CSRF_INPUT_ATTR, '')\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n return input\n}\n\nconst ensureActionCsrfInput = (form: HTMLFormElement) => {\n const token = readActionCsrfTokenFromDocument(document)\n if (!token) {\n return\n }\n\n const existing = form.querySelector(`input[${ACTION_CSRF_INPUT_ATTR}]`)\n const input =\n existing instanceof HTMLInputElement ? existing : createActionCsrfInput(document, token)\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n if (input.parentNode !== form) {\n form.insertBefore(input, form.firstChild)\n }\n}\n\nconst ensureActionCsrfInputsInNode = (node: Node) => {\n if (node instanceof HTMLFormElement && node.hasAttribute(ACTION_FORM_ATTR)) {\n ensureActionCsrfInput(node)\n }\n if (node instanceof Element) {\n for (const form of node.querySelectorAll(`form[${ACTION_FORM_ATTR}]`)) {\n if (form instanceof HTMLFormElement) {\n ensureActionCsrfInput(form)\n }\n }\n }\n}\n\nconst ensureInsertMarkerKey = (\n marker: Node | undefined,\n runtimeContainer: ReturnType<typeof getRuntimeContainer>,\n) => {\n if (!(marker instanceof Comment) || !runtimeContainer) {\n return null\n }\n\n if (marker.data.startsWith(INSERT_MARKER_PREFIX)) {\n return marker.data\n }\n\n const key = createInsertMarker(runtimeContainer.nextElementId++)\n marker.data = key\n return key\n}\n\nconst findLiveInsertMarker = (doc: Document | undefined, markerKey: string | null) => {\n if (!doc?.body || !markerKey || typeof doc.createTreeWalker !== 'function') {\n return null\n }\n\n const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_COMMENT)\n let next = walker.nextNode()\n while (next) {\n if (next instanceof Comment && next.data === markerKey) {\n return next\n }\n next = walker.nextNode()\n }\n return null\n}\n\nconst isConnectedNode = (node: Node | null | undefined) =>\n !!node &&\n (!('isConnected' in node) ||\n (\n node as Node & {\n isConnected?: boolean\n }\n ).isConnected !== false)\n\nconst isUsableInsertParent = (\n candidate: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => !!candidate && (isConnectedNode(candidate) || stableParents.includes(candidate))\n\nconst removeNodeFromParent = (node: Node, parent: Node) => {\n const removable = node as Node & {\n remove?: () => void\n }\n if (typeof removable.remove === 'function') {\n removable.remove()\n return\n }\n\n const parentWithRemoveChild = parent as Node & {\n removeChild?: (child: Node) => Node\n }\n if (typeof parentWithRemoveChild.removeChild === 'function') {\n parentWithRemoveChild.removeChild(node)\n }\n}\n\nconst hasUsableInsertParent = (\n node: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => isUsableInsertParent(node?.parentNode, stableParents)\n\nconst collectNodesBeforeMarker = (marker: Node | null | undefined, count: number) => {\n if (!marker?.parentNode || count === 0) {\n return [] as Node[]\n }\n\n const nodes: Node[] = []\n let cursor = marker.previousSibling\n while (cursor && nodes.length < count) {\n nodes.unshift(cursor)\n cursor = cursor.previousSibling\n }\n\n return nodes.length === count ? nodes : []\n}\n\nconst getBoundaryMarker = (node: Node | null | undefined) => {\n if (!(node instanceof Comment)) {\n return null\n }\n\n return parseComponentBoundaryMarker(node.data)\n}\n\nconst canReconnectOwnerRange = (currentNodes: Node[], newNodes: Node[]) => {\n if (currentNodes.length === 0 || currentNodes.length !== newNodes.length) {\n return false\n }\n\n let sawBoundary = false\n\n for (let index = 0; index < newNodes.length; index += 1) {\n const currentNode = currentNodes[index]!\n const newNode = newNodes[index]!\n if (currentNode.nodeType !== newNode.nodeType) {\n return false\n }\n\n const currentBoundary = getBoundaryMarker(currentNode)\n const newBoundary = getBoundaryMarker(newNode)\n if (currentBoundary || newBoundary) {\n if (\n !currentBoundary ||\n !newBoundary ||\n currentBoundary.kind !== newBoundary.kind ||\n currentBoundary.id !== newBoundary.id\n ) {\n return false\n }\n sawBoundary = true\n continue\n }\n\n if (currentNode instanceof Element && newNode instanceof Element) {\n if (currentNode.tagName !== newNode.tagName) {\n return false\n }\n continue\n }\n\n if (currentNode.nodeType === Node.TEXT_NODE && newNode.nodeType === Node.TEXT_NODE) {\n continue\n }\n\n return false\n }\n\n return sawBoundary\n}\n\nconst resolveFastInsertValue = (value: unknown) => {\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (resolved === null || resolved === undefined || resolved === false) {\n return {\n kind: 'empty' as const,\n }\n }\n\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return {\n kind: 'text' as const,\n value: String(resolved),\n }\n }\n\n return null\n}\n\nconst isManagedEmptyInsertComment = (node: Node | null | undefined) =>\n node instanceof Comment && node.data === EMPTY_INSERT_COMMENT\n\nconst getElementStyleDeclaration = (elem: Element) => {\n const style = (\n elem as Element & {\n style?: {\n removeProperty?: (name: string) => string\n setProperty?: (name: string, value: string) => void\n }\n }\n ).style\n\n return style &&\n typeof style === 'object' &&\n typeof style.setProperty === 'function' &&\n typeof style.removeProperty === 'function'\n ? (style as {\n removeProperty: (name: string) => string\n setProperty: (name: string, value: string) => void\n })\n : null\n}\n\nconst serializeStyleValue = (resolved: unknown) =>\n resolved && typeof resolved === 'object'\n ? Object.entries(resolved as Record<string, string>)\n .map(([k, v]) => `${k}: ${v}`)\n .join('; ')\n : String(resolved ?? '')\n\nexport const createTemplate = (html: string): (() => Node) => {\n let template: HTMLTemplateElement | null = null\n\n return () => {\n if (!template) {\n template = document.createElement('template')\n template.innerHTML = html\n }\n const node = (template.cloneNode(true) as HTMLTemplateElement).content.firstChild as Node\n ensureActionCsrfInputsInNode(node)\n rememberManagedAttributesForNode(node)\n return node\n }\n}\n\nexport const insert = (value: Insertable, parent: Node, marker?: Node) => {\n let lastFirstNode = marker\n let lastNodeLength = 0\n const runtimeContainer = getRuntimeContainer()\n if (!runtimeContainer) {\n throw new Error('Client insertions require an active runtime container.')\n }\n const ownerSiteKey =\n marker instanceof Comment && !parseInsertMarker(marker.data) ? marker.data : null\n const owner =\n captureClientInsertOwner(runtimeContainer, ownerSiteKey) ??\n createDetachedClientInsertOwner(runtimeContainer)\n const markerKey = ensureInsertMarkerKey(marker, runtimeContainer)\n const collectCurrentNodes = (\n liveMarker: Node | undefined,\n stableParents: Array<Node | null | undefined>,\n ) => {\n if (\n !lastFirstNode ||\n lastNodeLength === 0 ||\n !hasUsableInsertParent(lastFirstNode, stableParents)\n ) {\n const liveNodes = collectNodesBeforeMarker(liveMarker, lastNodeLength)\n return liveNodes.every((node) => hasUsableInsertParent(node, stableParents)) ? liveNodes : []\n }\n const nodes = [lastFirstNode]\n let cursor = lastFirstNode\n while (nodes.length < lastNodeLength) {\n const next = cursor.nextSibling\n if (!next || !hasUsableInsertParent(next, stableParents)) {\n return [] as Node[]\n }\n cursor = next\n nodes.push(cursor)\n }\n return nodes\n }\n\n effect(() => {\n const shouldReconnect = shouldReconnectDetachedInsertMarkers(runtimeContainer)\n const liveMarker = !(marker instanceof Comment)\n ? marker\n : isConnectedNode(marker.parentNode)\n ? marker\n : shouldReconnect\n ? (findLiveInsertMarker(runtimeContainer.doc, markerKey) ?? marker)\n : marker\n const stableParents = liveMarker?.parentNode\n ? [liveMarker.parentNode, parent === liveMarker.parentNode ? parent : null]\n : [parent, marker?.parentNode]\n const liveLastParent = isUsableInsertParent(lastFirstNode?.parentNode, stableParents)\n ? lastFirstNode?.parentNode\n : null\n const liveMarkerParent = isUsableInsertParent(liveMarker?.parentNode, stableParents)\n ? liveMarker?.parentNode\n : null\n const resolvedParent = (liveLastParent ?? liveMarkerParent ?? parent) as ParentNode | null\n const targetParent = resolvedParent ?? (parent as ParentNode)\n const primitiveValue = resolveFastInsertValue(value)\n const seedCurrentNodes = (count: number) =>\n lastNodeLength === 0 &&\n liveMarker instanceof Comment &&\n getRememberedInsertMarkerNodeCount(liveMarker) === count\n ? collectNodesBeforeMarker(liveMarker, count)\n : []\n const replaceCurrentNodes = (currentNodes: Node[], replacementNode: Node) => {\n const insertReference =\n liveMarker?.parentNode === targetParent\n ? liveMarker\n : (currentNodes[currentNodes.length - 1]?.nextSibling ?? null)\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n targetParent.insertBefore(replacementNode, insertReference)\n rememberInsertMarkerRange(liveMarker, [replacementNode])\n lastFirstNode = replacementNode\n lastNodeLength = 1\n }\n\n if (primitiveValue) {\n const seededCurrentNodes = seedCurrentNodes(1)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents))\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (primitiveValue.kind === 'text') {\n if (currentNodes.length === 1 && currentNodes[0] instanceof Text) {\n if (currentNodes[0].data !== primitiveValue.value) {\n currentNodes[0].data = primitiveValue.value\n }\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createTextNode(primitiveValue.value))\n return\n }\n\n if (currentNodes.length === 1 && isManagedEmptyInsertComment(currentNodes[0])) {\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createComment(EMPTY_INSERT_COMMENT))\n return\n }\n\n const newNodes = owner\n ? renderClientInsertableForOwner(value, runtimeContainer, owner)\n : renderClientInsertable(value, runtimeContainer)\n const seededCurrentNodes = seedCurrentNodes(newNodes.length)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) &&\n canReconnectOwnerRange(seededCurrentNodes, newNodes)\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (\n currentNodes.length === lastNodeLength &&\n currentNodes.length !== 0 &&\n newNodes.length !== 0 &&\n (tryPatchNodeSequenceInPlace(currentNodes, newNodes) ||\n tryPatchSingleElementShellInPlace(currentNodes, newNodes))\n ) {\n restoreSignalRefs(runtimeContainer, targetParent)\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n return\n }\n\n let replacementNodes = newNodes\n if (currentNodes.length !== 0 && newNodes.length !== 0) {\n const doc = runtimeContainer.doc\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n const stagingParent = doc.createElement('div')\n for (const node of newNodes) {\n stagingParent.appendChild(node)\n }\n preserveReusableContentInRoots(currentNodes, Array.from(stagingParent.childNodes))\n replacementNodes = Array.from(stagingParent.childNodes)\n }\n\n const insertReference = liveMarker?.parentNode === targetParent ? liveMarker : null\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n for (const node of replacementNodes) {\n targetParent.insertBefore(node, insertReference)\n }\n\n rememberManagedAttributesForNodes(replacementNodes)\n rememberInsertMarkerRange(liveMarker, replacementNodes)\n\n lastFirstNode = replacementNodes[0] ?? liveMarker\n lastNodeLength = replacementNodes.length\n })\n}\n\nconst EVENT_ATTR_REGEX = /^on[A-Z].+$/\nconst DANGEROUSLY_SET_INNER_HTML_PROP = 'dangerouslySetInnerHTML'\nconst BIND_VALUE_PROP = 'bind:value'\nconst BIND_CHECKED_PROP = 'bind:checked'\nconst BIND_VALUE_ATTR = 'data-e-bind-value'\nconst BIND_CHECKED_ATTR = 'data-e-bind-checked'\nconst shouldUseAttributeAssignment = (elem: Element, name: string, isSVG: boolean) =>\n isSVG || name.startsWith('data-') || name.startsWith('aria-') || !(name in elem)\n\ntype BindableSignal<T> = {\n value: T\n}\n\nconst isBindableSignal = <T>(value: unknown): value is BindableSignal<T> =>\n !!value && (typeof value === 'object' || typeof value === 'function') && 'value' in value\n\nconst readValueBinding = (elem: Element, currentValue: unknown) => {\n if (\n elem instanceof HTMLInputElement &&\n typeof currentValue === 'number' &&\n (elem.type === 'number' || elem.type === 'range') &&\n !Number.isNaN(elem.valueAsNumber)\n ) {\n return elem.valueAsNumber\n }\n\n return (elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement).value\n}\n\nconst tryPatchSingleElementShellInPlace = (currentNodes: Node[], nextNodes: Node[]) => {\n if (currentNodes.length !== 1 || nextNodes.length !== 1) {\n return false\n }\n\n const [current] = currentNodes\n const [next] = nextNodes\n if (\n !(current instanceof Element) ||\n !(next instanceof Element) ||\n current.tagName !== next.tagName\n ) {\n return false\n }\n return tryPatchElementShellInPlace(current, next)\n}\n\nexport const attr = (elem: Element, name: string, value: () => unknown) => {\n const isSVG = elem.namespaceURI === 'http://www.w3.org/2000/svg'\n\n if (name === BIND_VALUE_PROP) {\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_VALUE_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_VALUE_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = readValueBinding(elem, binding.value) as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const input = elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const nextValue = String(binding.value ?? '')\n if (input.value !== nextValue) {\n input.value = nextValue\n }\n })\n return\n }\n\n if (name === BIND_CHECKED_PROP) {\n if (!(elem instanceof HTMLInputElement)) {\n return\n }\n\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_CHECKED_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_CHECKED_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = elem.checked as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const nextChecked = Boolean(binding.value)\n if (elem.checked !== nextChecked) {\n elem.checked = nextChecked\n }\n })\n return\n }\n\n if (EVENT_ATTR_REGEX.test(name)) {\n const eventName = name[2].toLowerCase() + name.slice(3)\n const resolved = value()\n if (bindRuntimeEvent(elem, eventName, resolved)) {\n return\n }\n if (typeof resolved !== 'function') {\n throw new Error('Resumable event bindings require an active runtime container.')\n }\n elem.addEventListener(eventName, resolved as () => void)\n return\n }\n\n if (name === 'style') {\n let lastStyleString = ATTR_UNSET as string | symbol\n let lastStyleMap: Map<string, string> | null = null\n const style = getElementStyleDeclaration(elem)\n\n effect(() => {\n const resolved = value()\n if (style && resolved && typeof resolved === 'object') {\n const nextStyleMap = new Map(\n Object.entries(resolved as Record<string, string>).map(([styleName, styleValue]) => [\n styleName,\n String(styleValue),\n ]),\n )\n\n for (const [styleName, styleValue] of nextStyleMap) {\n if (lastStyleMap?.get(styleName) !== styleValue) {\n style.setProperty(styleName, styleValue)\n }\n }\n\n if (lastStyleMap) {\n for (const styleName of lastStyleMap.keys()) {\n if (!nextStyleMap.has(styleName)) {\n style.removeProperty(styleName)\n }\n }\n }\n\n lastStyleMap = nextStyleMap\n lastStyleString = ATTR_UNSET\n syncManagedAttributeSnapshot(elem, 'style')\n return\n }\n\n lastStyleMap = null\n const styleValue = serializeStyleValue(resolved)\n if (lastStyleString === styleValue) {\n return\n }\n elem.setAttribute('style', styleValue)\n lastStyleString = styleValue\n syncManagedAttributeSnapshot(elem, 'style')\n })\n return\n }\n\n if (name === 'class') {\n let lastClassValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextClassValue = String(value())\n if (lastClassValue === nextClassValue) {\n return\n }\n if (isSVG) {\n elem.setAttribute('class', nextClassValue)\n syncManagedAttributeSnapshot(elem, 'class')\n } else {\n ;(elem as Element & { className: string }).className = nextClassValue\n syncManagedAttributeSnapshot(elem, 'class')\n }\n lastClassValue = nextClassValue\n })\n return\n }\n\n if (name === 'ref') {\n const resolved = value()\n syncRuntimeRefMarker(elem, resolved)\n assignRuntimeRef(resolved, elem, getRuntimeContainer())\n return\n }\n\n if (name === ACTION_FORM_ATTR) {\n let lastAssignedValue = ATTR_UNSET as string | symbol | null\n effect(() => {\n const resolved = value()\n const nextValue =\n resolved === false || resolved === undefined || resolved === null ? null : String(resolved)\n if (lastAssignedValue === nextValue) {\n return\n }\n if (nextValue === null) {\n elem.removeAttribute(name)\n } else {\n elem.setAttribute(name, nextValue)\n }\n syncManagedAttributeSnapshot(elem, name)\n if (nextValue !== null && elem instanceof HTMLFormElement) {\n ensureActionCsrfInput(elem)\n }\n lastAssignedValue = nextValue\n })\n return\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n let lastHTML = ATTR_UNSET as string | symbol\n effect(() => {\n const html = value()\n const nextHTML = html === false || html === undefined || html === null ? '' : String(html)\n if (lastHTML === nextHTML) {\n return\n }\n ;(elem as Element & { innerHTML: string }).innerHTML = nextHTML\n lastHTML = nextHTML\n })\n return\n }\n\n let lastAssignedValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextValue = String(value())\n if (lastAssignedValue === nextValue) {\n return\n }\n if (shouldUseAttributeAssignment(elem, name, isSVG)) {\n elem.setAttribute(name, nextValue)\n syncManagedAttributeSnapshot(elem, name)\n } else {\n // @ts-expect-error DOM property assignment uses dynamic keys.\n elem[name] = nextValue\n syncManagedAttributeSnapshot(elem, name)\n }\n lastAssignedValue = nextValue\n })\n}\n\nexport const hydrate = (\n Component: Component,\n target: HTMLElement,\n options?: {\n snapshot?: unknown[]\n },\n) => {\n const elem = withSignalSnapshot(options?.snapshot ?? null, () => Component({}))\n .result as unknown as ClientElementLike\n\n while (target.childNodes.length > 0) {\n target.lastChild?.remove()\n }\n\n for (const entry of Array.isArray(elem) ? elem : [elem]) {\n insert(() => entry, target)\n }\n}\n\nexport const createComponent = (Component: Component, props: unknown) => {\n if (isSuspenseType(Component)) {\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n }\n if (!getComponentMeta(Component)) {\n const render = Component as (props: unknown) => unknown\n return () => render(props) as ClientElementLike\n }\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n}\n","export interface Signal<T> {\n get(): T\n set(newValue: T): T\n effects: Set<Effect>\n}\n\ninterface Effect {\n fn: () => void\n signals: Set<Signal<unknown>>\n}\nlet currentEffect: Effect | null = null\n\nconst isPrimitiveSignalValue = (value: unknown) =>\n value === null || (typeof value !== 'object' && typeof value !== 'function')\n\nconst didSignalValueChange = (previous: unknown, next: unknown) => {\n if (isPrimitiveSignalValue(previous) && isPrimitiveSignalValue(next)) {\n return !Object.is(previous, next)\n }\n\n return previous !== next\n}\n\nexport const signal = <T>(init: T): Signal<T> => {\n let value = init\n const signal: Signal<T> = {\n get() {\n if (currentEffect) {\n this.effects.add(currentEffect)\n }\n return value\n },\n set(newValue) {\n if (!didSignalValueChange(value, newValue)) {\n return value\n }\n value = newValue\n for (const effect of this.effects) {\n effect.fn()\n }\n return value\n },\n effects: new Set(),\n }\n return signal\n}\n\nconst registry = new FinalizationRegistry<Effect>((effect) => {\n for (const signal of effect.signals) {\n signal.effects.delete(effect)\n }\n})\n\nexport const effect = (fn: () => void) => {\n const newEffect: Effect = {\n fn() {\n fn()\n },\n signals: new Set(),\n }\n\n currentEffect = newEffect\n newEffect.fn()\n currentEffect = null\n\n registry.register(fn, newEffect)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client-CnFXpfUF.mjs","names":[],"sources":["../core/client/dom.ts","../core/reactive/core.ts"],"sourcesContent":["import { jsxDEV } from '../../jsx/jsx-dev-runtime.ts'\nimport {\n ACTION_CSRF_FIELD,\n ACTION_CSRF_INPUT_ATTR,\n readActionCsrfTokenFromDocument,\n} from '../action-csrf.ts'\nimport type { Component } from '../component.ts'\nimport { getComponentMeta } from '../internal.ts'\nimport { ACTION_FORM_ATTR } from '../runtime/constants.ts'\nimport {\n INSERT_MARKER_PREFIX,\n createInsertMarker,\n parseComponentBoundaryMarker,\n parseInsertMarker,\n} from '../runtime/markers.ts'\nimport {\n assignRuntimeRef,\n bindRuntimeEvent,\n captureClientInsertOwner,\n createDetachedClientInsertOwner,\n getRuntimeSignalId,\n getRuntimeContainer,\n preserveReusableContentInRoots,\n rememberManagedAttributesForNode,\n rememberManagedAttributesForNodes,\n rememberInsertMarkerRange,\n getRememberedInsertMarkerNodeCount,\n renderClientInsertable,\n renderClientInsertableForOwner,\n restoreSignalRefs,\n syncManagedAttributeSnapshot,\n syncRuntimeRefMarker,\n shouldReconnectDetachedInsertMarkers,\n tryPatchElementShellInPlace,\n tryPatchNodeSequenceInPlace,\n} from '../runtime.ts'\nimport { effect } from '../signal.ts'\nimport { isSuspenseType } from '../suspense.ts'\nimport { withSignalSnapshot } from '../snapshot.ts'\nimport type { ClientElementLike, Insertable } from './types.ts'\n\nconst EMPTY_INSERT_COMMENT = 'eclipsa-empty'\nconst ATTR_UNSET = Symbol('eclipsa.attr-unset')\n\nconst createActionCsrfInput = (doc: Document, token: string) => {\n const input = doc.createElement('input')\n input.setAttribute(ACTION_CSRF_INPUT_ATTR, '')\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n return input\n}\n\nconst ensureActionCsrfInput = (form: HTMLFormElement) => {\n const token = readActionCsrfTokenFromDocument(document)\n if (!token) {\n return\n }\n\n const existing = form.querySelector(`input[${ACTION_CSRF_INPUT_ATTR}]`)\n const input =\n existing instanceof HTMLInputElement ? existing : createActionCsrfInput(document, token)\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n if (input.parentNode !== form) {\n form.insertBefore(input, form.firstChild)\n }\n}\n\nconst ensureActionCsrfInputsInNode = (node: Node) => {\n if (node instanceof HTMLFormElement && node.hasAttribute(ACTION_FORM_ATTR)) {\n ensureActionCsrfInput(node)\n }\n if (node instanceof Element) {\n for (const form of node.querySelectorAll(`form[${ACTION_FORM_ATTR}]`)) {\n if (form instanceof HTMLFormElement) {\n ensureActionCsrfInput(form)\n }\n }\n }\n}\n\nconst ensureInsertMarkerKey = (\n marker: Node | undefined,\n runtimeContainer: ReturnType<typeof getRuntimeContainer>,\n) => {\n if (!(marker instanceof Comment) || !runtimeContainer) {\n return null\n }\n\n if (marker.data.startsWith(INSERT_MARKER_PREFIX)) {\n return marker.data\n }\n\n const key = createInsertMarker(runtimeContainer.nextElementId++)\n marker.data = key\n return key\n}\n\nconst findLiveInsertMarker = (doc: Document | undefined, markerKey: string | null) => {\n if (!doc?.body || !markerKey || typeof doc.createTreeWalker !== 'function') {\n return null\n }\n\n const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_COMMENT)\n let next = walker.nextNode()\n while (next) {\n if (next instanceof Comment && next.data === markerKey) {\n return next\n }\n next = walker.nextNode()\n }\n return null\n}\n\nconst isConnectedNode = (node: Node | null | undefined) =>\n !!node &&\n (!('isConnected' in node) ||\n (\n node as Node & {\n isConnected?: boolean\n }\n ).isConnected !== false)\n\nconst isUsableInsertParent = (\n candidate: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => !!candidate && (isConnectedNode(candidate) || stableParents.includes(candidate))\n\nconst removeNodeFromParent = (node: Node, parent: Node) => {\n const removable = node as Node & {\n remove?: () => void\n }\n if (typeof removable.remove === 'function') {\n removable.remove()\n return\n }\n\n const parentWithRemoveChild = parent as Node & {\n removeChild?: (child: Node) => Node\n }\n if (typeof parentWithRemoveChild.removeChild === 'function') {\n parentWithRemoveChild.removeChild(node)\n }\n}\n\nconst hasUsableInsertParent = (\n node: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => isUsableInsertParent(node?.parentNode, stableParents)\n\nconst collectNodesBeforeMarker = (marker: Node | null | undefined, count: number) => {\n if (!marker?.parentNode || count === 0) {\n return [] as Node[]\n }\n\n const nodes: Node[] = []\n let cursor = marker.previousSibling\n while (cursor && nodes.length < count) {\n nodes.unshift(cursor)\n cursor = cursor.previousSibling\n }\n\n return nodes.length === count ? nodes : []\n}\n\nconst getBoundaryMarker = (node: Node | null | undefined) => {\n if (!(node instanceof Comment)) {\n return null\n }\n\n return parseComponentBoundaryMarker(node.data)\n}\n\nconst canReconnectOwnerRange = (currentNodes: Node[], newNodes: Node[]) => {\n if (currentNodes.length === 0 || currentNodes.length !== newNodes.length) {\n return false\n }\n\n let sawBoundary = false\n\n for (let index = 0; index < newNodes.length; index += 1) {\n const currentNode = currentNodes[index]!\n const newNode = newNodes[index]!\n if (currentNode.nodeType !== newNode.nodeType) {\n return false\n }\n\n const currentBoundary = getBoundaryMarker(currentNode)\n const newBoundary = getBoundaryMarker(newNode)\n if (currentBoundary || newBoundary) {\n if (\n !currentBoundary ||\n !newBoundary ||\n currentBoundary.kind !== newBoundary.kind ||\n currentBoundary.id !== newBoundary.id\n ) {\n return false\n }\n sawBoundary = true\n continue\n }\n\n if (currentNode instanceof Element && newNode instanceof Element) {\n if (currentNode.tagName !== newNode.tagName) {\n return false\n }\n continue\n }\n\n if (currentNode.nodeType === Node.TEXT_NODE && newNode.nodeType === Node.TEXT_NODE) {\n continue\n }\n\n return false\n }\n\n return sawBoundary\n}\n\nconst resolveFastInsertValue = (value: unknown) => {\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (resolved === null || resolved === undefined || resolved === false) {\n return {\n kind: 'empty' as const,\n }\n }\n\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return {\n kind: 'text' as const,\n value: String(resolved),\n }\n }\n\n return null\n}\n\nconst isManagedEmptyInsertComment = (node: Node | null | undefined) =>\n node instanceof Comment && node.data === EMPTY_INSERT_COMMENT\n\nconst getElementStyleDeclaration = (elem: Element) => {\n const style = (\n elem as Element & {\n style?: {\n removeProperty?: (name: string) => string\n setProperty?: (name: string, value: string) => void\n }\n }\n ).style\n\n return style &&\n typeof style === 'object' &&\n typeof style.setProperty === 'function' &&\n typeof style.removeProperty === 'function'\n ? (style as {\n removeProperty: (name: string) => string\n setProperty: (name: string, value: string) => void\n })\n : null\n}\n\nconst serializeStyleValue = (resolved: unknown) =>\n resolved && typeof resolved === 'object'\n ? Object.entries(resolved as Record<string, string>)\n .map(([k, v]) => `${k}: ${v}`)\n .join('; ')\n : String(resolved ?? '')\n\nexport const createTemplate = (html: string): (() => Node) => {\n let template: HTMLTemplateElement | null = null\n\n return () => {\n if (!template) {\n template = document.createElement('template')\n template.innerHTML = html\n }\n const node = (template.cloneNode(true) as HTMLTemplateElement).content.firstChild as Node\n ensureActionCsrfInputsInNode(node)\n rememberManagedAttributesForNode(node)\n return node\n }\n}\n\nexport const insert = (value: Insertable, parent: Node, marker?: Node) => {\n let lastFirstNode = marker\n let lastNodeLength = 0\n const runtimeContainer = getRuntimeContainer()\n if (!runtimeContainer) {\n throw new Error('Client insertions require an active runtime container.')\n }\n const ownerSiteKey =\n marker instanceof Comment && !parseInsertMarker(marker.data) ? marker.data : null\n const owner =\n captureClientInsertOwner(runtimeContainer, ownerSiteKey) ??\n createDetachedClientInsertOwner(runtimeContainer)\n const markerKey = ensureInsertMarkerKey(marker, runtimeContainer)\n const collectCurrentNodes = (\n liveMarker: Node | undefined,\n stableParents: Array<Node | null | undefined>,\n ) => {\n if (\n !lastFirstNode ||\n lastNodeLength === 0 ||\n !hasUsableInsertParent(lastFirstNode, stableParents)\n ) {\n const liveNodes = collectNodesBeforeMarker(liveMarker, lastNodeLength)\n return liveNodes.every((node) => hasUsableInsertParent(node, stableParents)) ? liveNodes : []\n }\n const nodes = [lastFirstNode]\n let cursor = lastFirstNode\n while (nodes.length < lastNodeLength) {\n const next = cursor.nextSibling\n if (!next || !hasUsableInsertParent(next, stableParents)) {\n return [] as Node[]\n }\n cursor = next\n nodes.push(cursor)\n }\n return nodes\n }\n\n effect(() => {\n const shouldReconnect = shouldReconnectDetachedInsertMarkers(runtimeContainer)\n const liveMarker = !(marker instanceof Comment)\n ? marker\n : isConnectedNode(marker.parentNode)\n ? marker\n : shouldReconnect\n ? (findLiveInsertMarker(runtimeContainer.doc, markerKey) ?? marker)\n : marker\n const stableParents = liveMarker?.parentNode\n ? [liveMarker.parentNode, parent === liveMarker.parentNode ? parent : null]\n : [parent, marker?.parentNode]\n const liveLastParent = isUsableInsertParent(lastFirstNode?.parentNode, stableParents)\n ? lastFirstNode?.parentNode\n : null\n const liveMarkerParent = isUsableInsertParent(liveMarker?.parentNode, stableParents)\n ? liveMarker?.parentNode\n : null\n const resolvedParent = (liveLastParent ?? liveMarkerParent ?? parent) as ParentNode | null\n const targetParent = resolvedParent ?? (parent as ParentNode)\n const primitiveValue = resolveFastInsertValue(value)\n const seedCurrentNodes = (count: number) =>\n lastNodeLength === 0 &&\n liveMarker instanceof Comment &&\n getRememberedInsertMarkerNodeCount(liveMarker) === count\n ? collectNodesBeforeMarker(liveMarker, count)\n : []\n const replaceCurrentNodes = (currentNodes: Node[], replacementNode: Node) => {\n const insertReference =\n liveMarker?.parentNode === targetParent\n ? liveMarker\n : (currentNodes[currentNodes.length - 1]?.nextSibling ?? null)\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n targetParent.insertBefore(replacementNode, insertReference)\n rememberInsertMarkerRange(liveMarker, [replacementNode])\n lastFirstNode = replacementNode\n lastNodeLength = 1\n }\n\n if (primitiveValue) {\n const seededCurrentNodes = seedCurrentNodes(1)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents))\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (primitiveValue.kind === 'text') {\n if (currentNodes.length === 1 && currentNodes[0] instanceof Text) {\n if (currentNodes[0].data !== primitiveValue.value) {\n currentNodes[0].data = primitiveValue.value\n }\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createTextNode(primitiveValue.value))\n return\n }\n\n if (currentNodes.length === 1 && isManagedEmptyInsertComment(currentNodes[0])) {\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createComment(EMPTY_INSERT_COMMENT))\n return\n }\n\n const newNodes = owner\n ? renderClientInsertableForOwner(value, runtimeContainer, owner)\n : renderClientInsertable(value, runtimeContainer)\n const seededCurrentNodes = seedCurrentNodes(newNodes.length)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) &&\n canReconnectOwnerRange(seededCurrentNodes, newNodes)\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (\n currentNodes.length === lastNodeLength &&\n currentNodes.length !== 0 &&\n newNodes.length !== 0 &&\n (tryPatchNodeSequenceInPlace(currentNodes, newNodes) ||\n tryPatchSingleElementShellInPlace(currentNodes, newNodes))\n ) {\n restoreSignalRefs(runtimeContainer, targetParent)\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n return\n }\n\n let replacementNodes = newNodes\n if (currentNodes.length !== 0 && newNodes.length !== 0) {\n const doc = runtimeContainer.doc\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n const stagingParent = doc.createElement('div')\n for (const node of newNodes) {\n stagingParent.appendChild(node)\n }\n preserveReusableContentInRoots(currentNodes, Array.from(stagingParent.childNodes))\n replacementNodes = Array.from(stagingParent.childNodes)\n }\n\n const insertReference = liveMarker?.parentNode === targetParent ? liveMarker : null\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n for (const node of replacementNodes) {\n targetParent.insertBefore(node, insertReference)\n }\n\n rememberManagedAttributesForNodes(replacementNodes)\n rememberInsertMarkerRange(liveMarker, replacementNodes)\n\n lastFirstNode = replacementNodes[0] ?? liveMarker\n lastNodeLength = replacementNodes.length\n })\n}\n\nconst EVENT_ATTR_REGEX = /^on[A-Z].+$/\nconst DANGEROUSLY_SET_INNER_HTML_PROP = 'dangerouslySetInnerHTML'\nconst BIND_VALUE_PROP = 'bind:value'\nconst BIND_CHECKED_PROP = 'bind:checked'\nconst BIND_VALUE_ATTR = 'data-e-bind-value'\nconst BIND_CHECKED_ATTR = 'data-e-bind-checked'\nconst shouldUseAttributeAssignment = (elem: Element, name: string, isSVG: boolean) =>\n isSVG || name.startsWith('data-') || name.startsWith('aria-') || !(name in elem)\n\ntype BindableSignal<T> = {\n value: T\n}\n\nconst isBindableSignal = <T>(value: unknown): value is BindableSignal<T> =>\n !!value && (typeof value === 'object' || typeof value === 'function') && 'value' in value\n\nconst readValueBinding = (elem: Element, currentValue: unknown) => {\n if (\n elem instanceof HTMLInputElement &&\n typeof currentValue === 'number' &&\n (elem.type === 'number' || elem.type === 'range') &&\n !Number.isNaN(elem.valueAsNumber)\n ) {\n return elem.valueAsNumber\n }\n\n return (elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement).value\n}\n\nconst tryPatchSingleElementShellInPlace = (currentNodes: Node[], nextNodes: Node[]) => {\n if (currentNodes.length !== 1 || nextNodes.length !== 1) {\n return false\n }\n\n const [current] = currentNodes\n const [next] = nextNodes\n if (\n !(current instanceof Element) ||\n !(next instanceof Element) ||\n current.tagName !== next.tagName\n ) {\n return false\n }\n return tryPatchElementShellInPlace(current, next)\n}\n\nexport const attr = (elem: Element, name: string, value: () => unknown) => {\n const isSVG = elem.namespaceURI === 'http://www.w3.org/2000/svg'\n\n if (name === BIND_VALUE_PROP) {\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_VALUE_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_VALUE_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = readValueBinding(elem, binding.value) as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const input = elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const nextValue = String(binding.value ?? '')\n if (input.value !== nextValue) {\n input.value = nextValue\n }\n })\n return\n }\n\n if (name === BIND_CHECKED_PROP) {\n if (!(elem instanceof HTMLInputElement)) {\n return\n }\n\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_CHECKED_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_CHECKED_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = elem.checked as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const nextChecked = Boolean(binding.value)\n if (elem.checked !== nextChecked) {\n elem.checked = nextChecked\n }\n })\n return\n }\n\n if (EVENT_ATTR_REGEX.test(name)) {\n const eventName = name[2].toLowerCase() + name.slice(3)\n const resolved = value()\n if (bindRuntimeEvent(elem, eventName, resolved)) {\n return\n }\n if (typeof resolved !== 'function') {\n throw new Error('Resumable event bindings require an active runtime container.')\n }\n elem.addEventListener(eventName, resolved as () => void)\n return\n }\n\n if (name === 'style') {\n let lastStyleString = ATTR_UNSET as string | symbol\n let lastStyleMap: Map<string, string> | null = null\n const style = getElementStyleDeclaration(elem)\n\n effect(() => {\n const resolved = value()\n if (style && resolved && typeof resolved === 'object') {\n const nextStyleMap = new Map(\n Object.entries(resolved as Record<string, string>).map(([styleName, styleValue]) => [\n styleName,\n String(styleValue),\n ]),\n )\n\n for (const [styleName, styleValue] of nextStyleMap) {\n if (lastStyleMap?.get(styleName) !== styleValue) {\n style.setProperty(styleName, styleValue)\n }\n }\n\n if (lastStyleMap) {\n for (const styleName of lastStyleMap.keys()) {\n if (!nextStyleMap.has(styleName)) {\n style.removeProperty(styleName)\n }\n }\n }\n\n lastStyleMap = nextStyleMap\n lastStyleString = ATTR_UNSET\n syncManagedAttributeSnapshot(elem, 'style')\n return\n }\n\n lastStyleMap = null\n const styleValue = serializeStyleValue(resolved)\n if (lastStyleString === styleValue) {\n return\n }\n elem.setAttribute('style', styleValue)\n lastStyleString = styleValue\n syncManagedAttributeSnapshot(elem, 'style')\n })\n return\n }\n\n if (name === 'class') {\n let lastClassValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextClassValue = String(value())\n if (lastClassValue === nextClassValue) {\n return\n }\n if (isSVG) {\n elem.setAttribute('class', nextClassValue)\n syncManagedAttributeSnapshot(elem, 'class')\n } else {\n ;(elem as Element & { className: string }).className = nextClassValue\n syncManagedAttributeSnapshot(elem, 'class')\n }\n lastClassValue = nextClassValue\n })\n return\n }\n\n if (name === 'ref') {\n const resolved = value()\n syncRuntimeRefMarker(elem, resolved)\n assignRuntimeRef(resolved, elem, getRuntimeContainer())\n return\n }\n\n if (name === ACTION_FORM_ATTR) {\n let lastAssignedValue = ATTR_UNSET as string | symbol | null\n effect(() => {\n const resolved = value()\n const nextValue =\n resolved === false || resolved === undefined || resolved === null ? null : String(resolved)\n if (lastAssignedValue === nextValue) {\n return\n }\n if (nextValue === null) {\n elem.removeAttribute(name)\n } else {\n elem.setAttribute(name, nextValue)\n }\n syncManagedAttributeSnapshot(elem, name)\n if (nextValue !== null && elem instanceof HTMLFormElement) {\n ensureActionCsrfInput(elem)\n }\n lastAssignedValue = nextValue\n })\n return\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n let lastHTML = ATTR_UNSET as string | symbol\n effect(() => {\n const html = value()\n const nextHTML = html === false || html === undefined || html === null ? '' : String(html)\n if (lastHTML === nextHTML) {\n return\n }\n ;(elem as Element & { innerHTML: string }).innerHTML = nextHTML\n lastHTML = nextHTML\n })\n return\n }\n\n let lastAssignedValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextValue = String(value())\n if (lastAssignedValue === nextValue) {\n return\n }\n if (shouldUseAttributeAssignment(elem, name, isSVG)) {\n elem.setAttribute(name, nextValue)\n syncManagedAttributeSnapshot(elem, name)\n } else {\n // @ts-expect-error DOM property assignment uses dynamic keys.\n elem[name] = nextValue\n syncManagedAttributeSnapshot(elem, name)\n }\n lastAssignedValue = nextValue\n })\n}\n\nexport const hydrate = (\n Component: Component,\n target: HTMLElement,\n options?: {\n snapshot?: unknown[]\n },\n) => {\n const elem = withSignalSnapshot(options?.snapshot ?? null, () => Component({}))\n .result as unknown as ClientElementLike\n\n while (target.childNodes.length > 0) {\n target.lastChild?.remove()\n }\n\n for (const entry of Array.isArray(elem) ? elem : [elem]) {\n insert(() => entry, target)\n }\n}\n\nexport const createComponent = (Component: Component, props: unknown) => {\n if (isSuspenseType(Component)) {\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n }\n if (!getComponentMeta(Component)) {\n const render = Component as (props: unknown) => unknown\n return () => render(props) as ClientElementLike\n }\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n}\n","export interface Signal<T> {\n get(): T\n set(newValue: T): T\n effects: Set<Effect>\n}\n\ninterface Effect {\n fn: () => void\n signals: Set<Signal<unknown>>\n}\nlet currentEffect: Effect | null = null\n\nconst isPrimitiveSignalValue = (value: unknown) =>\n value === null || (typeof value !== 'object' && typeof value !== 'function')\n\nconst didSignalValueChange = (previous: unknown, next: unknown) => {\n if (isPrimitiveSignalValue(previous) && isPrimitiveSignalValue(next)) {\n return !Object.is(previous, next)\n }\n\n return previous !== next\n}\n\nexport const signal = <T>(init: T): Signal<T> => {\n let value = init\n const signal: Signal<T> = {\n get() {\n if (currentEffect) {\n this.effects.add(currentEffect)\n }\n return value\n },\n set(newValue) {\n if (!didSignalValueChange(value, newValue)) {\n return value\n }\n value = newValue\n for (const effect of this.effects) {\n effect.fn()\n }\n return value\n },\n effects: new Set(),\n }\n return signal\n}\n\nconst registry = new FinalizationRegistry<Effect>((effect) => {\n for (const signal of effect.signals) {\n signal.effects.delete(effect)\n }\n})\n\nexport const effect = (fn: () => void) => {\n const newEffect: Effect = {\n fn() {\n fn()\n },\n signals: new Set(),\n }\n\n currentEffect = newEffect\n newEffect.fn()\n currentEffect = null\n\n registry.register(fn, newEffect)\n}\n"],"mappings":";;;;;AAyCA,MAAM,uBAAuB;AAC7B,MAAM,aAAa,OAAO,qBAAqB;AAE/C,MAAM,yBAAyB,KAAe,UAAkB;CAC9D,MAAM,QAAQ,IAAI,cAAc,QAAQ;AACxC,OAAM,aAAa,wBAAwB,GAAG;AAC9C,OAAM,aAAa,QAAQ,kBAAkB;AAC7C,OAAM,aAAa,QAAQ,SAAS;AACpC,OAAM,aAAa,SAAS,MAAM;AAClC,QAAO;;AAGT,MAAM,yBAAyB,SAA0B;CACvD,MAAM,QAAQ,gCAAgC,SAAS;AACvD,KAAI,CAAC,MACH;CAGF,MAAM,WAAW,KAAK,cAAc,SAAS,uBAAuB,GAAG;CACvE,MAAM,QACJ,oBAAoB,mBAAmB,WAAW,sBAAsB,UAAU,MAAM;AAC1F,OAAM,aAAa,QAAQ,kBAAkB;AAC7C,OAAM,aAAa,QAAQ,SAAS;AACpC,OAAM,aAAa,SAAS,MAAM;AAClC,KAAI,MAAM,eAAe,KACvB,MAAK,aAAa,OAAO,KAAK,WAAW;;AAI7C,MAAM,gCAAgC,SAAe;AACnD,KAAI,gBAAgB,mBAAmB,KAAK,aAAA,qBAA8B,CACxE,uBAAsB,KAAK;AAE7B,KAAI,gBAAgB;OACb,MAAM,QAAQ,KAAK,iBAAiB,QAAQ,iBAAiB,GAAG,CACnE,KAAI,gBAAgB,gBAClB,uBAAsB,KAAK;;;AAMnC,MAAM,yBACJ,QACA,qBACG;AACH,KAAI,EAAE,kBAAkB,YAAY,CAAC,iBACnC,QAAO;AAGT,KAAI,OAAO,KAAK,WAAA,QAAgC,CAC9C,QAAO,OAAO;CAGhB,MAAM,MAAM,mBAAmB,iBAAiB,gBAAgB;AAChE,QAAO,OAAO;AACd,QAAO;;AAGT,MAAM,wBAAwB,KAA2B,cAA6B;AACpF,KAAI,CAAC,KAAK,QAAQ,CAAC,aAAa,OAAO,IAAI,qBAAqB,WAC9D,QAAO;CAGT,MAAM,SAAS,IAAI,iBAAiB,IAAI,MAAM,WAAW,aAAa;CACtE,IAAI,OAAO,OAAO,UAAU;AAC5B,QAAO,MAAM;AACX,MAAI,gBAAgB,WAAW,KAAK,SAAS,UAC3C,QAAO;AAET,SAAO,OAAO,UAAU;;AAE1B,QAAO;;AAGT,MAAM,mBAAmB,SACvB,CAAC,CAAC,SACD,EAAE,iBAAiB,SAEhB,KAGA,gBAAgB;AAEtB,MAAM,wBACJ,WACA,kBACG,CAAC,CAAC,cAAc,gBAAgB,UAAU,IAAI,cAAc,SAAS,UAAU;AAEpF,MAAM,wBAAwB,MAAY,WAAiB;CACzD,MAAM,YAAY;AAGlB,KAAI,OAAO,UAAU,WAAW,YAAY;AAC1C,YAAU,QAAQ;AAClB;;CAGF,MAAM,wBAAwB;AAG9B,KAAI,OAAO,sBAAsB,gBAAgB,WAC/C,uBAAsB,YAAY,KAAK;;AAI3C,MAAM,yBACJ,MACA,kBACG,qBAAqB,MAAM,YAAY,cAAc;AAE1D,MAAM,4BAA4B,QAAiC,UAAkB;AACnF,KAAI,CAAC,QAAQ,cAAc,UAAU,EACnC,QAAO,EAAE;CAGX,MAAM,QAAgB,EAAE;CACxB,IAAI,SAAS,OAAO;AACpB,QAAO,UAAU,MAAM,SAAS,OAAO;AACrC,QAAM,QAAQ,OAAO;AACrB,WAAS,OAAO;;AAGlB,QAAO,MAAM,WAAW,QAAQ,QAAQ,EAAE;;AAG5C,MAAM,qBAAqB,SAAkC;AAC3D,KAAI,EAAE,gBAAgB,SACpB,QAAO;AAGT,QAAO,6BAA6B,KAAK,KAAK;;AAGhD,MAAM,0BAA0B,cAAsB,aAAqB;AACzE,KAAI,aAAa,WAAW,KAAK,aAAa,WAAW,SAAS,OAChE,QAAO;CAGT,IAAI,cAAc;AAElB,MAAK,IAAI,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;EACvD,MAAM,cAAc,aAAa;EACjC,MAAM,UAAU,SAAS;AACzB,MAAI,YAAY,aAAa,QAAQ,SACnC,QAAO;EAGT,MAAM,kBAAkB,kBAAkB,YAAY;EACtD,MAAM,cAAc,kBAAkB,QAAQ;AAC9C,MAAI,mBAAmB,aAAa;AAClC,OACE,CAAC,mBACD,CAAC,eACD,gBAAgB,SAAS,YAAY,QACrC,gBAAgB,OAAO,YAAY,GAEnC,QAAO;AAET,iBAAc;AACd;;AAGF,MAAI,uBAAuB,WAAW,mBAAmB,SAAS;AAChE,OAAI,YAAY,YAAY,QAAQ,QAClC,QAAO;AAET;;AAGF,MAAI,YAAY,aAAa,KAAK,aAAa,QAAQ,aAAa,KAAK,UACvE;AAGF,SAAO;;AAGT,QAAO;;AAGT,MAAM,0BAA0B,UAAmB;CACjD,IAAI,WAAW;AACf,QAAO,OAAO,aAAa,WACzB,YAAW,UAAU;AAGvB,KAAI,aAAa,QAAQ,aAAa,KAAA,KAAa,aAAa,MAC9D,QAAO,EACL,MAAM,SACP;AAGH,KACE,OAAO,aAAa,YACpB,OAAO,aAAa,YACpB,OAAO,aAAa,UAEpB,QAAO;EACL,MAAM;EACN,OAAO,OAAO,SAAS;EACxB;AAGH,QAAO;;AAGT,MAAM,+BAA+B,SACnC,gBAAgB,WAAW,KAAK,SAAS;AAE3C,MAAM,8BAA8B,SAAkB;CACpD,MAAM,QACJ,KAMA;AAEF,QAAO,SACL,OAAO,UAAU,YACjB,OAAO,MAAM,gBAAgB,cAC7B,OAAO,MAAM,mBAAmB,aAC7B,QAID;;AAGN,MAAM,uBAAuB,aAC3B,YAAY,OAAO,aAAa,WAC5B,OAAO,QAAQ,SAAmC,CAC/C,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,IAAI,CAC7B,KAAK,KAAK,GACb,OAAO,YAAY,GAAG;AAE5B,MAAa,kBAAkB,SAA+B;CAC5D,IAAI,WAAuC;AAE3C,cAAa;AACX,MAAI,CAAC,UAAU;AACb,cAAW,SAAS,cAAc,WAAW;AAC7C,YAAS,YAAY;;EAEvB,MAAM,OAAQ,SAAS,UAAU,KAAK,CAAyB,QAAQ;AACvE,+BAA6B,KAAK;AAClC,mCAAiC,KAAK;AACtC,SAAO;;;AAIX,MAAa,UAAU,OAAmB,QAAc,WAAkB;CACxE,IAAI,gBAAgB;CACpB,IAAI,iBAAiB;CACrB,MAAM,mBAAmB,qBAAqB;AAC9C,KAAI,CAAC,iBACH,OAAM,IAAI,MAAM,yDAAyD;CAI3E,MAAM,QACJ,yBAAyB,kBAFzB,kBAAkB,WAAW,CAAC,kBAAkB,OAAO,KAAK,GAAG,OAAO,OAAO,KAErB,IACxD,gCAAgC,iBAAiB;CACnD,MAAM,YAAY,sBAAsB,QAAQ,iBAAiB;CACjE,MAAM,uBACJ,YACA,kBACG;AACH,MACE,CAAC,iBACD,mBAAmB,KACnB,CAAC,sBAAsB,eAAe,cAAc,EACpD;GACA,MAAM,YAAY,yBAAyB,YAAY,eAAe;AACtE,UAAO,UAAU,OAAO,SAAS,sBAAsB,MAAM,cAAc,CAAC,GAAG,YAAY,EAAE;;EAE/F,MAAM,QAAQ,CAAC,cAAc;EAC7B,IAAI,SAAS;AACb,SAAO,MAAM,SAAS,gBAAgB;GACpC,MAAM,OAAO,OAAO;AACpB,OAAI,CAAC,QAAQ,CAAC,sBAAsB,MAAM,cAAc,CACtD,QAAO,EAAE;AAEX,YAAS;AACT,SAAM,KAAK,OAAO;;AAEpB,SAAO;;AAGT,gBAAa;EACX,MAAM,kBAAkB,qCAAqC,iBAAiB;EAC9E,MAAM,aAAa,EAAE,kBAAkB,WACnC,SACA,gBAAgB,OAAO,WAAW,GAChC,SACA,kBACG,qBAAqB,iBAAiB,KAAK,UAAU,IAAI,SAC1D;EACR,MAAM,gBAAgB,YAAY,aAC9B,CAAC,WAAW,YAAY,WAAW,WAAW,aAAa,SAAS,KAAK,GACzE,CAAC,QAAQ,QAAQ,WAAW;EAChC,MAAM,iBAAiB,qBAAqB,eAAe,YAAY,cAAc,GACjF,eAAe,aACf;EACJ,MAAM,mBAAmB,qBAAqB,YAAY,YAAY,cAAc,GAChF,YAAY,aACZ;EAEJ,MAAM,eADkB,kBAAkB,oBAAoB,UACtB;EACxC,MAAM,iBAAiB,uBAAuB,MAAM;EACpD,MAAM,oBAAoB,UACxB,mBAAmB,KACnB,sBAAsB,WACtB,mCAAmC,WAAW,KAAK,QAC/C,yBAAyB,YAAY,MAAM,GAC3C,EAAE;EACR,MAAM,uBAAuB,cAAsB,oBAA0B;GAC3E,MAAM,kBACJ,YAAY,eAAe,eACvB,aACC,aAAa,aAAa,SAAS,IAAI,eAAe;AAC7D,QAAK,MAAM,QAAQ,aACjB,KAAI,KAAK,eAAe,aACtB,sBAAqB,MAAM,aAAa;AAG5C,gBAAa,aAAa,iBAAiB,gBAAgB;AAC3D,6BAA0B,YAAY,CAAC,gBAAgB,CAAC;AACxD,mBAAgB;AAChB,oBAAiB;;AAGnB,MAAI,gBAAgB;GAClB,MAAM,qBAAqB,iBAAiB,EAAE;GAC9C,MAAM,eACJ,mBAAmB,WAAW,KAC9B,mBAAmB,OAAO,SAAS,sBAAsB,MAAM,cAAc,CAAC,GAC1E,qBACA,oBAAoB,YAAY,cAAc;AAEpD,OAAI,aAAa,WAAW,KAAK,mBAAmB,GAAG;AACrD,oBAAgB,aAAa;AAC7B,qBAAiB,aAAa;;AAGhC,OAAI,eAAe,SAAS,QAAQ;AAClC,QAAI,aAAa,WAAW,KAAK,aAAa,cAAc,MAAM;AAChE,SAAI,aAAa,GAAG,SAAS,eAAe,MAC1C,cAAa,GAAG,OAAO,eAAe;AAExC,+BAA0B,YAAY,aAAa;AACnD,qBAAgB,aAAa;AAC7B,sBAAiB;AACjB;;IAGF,MAAM,MAAM,iBAAiB,OAAO,aAAa;AACjD,QAAI,CAAC,IACH,OAAM,IAAI,MAAM,wDAAwD;AAG1E,wBAAoB,cAAc,IAAI,eAAe,eAAe,MAAM,CAAC;AAC3E;;AAGF,OAAI,aAAa,WAAW,KAAK,4BAA4B,aAAa,GAAG,EAAE;AAC7E,8BAA0B,YAAY,aAAa;AACnD,oBAAgB,aAAa;AAC7B,qBAAiB;AACjB;;GAGF,MAAM,MAAM,iBAAiB,OAAO,aAAa;AACjD,OAAI,CAAC,IACH,OAAM,IAAI,MAAM,wDAAwD;AAG1E,uBAAoB,cAAc,IAAI,cAAc,qBAAqB,CAAC;AAC1E;;EAGF,MAAM,WAAW,QACb,+BAA+B,OAAO,kBAAkB,MAAM,GAC9D,uBAAuB,OAAO,iBAAiB;EACnD,MAAM,qBAAqB,iBAAiB,SAAS,OAAO;EAC5D,MAAM,eACJ,mBAAmB,WAAW,KAC9B,mBAAmB,OAAO,SAAS,sBAAsB,MAAM,cAAc,CAAC,IAC9E,uBAAuB,oBAAoB,SAAS,GAChD,qBACA,oBAAoB,YAAY,cAAc;AAEpD,MAAI,aAAa,WAAW,KAAK,mBAAmB,GAAG;AACrD,mBAAgB,aAAa;AAC7B,oBAAiB,aAAa;;AAGhC,MACE,aAAa,WAAW,kBACxB,aAAa,WAAW,KACxB,SAAS,WAAW,MACnB,4BAA4B,cAAc,SAAS,IAClD,kCAAkC,cAAc,SAAS,GAC3D;AACA,qBAAkB,kBAAkB,aAAa;AACjD,6BAA0B,YAAY,aAAa;AACnD,mBAAgB,aAAa;AAC7B,oBAAiB,aAAa;AAC9B;;EAGF,IAAI,mBAAmB;AACvB,MAAI,aAAa,WAAW,KAAK,SAAS,WAAW,GAAG;GACtD,MAAM,MAAM,iBAAiB;AAC7B,OAAI,CAAC,IACH,OAAM,IAAI,MAAM,wDAAwD;GAE1E,MAAM,gBAAgB,IAAI,cAAc,MAAM;AAC9C,QAAK,MAAM,QAAQ,SACjB,eAAc,YAAY,KAAK;AAEjC,kCAA+B,cAAc,MAAM,KAAK,cAAc,WAAW,CAAC;AAClF,sBAAmB,MAAM,KAAK,cAAc,WAAW;;EAGzD,MAAM,kBAAkB,YAAY,eAAe,eAAe,aAAa;AAC/E,OAAK,MAAM,QAAQ,aACjB,KAAI,KAAK,eAAe,aACtB,sBAAqB,MAAM,aAAa;AAG5C,OAAK,MAAM,QAAQ,iBACjB,cAAa,aAAa,MAAM,gBAAgB;AAGlD,oCAAkC,iBAAiB;AACnD,4BAA0B,YAAY,iBAAiB;AAEvD,kBAAgB,iBAAiB,MAAM;AACvC,mBAAiB,iBAAiB;GAClC;;AAGJ,MAAM,mBAAmB;AACzB,MAAM,kCAAkC;AACxC,MAAM,kBAAkB;AACxB,MAAM,oBAAoB;AAC1B,MAAM,kBAAkB;AACxB,MAAM,oBAAoB;AAC1B,MAAM,gCAAgC,MAAe,MAAc,UACjE,SAAS,KAAK,WAAW,QAAQ,IAAI,KAAK,WAAW,QAAQ,IAAI,EAAE,QAAQ;AAM7E,MAAM,oBAAuB,UAC3B,CAAC,CAAC,UAAU,OAAO,UAAU,YAAY,OAAO,UAAU,eAAe,WAAW;AAEtF,MAAM,oBAAoB,MAAe,iBAA0B;AACjE,KACE,gBAAgB,oBAChB,OAAO,iBAAiB,aACvB,KAAK,SAAS,YAAY,KAAK,SAAS,YACzC,CAAC,OAAO,MAAM,KAAK,cAAc,CAEjC,QAAO,KAAK;AAGd,QAAQ,KAAoE;;AAG9E,MAAM,qCAAqC,cAAsB,cAAsB;AACrF,KAAI,aAAa,WAAW,KAAK,UAAU,WAAW,EACpD,QAAO;CAGT,MAAM,CAAC,WAAW;CAClB,MAAM,CAAC,QAAQ;AACf,KACE,EAAE,mBAAmB,YACrB,EAAE,gBAAgB,YAClB,QAAQ,YAAY,KAAK,QAEzB,QAAO;AAET,QAAO,4BAA4B,SAAS,KAAK;;AAGnD,MAAa,QAAQ,MAAe,MAAc,UAAyB;CACzE,MAAM,QAAQ,KAAK,iBAAiB;AAEpC,KAAI,SAAS,iBAAiB;EAC5B,IAAI,eAAe;EACnB,MAAM,oBAAoB;GACxB,MAAM,UAAU,OAAO;GACvB,MAAM,WAAW,mBAAmB,QAAQ;AAC5C,OAAI,aAAa,cAAc;AAC7B,QAAI,SACF,MAAK,aAAa,iBAAiB,SAAS;QAE5C,MAAK,gBAAgB,gBAAgB;AAEvC,iCAA6B,MAAM,gBAAgB;AACnD,mBAAe;;AAEjB,UAAO;;EAGT,MAAM,8BAA8B;GAClC,MAAM,UAAU,aAAa;AAC7B,OAAI,CAAC,iBAAiB,QAAQ,CAC5B;AAEF,WAAQ,QAAQ,iBAAiB,MAAM,QAAQ,MAAM;;AAGvD,OAAK,iBAAiB,SAAS,sBAAsB;AACrD,OAAK,iBAAiB,UAAU,sBAAsB;AAEtD,iBAAa;GACX,MAAM,UAAU,aAAa;AAC7B,OAAI,CAAC,iBAAiB,QAAQ,CAC5B;GAEF,MAAM,QAAQ;GACd,MAAM,YAAY,OAAO,QAAQ,SAAS,GAAG;AAC7C,OAAI,MAAM,UAAU,UAClB,OAAM,QAAQ;IAEhB;AACF;;AAGF,KAAI,SAAS,mBAAmB;AAC9B,MAAI,EAAE,gBAAgB,kBACpB;EAGF,IAAI,eAAe;EACnB,MAAM,oBAAoB;GACxB,MAAM,UAAU,OAAO;GACvB,MAAM,WAAW,mBAAmB,QAAQ;AAC5C,OAAI,aAAa,cAAc;AAC7B,QAAI,SACF,MAAK,aAAa,mBAAmB,SAAS;QAE9C,MAAK,gBAAgB,kBAAkB;AAEzC,iCAA6B,MAAM,kBAAkB;AACrD,mBAAe;;AAEjB,UAAO;;EAGT,MAAM,8BAA8B;GAClC,MAAM,UAAU,aAAa;AAC7B,OAAI,CAAC,iBAAiB,QAAQ,CAC5B;AAEF,WAAQ,QAAQ,KAAK;;AAGvB,OAAK,iBAAiB,SAAS,sBAAsB;AACrD,OAAK,iBAAiB,UAAU,sBAAsB;AAEtD,iBAAa;GACX,MAAM,UAAU,aAAa;AAC7B,OAAI,CAAC,iBAAiB,QAAQ,CAC5B;GAEF,MAAM,cAAc,QAAQ,QAAQ,MAAM;AAC1C,OAAI,KAAK,YAAY,YACnB,MAAK,UAAU;IAEjB;AACF;;AAGF,KAAI,iBAAiB,KAAK,KAAK,EAAE;EAC/B,MAAM,YAAY,KAAK,GAAG,aAAa,GAAG,KAAK,MAAM,EAAE;EACvD,MAAM,WAAW,OAAO;AACxB,MAAI,iBAAiB,MAAM,WAAW,SAAS,CAC7C;AAEF,MAAI,OAAO,aAAa,WACtB,OAAM,IAAI,MAAM,gEAAgE;AAElF,OAAK,iBAAiB,WAAW,SAAuB;AACxD;;AAGF,KAAI,SAAS,SAAS;EACpB,IAAI,kBAAkB;EACtB,IAAI,eAA2C;EAC/C,MAAM,QAAQ,2BAA2B,KAAK;AAE9C,iBAAa;GACX,MAAM,WAAW,OAAO;AACxB,OAAI,SAAS,YAAY,OAAO,aAAa,UAAU;IACrD,MAAM,eAAe,IAAI,IACvB,OAAO,QAAQ,SAAmC,CAAC,KAAK,CAAC,WAAW,gBAAgB,CAClF,WACA,OAAO,WAAW,CACnB,CAAC,CACH;AAED,SAAK,MAAM,CAAC,WAAW,eAAe,aACpC,KAAI,cAAc,IAAI,UAAU,KAAK,WACnC,OAAM,YAAY,WAAW,WAAW;AAI5C,QAAI;UACG,MAAM,aAAa,aAAa,MAAM,CACzC,KAAI,CAAC,aAAa,IAAI,UAAU,CAC9B,OAAM,eAAe,UAAU;;AAKrC,mBAAe;AACf,sBAAkB;AAClB,iCAA6B,MAAM,QAAQ;AAC3C;;AAGF,kBAAe;GACf,MAAM,aAAa,oBAAoB,SAAS;AAChD,OAAI,oBAAoB,WACtB;AAEF,QAAK,aAAa,SAAS,WAAW;AACtC,qBAAkB;AAClB,gCAA6B,MAAM,QAAQ;IAC3C;AACF;;AAGF,KAAI,SAAS,SAAS;EACpB,IAAI,iBAAiB;AACrB,iBAAa;GACX,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACtC,OAAI,mBAAmB,eACrB;AAEF,OAAI,OAAO;AACT,SAAK,aAAa,SAAS,eAAe;AAC1C,iCAA6B,MAAM,QAAQ;UACtC;AACH,SAAyC,YAAY;AACvD,iCAA6B,MAAM,QAAQ;;AAE7C,oBAAiB;IACjB;AACF;;AAGF,KAAI,SAAS,OAAO;EAClB,MAAM,WAAW,OAAO;AACxB,uBAAqB,MAAM,SAAS;AACpC,mBAAiB,UAAU,MAAM,qBAAqB,CAAC;AACvD;;AAGF,KAAI,SAAA,sBAA2B;EAC7B,IAAI,oBAAoB;AACxB,iBAAa;GACX,MAAM,WAAW,OAAO;GACxB,MAAM,YACJ,aAAa,SAAS,aAAa,KAAA,KAAa,aAAa,OAAO,OAAO,OAAO,SAAS;AAC7F,OAAI,sBAAsB,UACxB;AAEF,OAAI,cAAc,KAChB,MAAK,gBAAgB,KAAK;OAE1B,MAAK,aAAa,MAAM,UAAU;AAEpC,gCAA6B,MAAM,KAAK;AACxC,OAAI,cAAc,QAAQ,gBAAgB,gBACxC,uBAAsB,KAAK;AAE7B,uBAAoB;IACpB;AACF;;AAGF,KAAI,SAAS,iCAAiC;EAC5C,IAAI,WAAW;AACf,iBAAa;GACX,MAAM,OAAO,OAAO;GACpB,MAAM,WAAW,SAAS,SAAS,SAAS,KAAA,KAAa,SAAS,OAAO,KAAK,OAAO,KAAK;AAC1F,OAAI,aAAa,SACf;AAEA,QAAyC,YAAY;AACvD,cAAW;IACX;AACF;;CAGF,IAAI,oBAAoB;AACxB,gBAAa;EACX,MAAM,YAAY,OAAO,OAAO,CAAC;AACjC,MAAI,sBAAsB,UACxB;AAEF,MAAI,6BAA6B,MAAM,MAAM,MAAM,EAAE;AACnD,QAAK,aAAa,MAAM,UAAU;AAClC,gCAA6B,MAAM,KAAK;SACnC;AAEL,QAAK,QAAQ;AACb,gCAA6B,MAAM,KAAK;;AAE1C,sBAAoB;GACpB;;AAGJ,MAAa,WACX,WACA,QACA,YAGG;CACH,MAAM,OAAO,mBAAmB,SAAS,YAAY,YAAY,UAAU,EAAE,CAAC,CAAC,CAC5E;AAEH,QAAO,OAAO,WAAW,SAAS,EAChC,QAAO,WAAW,QAAQ;AAG5B,MAAK,MAAM,SAAS,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK,CACrD,cAAa,OAAO,OAAO;;AAI/B,MAAa,mBAAmB,WAAsB,UAAmB;AACvE,KAAI,eAAe,UAAU,CAC3B,cAAa,OAAO,WAAW,OAAkC,MAAM,OAAO,EAAE,CAAC;AAEnF,KAAI,CAAC,iBAAiB,UAAU,EAAE;EAChC,MAAM,SAAS;AACf,eAAa,OAAO,MAAM;;AAE5B,cAAa,OAAO,WAAW,OAAkC,MAAM,OAAO,EAAE,CAAC;;ACtuBnF,MAAM,WAAW,IAAI,sBAA8B,WAAW;AAC5D,MAAK,MAAM,UAAU,OAAO,QAC1B,QAAO,QAAQ,OAAO,OAAO;EAE/B;AAEF,MAAa,UAAU,OAAmB;CACxC,MAAM,YAAoB;EACxB,KAAK;AACH,OAAI;;EAEN,yBAAS,IAAI,KAAK;EACnB;AAGD,WAAU,IAAI;AAGd,UAAS,SAAS,IAAI,UAAU"}
@@ -1,5 +1,5 @@
1
- import "../../action-DCc4fBhy.mjs";
2
- import "../../signal-DoW9q--8.mjs";
1
+ import "../../action-Uv02N2Rx.mjs";
2
+ import "../../signal-CiJrTMGa.mjs";
3
3
  import "../../snapshot-BdY3jcVk.mjs";
4
- import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client--uq9YZzN.mjs";
4
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-CnFXpfUF.mjs";
5
5
  export { attr, createComponent, createTemplate, effect, hydrate, insert };
@@ -1,7 +1,7 @@
1
- import { Jt as setExternalComponentMeta, Nt as getExternalComponentMeta, Tt as __eclipsaComponent, jt as getComponentMeta } from "../../action-DCc4fBhy.mjs";
2
- import "../../signal-DoW9q--8.mjs";
1
+ import { Et as __eclipsaComponent, Mt as getComponentMeta, Pt as getExternalComponentMeta, Yt as setExternalComponentMeta } from "../../action-Uv02N2Rx.mjs";
2
+ import "../../signal-CiJrTMGa.mjs";
3
3
  import "../../snapshot-BdY3jcVk.mjs";
4
- import { a as hydrate } from "../../client--uq9YZzN.mjs";
4
+ import { a as hydrate } from "../../client-CnFXpfUF.mjs";
5
5
  //#region core/dev-client/hot.ts
6
6
  const HOT_COMPONENT_TARGET_KEY = Symbol.for("eclipsa.hot-component-target");
7
7
  const unwrapHotComponent = (Component) => Component[HOT_COMPONENT_TARGET_KEY] ?? Component;
@@ -1,2 +1,2 @@
1
- import { A as getRegisteredActionHook, B as setExternalComponentMeta, C as getComponentMeta, Ct as __eclipsaAction, D as getLoaderHandleMeta, E as getLazyMeta, F as getWatchMeta, H as setLoaderHookMeta, I as registerActionHook, L as registerLoaderHook, M as getRegisteredLoaderHook, N as getRegisteredLoaderHookIds, Nt as getRuntimeComponentId, O as getLoaderHookMeta, P as getSignalMeta, R as setActionHandleMeta, S as getActionHookMeta, T as getExternalComponentMeta, U as setNavigateMeta, V as setLoaderHandleMeta, W as setSignalMeta, Y as __eclipsaLoader, _ as __eclipsaComponent, a as EventDescriptor, b as __eclipsaWatch, c as ExternalComponentReference, d as LoaderHandleMeta, f as LoaderHookMeta, g as WatchReference, h as WatchMeta, i as ComponentOptions, j as getRegisteredActionHookIds, k as getNavigateMeta, l as LazyMeta, m as SignalMeta, n as ActionHookMeta, o as ExternalComponentDescriptor, p as NavigateMeta, r as ComponentMeta, s as ExternalComponentMeta, t as ActionHandleMeta, u as LazyReference, v as __eclipsaEvent, w as getEventMeta, x as getActionHandleMeta, y as __eclipsaLazy, z as setActionHookMeta } from "../internal-1QlldZaD.mjs";
2
- export { ActionHandleMeta, ActionHookMeta, ComponentMeta, ComponentOptions, EventDescriptor, ExternalComponentDescriptor, ExternalComponentMeta, ExternalComponentReference, LazyMeta, LazyReference, LoaderHandleMeta, LoaderHookMeta, NavigateMeta, SignalMeta, WatchMeta, WatchReference, __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
1
+ import { A as getRegisteredActionHook, B as setExternalComponentMeta, C as getComponentMeta, D as getLoaderHandleMeta, E as getLazyMeta, Et as __eclipsaAction, F as getWatchMeta, G as createRouteElement, Gt as ComponentState, H as setLoaderHookMeta, I as registerActionHook, It as createDetachedRuntimeComponent, K as isRouteSlot, L as registerLoaderHook, Lt as createDetachedRuntimeContainer, M as getRegisteredLoaderHook, N as getRegisteredLoaderHookIds, O as getLoaderHookMeta, P as getSignalMeta, Q as __eclipsaLoader, R as setActionHandleMeta, Rt as disposeDetachedRuntimeComponent, S as getActionHookMeta, T as getExternalComponentMeta, U as setNavigateMeta, V as setLoaderHandleMeta, W as setSignalMeta, Wt as runDetachedRuntimeComponent, _ as __eclipsaComponent, a as EventDescriptor, b as __eclipsaWatch, c as ExternalComponentReference, d as LoaderHandleMeta, f as LoaderHookMeta, g as WatchReference, h as WatchMeta, i as ComponentOptions, j as getRegisteredActionHookIds, k as getNavigateMeta, l as LazyMeta, m as SignalMeta, n as ActionHookMeta, o as ExternalComponentDescriptor, p as NavigateMeta, q as resolveRouteSlot, qt as RuntimeContainer, r as ComponentMeta, s as ExternalComponentMeta, t as ActionHandleMeta, u as LazyReference, v as __eclipsaEvent, w as getEventMeta, x as getActionHandleMeta, y as __eclipsaLazy, z as setActionHookMeta, zt as getRuntimeComponentId } from "../internal-BvDZTQLb.mjs";
2
+ export { ActionHandleMeta, ActionHookMeta, ComponentMeta, ComponentOptions, ComponentState, EventDescriptor, ExternalComponentDescriptor, ExternalComponentMeta, ExternalComponentReference, LazyMeta, LazyReference, LoaderHandleMeta, LoaderHookMeta, NavigateMeta, RuntimeContainer, SignalMeta, WatchMeta, WatchReference, __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, createDetachedRuntimeComponent, createDetachedRuntimeContainer, createRouteElement, disposeDetachedRuntimeComponent, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, isRouteSlot, registerActionHook, registerLoaderHook, resolveRouteSlot, runDetachedRuntimeComponent, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
package/core/internal.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { $t as __eclipsaLoader, A as getRuntimeComponentId, At as getActionHookMeta, Bt as getRegisteredLoaderHook, Dt as __eclipsaLazy, Et as __eclipsaEvent, Ft as getLoaderHandleMeta, Gt as registerLoaderHook, Ht as getSignalMeta, It as getLoaderHookMeta, Jt as setExternalComponentMeta, Kt as setActionHandleMeta, Lt as getNavigateMeta, Mt as getEventMeta, Nt as getExternalComponentMeta, Ot as __eclipsaWatch, Pt as getLazyMeta, Qt as setSignalMeta, Rt as getRegisteredActionHook, Tt as __eclipsaComponent, Ut as getWatchMeta, Vt as getRegisteredLoaderHookIds, Wt as registerActionHook, Xt as setLoaderHookMeta, Yt as setLoaderHandleMeta, Zt as setNavigateMeta, i as __eclipsaAction, jt as getComponentMeta, kt as getActionHandleMeta, qt as setActionHookMeta, zt as getRegisteredActionHookIds } from "../action-DCc4fBhy.mjs";
2
- export { __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
1
+ import { $t as setSignalMeta, At as getActionHandleMeta, Bt as getRegisteredActionHookIds, C as createDetachedRuntimeContainer, Dt as __eclipsaEvent, Et as __eclipsaComponent, Ft as getLazyMeta, Gt as registerActionHook, Ht as getRegisteredLoaderHookIds, It as getLoaderHandleMeta, Jt as setActionHookMeta, Kt as registerLoaderHook, Lt as getLoaderHookMeta, Mt as getComponentMeta, N as getRuntimeComponentId, Nt as getEventMeta, Ot as __eclipsaLazy, Pt as getExternalComponentMeta, Qt as setNavigateMeta, Rt as getNavigateMeta, S as createDetachedRuntimeComponent, Ut as getSignalMeta, Vt as getRegisteredLoaderHook, Wt as getWatchMeta, Xt as setLoaderHandleMeta, Yt as setExternalComponentMeta, Zt as setLoaderHookMeta, en as createRouteElement, i as __eclipsaAction, j as disposeDetachedRuntimeComponent, jt as getActionHookMeta, kt as __eclipsaWatch, nn as resolveRouteSlot, nt as runDetachedRuntimeComponent, on as __eclipsaLoader, qt as setActionHandleMeta, tn as isRouteSlot, zt as getRegisteredActionHook } from "../action-Uv02N2Rx.mjs";
2
+ export { __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, createDetachedRuntimeComponent, createDetachedRuntimeContainer, createRouteElement, disposeDetachedRuntimeComponent, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, isRouteSlot, registerActionHook, registerLoaderHook, resolveRouteSlot, runDetachedRuntimeComponent, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
@@ -1,8 +1,8 @@
1
- import { U as renderClientInsertable, j as getRuntimeContainer } from "../../action-DCc4fBhy.mjs";
2
- import { a as jsxDEV } from "../../jsx-dev-runtime-DpbWQ4Q0.mjs";
3
- import "../../signal-DoW9q--8.mjs";
1
+ import { K as renderClientInsertable, P as getRuntimeContainer } from "../../action-Uv02N2Rx.mjs";
2
+ import { a as jsxDEV } from "../../jsx-dev-runtime-BZ-o1aUQ.mjs";
3
+ import "../../signal-CiJrTMGa.mjs";
4
4
  import "../../snapshot-BdY3jcVk.mjs";
5
- import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client--uq9YZzN.mjs";
5
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-CnFXpfUF.mjs";
6
6
  //#region core/prod-client/eurl.ts
7
7
  const eurlMaps = /* @__PURE__ */ new Map();
8
8
  const fetchEurl = async (id) => {
@@ -195,7 +195,9 @@ declare const composeRouteMetadata: (values: RouteMetadataExport[], ctx: Metadat
195
195
  declare const renderRouteMetadataHead: (metadata: RouteMetadata | null) => JSX.Element[];
196
196
  //#endregion
197
197
  //#region core/runtime/constants.d.ts
198
+ declare const ROUTE_SLOT_ROUTE_KEY: unique symbol;
198
199
  declare const RESUME_FINAL_STATE_ELEMENT_ID = "eclipsa-resume-final";
200
+ declare const ROUTE_SLOT_TYPE = "route-slot";
199
201
  //#endregion
200
202
  //#region core/runtime/types.d.ts
201
203
  type CleanupCallback = () => void;
@@ -254,6 +256,7 @@ interface ResumePayload {
254
256
  watches: Record<string, ResumeWatchPayload>;
255
257
  }
256
258
  interface ReactiveEffect {
259
+ container?: RuntimeContainer | null;
257
260
  fn: () => void;
258
261
  signals: Set<SignalRecord>;
259
262
  }
@@ -333,6 +336,14 @@ interface RouteDataDocumentFallback {
333
336
  }
334
337
  type RouteDataResponse = RouteDataSuccess | RouteDataRedirect | RouteDataDocumentFallback;
335
338
  type RoutePrefetchResult = RouteDataResponse;
339
+ interface RouteSlotValue {
340
+ __eclipsa_type: typeof ROUTE_SLOT_TYPE;
341
+ pathname: string;
342
+ startLayoutIndex: number;
343
+ }
344
+ interface RouteSlotCarrier extends RouteSlotValue {
345
+ [ROUTE_SLOT_ROUTE_KEY]?: LoadedRoute;
346
+ }
336
347
  interface WatchState {
337
348
  cleanupSlot: CleanupSlot;
338
349
  componentId: string;
@@ -435,6 +446,10 @@ declare const renderSSRMap: <T>(value: readonly T[] | {
435
446
  join: (separator: string) => string;
436
447
  };
437
448
  }, renderItem: (item: T, index: number) => string) => string;
449
+ declare const createDetachedRuntimeContainer: () => RuntimeContainer;
450
+ declare const createDetachedRuntimeComponent: (container: RuntimeContainer, id?: string) => ComponentState;
451
+ declare const runDetachedRuntimeComponent: <T>(container: RuntimeContainer, component: ComponentState, render: () => T) => T;
452
+ declare const disposeDetachedRuntimeComponent: (container: RuntimeContainer, component: ComponentState) => void;
438
453
  declare const getRuntimeComponentId: () => string | null;
439
454
  //#endregion
440
455
  //#region core/action.d.ts
@@ -606,6 +621,11 @@ declare const primeLoaderState: (container: RuntimeContainer, id: string, c: App
606
621
  declare const resolvePendingLoaders: (container: RuntimeContainer, c: AppContext<any>) => Promise<boolean>;
607
622
  declare const __eclipsaLoader: <const Middlewares extends readonly LoaderMiddleware<any>[], Output>(id: string, middlewares: readonly [...Middlewares], handler: LoaderHandler<LoaderEnv<Middlewares>, Output>) => () => LoaderHandle<Output>;
608
623
  //#endregion
624
+ //#region core/runtime/routes.d.ts
625
+ declare const isRouteSlot: (value: unknown) => value is RouteSlotCarrier;
626
+ declare const resolveRouteSlot: (container: RuntimeContainer | null, slot: RouteSlotCarrier) => unknown;
627
+ declare const createRouteElement: (route: LoadedRoute, startLayoutIndex?: number) => unknown;
628
+ //#endregion
609
629
  //#region core/internal.d.ts
610
630
  declare const EXTERNAL_COMPONENT_META_KEY: unique symbol;
611
631
  declare const LAZY_META_KEY: unique symbol;
@@ -715,5 +735,5 @@ declare const setSignalMeta: <T>(target: {
715
735
  };
716
736
  declare const getSignalMeta: <T>(value: unknown) => SignalMeta<T> | null;
717
737
  //#endregion
718
- export { isPendingSsrLoaderError as $, NavigateOptions as $n, APP_HOOKS_ELEMENT_ID as $t, getRegisteredActionHook as A, resolveReroute as An, primeActionState as At, setExternalComponentMeta as B, SerializedReference as Bn, RuntimeContextToken as Bt, getComponentMeta as C, createRequestFetch as Cn, __eclipsaAction as Ct, getLoaderHandleMeta as D, markPublicError as Dn, getActionFormSubmissionId as Dt, getLazyMeta as E, getCurrentServerRequestContext as En, executeActionSubmission as Et, getWatchMeta as F, withServerRequestContext as Fn, renderSSRAttr as Ft, LoaderFactory as G, escapeInlineScriptText as Gn, RouteMetadata as Gt, setLoaderHookMeta as H, SerializedUndefined as Hn, MetadataContext as Ht, registerActionHook as I, DeserializeValueOptions as In, renderSSRMap as It, LoaderMiddleware as J, serializeJSONScriptContent as Jn, RouteMetadataValue as Jt, LoaderHandle as K, escapeJSONScriptText as Kn, RouteMetadataExport as Kt, registerLoaderHook as L, SerializeValueOptions as Ln, renderSSRValue as Lt, getRegisteredLoaderHook as M, serializePublicValue as Mn, validator as Mt, getRegisteredLoaderHookIds as N, toPublicError as Nn, getRuntimeComponentId as Nt, getLoaderHookMeta as O, registerClientHooks as On, getNormalizedActionInput as Ot, getSignalMeta as P, transformCurrentPublicError as Pn, primeLocationState as Pt, hasLoader as Q, Navigate as Qn, resolveRouteMetadata as Qt, setActionHandleMeta as R, SerializedMap as Rn, ResumePayload as Rt, getActionHookMeta as S, attachRequestFetch as Sn, StandardSchemaV1 as St, getExternalComponentMeta as T, getClientHooks as Tn, executeAction as Tt, setNavigateMeta as U, SerializedValue as Un, OpenGraphMetadata as Ut, setLoaderHandleMeta as V, SerializedSet as Vn, RESUME_FINAL_STATE_ELEMENT_ID as Vt, setSignalMeta as W, deserializeValue as Wn, ROUTE_METADATA_HEAD_ATTR as Wt, consumePendingSsrLoaderIds as X, GetStaticPaths as Xn, composeRouteMetadata as Xt, __eclipsaLoader as Y, serializeValue as Yn, TwitterMetadata as Yt, executeLoader as Z, LinkPrefetchMode as Zn, renderRouteMetadataHead as Zt, __eclipsaComponent as _, ServerHooksModule as _n, InferStandardSchemaOutput as _t, EventDescriptor as a, BaseAppVariables as an, ACTION_CONTENT_TYPE as at, __eclipsaWatch as b, TransportHook as bn, StandardSchemaIssue as bt, ExternalComponentReference as c, HandleErrorInput as cn, ActionFactory as ct, LoaderHandleMeta as d, HandleResolveOptions as dn, ActionHandler as dt, AppContext as en, RouteLocation as er, loader as et, LoaderHookMeta as f, PublicError as fn, ActionMiddleware as ft, WatchReference as g, ResolvedHooks as gn, InferStandardSchemaInput as gt, WatchMeta as h, Reroute as hn, ActionValidatorMiddleware as ht, ComponentOptions as i, AppVariables as in, resolvePendingLoaders as it, getRegisteredActionHookIds as j, runHandleError as jn, registerAction as jt, getNavigateMeta as k, resetClientHooks as kn, hasAction as kt, LazyMeta as l, HandleFetch as ln, ActionFormProps as lt, SignalMeta as m, RequestFetch as mn, ActionSubmission as mt, ActionHookMeta as n, AppHooksManifest as nn, StaticPath as nr, primeLoaderState as nt, ExternalComponentDescriptor as o, Handle as on, ACTION_FORM_ATTR as ot, NavigateMeta as p, PublicErrorShape as pn, ActionOpaqueRef as pt, LoaderHandler as q, parseSerializedJSON as qn, RouteMetadataResolver as qt, ComponentMeta as r, AppHooksModule as rn, registerLoader as rt, ExternalComponentMeta as s, HandleError as sn, ACTION_FORM_FIELD as st, ActionHandleMeta as t, AppEnv as tn, RouteParams as tr, markPendingSsrLoader as tt, LazyReference as u, HandleResolve as un, ActionHandle as ut, __eclipsaEvent as v, ServerInit as vn, OpaqueDomRef as vt, getEventMeta as w, deserializePublicValue as wn, action as wt, getActionHandleMeta as x, WithAppEnv as xn, StandardSchemaResult as xt, __eclipsaLazy as y, Transport as yn, OpaqueSignalRef as yt, setActionHookMeta as z, SerializedObject as zn, RuntimeContainer as zt };
719
- //# sourceMappingURL=internal-1QlldZaD.d.mts.map
738
+ export { consumePendingSsrLoaderIds as $, escapeInlineScriptText as $n, RouteMetadata as $t, getRegisteredActionHook as A, attachRequestFetch as An, getActionFormSubmissionId as At, setExternalComponentMeta as B, serializePublicValue as Bn, primeLocationState as Bt, getComponentMeta as C, Reroute as Cn, StandardSchemaIssue as Ct, getLoaderHandleMeta as D, Transport as Dn, action as Dt, getLazyMeta as E, ServerInit as En, __eclipsaAction as Et, getWatchMeta as F, markPublicError as Fn, validator as Ft, createRouteElement as G, SerializeValueOptions as Gn, ComponentState as Gt, setLoaderHookMeta as H, transformCurrentPublicError as Hn, renderSSRMap as Ht, registerActionHook as I, registerClientHooks as In, createDetachedRuntimeComponent as It, LoaderFactory as J, SerializedReference as Jn, RuntimeContextToken as Jt, isRouteSlot as K, SerializedMap as Kn, ResumePayload as Kt, registerLoaderHook as L, resetClientHooks as Ln, createDetachedRuntimeContainer as Lt, getRegisteredLoaderHook as M, deserializePublicValue as Mn, hasAction as Mt, getRegisteredLoaderHookIds as N, getClientHooks as Nn, primeActionState as Nt, getLoaderHookMeta as O, TransportHook as On, executeAction as Ot, getSignalMeta as P, getCurrentServerRequestContext as Pn, registerAction as Pt, __eclipsaLoader as Q, deserializeValue as Qn, ROUTE_METADATA_HEAD_ATTR as Qt, setActionHandleMeta as R, resolveReroute as Rn, disposeDetachedRuntimeComponent as Rt, getActionHookMeta as S, RequestFetch as Sn, OpaqueSignalRef as St, getExternalComponentMeta as T, ServerHooksModule as Tn, StandardSchemaV1 as Tt, setNavigateMeta as U, withServerRequestContext as Un, renderSSRValue as Ut, setLoaderHandleMeta as V, toPublicError as Vn, renderSSRAttr as Vt, setSignalMeta as W, DeserializeValueOptions as Wn, runDetachedRuntimeComponent as Wt, LoaderHandler as X, SerializedUndefined as Xn, MetadataContext as Xt, LoaderHandle as Y, SerializedSet as Yn, RESUME_FINAL_STATE_ELEMENT_ID as Yt, LoaderMiddleware as Z, SerializedValue as Zn, OpenGraphMetadata as Zt, __eclipsaComponent as _, HandleFetch as _n, ActionSubmission as _t, EventDescriptor as a, renderRouteMetadataHead as an, LinkPrefetchMode as ar, primeLoaderState as at, __eclipsaWatch as b, PublicError as bn, InferStandardSchemaOutput as bt, ExternalComponentReference as c, AppContext as cn, RouteLocation as cr, ACTION_CONTENT_TYPE as ct, LoaderHandleMeta as d, AppHooksModule as dn, ActionFactory as dt, RouteMetadataExport as en, escapeJSONScriptText as er, executeLoader as et, LoaderHookMeta as f, AppVariables as fn, ActionFormProps as ft, WatchReference as g, HandleErrorInput as gn, ActionOpaqueRef as gt, WatchMeta as h, HandleError as hn, ActionMiddleware as ht, ComponentOptions as i, composeRouteMetadata as in, GetStaticPaths as ir, markPendingSsrLoader as it, getRegisteredActionHookIds as j, createRequestFetch as jn, getNormalizedActionInput as jt, getNavigateMeta as k, WithAppEnv as kn, executeActionSubmission as kt, LazyMeta as l, AppEnv as ln, RouteParams as lr, ACTION_FORM_ATTR as lt, SignalMeta as m, Handle as mn, ActionHandler as mt, ActionHookMeta as n, RouteMetadataValue as nn, serializeJSONScriptContent as nr, isPendingSsrLoaderError as nt, ExternalComponentDescriptor as o, resolveRouteMetadata as on, Navigate as or, registerLoader as ot, NavigateMeta as p, BaseAppVariables as pn, ActionHandle as pt, resolveRouteSlot as q, SerializedObject as qn, RuntimeContainer as qt, ComponentMeta as r, TwitterMetadata as rn, serializeValue as rr, loader as rt, ExternalComponentMeta as s, APP_HOOKS_ELEMENT_ID as sn, NavigateOptions as sr, resolvePendingLoaders as st, ActionHandleMeta as t, RouteMetadataResolver as tn, parseSerializedJSON as tr, hasLoader as tt, LazyReference as u, AppHooksManifest as un, StaticPath as ur, ACTION_FORM_FIELD as ut, __eclipsaEvent as v, HandleResolve as vn, ActionValidatorMiddleware as vt, getEventMeta as w, ResolvedHooks as wn, StandardSchemaResult as wt, getActionHandleMeta as x, PublicErrorShape as xn, OpaqueDomRef as xt, __eclipsaLazy as y, HandleResolveOptions as yn, InferStandardSchemaInput as yt, setActionHookMeta as z, runHandleError as zn, getRuntimeComponentId as zt };
739
+ //# sourceMappingURL=internal-BvDZTQLb.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as jsxDEV, c as ssrTemplate, i as isSSRTemplate, n as isSSRAttrValue, o as ssrAttr, r as isSSRRawValue, s as ssrRaw, t as Fragment } from "../jsx-dev-runtime-DpbWQ4Q0.mjs";
1
+ import { a as jsxDEV, c as ssrTemplate, i as isSSRTemplate, n as isSSRAttrValue, o as ssrAttr, r as isSSRRawValue, s as ssrRaw, t as Fragment } from "../jsx-dev-runtime-BZ-o1aUQ.mjs";
2
2
  export { Fragment, isSSRAttrValue, isSSRRawValue, isSSRTemplate, jsxDEV, ssrAttr, ssrRaw, ssrTemplate };
package/jsx/mod.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { J as renderString } from "../action-DCc4fBhy.mjs";
1
+ import { Z as renderString } from "../action-Uv02N2Rx.mjs";
2
2
  //#region jsx/mod.ts
3
3
  const renderToString = (inputElementLike) => renderString(inputElementLike);
4
4
  //#endregion
@@ -2,6 +2,7 @@
2
2
  const FRAGMENT = "__ECLIPSA_FRAGMENT";
3
3
  //#endregion
4
4
  //#region jsx/jsx-dev-runtime.ts
5
+ const SSR_RAW_VALUES = /* @__PURE__ */ new WeakSet();
5
6
  const jsxDEV = (type, props, key, isStatic, metadata) => ({
6
7
  type,
7
8
  props,
@@ -15,11 +16,15 @@ const ssrAttr = (name, value) => ({
15
16
  value
16
17
  });
17
18
  const isSSRAttrValue = (value) => !!value && typeof value === "object" && value.__e_ssr_attr === true;
18
- const ssrRaw = (value) => ({
19
- __e_ssr_raw: true,
20
- value
21
- });
22
- const isSSRRawValue = (value) => !!value && typeof value === "object" && value.__e_ssr_raw === true;
19
+ const ssrRaw = (value) => {
20
+ const rawValue = {
21
+ __e_ssr_raw: true,
22
+ value
23
+ };
24
+ SSR_RAW_VALUES.add(rawValue);
25
+ return rawValue;
26
+ };
27
+ const isSSRRawValue = (value) => !!value && typeof value === "object" && SSR_RAW_VALUES.has(value);
23
28
  const ssrTemplate = (strings, ...values) => ({
24
29
  __e_ssr_template: true,
25
30
  strings,
@@ -30,4 +35,4 @@ const Fragment = FRAGMENT;
30
35
  //#endregion
31
36
  export { jsxDEV as a, ssrTemplate as c, isSSRTemplate as i, FRAGMENT as l, isSSRAttrValue as n, ssrAttr as o, isSSRRawValue as r, ssrRaw as s, Fragment as t };
32
37
 
33
- //# sourceMappingURL=jsx-dev-runtime-DpbWQ4Q0.mjs.map
38
+ //# sourceMappingURL=jsx-dev-runtime-BZ-o1aUQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-dev-runtime-BZ-o1aUQ.mjs","names":[],"sources":["../jsx/shared.ts","../jsx/jsx-dev-runtime.ts"],"sourcesContent":["export const FRAGMENT = '__ECLIPSA_FRAGMENT'\n","import { FRAGMENT } from './shared.ts'\nimport type { JSX } from './types.ts'\n\nexport interface SSRAttrValue {\n __e_ssr_attr: true\n name: string\n value: unknown\n}\n\nexport interface SSRRawValue {\n __e_ssr_raw: true\n value: string\n}\n\nconst SSR_RAW_VALUES = new WeakSet<SSRRawValue>()\n\nexport const jsxDEV = (\n type: JSX.Type,\n props: Record<string, unknown>,\n key: string | number | symbol | null | undefined,\n isStatic: boolean,\n metadata: JSX.Metadata,\n): JSX.Element => ({\n type,\n props,\n key,\n isStatic,\n metadata,\n})\n\nexport const ssrAttr = (name: string, value: unknown): SSRAttrValue => ({\n __e_ssr_attr: true,\n name,\n value,\n})\n\nexport const isSSRAttrValue = (value: unknown): value is SSRAttrValue =>\n !!value && typeof value === 'object' && (value as SSRAttrValue).__e_ssr_attr === true\n\nexport const ssrRaw = (value: string): JSX.SSRRaw => {\n const rawValue: SSRRawValue = {\n __e_ssr_raw: true,\n value,\n }\n SSR_RAW_VALUES.add(rawValue)\n return rawValue\n}\n\nexport const isSSRRawValue = (value: unknown): value is SSRRawValue =>\n !!value && typeof value === 'object' && SSR_RAW_VALUES.has(value as SSRRawValue)\n\nexport const ssrTemplate = (strings: readonly string[], ...values: unknown[]): JSX.SSRTemplate => ({\n __e_ssr_template: true,\n strings,\n values,\n})\n\nexport const isSSRTemplate = (value: unknown): value is JSX.SSRTemplate =>\n !!value && typeof value === 'object' && (value as JSX.SSRTemplate).__e_ssr_template === true\n\nexport const Fragment = FRAGMENT\n"],"mappings":";AAAA,MAAa,WAAW;;;ACcxB,MAAM,iCAAiB,IAAI,SAAsB;AAEjD,MAAa,UACX,MACA,OACA,KACA,UACA,cACiB;CACjB;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,WAAW,MAAc,WAAkC;CACtE,cAAc;CACd;CACA;CACD;AAED,MAAa,kBAAkB,UAC7B,CAAC,CAAC,SAAS,OAAO,UAAU,YAAa,MAAuB,iBAAiB;AAEnF,MAAa,UAAU,UAA8B;CACnD,MAAM,WAAwB;EAC5B,aAAa;EACb;EACD;AACD,gBAAe,IAAI,SAAS;AAC5B,QAAO;;AAGT,MAAa,iBAAiB,UAC5B,CAAC,CAAC,SAAS,OAAO,UAAU,YAAY,eAAe,IAAI,MAAqB;AAElF,MAAa,eAAe,SAA4B,GAAG,YAAwC;CACjG,kBAAkB;CAClB;CACA;CACD;AAED,MAAa,iBAAiB,UAC5B,CAAC,CAAC,SAAS,OAAO,UAAU,YAAa,MAA0B,qBAAqB;AAE1F,MAAa,WAAW"}
package/mod.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { i as JSX, n as DelegatedEvent, r as EventHandler, t as BindTarget } from "./types-Cu9gFlEY.mjs";
2
2
  import { n as EURL, t as Component } from "./component-yvTtnI00.mjs";
3
- import { $ as isPendingSsrLoaderError, $n as NavigateOptions, $t as APP_HOOKS_ELEMENT_ID, An as resolveReroute, At as primeActionState, Bn as SerializedReference, Bt as RuntimeContextToken, Cn as createRequestFetch, Ct as __eclipsaAction, Dn as markPublicError, Dt as getActionFormSubmissionId, En as getCurrentServerRequestContext, Et as executeActionSubmission, Fn as withServerRequestContext, Ft as renderSSRAttr, G as LoaderFactory, Gn as escapeInlineScriptText, Gt as RouteMetadata, Hn as SerializedUndefined, Ht as MetadataContext, In as DeserializeValueOptions, It as renderSSRMap, J as LoaderMiddleware, Jn as serializeJSONScriptContent, Jt as RouteMetadataValue, K as LoaderHandle, Kn as escapeJSONScriptText, Kt as RouteMetadataExport, Ln as SerializeValueOptions, Lt as renderSSRValue, Mn as serializePublicValue, Mt as validator, Nn as toPublicError, On as registerClientHooks, Ot as getNormalizedActionInput, Pn as transformCurrentPublicError, Q as hasLoader, Qn as Navigate, Qt as resolveRouteMetadata, Rn as SerializedMap, Sn as attachRequestFetch, St as StandardSchemaV1, Tn as getClientHooks, Tt as executeAction, Un as SerializedValue, Ut as OpenGraphMetadata, Vn as SerializedSet, Vt as RESUME_FINAL_STATE_ELEMENT_ID, Wn as deserializeValue, Wt as ROUTE_METADATA_HEAD_ATTR, X as consumePendingSsrLoaderIds, Xn as GetStaticPaths, Xt as composeRouteMetadata, Y as __eclipsaLoader, Yn as serializeValue, Yt as TwitterMetadata, Z as executeLoader, Zn as LinkPrefetchMode, Zt as renderRouteMetadataHead, _n as ServerHooksModule, _t as InferStandardSchemaOutput, an as BaseAppVariables, at as ACTION_CONTENT_TYPE, bn as TransportHook, bt as StandardSchemaIssue, cn as HandleErrorInput, ct as ActionFactory, dn as HandleResolveOptions, dt as ActionHandler, en as AppContext, er as RouteLocation, et as loader, fn as PublicError, ft as ActionMiddleware, gn as ResolvedHooks, gt as InferStandardSchemaInput, hn as Reroute, ht as ActionValidatorMiddleware, in as AppVariables, it as resolvePendingLoaders, jn as runHandleError, jt as registerAction, kn as resetClientHooks, kt as hasAction, ln as HandleFetch, lt as ActionFormProps, mn as RequestFetch, mt as ActionSubmission, nn as AppHooksManifest, nr as StaticPath, nt as primeLoaderState, on as Handle, ot as ACTION_FORM_ATTR, pn as PublicErrorShape, pt as ActionOpaqueRef, q as LoaderHandler, qn as parseSerializedJSON, qt as RouteMetadataResolver, rn as AppHooksModule, rt as registerLoader, sn as HandleError, st as ACTION_FORM_FIELD, tn as AppEnv, tr as RouteParams, tt as markPendingSsrLoader, un as HandleResolve, ut as ActionHandle, vn as ServerInit, vt as OpaqueDomRef, wn as deserializePublicValue, wt as action, xn as WithAppEnv, xt as StandardSchemaResult, yn as Transport, yt as OpaqueSignalRef, zn as SerializedObject } from "./internal-1QlldZaD.mjs";
4
- import { a as onMount, c as useComputed, d as useWatch, i as onCleanup, l as useComputed$, n as WatchDependency, o as onVisible, r as effect, s as signal, t as Signal, u as useSignal } from "./signal-CosyYdtA.mjs";
5
- import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, n as SSRStreamChunk, o as renderSSRAsync, r as SSRStreamRenderResult, s as renderSSRStream, t as SSRRenderResult } from "./ssr-wXShLrdB.mjs";
3
+ import { $ as consumePendingSsrLoaderIds, $n as escapeInlineScriptText, $t as RouteMetadata, An as attachRequestFetch, At as getActionFormSubmissionId, Bn as serializePublicValue, Cn as Reroute, Ct as StandardSchemaIssue, Dn as Transport, Dt as action, En as ServerInit, Et as __eclipsaAction, Fn as markPublicError, Ft as validator, Gn as SerializeValueOptions, Hn as transformCurrentPublicError, Ht as renderSSRMap, In as registerClientHooks, J as LoaderFactory, Jn as SerializedReference, Jt as RuntimeContextToken, Kn as SerializedMap, Ln as resetClientHooks, Mn as deserializePublicValue, Mt as hasAction, Nn as getClientHooks, Nt as primeActionState, On as TransportHook, Ot as executeAction, Pn as getCurrentServerRequestContext, Pt as registerAction, Q as __eclipsaLoader, Qn as deserializeValue, Qt as ROUTE_METADATA_HEAD_ATTR, Rn as resolveReroute, Sn as RequestFetch, St as OpaqueSignalRef, Tn as ServerHooksModule, Tt as StandardSchemaV1, Un as withServerRequestContext, Ut as renderSSRValue, Vn as toPublicError, Vt as renderSSRAttr, Wn as DeserializeValueOptions, X as LoaderHandler, Xn as SerializedUndefined, Xt as MetadataContext, Y as LoaderHandle, Yn as SerializedSet, Yt as RESUME_FINAL_STATE_ELEMENT_ID, Z as LoaderMiddleware, Zn as SerializedValue, Zt as OpenGraphMetadata, _n as HandleFetch, _t as ActionSubmission, an as renderRouteMetadataHead, ar as LinkPrefetchMode, at as primeLoaderState, bn as PublicError, bt as InferStandardSchemaOutput, cn as AppContext, cr as RouteLocation, ct as ACTION_CONTENT_TYPE, dn as AppHooksModule, dt as ActionFactory, en as RouteMetadataExport, er as escapeJSONScriptText, et as executeLoader, fn as AppVariables, ft as ActionFormProps, gn as HandleErrorInput, gt as ActionOpaqueRef, hn as HandleError, ht as ActionMiddleware, in as composeRouteMetadata, ir as GetStaticPaths, it as markPendingSsrLoader, jn as createRequestFetch, jt as getNormalizedActionInput, kn as WithAppEnv, kt as executeActionSubmission, ln as AppEnv, lr as RouteParams, lt as ACTION_FORM_ATTR, mn as Handle, mt as ActionHandler, nn as RouteMetadataValue, nr as serializeJSONScriptContent, nt as isPendingSsrLoaderError, on as resolveRouteMetadata, or as Navigate, ot as registerLoader, pn as BaseAppVariables, pt as ActionHandle, qn as SerializedObject, rn as TwitterMetadata, rr as serializeValue, rt as loader, sn as APP_HOOKS_ELEMENT_ID, sr as NavigateOptions, st as resolvePendingLoaders, tn as RouteMetadataResolver, tr as parseSerializedJSON, tt as hasLoader, un as AppHooksManifest, ur as StaticPath, ut as ACTION_FORM_FIELD, vn as HandleResolve, vt as ActionValidatorMiddleware, wn as ResolvedHooks, wt as StandardSchemaResult, xn as PublicErrorShape, xt as OpaqueDomRef, yn as HandleResolveOptions, yt as InferStandardSchemaInput, zn as runHandleError } from "./internal-BvDZTQLb.mjs";
4
+ import { a as onMount, c as useComputed, d as useWatch, i as onCleanup, l as useComputed$, n as WatchDependency, o as onVisible, r as effect, s as signal, t as Signal, u as useSignal } from "./signal-MAa64fRK.mjs";
5
+ import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, n as SSRStreamChunk, o as renderSSRAsync, r as SSRStreamRenderResult, s as renderSSRStream, t as SSRRenderResult } from "./ssr-CbRIgrJ1.mjs";
6
6
  import { Env, MiddlewareHandler } from "hono/types";
7
7
 
8
8
  //#region core/context.d.ts
package/mod.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import { $n as deserializeValue, $t as __eclipsaLoader, An as createPendingSignalError, B as refreshRegisteredRouteContainers, Bn as createRequestFetch, Cn as createContext, Ct as RESUME_FINAL_STATE_ELEMENT_ID, Dn as materializeRuntimeContextProvider, E as createResumeContainer, En as materializeRuntimeContext, F as notFound$1, G as renderSSRAttr, Gn as registerClientHooks, H as registerRuntimeScopedStyle, Hn as getClientHooks, Jn as runHandleError, K as renderSSRMap, Kn as resetClientHooks, Mn as isSuspenseType, On as useContext, P as installResumeListeners, Qn as withServerRequestContext, R as primeRouteModules, Rn as APP_HOOKS_ELEMENT_ID, Sn as resolveRouteMetadata, Tn as getRuntimeContextReference, Un as getCurrentServerRequestContext, V as registerResumeContainer, Vn as deserializePublicValue, Wn as markPublicError, X as restoreResumedExternalComponents, Xn as toPublicError, Y as restoreRegisteredRpcHandles, Yn as serializePublicValue, Z as restoreResumedLocalSignalEffects, Zn as transformCurrentPublicError, _n as ROUTE_REPLACE_ATTR, a as action, ar as IS_BROWSER, at as useRuntimeLocation, bn as composeRouteMetadata, c as getActionFormSubmissionId, cn as registerLoader, cr as noSerialize, ct as useRuntimeRouteParams, d as primeActionState, en as consumePendingSsrLoaderIds, er as escapeInlineScriptText, f as registerAction, fn as ROUTE_LINK_ATTR, i as __eclipsaAction, in as loader, ir as serializeValue, jn as isPendingSignalError, kn as Suspense, l as getNormalizedActionInput, ln as resolvePendingLoaders, m as applyResumeHmrUpdateToRegisteredContainers, mn as ROUTE_PREFETCH_ATTR, n as ACTION_FORM_ATTR, nn as hasLoader, nr as parseSerializedJSON, o as executeAction, on as markPendingSsrLoader, or as IS_SSR, ot as useRuntimeNavigate, p as validator, pn as ROUTE_MANIFEST_ELEMENT_ID, q as renderSSRValue, qn as resolveReroute, r as ACTION_FORM_FIELD, rn as isPendingSsrLoaderError, rr as serializeJSONScriptContent, s as executeActionSubmission, sn as primeLoaderState, sr as isNoSerialize, st as useRuntimeRouteError, t as ACTION_CONTENT_TYPE, tn as executeLoader, tr as escapeJSONScriptText, u as hasAction, wn as getContextProviderMeta, xn as renderRouteMetadataHead, yn as ROUTE_METADATA_HEAD_ATTR, zn as attachRequestFetch } from "./action-DCc4fBhy.mjs";
2
- import { a as jsxDEV } from "./jsx-dev-runtime-DpbWQ4Q0.mjs";
1
+ import { $ as restoreResumedExternalComponents, $n as resetClientHooks, An as createContext, Dn as composeRouteMetadata, En as ROUTE_METADATA_HEAD_ATTR, Fn as useContext, G as registerRuntimeScopedStyle, Gn as APP_HOOKS_ELEMENT_ID, In as Suspense, J as renderSSRAttr, Jn as deserializePublicValue, Kn as attachRequestFetch, L as installResumeListeners, Ln as createPendingSignalError, Mn as getRuntimeContextReference, Nn as materializeRuntimeContext, O as createResumeContainer, On as renderRouteMetadataHead, Pn as materializeRuntimeContextProvider, Q as restoreRegisteredRpcHandles, Qn as registerClientHooks, R as notFound$1, Rn as isPendingSignalError, U as refreshRegisteredRouteContainers, V as primeRouteModules, W as registerResumeContainer, X as renderSSRValue, Xn as getCurrentServerRequestContext, Y as renderSSRMap, Yn as getClientHooks, Zn as markPublicError, a as action, ar as withServerRequestContext, bn as ROUTE_MANIFEST_ELEMENT_ID, c as getActionFormSubmissionId, cn as executeLoader, cr as escapeJSONScriptText, d as primeActionState, dn as loader, dr as serializeValue, dt as useRuntimeRouteError, er as resolveReroute, et as restoreResumedLocalSignalEffects, f as registerAction, fr as IS_BROWSER, ft as useRuntimeRouteParams, gn as resolvePendingLoaders, hn as registerLoader, hr as noSerialize, i as __eclipsaAction, in as RESUME_FINAL_STATE_ELEMENT_ID, ir as transformCurrentPublicError, jn as getContextProviderMeta, kn as resolveRouteMetadata, l as getNormalizedActionInput, ln as hasLoader, lr as parseSerializedJSON, lt as useRuntimeLocation, m as applyResumeHmrUpdateToRegisteredContainers, mn as primeLoaderState, mr as isNoSerialize, n as ACTION_FORM_ATTR, nr as serializePublicValue, o as executeAction, on as __eclipsaLoader, or as deserializeValue, p as validator, pn as markPendingSsrLoader, pr as IS_SSR, qn as createRequestFetch, r as ACTION_FORM_FIELD, rr as toPublicError, s as executeActionSubmission, sn as consumePendingSsrLoaderIds, sr as escapeInlineScriptText, t as ACTION_CONTENT_TYPE, tr as runHandleError, u as hasAction, un as isPendingSsrLoaderError, ur as serializeJSONScriptContent, ut as useRuntimeNavigate, wn as ROUTE_REPLACE_ATTR, xn as ROUTE_PREFETCH_ATTR, yn as ROUTE_LINK_ATTR, zn as isSuspenseType } from "./action-Uv02N2Rx.mjs";
2
+ import { a as jsxDEV } from "./jsx-dev-runtime-BZ-o1aUQ.mjs";
3
3
  import { t as RESUME_HMR_EVENT } from "./resume-hmr-qTpLc5o-.mjs";
4
- import { a as signal, c as useSignal, i as onVisible, l as useWatch, n as onCleanup, o as useComputed, r as onMount, s as useComputed$, t as effect } from "./signal-DoW9q--8.mjs";
4
+ import { a as signal, c as useSignal, i as onVisible, l as useWatch, n as onCleanup, o as useComputed, r as onMount, s as useComputed$, t as effect } from "./signal-CiJrTMGa.mjs";
5
5
  import { n as registerSnapshotSignal, r as withSignalSnapshot, t as consumeSnapshotValue } from "./snapshot-BdY3jcVk.mjs";
6
- import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "./ssr-lXZqUHZs.mjs";
6
+ import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "./ssr-CdcEyS-i.mjs";
7
7
  //#region core/dynamic.ts
8
8
  const omitComponentProp = (props) => {
9
9
  const descriptors = Object.getOwnPropertyDescriptors(props);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eclipsa",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "homepage": "https://github.com/pnsk-lab/eclipsa",
5
5
  "bugs": {
6
6
  "url": "https://github.com/pnsk-lab/eclipsa/issues"
@@ -63,7 +63,7 @@
63
63
  }
64
64
  },
65
65
  "dependencies": {
66
- "@eclipsa/optimizer": "^0.1.10",
66
+ "@eclipsa/optimizer": "^0.1.12",
67
67
  "fast-glob": "^3.3.2",
68
68
  "hono": "^4.6.4"
69
69
  },
@@ -1,4 +1,4 @@
1
- import { An as createPendingSignalError, C as createOnCleanup, D as createStandaloneRuntimeSignal, M as getRuntimeSignalId, O as createWatch, Qt as setSignalMeta, S as createEffect, T as createOnVisible, dt as writeAsyncSignalSnapshot, j as getRuntimeContainer, jn as isPendingSignalError, lt as useRuntimeSignal, w as createOnMount, z as readAsyncSignalSnapshot } from "./action-DCc4fBhy.mjs";
1
+ import { $t as setSignalMeta, A as createWatch, D as createOnVisible, E as createOnMount, F as getRuntimeSignalId, H as readAsyncSignalSnapshot, Ln as createPendingSignalError, P as getRuntimeContainer, Rn as isPendingSignalError, T as createOnCleanup, ht as writeAsyncSignalSnapshot, k as createStandaloneRuntimeSignal, pt as useRuntimeSignal, w as createEffect } from "./action-Uv02N2Rx.mjs";
2
2
  //#region core/signal.ts
3
3
  const isPromiseLike = (value) => !!value && typeof value === "object" && "then" in value && typeof value.then === "function";
4
4
  const isComputedSnapshot = (value) => !!value && typeof value === "object" && value.__e_async_computed === true;
@@ -113,4 +113,4 @@ const useComputed$ = useComputed;
113
113
  //#endregion
114
114
  export { signal as a, useSignal as c, onVisible as i, useWatch as l, onCleanup as n, useComputed as o, onMount as r, useComputed$ as s, effect as t };
115
115
 
116
- //# sourceMappingURL=signal-DoW9q--8.mjs.map
116
+ //# sourceMappingURL=signal-CiJrTMGa.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-DoW9q--8.mjs","names":[],"sources":["../core/signal.ts"],"sourcesContent":["import {\n createStandaloneRuntimeSignal,\n createEffect,\n createOnCleanup,\n createOnMount,\n createOnVisible,\n createWatch,\n getRuntimeContainer,\n getRuntimeSignalId,\n readAsyncSignalSnapshot,\n useRuntimeSignal,\n writeAsyncSignalSnapshot,\n} from './runtime.ts'\nimport { setSignalMeta, type SignalMeta } from './internal.ts'\nimport { createPendingSignalError, isPendingSignalError } from './suspense.ts'\n\nexport interface Signal<T> {\n value: T\n}\n\ninterface SignalFactory {\n <T>(value: T): Signal<T>\n <T>(value?: T | undefined): Signal<T | undefined>\n computed<T>(value: () => T | Promise<T>, dependencies?: WatchDependency[]): Signal<T>\n}\n\ninterface ComputedSnapshot<T> {\n __e_async_computed: true\n error?: unknown\n promise?: Promise<T>\n status: 'pending' | 'rejected' | 'resolved'\n value?: T\n}\n\nexport type WatchDependency<T = unknown> = Signal<T> | (() => T)\n\nconst isPromiseLike = <T>(value: unknown): value is Promise<T> =>\n !!value && typeof value === 'object' && 'then' in value && typeof value.then === 'function'\n\nconst isComputedSnapshot = <T>(value: unknown): value is ComputedSnapshot<T> =>\n !!value && typeof value === 'object' && (value as ComputedSnapshot<T>).__e_async_computed === true\n\nconst createComputedSnapshot = <T>(\n snapshot: Omit<ComputedSnapshot<T>, '__e_async_computed'>,\n): ComputedSnapshot<T> => ({\n __e_async_computed: true,\n ...snapshot,\n})\n\nconst createComputedSignalFactory =\n (createBaseSignal: <T>(value: T) => Signal<T>): SignalFactory['computed'] =>\n <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) => {\n const state = createBaseSignal<ComputedSnapshot<T>>(\n createComputedSnapshot({\n status: 'pending',\n }),\n )\n const runtimeContainer = getRuntimeContainer()\n const signalId = getRuntimeSignalId(state)\n const seededSnapshot =\n signalId !== null\n ? (readAsyncSignalSnapshot(signalId, runtimeContainer) as ComputedSnapshot<T> | undefined)\n : undefined\n let useSeededSnapshot = !!seededSnapshot && seededSnapshot.status !== 'pending'\n let version = 0\n\n createEffect(\n () => {\n if (useSeededSnapshot && seededSnapshot) {\n useSeededSnapshot = false\n state.value = seededSnapshot\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, seededSnapshot, runtimeContainer)\n }\n return\n }\n\n const currentVersion = ++version\n try {\n const nextValue = fn()\n if (isPromiseLike<T>(nextValue)) {\n const pending = createComputedSnapshot<T>({\n promise: nextValue,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n nextValue.then(\n (resolved) => {\n if (currentVersion !== version) {\n return\n }\n const completed = createComputedSnapshot<T>({\n status: 'resolved',\n value: resolved,\n })\n state.value = completed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, completed, runtimeContainer)\n }\n },\n (error) => {\n if (currentVersion !== version) {\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n },\n )\n return\n }\n\n const resolved = createComputedSnapshot<T>({\n status: 'resolved',\n value: nextValue,\n })\n state.value = resolved\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, resolved, runtimeContainer)\n }\n } catch (error) {\n if (isPendingSignalError(error)) {\n const pending = createComputedSnapshot<T>({\n promise: error.promise as Promise<T>,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n }\n },\n dependencies\n ? {\n dependencies,\n errorLabel: 'useComputed',\n untracked: true,\n }\n : undefined,\n )\n\n const handle = {} as Signal<T>\n Object.defineProperty(handle, 'value', {\n configurable: true,\n enumerable: true,\n get() {\n const snapshot = state.value\n if (!isComputedSnapshot<T>(snapshot)) {\n return snapshot as T\n }\n if (snapshot.status === 'pending') {\n throw createPendingSignalError(snapshot.promise ?? Promise.resolve(undefined))\n }\n if (snapshot.status === 'rejected') {\n throw snapshot.error\n }\n return snapshot.value as T\n },\n })\n if (signalId !== null) {\n setSignalMeta(handle, {\n get: () => handle.value,\n id: signalId,\n kind: 'computed-signal',\n set: () => {\n throw new TypeError('Computed signals are read-only.')\n },\n } satisfies SignalMeta<T>)\n }\n return handle\n }\n\nexport const signal = ((value) => createStandaloneRuntimeSignal(value)) as SignalFactory\n\nexport const useSignal = ((value) => useRuntimeSignal(value)) as SignalFactory\n\nsignal.computed = createComputedSignalFactory((value) => createStandaloneRuntimeSignal(value))\nuseSignal.computed = createComputedSignalFactory((value) => useRuntimeSignal(value))\n\nexport const effect = (fn: () => void) => createEffect(fn)\nexport const onCleanup = (fn: () => void) => createOnCleanup(fn)\nexport const onMount = (fn: () => void) => createOnMount(fn)\nexport const onVisible = (fn: () => void) => createOnVisible(fn)\nexport const useWatch = (fn: () => void, dependencies?: WatchDependency[]) =>\n createWatch(fn, dependencies)\n\nexport const useComputed = <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) =>\n useSignal.computed(fn, dependencies)\nexport const useComputed$ = useComputed\n"],"mappings":"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"}
1
+ {"version":3,"file":"signal-CiJrTMGa.mjs","names":[],"sources":["../core/signal.ts"],"sourcesContent":["import {\n createStandaloneRuntimeSignal,\n createEffect,\n createOnCleanup,\n createOnMount,\n createOnVisible,\n createWatch,\n getRuntimeContainer,\n getRuntimeSignalId,\n readAsyncSignalSnapshot,\n useRuntimeSignal,\n writeAsyncSignalSnapshot,\n} from './runtime.ts'\nimport { setSignalMeta, type SignalMeta } from './internal.ts'\nimport { createPendingSignalError, isPendingSignalError } from './suspense.ts'\n\nexport interface Signal<T> {\n value: T\n}\n\ninterface SignalFactory {\n <T>(value: T): Signal<T>\n <T>(value?: T | undefined): Signal<T | undefined>\n computed<T>(value: () => T | Promise<T>, dependencies?: WatchDependency[]): Signal<T>\n}\n\ninterface ComputedSnapshot<T> {\n __e_async_computed: true\n error?: unknown\n promise?: Promise<T>\n status: 'pending' | 'rejected' | 'resolved'\n value?: T\n}\n\nexport type WatchDependency<T = unknown> = Signal<T> | (() => T)\n\nconst isPromiseLike = <T>(value: unknown): value is Promise<T> =>\n !!value && typeof value === 'object' && 'then' in value && typeof value.then === 'function'\n\nconst isComputedSnapshot = <T>(value: unknown): value is ComputedSnapshot<T> =>\n !!value && typeof value === 'object' && (value as ComputedSnapshot<T>).__e_async_computed === true\n\nconst createComputedSnapshot = <T>(\n snapshot: Omit<ComputedSnapshot<T>, '__e_async_computed'>,\n): ComputedSnapshot<T> => ({\n __e_async_computed: true,\n ...snapshot,\n})\n\nconst createComputedSignalFactory =\n (createBaseSignal: <T>(value: T) => Signal<T>): SignalFactory['computed'] =>\n <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) => {\n const state = createBaseSignal<ComputedSnapshot<T>>(\n createComputedSnapshot({\n status: 'pending',\n }),\n )\n const runtimeContainer = getRuntimeContainer()\n const signalId = getRuntimeSignalId(state)\n const seededSnapshot =\n signalId !== null\n ? (readAsyncSignalSnapshot(signalId, runtimeContainer) as ComputedSnapshot<T> | undefined)\n : undefined\n let useSeededSnapshot = !!seededSnapshot && seededSnapshot.status !== 'pending'\n let version = 0\n\n createEffect(\n () => {\n if (useSeededSnapshot && seededSnapshot) {\n useSeededSnapshot = false\n state.value = seededSnapshot\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, seededSnapshot, runtimeContainer)\n }\n return\n }\n\n const currentVersion = ++version\n try {\n const nextValue = fn()\n if (isPromiseLike<T>(nextValue)) {\n const pending = createComputedSnapshot<T>({\n promise: nextValue,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n nextValue.then(\n (resolved) => {\n if (currentVersion !== version) {\n return\n }\n const completed = createComputedSnapshot<T>({\n status: 'resolved',\n value: resolved,\n })\n state.value = completed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, completed, runtimeContainer)\n }\n },\n (error) => {\n if (currentVersion !== version) {\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n },\n )\n return\n }\n\n const resolved = createComputedSnapshot<T>({\n status: 'resolved',\n value: nextValue,\n })\n state.value = resolved\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, resolved, runtimeContainer)\n }\n } catch (error) {\n if (isPendingSignalError(error)) {\n const pending = createComputedSnapshot<T>({\n promise: error.promise as Promise<T>,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n }\n },\n dependencies\n ? {\n dependencies,\n errorLabel: 'useComputed',\n untracked: true,\n }\n : undefined,\n )\n\n const handle = {} as Signal<T>\n Object.defineProperty(handle, 'value', {\n configurable: true,\n enumerable: true,\n get() {\n const snapshot = state.value\n if (!isComputedSnapshot<T>(snapshot)) {\n return snapshot as T\n }\n if (snapshot.status === 'pending') {\n throw createPendingSignalError(snapshot.promise ?? Promise.resolve(undefined))\n }\n if (snapshot.status === 'rejected') {\n throw snapshot.error\n }\n return snapshot.value as T\n },\n })\n if (signalId !== null) {\n setSignalMeta(handle, {\n get: () => handle.value,\n id: signalId,\n kind: 'computed-signal',\n set: () => {\n throw new TypeError('Computed signals are read-only.')\n },\n } satisfies SignalMeta<T>)\n }\n return handle\n }\n\nexport const signal = ((value) => createStandaloneRuntimeSignal(value)) as SignalFactory\n\nexport const useSignal = ((value) => useRuntimeSignal(value)) as SignalFactory\n\nsignal.computed = createComputedSignalFactory((value) => createStandaloneRuntimeSignal(value))\nuseSignal.computed = createComputedSignalFactory((value) => useRuntimeSignal(value))\n\nexport const effect = (fn: () => void) => createEffect(fn)\nexport const onCleanup = (fn: () => void) => createOnCleanup(fn)\nexport const onMount = (fn: () => void) => createOnMount(fn)\nexport const onVisible = (fn: () => void) => createOnVisible(fn)\nexport const useWatch = (fn: () => void, dependencies?: WatchDependency[]) =>\n createWatch(fn, dependencies)\n\nexport const useComputed = <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) =>\n useSignal.computed(fn, dependencies)\nexport const useComputed$ = useComputed\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ interface SignalFactory {
10
10
  type WatchDependency<T = unknown> = Signal<T> | (() => T);
11
11
  declare const signal: SignalFactory;
12
12
  declare const useSignal: SignalFactory;
13
- declare const effect: (fn: () => void) => void;
13
+ declare const effect: (fn: () => void) => () => void;
14
14
  declare const onCleanup: (fn: () => void) => void;
15
15
  declare const onMount: (fn: () => void) => void;
16
16
  declare const onVisible: (fn: () => void) => void;
@@ -19,4 +19,4 @@ declare const useComputed: <T>(fn: () => T | Promise<T>, dependencies?: WatchDep
19
19
  declare const useComputed$: <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) => Signal<T>;
20
20
  //#endregion
21
21
  export { onMount as a, useComputed as c, useWatch as d, onCleanup as i, useComputed$ as l, WatchDependency as n, onVisible as o, effect as r, signal as s, Signal as t, useSignal as u };
22
- //# sourceMappingURL=signal-CosyYdtA.d.mts.map
22
+ //# sourceMappingURL=signal-MAa64fRK.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { i as JSX } from "./types-Cu9gFlEY.mjs";
2
- import { Rt as ResumePayload, zt as RuntimeContainer } from "./internal-1QlldZaD.mjs";
2
+ import { Kt as ResumePayload, qt as RuntimeContainer } from "./internal-BvDZTQLb.mjs";
3
3
  import { Context } from "hono";
4
4
 
5
5
  //#region core/ssr.d.ts
@@ -34,4 +34,4 @@ declare const serializeResumePayload: (payload: ResumePayload) => string;
34
34
  declare const getStreamingResumeBootstrapScriptContent: () => string;
35
35
  //#endregion
36
36
  export { renderSSR as a, serializeResumePayload as c, getStreamingResumeBootstrapScriptContent as i, SSRStreamChunk as n, renderSSRAsync as o, SSRStreamRenderResult as r, renderSSRStream as s, SSRRenderResult as t };
37
- //# sourceMappingURL=ssr-wXShLrdB.d.mts.map
37
+ //# sourceMappingURL=ssr-CbRIgrJ1.d.mts.map