eclipsa 0.1.4 → 0.1.5

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.
Files changed (45) hide show
  1. package/{action-CgM3EJUS.mjs → action-DqgkV3zb.mjs} +1584 -996
  2. package/action-DqgkV3zb.mjs.map +1 -0
  3. package/{client-COjBNTyt.mjs → client-DKPmN-wJ.mjs} +126 -40
  4. package/client-DKPmN-wJ.mjs.map +1 -0
  5. package/{component-D_nEtZ69.d.mts → component-yvTtnI00.d.mts} +2 -2
  6. package/core/client/mod.d.mts +2 -2
  7. package/core/client/mod.mjs +3 -3
  8. package/core/dev-client/mod.d.mts +1 -1
  9. package/core/dev-client/mod.mjs +10 -5
  10. package/core/dev-client/mod.mjs.map +1 -1
  11. package/core/internal.d.mts +2 -2
  12. package/core/internal.mjs +2 -2
  13. package/core/prod-client/mod.d.mts +3 -3
  14. package/core/prod-client/mod.mjs +4 -4
  15. package/{internal-Csbm0Qnv.d.mts → internal-CHYAJznU.d.mts} +116 -72
  16. package/jsx/jsx-dev-runtime.d.mts +8 -2
  17. package/jsx/jsx-dev-runtime.mjs +2 -2
  18. package/jsx/jsx-runtime.d.mts +1 -1
  19. package/jsx/mod.d.mts +1 -1
  20. package/jsx/mod.mjs +1 -1
  21. package/{jsx-dev-runtime-CY60yQJY.mjs → jsx-dev-runtime-DpbWQ4Q0.mjs} +8 -3
  22. package/jsx-dev-runtime-DpbWQ4Q0.mjs.map +1 -0
  23. package/{mod-DLb8ple9.d.mts → mod-aLmFvMYF.d.mts} +4 -4
  24. package/mod.d.mts +20 -38
  25. package/mod.mjs +19 -145
  26. package/mod.mjs.map +1 -1
  27. package/package.json +6 -2
  28. package/{signal-B7AfIKrr.d.mts → signal-CosyYdtA.d.mts} +1 -1
  29. package/{signal-CJtquEfo.mjs → signal-DBzloBrN.mjs} +2 -2
  30. package/{signal-CJtquEfo.mjs.map → signal-DBzloBrN.mjs.map} +1 -1
  31. package/ssr-CRg57Wn2.mjs +157 -0
  32. package/ssr-CRg57Wn2.mjs.map +1 -0
  33. package/ssr-D8F-DtCv.d.mts +37 -0
  34. package/{types-BCEY9lGp.d.mts → types-Cu9gFlEY.d.mts} +6 -2
  35. package/{types-DKpefD_u.d.mts → types-DDeNM8UH.d.mts} +1 -1
  36. package/vite/build/runtime.d.mts +4 -0
  37. package/vite/build/runtime.mjs +4 -0
  38. package/vite/mod.mjs +257 -38
  39. package/vite/mod.mjs.map +1 -1
  40. package/web-utils/mod.d.mts +1 -1
  41. package/web-utils/mod.mjs +2 -2
  42. package/action-CgM3EJUS.mjs.map +0 -1
  43. package/client-COjBNTyt.mjs.map +0 -1
  44. package/jsx-dev-runtime-CY60yQJY.mjs.map +0 -1
  45. /package/{jsx-runtime-BFDPoxFn.d.mts → jsx-runtime-QIK6ADiK.d.mts} +0 -0
@@ -1,13 +1,14 @@
1
- import { $ as restoreSignalRefs, C as createDetachedClientInsertOwner, G as rememberInsertMarkerRange, J as renderClientInsertable, K as rememberManagedAttributesForNode, N as getRuntimeContainer, Ot as getComponentMeta, P as getRuntimeSignalId, R as preserveReusableContentInRoots, Y as renderClientInsertableForOwner, _ as assignRuntimeRef, at as tryPatchElementShellInPlace, b as bindRuntimeEvent, et as shouldReconnectDetachedInsertMarkers, nt as syncRuntimeRefMarker, ot as tryPatchNodeSequenceInPlace, q as rememberManagedAttributesForNodes, tt as syncManagedAttributeSnapshot, vn as isSuspenseType, x as captureClientInsertOwner } from "./action-CgM3EJUS.mjs";
2
- import { i as jsxDEV } from "./jsx-dev-runtime-CY60yQJY.mjs";
3
- import { t as effect$1 } from "./signal-CJtquEfo.mjs";
1
+ import { $ as shouldReconnectDetachedInsertMarkers, At as getComponentMeta, I as preserveReusableContentInRoots, M as getRuntimeSignalId, Q as restoreSignalRefs, 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, jn as isSuspenseType, 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-DqgkV3zb.mjs";
2
+ import { a as jsxDEV } from "./jsx-dev-runtime-DpbWQ4Q0.mjs";
3
+ import { t as effect$1 } from "./signal-DBzloBrN.mjs";
4
4
  import { r as withSignalSnapshot } from "./snapshot-BdY3jcVk.mjs";
5
5
  //#region core/client/dom.ts
6
- const INSERT_MARKER_PREFIX = "ec:i:";
6
+ const EMPTY_INSERT_COMMENT = "eclipsa-empty";
7
+ const ATTR_UNSET = Symbol("eclipsa.attr-unset");
7
8
  const ensureInsertMarkerKey = (marker, runtimeContainer) => {
8
9
  if (!(marker instanceof Comment) || !runtimeContainer) return null;
9
- if (marker.data.startsWith(INSERT_MARKER_PREFIX)) return marker.data;
10
- const key = `${INSERT_MARKER_PREFIX}${runtimeContainer.nextElementId++}`;
10
+ if (marker.data.startsWith("ec:i:")) return marker.data;
11
+ const key = createInsertMarker(runtimeContainer.nextElementId++);
11
12
  marker.data = key;
12
13
  return key;
13
14
  };
@@ -43,21 +44,9 @@ const collectNodesBeforeMarker = (marker, count) => {
43
44
  }
44
45
  return nodes.length === count ? nodes : [];
45
46
  };
