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.
- package/{action-CgM3EJUS.mjs → action-DqgkV3zb.mjs} +1584 -996
- package/action-DqgkV3zb.mjs.map +1 -0
- package/{client-COjBNTyt.mjs → client-DKPmN-wJ.mjs} +126 -40
- package/client-DKPmN-wJ.mjs.map +1 -0
- package/{component-D_nEtZ69.d.mts → component-yvTtnI00.d.mts} +2 -2
- package/core/client/mod.d.mts +2 -2
- package/core/client/mod.mjs +3 -3
- package/core/dev-client/mod.d.mts +1 -1
- package/core/dev-client/mod.mjs +10 -5
- package/core/dev-client/mod.mjs.map +1 -1
- package/core/internal.d.mts +2 -2
- package/core/internal.mjs +2 -2
- package/core/prod-client/mod.d.mts +3 -3
- package/core/prod-client/mod.mjs +4 -4
- package/{internal-Csbm0Qnv.d.mts → internal-CHYAJznU.d.mts} +116 -72
- package/jsx/jsx-dev-runtime.d.mts +8 -2
- package/jsx/jsx-dev-runtime.mjs +2 -2
- package/jsx/jsx-runtime.d.mts +1 -1
- package/jsx/mod.d.mts +1 -1
- package/jsx/mod.mjs +1 -1
- package/{jsx-dev-runtime-CY60yQJY.mjs → jsx-dev-runtime-DpbWQ4Q0.mjs} +8 -3
- package/jsx-dev-runtime-DpbWQ4Q0.mjs.map +1 -0
- package/{mod-DLb8ple9.d.mts → mod-aLmFvMYF.d.mts} +4 -4
- package/mod.d.mts +20 -38
- package/mod.mjs +19 -145
- package/mod.mjs.map +1 -1
- package/package.json +6 -2
- package/{signal-B7AfIKrr.d.mts → signal-CosyYdtA.d.mts} +1 -1
- package/{signal-CJtquEfo.mjs → signal-DBzloBrN.mjs} +2 -2
- package/{signal-CJtquEfo.mjs.map → signal-DBzloBrN.mjs.map} +1 -1
- package/ssr-CRg57Wn2.mjs +157 -0
- package/ssr-CRg57Wn2.mjs.map +1 -0
- package/ssr-D8F-DtCv.d.mts +37 -0
- package/{types-BCEY9lGp.d.mts → types-Cu9gFlEY.d.mts} +6 -2
- package/{types-DKpefD_u.d.mts → types-DDeNM8UH.d.mts} +1 -1
- package/vite/build/runtime.d.mts +4 -0
- package/vite/build/runtime.mjs +4 -0
- package/vite/mod.mjs +257 -38
- package/vite/mod.mjs.map +1 -1
- package/web-utils/mod.d.mts +1 -1
- package/web-utils/mod.mjs +2 -2
- package/action-CgM3EJUS.mjs.map +0 -1
- package/client-COjBNTyt.mjs.map +0 -1
- package/jsx-dev-runtime-CY60yQJY.mjs.map +0 -1
- /package/{jsx-runtime-BFDPoxFn.d.mts → jsx-runtime-QIK6ADiK.d.mts} +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import {
|
|
3
|
-
import { t as effect$1 } from "./signal-
|
|
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
|
|
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(
|
|
10
|
-
const key =
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
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
|
|
208
|
-
|
|
209
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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",
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
8
|
+
//# sourceMappingURL=component-yvTtnI00.d.mts.map
|
package/core/client/mod.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as Insertable, t as ClientElementLike } from "../../types-
|
|
2
|
-
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-
|
|
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 };
|
package/core/client/mod.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../action-
|
|
2
|
-
import "../../signal-
|
|
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-
|
|
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 };
|
package/core/dev-client/mod.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../signal-
|
|
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-
|
|
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
|
-
|
|
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 {
|
|
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"}
|
package/core/internal.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as
|
|
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 {
|
|
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-
|
|
2
|
-
import { n as Insertable, t as ClientElementLike } from "../../types-
|
|
3
|
-
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../mod-
|
|
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>;
|
package/core/prod-client/mod.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import "../../signal-
|
|
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-
|
|
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) => {
|