eclipsa 0.1.11 → 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.
- package/{action-BcEktMN2.mjs → action-Uv02N2Rx.mjs} +312 -288
- package/action-Uv02N2Rx.mjs.map +1 -0
- package/{client-DI_VsKvi.mjs → client-CnFXpfUF.mjs} +4 -4
- package/{client-DI_VsKvi.mjs.map → client-CnFXpfUF.mjs.map} +1 -1
- package/core/client/mod.mjs +3 -3
- package/core/dev-client/mod.mjs +3 -3
- package/core/internal.d.mts +2 -2
- package/core/internal.mjs +2 -2
- package/core/prod-client/mod.mjs +4 -4
- package/{internal-L0hnuNCn.d.mts → internal-BvDZTQLb.d.mts} +21 -2
- package/jsx/jsx-dev-runtime.mjs +1 -1
- package/jsx/mod.mjs +1 -1
- package/{jsx-dev-runtime-DpbWQ4Q0.mjs → jsx-dev-runtime-BZ-o1aUQ.mjs} +11 -6
- package/jsx-dev-runtime-BZ-o1aUQ.mjs.map +1 -0
- package/mod.d.mts +3 -3
- package/mod.mjs +4 -4
- package/package.json +2 -2
- package/{signal-B1aQQyxh.mjs → signal-CiJrTMGa.mjs} +2 -2
- package/{signal-B1aQQyxh.mjs.map → signal-CiJrTMGa.mjs.map} +1 -1
- package/{signal-CosyYdtA.d.mts → signal-MAa64fRK.d.mts} +2 -2
- package/{ssr-OV5GBPzK.d.mts → ssr-CbRIgrJ1.d.mts} +2 -2
- package/{ssr-Bqev931T.mjs → ssr-CdcEyS-i.mjs} +4 -4
- package/{ssr-Bqev931T.mjs.map → ssr-CdcEyS-i.mjs.map} +1 -1
- package/vite/build/runtime.d.mts +2 -2
- package/vite/build/runtime.mjs +3 -3
- package/vite/mod.mjs +162 -123
- package/vite/mod.mjs.map +1 -1
- package/web-utils/mod.d.mts +1 -1
- package/web-utils/mod.mjs +2 -2
- package/action-BcEktMN2.mjs.map +0 -1
- package/jsx-dev-runtime-DpbWQ4Q0.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as jsxDEV } from "./jsx-dev-runtime-
|
|
3
|
-
import { t as effect$1 } from "./signal-
|
|
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-
|
|
432
|
+
//# sourceMappingURL=client-CnFXpfUF.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-DI_VsKvi.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":"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"}
|
package/core/client/mod.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../action-
|
|
2
|
-
import "../../signal-
|
|
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-
|
|
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 };
|
package/core/dev-client/mod.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../signal-
|
|
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-
|
|
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;
|
package/core/internal.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as getRegisteredActionHook, B as setExternalComponentMeta, C as getComponentMeta,
|
|
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
|
|
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 };
|
package/core/prod-client/mod.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as jsxDEV } from "../../jsx-dev-runtime-
|
|
3
|
-
import "../../signal-
|
|
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-
|
|
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;
|
|
@@ -334,6 +336,14 @@ interface RouteDataDocumentFallback {
|
|
|
334
336
|
}
|
|
335
337
|
type RouteDataResponse = RouteDataSuccess | RouteDataRedirect | RouteDataDocumentFallback;
|
|
336
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
|
+
}
|
|
337
347
|
interface WatchState {
|
|
338
348
|
cleanupSlot: CleanupSlot;
|
|
339
349
|
componentId: string;
|
|
@@ -436,6 +446,10 @@ declare const renderSSRMap: <T>(value: readonly T[] | {
|
|
|
436
446
|
join: (separator: string) => string;
|
|
437
447
|
};
|
|
438
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;
|
|
439
453
|
declare const getRuntimeComponentId: () => string | null;
|
|
440
454
|
//#endregion
|
|
441
455
|
//#region core/action.d.ts
|
|
@@ -607,6 +621,11 @@ declare const primeLoaderState: (container: RuntimeContainer, id: string, c: App
|
|
|
607
621
|
declare const resolvePendingLoaders: (container: RuntimeContainer, c: AppContext<any>) => Promise<boolean>;
|
|
608
622
|
declare const __eclipsaLoader: <const Middlewares extends readonly LoaderMiddleware<any>[], Output>(id: string, middlewares: readonly [...Middlewares], handler: LoaderHandler<LoaderEnv<Middlewares>, Output>) => () => LoaderHandle<Output>;
|
|
609
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
|
|
610
629
|
//#region core/internal.d.ts
|
|
611
630
|
declare const EXTERNAL_COMPONENT_META_KEY: unique symbol;
|
|
612
631
|
declare const LAZY_META_KEY: unique symbol;
|
|
@@ -716,5 +735,5 @@ declare const setSignalMeta: <T>(target: {
|
|
|
716
735
|
};
|
|
717
736
|
declare const getSignalMeta: <T>(value: unknown) => SignalMeta<T> | null;
|
|
718
737
|
//#endregion
|
|
719
|
-
export {
|
|
720
|
-
//# sourceMappingURL=internal-
|
|
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
|
package/jsx/jsx-dev-runtime.mjs
CHANGED
|
@@ -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-
|
|
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
|
@@ -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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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 { $
|
|
2
|
-
import { a as jsxDEV } from "./jsx-dev-runtime-
|
|
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-
|
|
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-
|
|
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.
|
|
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.
|
|
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 {
|
|
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-
|
|
116
|
+
//# sourceMappingURL=signal-CiJrTMGa.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-
|
|
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-
|
|
22
|
+
//# sourceMappingURL=signal-MAa64fRK.d.mts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as JSX } from "./types-Cu9gFlEY.mjs";
|
|
2
|
-
import {
|
|
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-
|
|
37
|
+
//# sourceMappingURL=ssr-CbRIgrJ1.d.mts.map
|