46
- const COMPONENT_BOUNDARY_START_REGEX = /^ec:c:(.+):start$/;
47
- const COMPONENT_BOUNDARY_END_REGEX = /^ec:c:(.+):end$/;
48
47
  const getBoundaryMarker = (node) => {
49
48
  if (!(node instanceof Comment)) return null;
50
- const start = node.data.match(COMPONENT_BOUNDARY_START_REGEX);
51
- if (start?.[1]) return {
52
- id: start[1],
53
- kind: "start"
54
- };
55
- const end = node.data.match(COMPONENT_BOUNDARY_END_REGEX);
56
- if (end?.[1]) return {
57
- id: end[1],
58
- kind: "end"
59
- };
60
- return null;
49
+ return parseComponentBoundaryMarker(node.data);
61
50
  };
62
51
  const canReconnectOwnerRange = (currentNodes, newNodes) => {
63
52
  if (currentNodes.length === 0 || currentNodes.length !== newNodes.length) return false;
@@ -82,6 +71,22 @@ const canReconnectOwnerRange = (currentNodes, newNodes) => {
82
71
  }
83
72
  return sawBoundary;
84
73
  };
74
+ const resolveFastInsertValue = (value) => {
75
+ let resolved = value;
76
+ while (typeof resolved === "function") resolved = resolved();
77
+ if (resolved === null || resolved === void 0 || resolved === false) return { kind: "empty" };
78
+ if (typeof resolved === "string" || typeof resolved === "number" || typeof resolved === "boolean") return {
79
+ kind: "text",
80
+ value: String(resolved)
81
+ };
82
+ return null;
83
+ };
84
+ const isManagedEmptyInsertComment = (node) => node instanceof Comment && node.data === EMPTY_INSERT_COMMENT;
85
+ const getElementStyleDeclaration = (elem) => {
86
+ const style = elem.style;
87
+ return style && typeof style === "object" && typeof style.setProperty === "function" && typeof style.removeProperty === "function" ? style : null;
88
+ };
89
+ const serializeStyleValue = (resolved) => resolved && typeof resolved === "object" ? Object.entries(resolved).map(([k, v]) => `${k}: ${v}`).join("; ") : String(resolved ?? "");
85
90
  const createTemplate = (html) => {
86
91
  let template = null;
87
92
  return () => {
@@ -99,7 +104,7 @@ const insert = (value, parent, marker) => {
99
104
  let lastNodeLength = 0;
100
105
  const runtimeContainer = getRuntimeContainer();
101
106
  if (!runtimeContainer) throw new Error("Client insertions require an active runtime container.");
102
- const owner = captureClientInsertOwner(runtimeContainer, marker instanceof Comment && !marker.data.startsWith(INSERT_MARKER_PREFIX) ? marker.data : null) ?? createDetachedClientInsertOwner(runtimeContainer);
107
+ const owner = captureClientInsertOwner(runtimeContainer, marker instanceof Comment && !parseInsertMarker(marker.data) ? marker.data : null) ?? createDetachedClientInsertOwner(runtimeContainer);
103
108
  const markerKey = ensureInsertMarkerKey(marker, runtimeContainer);
104
109
  const collectCurrentNodes = (liveMarker, stableParents) => {
105
110
  if (!lastFirstNode || lastNodeLength === 0 || !hasUsableInsertParent(lastFirstNode, stableParents)) {
@@ -123,8 +128,49 @@ const insert = (value, parent, marker) => {
123
128
  const liveLastParent = isUsableInsertParent(lastFirstNode?.parentNode, stableParents) ? lastFirstNode?.parentNode : null;
124
129
  const liveMarkerParent = isUsableInsertParent(liveMarker?.parentNode, stableParents) ? liveMarker?.parentNode : null;
125
130
  const targetParent = liveLastParent ?? liveMarkerParent ?? parent ?? parent;
131
+ const primitiveValue = resolveFastInsertValue(value);
132
+ const seedCurrentNodes = (count) => lastNodeLength === 0 && liveMarker instanceof Comment && getRememberedInsertMarkerNodeCount(liveMarker) === count ? collectNodesBeforeMarker(liveMarker, count) : [];
133
+ const replaceCurrentNodes = (currentNodes, replacementNode) => {
134
+ const insertReference = liveMarker?.parentNode === targetParent ? liveMarker : currentNodes[currentNodes.length - 1]?.nextSibling ?? null;
135
+ for (const node of currentNodes) if (node.parentNode === targetParent) removeNodeFromParent(node, targetParent);
136
+ targetParent.insertBefore(replacementNode, insertReference);
137
+ rememberInsertMarkerRange(liveMarker, [replacementNode]);
138
+ lastFirstNode = replacementNode;
139
+ lastNodeLength = 1;
140
+ };
141
+ if (primitiveValue) {
142
+ const seededCurrentNodes = seedCurrentNodes(1);
143
+ const currentNodes = seededCurrentNodes.length !== 0 && seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) ? seededCurrentNodes : collectCurrentNodes(liveMarker, stableParents);
144
+ if (currentNodes.length !== 0 && lastNodeLength === 0) {
145
+ lastFirstNode = currentNodes[0];
146
+ lastNodeLength = currentNodes.length;
147
+ }
148
+ if (primitiveValue.kind === "text") {
149
+ if (currentNodes.length === 1 && currentNodes[0] instanceof Text) {
150
+ if (currentNodes[0].data !== primitiveValue.value) currentNodes[0].data = primitiveValue.value;
151
+ rememberInsertMarkerRange(liveMarker, currentNodes);
152
+ lastFirstNode = currentNodes[0];
153
+ lastNodeLength = 1;
154
+ return;
155
+ }
156
+ const doc = runtimeContainer.doc ?? targetParent.ownerDocument;
157
+ if (!doc) throw new Error("Client insertions require an active runtime document.");
158
+ replaceCurrentNodes(currentNodes, doc.createTextNode(primitiveValue.value));
159
+ return;
160
+ }
161
+ if (currentNodes.length === 1 && isManagedEmptyInsertComment(currentNodes[0])) {
162
+ rememberInsertMarkerRange(liveMarker, currentNodes);
163
+ lastFirstNode = currentNodes[0];
164
+ lastNodeLength = 1;
165
+ return;
166
+ }
167
+ const doc = runtimeContainer.doc ?? targetParent.ownerDocument;
168
+ if (!doc) throw new Error("Client insertions require an active runtime document.");
169
+ replaceCurrentNodes(currentNodes, doc.createComment(EMPTY_INSERT_COMMENT));
170
+ return;
171
+ }
126
172
  const newNodes = owner ? renderClientInsertableForOwner(value, runtimeContainer, owner) : renderClientInsertable(value, runtimeContainer);
127
- const seededCurrentNodes = lastNodeLength === 0 && liveMarker instanceof Comment ? collectNodesBeforeMarker(liveMarker, newNodes.length) : [];
173
+ const seededCurrentNodes = seedCurrentNodes(newNodes.length);
128
174
  const currentNodes = seededCurrentNodes.length !== 0 && seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) && canReconnectOwnerRange(seededCurrentNodes, newNodes) ? seededCurrentNodes : collectCurrentNodes(liveMarker, stableParents);
129
175
  if (currentNodes.length !== 0 && lastNodeLength === 0) {
130
176
  lastFirstNode = currentNodes[0];
@@ -177,12 +223,16 @@ const tryPatchSingleElementShellInPlace = (currentNodes, nextNodes) => {
177
223
  const attr = (elem, name, value) => {
178
224
  const isSVG = elem.namespaceURI === "http://www.w3.org/2000/svg";
179
225
  if (name === BIND_VALUE_PROP) {
226
+ let lastSignalId = ATTR_UNSET;
180
227
  const readBinding = () => {
181
228
  const binding = value();
182
229
  const signalId = getRuntimeSignalId(binding);
183
- if (signalId) elem.setAttribute(BIND_VALUE_ATTR, signalId);
184
- else elem.removeAttribute(BIND_VALUE_ATTR);
185
- syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR);
230
+ if (signalId !== lastSignalId) {
231
+ if (signalId) elem.setAttribute(BIND_VALUE_ATTR, signalId);
232
+ else elem.removeAttribute(BIND_VALUE_ATTR);
233
+ syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR);
234
+ lastSignalId = signalId;
235
+ }
186
236
  return binding;
187
237
  };
188
238
  const syncSignalFromElement = () => {
@@ -195,18 +245,24 @@ const attr = (elem, name, value) => {
195
245
  effect$1(() => {
196
246
  const binding = readBinding();
197
247
  if (!isBindableSignal(binding)) return;
198
- elem.value = String(binding.value ?? "");
248
+ const input = elem;
249
+ const nextValue = String(binding.value ?? "");
250
+ if (input.value !== nextValue) input.value = nextValue;
199
251
  });
200
252
  return;
201
253
  }
202
254
  if (name === BIND_CHECKED_PROP) {
203
255
  if (!(elem instanceof HTMLInputElement)) return;
256
+ let lastSignalId = ATTR_UNSET;
204
257
  const readBinding = () => {
205
258
  const binding = value();
206
259
  const signalId = getRuntimeSignalId(binding);
207
- if (signalId) elem.setAttribute(BIND_CHECKED_ATTR, signalId);
208
- else elem.removeAttribute(BIND_CHECKED_ATTR);
209
- syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR);
260
+ if (signalId !== lastSignalId) {
261
+ if (signalId) elem.setAttribute(BIND_CHECKED_ATTR, signalId);
262
+ else elem.removeAttribute(BIND_CHECKED_ATTR);
263
+ syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR);
264
+ lastSignalId = signalId;
265
+ }
210
266
  return binding;
211
267
  };
212
268
  const syncSignalFromElement = () => {
@@ -219,7 +275,8 @@ const attr = (elem, name, value) => {
219
275
  effect$1(() => {
220
276
  const binding = readBinding();
221
277
  if (!isBindableSignal(binding)) return;
222
- elem.checked = Boolean(binding.value);
278
+ const nextChecked = Boolean(binding.value);
279
+ if (elem.checked !== nextChecked) elem.checked = nextChecked;
223
280
  });
224
281
  return;
225
282
  }
@@ -232,23 +289,44 @@ const attr = (elem, name, value) => {
232
289
  return;
233
290
  }
234
291
  if (name === "style") {
292
+ let lastStyleString = ATTR_UNSET;
293
+ let lastStyleMap = null;
294
+ const style = getElementStyleDeclaration(elem);
235
295
  effect$1(() => {
236
296
  const resolved = value();
237
- const styleValue = resolved && typeof resolved === "object" ? Object.entries(resolved).map(([k, v]) => `${k}: ${v}`).join("; ") : String(resolved ?? "");
297
+ if (style && resolved && typeof resolved === "object") {
298
+ const nextStyleMap = new Map(Object.entries(resolved).map(([styleName, styleValue]) => [styleName, String(styleValue)]));
299
+ for (const [styleName, styleValue] of nextStyleMap) if (lastStyleMap?.get(styleName) !== styleValue) style.setProperty(styleName, styleValue);
300
+ if (lastStyleMap) {
301
+ for (const styleName of lastStyleMap.keys()) if (!nextStyleMap.has(styleName)) style.removeProperty(styleName);
302
+ }
303
+ lastStyleMap = nextStyleMap;
304
+ lastStyleString = ATTR_UNSET;
305
+ syncManagedAttributeSnapshot(elem, "style");
306
+ return;
307
+ }
308
+ lastStyleMap = null;
309
+ const styleValue = serializeStyleValue(resolved);
310
+ if (lastStyleString === styleValue) return;
238
311
  elem.setAttribute("style", styleValue);
312
+ lastStyleString = styleValue;
239
313
  syncManagedAttributeSnapshot(elem, "style");
240
314
  });
241
315
  return;
242
316
  }
243
317
  if (name === "class") {
318
+ let lastClassValue = ATTR_UNSET;
244
319
  effect$1(() => {
320
+ const nextClassValue = String(value());
321
+ if (lastClassValue === nextClassValue) return;
245
322
  if (isSVG) {
246
- elem.setAttribute("class", String(value()));
323
+ elem.setAttribute("class", nextClassValue);
324
+ syncManagedAttributeSnapshot(elem, "class");
325
+ } else {
326
+ elem.className = nextClassValue;
247
327
  syncManagedAttributeSnapshot(elem, "class");
248
- return;
249
328
  }
250
- elem.className = String(value());
251
- syncManagedAttributeSnapshot(elem, "class");
329
+ lastClassValue = nextClassValue;
252
330
  });
253
331
  return;
254
332
  }
@@ -259,20 +337,28 @@ const attr = (elem, name, value) => {
259
337
  return;
260
338
  }
261
339
  if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {
340
+ let lastHTML = ATTR_UNSET;
262
341
  effect$1(() => {
263
342
  const html = value();
264
- elem.innerHTML = html === false || html === void 0 || html === null ? "" : String(html);
343
+ const nextHTML = html === false || html === void 0 || html === null ? "" : String(html);
344
+ if (lastHTML === nextHTML) return;
345
+ elem.innerHTML = nextHTML;
346
+ lastHTML = nextHTML;
265
347
  });
266
348
  return;
267
349
  }
350
+ let lastAssignedValue = ATTR_UNSET;
268
351
  effect$1(() => {
352
+ const nextValue = String(value());
353
+ if (lastAssignedValue === nextValue) return;
269
354
  if (shouldUseAttributeAssignment(elem, name, isSVG)) {
270
- elem.setAttribute(name, String(value()));
355
+ elem.setAttribute(name, nextValue);
356
+ syncManagedAttributeSnapshot(elem, name);
357
+ } else {
358
+ elem[name] = nextValue;
271
359
  syncManagedAttributeSnapshot(elem, name);
272
- return;
273
360
  }
274
- elem[name] = String(value());
275
- syncManagedAttributeSnapshot(elem, name);
361
+ lastAssignedValue = nextValue;
276
362
  });
277
363
  };
278
364
  const hydrate = (Component, target, options) => {
@@ -304,4 +390,4 @@ const effect = (fn) => {
304
390
  //#endregion
305
391
  export { hydrate as a, createTemplate as i, attr as n, insert as o, createComponent as r, effect as t };
306
392
 
307
- //# sourceMappingURL=client-COjBNTyt.mjs.map
393
+ //# sourceMappingURL=client-DKPmN-wJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-DKPmN-wJ.mjs","names":[],"sources":["../core/client/dom.ts","../core/reactive/core.ts"],"sourcesContent":["import { jsxDEV } from '../../jsx/jsx-dev-runtime.ts'\nimport type { Component } from '../component.ts'\nimport { getComponentMeta } from '../internal.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 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 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 === 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,8 +1,8 @@
1
- import { i as JSX } from "./types-BCEY9lGp.mjs";
1
+ import { i as JSX } from "./types-Cu9gFlEY.mjs";
2
2
 
3
3
  //#region core/component.d.ts
4
4
  type Component<T = unknown> = (props: T) => JSX.Element;
5
5
  type EURL<T> = T;
6
6
  //#endregion
7
7
  export { EURL as n, Component as t };
8
- //# sourceMappingURL=component-D_nEtZ69.d.mts.map
8
+ //# sourceMappingURL=component-yvTtnI00.d.mts.map
@@ -1,3 +1,3 @@
1
- import { n as Insertable, t as ClientElementLike } from "../../types-DKpefD_u.mjs";
2
- import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-DLb8ple9.mjs";
1
+ import { n as Insertable, t as ClientElementLike } from "../../types-DDeNM8UH.mjs";
2
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-aLmFvMYF.mjs";
3
3
  export { ClientElementLike, Insertable, attr, createComponent, createTemplate, effect, hydrate, insert };
@@ -1,5 +1,5 @@
1
- import "../../action-CgM3EJUS.mjs";
2
- import "../../signal-CJtquEfo.mjs";
1
+ import "../../action-DqgkV3zb.mjs";
2
+ import "../../signal-DBzloBrN.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-COjBNTyt.mjs";
4
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-DKPmN-wJ.mjs";
5
5
  export { attr, createComponent, createTemplate, effect, hydrate, insert };
@@ -1,4 +1,4 @@
1
- import { t as Component } from "../../component-D_nEtZ69.mjs";
1
+ import { t as Component } from "../../component-yvTtnI00.mjs";
2
2
 
3
3
  //#region core/dev-client/hot.d.ts
4
4
  interface ViteHotContext {
@@ -1,7 +1,7 @@
1
- import { Ot as getComponentMeta, St as __eclipsaComponent } from "../../action-CgM3EJUS.mjs";
2
- import "../../signal-CJtquEfo.mjs";
1
+ import { At as getComponentMeta, Mt as getExternalComponentMeta, qt as setExternalComponentMeta, wt as __eclipsaComponent } from "../../action-DqgkV3zb.mjs";
2
+ import "../../signal-DBzloBrN.mjs";
3
3
  import "../../snapshot-BdY3jcVk.mjs";
4
- import { a as hydrate } from "../../client-COjBNTyt.mjs";
4
+ import { a as hydrate } from "../../client-DKPmN-wJ.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;
@@ -34,6 +34,7 @@ const initHot = (hot, stringURL, registry) => {
34
34
  const defineHotComponent = (Component, meta) => {
35
35
  const current = { value: unwrapHotComponent(Component) };
36
36
  const componentMeta = getComponentMeta(Component);
37
+ const externalMeta = getExternalComponentMeta(Component);
37
38
  meta.registry.components.set(meta.name, {
38
39
  update(newComponent) {
39
40
  current.value = unwrapHotComponent(newComponent);
@@ -44,8 +45,12 @@ const defineHotComponent = (Component, meta) => {
44
45
  return current.value(props);
45
46
  });
46
47
  HotComponent[HOT_COMPONENT_TARGET_KEY] = current.value;
47
- if (!componentMeta) return HotComponent;
48
- return __eclipsaComponent(HotComponent, componentMeta.symbol, componentMeta.captures, componentMeta.projectionSlots, { optimizedRoot: componentMeta.optimizedRoot });
48
+ if (!componentMeta) return externalMeta ? setExternalComponentMeta(HotComponent, externalMeta) : HotComponent;
49
+ const wrapped = __eclipsaComponent(HotComponent, componentMeta.symbol, componentMeta.captures, componentMeta.projectionSlots, {
50
+ external: componentMeta.external,
51
+ optimizedRoot: componentMeta.optimizedRoot
52
+ });
53
+ return externalMeta ? setExternalComponentMeta(wrapped, externalMeta) : wrapped;
49
54
  };
50
55
  const applyHotUpdate = (registry, newRegistry) => {
51
56
  if (registry.components.size !== newRegistry.components.size) return "reload";
@@ -1 +1 @@
1
- {"version":3,"file":"mod.mjs","names":[],"sources":["../../../core/dev-client/hot.ts","../../../core/dev-client/mod.ts"],"sourcesContent":["import type { Component } from '../component.ts'\nimport { __eclipsaComponent, getComponentMeta } from '../internal.ts'\n\nconst HOT_COMPONENT_TARGET_KEY = Symbol.for('eclipsa.hot-component-target')\n\ninterface ViteHotContext {\n off(event: string, listener: (data: { url: string }) => void): void\n on(event: string, listener: (data: { url: string }) => void): void\n}\n\nconst unwrapHotComponent = (Component: Component): Component =>\n ((Component as Component & { [HOT_COMPONENT_TARGET_KEY]?: Component })[\n HOT_COMPONENT_TARGET_KEY\n ] ?? Component) as Component\n\nexport const initHot = (\n hot: ViteHotContext | undefined,\n stringURL: string,\n registry: HotRegistry,\n) => {\n if (!hot) {\n return\n }\n const url = new URL(stringURL)\n const id = url.pathname\n\n const handler: Parameters<typeof hot.on>[1] = async (data: { url: string }) => {\n const hotTargetId: string = data.url\n if (hotTargetId === id) {\n // Update module\n const newModURL = new URL(hotTargetId, stringURL)\n newModURL.searchParams.append('t', Date.now().toString())\n const newMod = await import(/* @vite-ignore */ newModURL.href)\n\n const newRegistry: HotRegistry | undefined = newMod.__eclipsa$hotRegistry\n if (!newRegistry) {\n return\n }\n newRegistry.setIsChild()\n if (applyHotUpdate(registry, newRegistry) === 'reload') {\n console.info('[Eclipsa HMR]: Component graph changed, reloading page...')\n location.reload()\n }\n hot.on('update-client', handler)\n }\n }\n registry.setIsChild = () => {\n hot.off('update-client', handler)\n }\n hot.on('update-client', handler)\n}\n\ninterface ComponentMetaInput {\n registry: HotRegistry\n name: string\n}\nexport const defineHotComponent = (Component: Component, meta: ComponentMetaInput): Component => {\n const current = { value: unwrapHotComponent(Component) }\n const componentMeta = getComponentMeta(Component)\n\n meta.registry.components.set(meta.name, {\n update(newComponent) {\n current.value = unwrapHotComponent(newComponent)\n },\n Component: current.value,\n })\n\n const HotComponent = ((props: unknown) => {\n return current.value(props)\n }) as Component & {\n [HOT_COMPONENT_TARGET_KEY]?: Component\n }\n HotComponent[HOT_COMPONENT_TARGET_KEY] = current.value\n if (!componentMeta) {\n return HotComponent\n }\n return __eclipsaComponent(\n HotComponent,\n componentMeta.symbol,\n componentMeta.captures,\n componentMeta.projectionSlots,\n {\n optimizedRoot: componentMeta.optimizedRoot,\n },\n )\n}\n\ninterface HotComponentData {\n update(newComponent: Component): void\n Component: Component\n}\ninterface HotRegistry {\n components: Map<string, HotComponentData>\n setIsChild(): void\n}\n\nexport const applyHotUpdate = (registry: HotRegistry, newRegistry: HotRegistry) => {\n if (registry.components.size !== newRegistry.components.size) {\n return 'reload' as const\n }\n\n for (const [name, newHotComponentData] of newRegistry.components) {\n const oldHotComponentData = registry.components.get(name)\n if (!oldHotComponentData) {\n return 'reload' as const\n }\n oldHotComponentData.update(newHotComponentData.Component)\n }\n\n return 'updated' as const\n}\n\nexport const createHotRegistry = (): HotRegistry => {\n return {\n components: new Map(),\n setIsChild: () => null,\n }\n}\n","import type { DevClientInfo } from './types.ts'\nimport { hydrate } from '../client/mod.ts'\n\nconst getDevInfo = (): DevClientInfo => {\n const elem = document.getElementById('eclipsa-devinfo')\n\n if (!elem) {\n throw new Error('devinfo element is falsy.')\n }\n\n return JSON.parse(elem.innerHTML)\n}\n\nexport const initDevClient = async () => {\n const Component = (await import(/* @vite-ignore */ getDevInfo().entry.url)).default\n hydrate(Component, document.body)\n}\n\nexport * from './hot.ts'\n"],"mappings":";;;;;AAGA,MAAM,2BAA2B,OAAO,IAAI,+BAA+B;AAO3E,MAAM,sBAAsB,cACxB,UACA,6BACG;AAEP,MAAa,WACX,KACA,WACA,aACG;AACH,KAAI,CAAC,IACH;CAGF,MAAM,KADM,IAAI,IAAI,UAAU,CACf;CAEf,MAAM,UAAwC,OAAO,SAA0B;EAC7E,MAAM,cAAsB,KAAK;AACjC,MAAI,gBAAgB,IAAI;GAEtB,MAAM,YAAY,IAAI,IAAI,aAAa,UAAU;AACjD,aAAU,aAAa,OAAO,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC;GAGzD,MAAM,eAFS,MAAM;;IAA0B,UAAU;GAEL;AACpD,OAAI,CAAC,YACH;AAEF,eAAY,YAAY;AACxB,OAAI,eAAe,UAAU,YAAY,KAAK,UAAU;AACtD,YAAQ,KAAK,4DAA4D;AACzE,aAAS,QAAQ;;AAEnB,OAAI,GAAG,iBAAiB,QAAQ;;;AAGpC,UAAS,mBAAmB;AAC1B,MAAI,IAAI,iBAAiB,QAAQ;;AAEnC,KAAI,GAAG,iBAAiB,QAAQ;;AAOlC,MAAa,sBAAsB,WAAsB,SAAwC;CAC/F,MAAM,UAAU,EAAE,OAAO,mBAAmB,UAAU,EAAE;CACxD,MAAM,gBAAgB,iBAAiB,UAAU;AAEjD,MAAK,SAAS,WAAW,IAAI,KAAK,MAAM;EACtC,OAAO,cAAc;AACnB,WAAQ,QAAQ,mBAAmB,aAAa;;EAElD,WAAW,QAAQ;EACpB,CAAC;CAEF,MAAM,iBAAiB,UAAmB;AACxC,SAAO,QAAQ,MAAM,MAAM;;AAI7B,cAAa,4BAA4B,QAAQ;AACjD,KAAI,CAAC,cACH,QAAO;AAET,QAAO,mBACL,cACA,cAAc,QACd,cAAc,UACd,cAAc,iBACd,EACE,eAAe,cAAc,eAC9B,CACF;;AAYH,MAAa,kBAAkB,UAAuB,gBAA6B;AACjF,KAAI,SAAS,WAAW,SAAS,YAAY,WAAW,KACtD,QAAO;AAGT,MAAK,MAAM,CAAC,MAAM,wBAAwB,YAAY,YAAY;EAChE,MAAM,sBAAsB,SAAS,WAAW,IAAI,KAAK;AACzD,MAAI,CAAC,oBACH,QAAO;AAET,sBAAoB,OAAO,oBAAoB,UAAU;;AAG3D,QAAO;;AAGT,MAAa,0BAAuC;AAClD,QAAO;EACL,4BAAY,IAAI,KAAK;EACrB,kBAAkB;EACnB;;;;ACjHH,MAAM,mBAAkC;CACtC,MAAM,OAAO,SAAS,eAAe,kBAAkB;AAEvD,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,4BAA4B;AAG9C,QAAO,KAAK,MAAM,KAAK,UAAU;;AAGnC,MAAa,gBAAgB,YAAY;CACvC,MAAM,aAAa,MAAM;;EAA0B,YAAY,CAAC,MAAM;GAAM;AAC5E,SAAQ,WAAW,SAAS,KAAK"}
1
+ {"version":3,"file":"mod.mjs","names":[],"sources":["../../../core/dev-client/hot.ts","../../../core/dev-client/mod.ts"],"sourcesContent":["import type { Component } from '../component.ts'\nimport {\n __eclipsaComponent,\n getComponentMeta,\n getExternalComponentMeta,\n setExternalComponentMeta,\n} from '../internal.ts'\n\nconst HOT_COMPONENT_TARGET_KEY = Symbol.for('eclipsa.hot-component-target')\n\ninterface ViteHotContext {\n off(event: string, listener: (data: { url: string }) => void): void\n on(event: string, listener: (data: { url: string }) => void): void\n}\n\nconst unwrapHotComponent = (Component: Component): Component =>\n ((Component as Component & { [HOT_COMPONENT_TARGET_KEY]?: Component })[\n HOT_COMPONENT_TARGET_KEY\n ] ?? Component) as Component\n\nexport const initHot = (\n hot: ViteHotContext | undefined,\n stringURL: string,\n registry: HotRegistry,\n) => {\n if (!hot) {\n return\n }\n const url = new URL(stringURL)\n const id = url.pathname\n\n const handler: Parameters<typeof hot.on>[1] = async (data: { url: string }) => {\n const hotTargetId: string = data.url\n if (hotTargetId === id) {\n // Update module\n const newModURL = new URL(hotTargetId, stringURL)\n newModURL.searchParams.append('t', Date.now().toString())\n const newMod = await import(/* @vite-ignore */ newModURL.href)\n\n const newRegistry: HotRegistry | undefined = newMod.__eclipsa$hotRegistry\n if (!newRegistry) {\n return\n }\n newRegistry.setIsChild()\n if (applyHotUpdate(registry, newRegistry) === 'reload') {\n console.info('[Eclipsa HMR]: Component graph changed, reloading page...')\n location.reload()\n }\n hot.on('update-client', handler)\n }\n }\n registry.setIsChild = () => {\n hot.off('update-client', handler)\n }\n hot.on('update-client', handler)\n}\n\ninterface ComponentMetaInput {\n registry: HotRegistry\n name: string\n}\nexport const defineHotComponent = (Component: Component, meta: ComponentMetaInput): Component => {\n const current = { value: unwrapHotComponent(Component) }\n const componentMeta = getComponentMeta(Component)\n const externalMeta = getExternalComponentMeta(Component)\n\n meta.registry.components.set(meta.name, {\n update(newComponent) {\n current.value = unwrapHotComponent(newComponent)\n },\n Component: current.value,\n })\n\n const HotComponent = ((props: unknown) => {\n return current.value(props)\n }) as Component & {\n [HOT_COMPONENT_TARGET_KEY]?: Component\n }\n HotComponent[HOT_COMPONENT_TARGET_KEY] = current.value\n if (!componentMeta) {\n return externalMeta ? setExternalComponentMeta(HotComponent, externalMeta) : HotComponent\n }\n const wrapped = __eclipsaComponent(\n HotComponent,\n componentMeta.symbol,\n componentMeta.captures,\n componentMeta.projectionSlots,\n {\n external: componentMeta.external,\n optimizedRoot: componentMeta.optimizedRoot,\n },\n )\n return externalMeta ? setExternalComponentMeta(wrapped, externalMeta) : wrapped\n}\n\ninterface HotComponentData {\n update(newComponent: Component): void\n Component: Component\n}\ninterface HotRegistry {\n components: Map<string, HotComponentData>\n setIsChild(): void\n}\n\nexport const applyHotUpdate = (registry: HotRegistry, newRegistry: HotRegistry) => {\n if (registry.components.size !== newRegistry.components.size) {\n return 'reload' as const\n }\n\n for (const [name, newHotComponentData] of newRegistry.components) {\n const oldHotComponentData = registry.components.get(name)\n if (!oldHotComponentData) {\n return 'reload' as const\n }\n oldHotComponentData.update(newHotComponentData.Component)\n }\n\n return 'updated' as const\n}\n\nexport const createHotRegistry = (): HotRegistry => {\n return {\n components: new Map(),\n setIsChild: () => null,\n }\n}\n","import type { DevClientInfo } from './types.ts'\nimport { hydrate } from '../client/mod.ts'\n\nconst getDevInfo = (): DevClientInfo => {\n const elem = document.getElementById('eclipsa-devinfo')\n\n if (!elem) {\n throw new Error('devinfo element is falsy.')\n }\n\n return JSON.parse(elem.innerHTML)\n}\n\nexport const initDevClient = async () => {\n const Component = (await import(/* @vite-ignore */ getDevInfo().entry.url)).default\n hydrate(Component, document.body)\n}\n\nexport * from './hot.ts'\n"],"mappings":";;;;;AAQA,MAAM,2BAA2B,OAAO,IAAI,+BAA+B;AAO3E,MAAM,sBAAsB,cACxB,UACA,6BACG;AAEP,MAAa,WACX,KACA,WACA,aACG;AACH,KAAI,CAAC,IACH;CAGF,MAAM,KADM,IAAI,IAAI,UAAU,CACf;CAEf,MAAM,UAAwC,OAAO,SAA0B;EAC7E,MAAM,cAAsB,KAAK;AACjC,MAAI,gBAAgB,IAAI;GAEtB,MAAM,YAAY,IAAI,IAAI,aAAa,UAAU;AACjD,aAAU,aAAa,OAAO,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC;GAGzD,MAAM,eAFS,MAAM;;IAA0B,UAAU;GAEL;AACpD,OAAI,CAAC,YACH;AAEF,eAAY,YAAY;AACxB,OAAI,eAAe,UAAU,YAAY,KAAK,UAAU;AACtD,YAAQ,KAAK,4DAA4D;AACzE,aAAS,QAAQ;;AAEnB,OAAI,GAAG,iBAAiB,QAAQ;;;AAGpC,UAAS,mBAAmB;AAC1B,MAAI,IAAI,iBAAiB,QAAQ;;AAEnC,KAAI,GAAG,iBAAiB,QAAQ;;AAOlC,MAAa,sBAAsB,WAAsB,SAAwC;CAC/F,MAAM,UAAU,EAAE,OAAO,mBAAmB,UAAU,EAAE;CACxD,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,eAAe,yBAAyB,UAAU;AAExD,MAAK,SAAS,WAAW,IAAI,KAAK,MAAM;EACtC,OAAO,cAAc;AACnB,WAAQ,QAAQ,mBAAmB,aAAa;;EAElD,WAAW,QAAQ;EACpB,CAAC;CAEF,MAAM,iBAAiB,UAAmB;AACxC,SAAO,QAAQ,MAAM,MAAM;;AAI7B,cAAa,4BAA4B,QAAQ;AACjD,KAAI,CAAC,cACH,QAAO,eAAe,yBAAyB,cAAc,aAAa,GAAG;CAE/E,MAAM,UAAU,mBACd,cACA,cAAc,QACd,cAAc,UACd,cAAc,iBACd;EACE,UAAU,cAAc;EACxB,eAAe,cAAc;EAC9B,CACF;AACD,QAAO,eAAe,yBAAyB,SAAS,aAAa,GAAG;;AAY1E,MAAa,kBAAkB,UAAuB,gBAA6B;AACjF,KAAI,SAAS,WAAW,SAAS,YAAY,WAAW,KACtD,QAAO;AAGT,MAAK,MAAM,CAAC,MAAM,wBAAwB,YAAY,YAAY;EAChE,MAAM,sBAAsB,SAAS,WAAW,IAAI,KAAK;AACzD,MAAI,CAAC,oBACH,QAAO;AAET,sBAAoB,OAAO,oBAAoB,UAAU;;AAG3D,QAAO;;AAGT,MAAa,0BAAuC;AAClD,QAAO;EACL,4BAAY,IAAI,KAAK;EACrB,kBAAkB;EACnB;;;;ACzHH,MAAM,mBAAkC;CACtC,MAAM,OAAO,SAAS,eAAe,kBAAkB;AAEvD,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,4BAA4B;AAG9C,QAAO,KAAK,MAAM,KAAK,UAAU;;AAGnC,MAAa,gBAAgB,YAAY;CACvC,MAAM,aAAa,MAAM;;EAA0B,YAAY,CAAC,MAAM;GAAM;AAC5E,SAAQ,WAAW,SAAS,KAAK"}
@@ -1,2 +1,2 @@
1
- import { A as getSignalMeta, C as getLoaderHandleMeta, D as getRegisteredActionHookIds, E as getRegisteredActionHook, F as setActionHookMeta, I as setLoaderHandleMeta, L as setLoaderHookMeta, M as registerActionHook, Mt as getRuntimeComponentId, N as registerLoaderHook, O as getRegisteredLoaderHook, P as setActionHandleMeta, R as setNavigateMeta, S as getLazyMeta, T as getNavigateMeta, W as __eclipsaLoader, _ as __eclipsaWatch, a as EventDescriptor, b as getComponentMeta, c as LoaderHandleMeta, d as SignalMeta, f as WatchMeta, g as __eclipsaLazy, h as __eclipsaEvent, i as ComponentOptions, j as getWatchMeta, k as getRegisteredLoaderHookIds, l as LoaderHookMeta, m as __eclipsaComponent, n as ActionHookMeta, o as LazyMeta, p as WatchReference, r as ComponentMeta, s as LazyReference, t as ActionHandleMeta, u as NavigateMeta, v as getActionHandleMeta, vt as __eclipsaAction, w as getLoaderHookMeta, x as getEventMeta, y as getActionHookMeta, z as setSignalMeta } from "../internal-Csbm0Qnv.mjs";
2
- export { ActionHandleMeta, ActionHookMeta, ComponentMeta, ComponentOptions, EventDescriptor, LazyMeta, LazyReference, LoaderHandleMeta, LoaderHookMeta, NavigateMeta, SignalMeta, WatchMeta, WatchReference, __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
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-CHYAJznU.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 };
package/core/internal.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { At as getLazyMeta, Bt as registerActionHook, Ct as __eclipsaEvent, Dt as getActionHookMeta, Et as getActionHandleMeta, Ft as getRegisteredActionHookIds, Gt as setLoaderHookMeta, Ht as setActionHandleMeta, It as getRegisteredLoaderHook, Jt as __eclipsaLoader, Kt as setNavigateMeta, Lt as getRegisteredLoaderHookIds, M as getRuntimeComponentId, Mt as getLoaderHookMeta, Nt as getNavigateMeta, Ot as getComponentMeta, Pt as getRegisteredActionHook, Rt as getSignalMeta, St as __eclipsaComponent, Tt as __eclipsaWatch, Ut as setActionHookMeta, Vt as registerLoaderHook, Wt as setLoaderHandleMeta, i as __eclipsaAction, jt as getLoaderHandleMeta, kt as getEventMeta, qt as setSignalMeta, wt as __eclipsaLazy, zt as getWatchMeta } from "../action-CgM3EJUS.mjs";
2
- export { __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
1
+ import { A as getRuntimeComponentId, At as getComponentMeta, Bt as getRegisteredLoaderHookIds, Dt as __eclipsaWatch, Et as __eclipsaLazy, Ft as getLoaderHookMeta, Gt as setActionHandleMeta, Ht as getWatchMeta, It as getNavigateMeta, Jt as setLoaderHandleMeta, Kt as setActionHookMeta, Lt as getRegisteredActionHook, Mt as getExternalComponentMeta, Nt as getLazyMeta, Ot as getActionHandleMeta, Pt as getLoaderHandleMeta, Qt as __eclipsaLoader, Rt as getRegisteredActionHookIds, Tt as __eclipsaEvent, Ut as registerActionHook, Vt as getSignalMeta, Wt as registerLoaderHook, Xt as setNavigateMeta, Yt as setLoaderHookMeta, Zt as setSignalMeta, i as __eclipsaAction, jt as getEventMeta, kt as getActionHookMeta, qt as setExternalComponentMeta, wt as __eclipsaComponent, zt as getRegisteredLoaderHook } from "../action-DqgkV3zb.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,6 +1,6 @@
1
- import { t as Component } from "../../component-D_nEtZ69.mjs";
2
- import { n as Insertable, t as ClientElementLike } from "../../types-DKpefD_u.mjs";
3
- import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-DLb8ple9.mjs";
1
+ import { t as Component } from "../../component-yvTtnI00.mjs";
2
+ import { n as Insertable, t as ClientElementLike } from "../../types-DDeNM8UH.mjs";
3
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-aLmFvMYF.mjs";
4
4
 
5
5
  //#region core/prod-client/eurl.d.ts
6
6
  declare const fetchEurl: (id: string) => Promise<unknown>;
@@ -1,8 +1,8 @@
1
- import { J as renderClientInsertable, N as getRuntimeContainer } from "../../action-CgM3EJUS.mjs";
2
- import { i as jsxDEV } from "../../jsx-dev-runtime-CY60yQJY.mjs";
3
- import "../../signal-CJtquEfo.mjs";
1
+ import { U as renderClientInsertable, j as getRuntimeContainer } from "../../action-DqgkV3zb.mjs";
2
+ import { a as jsxDEV } from "../../jsx-dev-runtime-DpbWQ4Q0.mjs";
3
+ import "../../signal-DBzloBrN.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-COjBNTyt.mjs";
5
+ import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-DKPmN-wJ.mjs";
6
6
  //#region core/prod-client/eurl.ts
7
7
  const eurlMaps = /* @__PURE__ */ new Map();
8
8
  const fetchEurl = async (id) => {