@marko/runtime-tags 0.1.3 → 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/dist/debug/dom.js +20 -4
- package/dist/debug/dom.mjs +20 -4
- package/dist/debug/html.js +5 -3
- package/dist/debug/html.mjs +4 -2
- package/dist/dom.js +1 -2
- package/dist/dom.mjs +1 -2
- package/dist/html/writer.d.ts +1 -1
- package/dist/html.d.ts +1 -1
- package/dist/html.js +5 -3
- package/dist/html.mjs +4 -2
- package/package.json +6 -1
- package/dist/debug/dom.js.map +0 -7
- package/dist/debug/dom.mjs.map +0 -7
- package/dist/debug/html.js.map +0 -7
- package/dist/debug/html.mjs.map +0 -7
- package/dist/dom.js.map +0 -7
- package/dist/dom.mjs.map +0 -7
- package/dist/html.js.map +0 -7
- package/dist/html.mjs.map +0 -7
package/dist/debug/dom.js
CHANGED
|
@@ -983,7 +983,7 @@ function setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer) {
|
|
|
983
983
|
}
|
|
984
984
|
prevScope && destroyScope(prevScope);
|
|
985
985
|
}
|
|
986
|
-
var emptyMarkerMap = /* @__PURE__ */
|
|
986
|
+
var emptyMarkerMap = /* @__PURE__ */ new Map([[Symbol(), getEmptyScope(void 0)]]);
|
|
987
987
|
var emptyMarkerArray = [
|
|
988
988
|
/* @__PURE__ */ getEmptyScope(void 0)
|
|
989
989
|
];
|
|
@@ -1263,23 +1263,40 @@ function registerSubscriber(id, signal) {
|
|
|
1263
1263
|
}
|
|
1264
1264
|
|
|
1265
1265
|
// src/dom/schedule.ts
|
|
1266
|
+
var task;
|
|
1266
1267
|
var port2 = /* @__PURE__ */ (() => {
|
|
1267
1268
|
const { port1, port2: port22 } = new MessageChannel();
|
|
1268
1269
|
port1.onmessage = () => {
|
|
1269
1270
|
isScheduled = false;
|
|
1270
|
-
|
|
1271
|
+
if (true) {
|
|
1272
|
+
task.run(run);
|
|
1273
|
+
task = void 0;
|
|
1274
|
+
} else {
|
|
1275
|
+
run();
|
|
1276
|
+
}
|
|
1271
1277
|
};
|
|
1272
1278
|
return port22;
|
|
1273
1279
|
})();
|
|
1274
1280
|
var isScheduled;
|
|
1275
1281
|
function schedule() {
|
|
1276
1282
|
if (!isScheduled) {
|
|
1283
|
+
if (true) {
|
|
1284
|
+
task = console.createTask?.("queue") || {
|
|
1285
|
+
run(fn) {
|
|
1286
|
+
fn();
|
|
1287
|
+
}
|
|
1288
|
+
};
|
|
1289
|
+
}
|
|
1277
1290
|
isScheduled = true;
|
|
1278
1291
|
queueMicrotask(flushAndWaitFrame);
|
|
1279
1292
|
}
|
|
1280
1293
|
}
|
|
1281
1294
|
function flushAndWaitFrame() {
|
|
1282
|
-
|
|
1295
|
+
if (true) {
|
|
1296
|
+
task.run(run);
|
|
1297
|
+
} else {
|
|
1298
|
+
run();
|
|
1299
|
+
}
|
|
1283
1300
|
requestAnimationFrame(triggerMacroTask);
|
|
1284
1301
|
}
|
|
1285
1302
|
function triggerMacroTask() {
|
|
@@ -1470,4 +1487,3 @@ var compat = {
|
|
|
1470
1487
|
};
|
|
1471
1488
|
function noop() {
|
|
1472
1489
|
}
|
|
1473
|
-
//# sourceMappingURL=dom.js.map
|
package/dist/debug/dom.mjs
CHANGED
|
@@ -908,7 +908,7 @@ function setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer) {
|
|
|
908
908
|
}
|
|
909
909
|
prevScope && destroyScope(prevScope);
|
|
910
910
|
}
|
|
911
|
-
var emptyMarkerMap = /* @__PURE__ */
|
|
911
|
+
var emptyMarkerMap = /* @__PURE__ */ new Map([[Symbol(), getEmptyScope(void 0)]]);
|
|
912
912
|
var emptyMarkerArray = [
|
|
913
913
|
/* @__PURE__ */ getEmptyScope(void 0)
|
|
914
914
|
];
|
|
@@ -1188,23 +1188,40 @@ function registerSubscriber(id, signal) {
|
|
|
1188
1188
|
}
|
|
1189
1189
|
|
|
1190
1190
|
// src/dom/schedule.ts
|
|
1191
|
+
var task;
|
|
1191
1192
|
var port2 = /* @__PURE__ */ (() => {
|
|
1192
1193
|
const { port1, port2: port22 } = new MessageChannel();
|
|
1193
1194
|
port1.onmessage = () => {
|
|
1194
1195
|
isScheduled = false;
|
|
1195
|
-
|
|
1196
|
+
if (true) {
|
|
1197
|
+
task.run(run);
|
|
1198
|
+
task = void 0;
|
|
1199
|
+
} else {
|
|
1200
|
+
run();
|
|
1201
|
+
}
|
|
1196
1202
|
};
|
|
1197
1203
|
return port22;
|
|
1198
1204
|
})();
|
|
1199
1205
|
var isScheduled;
|
|
1200
1206
|
function schedule() {
|
|
1201
1207
|
if (!isScheduled) {
|
|
1208
|
+
if (true) {
|
|
1209
|
+
task = console.createTask?.("queue") || {
|
|
1210
|
+
run(fn) {
|
|
1211
|
+
fn();
|
|
1212
|
+
}
|
|
1213
|
+
};
|
|
1214
|
+
}
|
|
1202
1215
|
isScheduled = true;
|
|
1203
1216
|
queueMicrotask(flushAndWaitFrame);
|
|
1204
1217
|
}
|
|
1205
1218
|
}
|
|
1206
1219
|
function flushAndWaitFrame() {
|
|
1207
|
-
|
|
1220
|
+
if (true) {
|
|
1221
|
+
task.run(run);
|
|
1222
|
+
} else {
|
|
1223
|
+
run();
|
|
1224
|
+
}
|
|
1208
1225
|
requestAnimationFrame(triggerMacroTask);
|
|
1209
1226
|
}
|
|
1210
1227
|
function triggerMacroTask() {
|
|
@@ -1447,4 +1464,3 @@ export {
|
|
|
1447
1464
|
values,
|
|
1448
1465
|
write
|
|
1449
1466
|
};
|
|
1450
|
-
//# sourceMappingURL=dom.mjs.map
|
package/dist/debug/html.js
CHANGED
|
@@ -20,7 +20,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/html.ts
|
|
21
21
|
var html_exports = {};
|
|
22
22
|
__export(html_exports, {
|
|
23
|
-
$_streamData: () => $_streamData,
|
|
24
23
|
attr: () => attr,
|
|
25
24
|
attrs: () => attrs,
|
|
26
25
|
classAttr: () => classAttr,
|
|
@@ -35,6 +34,7 @@ __export(html_exports, {
|
|
|
35
34
|
escapeXML: () => escapeXML,
|
|
36
35
|
fork: () => fork,
|
|
37
36
|
getRegistryInfo: () => getRegistryInfo,
|
|
37
|
+
getStreamData: () => getStreamData,
|
|
38
38
|
makeSerializable: () => makeSerializable,
|
|
39
39
|
markResumeControlEnd: () => markResumeControlEnd,
|
|
40
40
|
markResumeControlSingleNodeEnd: () => markResumeControlSingleNodeEnd,
|
|
@@ -690,6 +690,9 @@ var reorderRuntimeString = String(reorder_runtime_default).replace(
|
|
|
690
690
|
);
|
|
691
691
|
var $_buffer = null;
|
|
692
692
|
var $_streamData = null;
|
|
693
|
+
function getStreamData() {
|
|
694
|
+
return $_streamData;
|
|
695
|
+
}
|
|
693
696
|
function createRenderFn(renderer) {
|
|
694
697
|
return (stream, input = {}, $global, streamState = {}) => {
|
|
695
698
|
let remainingChildren = 1;
|
|
@@ -1285,7 +1288,6 @@ var ServerTemplate = class {
|
|
|
1285
1288
|
};
|
|
1286
1289
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1287
1290
|
0 && (module.exports = {
|
|
1288
|
-
$_streamData,
|
|
1289
1291
|
attr,
|
|
1290
1292
|
attrs,
|
|
1291
1293
|
classAttr,
|
|
@@ -1300,6 +1302,7 @@ var ServerTemplate = class {
|
|
|
1300
1302
|
escapeXML,
|
|
1301
1303
|
fork,
|
|
1302
1304
|
getRegistryInfo,
|
|
1305
|
+
getStreamData,
|
|
1303
1306
|
makeSerializable,
|
|
1304
1307
|
markResumeControlEnd,
|
|
1305
1308
|
markResumeControlSingleNodeEnd,
|
|
@@ -1320,4 +1323,3 @@ var ServerTemplate = class {
|
|
|
1320
1323
|
writeEffect,
|
|
1321
1324
|
writeScope
|
|
1322
1325
|
});
|
|
1323
|
-
//# sourceMappingURL=html.js.map
|
package/dist/debug/html.mjs
CHANGED
|
@@ -631,6 +631,9 @@ var reorderRuntimeString = String(reorder_runtime_default).replace(
|
|
|
631
631
|
);
|
|
632
632
|
var $_buffer = null;
|
|
633
633
|
var $_streamData = null;
|
|
634
|
+
function getStreamData() {
|
|
635
|
+
return $_streamData;
|
|
636
|
+
}
|
|
634
637
|
function createRenderFn(renderer) {
|
|
635
638
|
return (stream, input = {}, $global, streamState = {}) => {
|
|
636
639
|
let remainingChildren = 1;
|
|
@@ -1225,7 +1228,6 @@ var ServerTemplate = class {
|
|
|
1225
1228
|
}
|
|
1226
1229
|
};
|
|
1227
1230
|
export {
|
|
1228
|
-
$_streamData,
|
|
1229
1231
|
attr,
|
|
1230
1232
|
attrs,
|
|
1231
1233
|
classAttr,
|
|
@@ -1240,6 +1242,7 @@ export {
|
|
|
1240
1242
|
escapeXML,
|
|
1241
1243
|
fork,
|
|
1242
1244
|
getRegistryInfo,
|
|
1245
|
+
getStreamData,
|
|
1243
1246
|
makeSerializable,
|
|
1244
1247
|
markResumeControlEnd,
|
|
1245
1248
|
markResumeControlSingleNodeEnd,
|
|
@@ -1260,4 +1263,3 @@ export {
|
|
|
1260
1263
|
writeEffect,
|
|
1261
1264
|
writeScope
|
|
1262
1265
|
};
|
|
1263
|
-
//# sourceMappingURL=html.mjs.map
|
package/dist/dom.js
CHANGED
|
@@ -620,7 +620,7 @@ function setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer) {
|
|
|
620
620
|
}
|
|
621
621
|
prevScope && destroyScope(prevScope);
|
|
622
622
|
}
|
|
623
|
-
var emptyMarkerMap =
|
|
623
|
+
var emptyMarkerMap = /* @__PURE__ */ new Map([[Symbol(), getEmptyScope(void 0)]]), emptyMarkerArray = [
|
|
624
624
|
/* @__PURE__ */ getEmptyScope(void 0)
|
|
625
625
|
], emptyMap = /* @__PURE__ */ new Map(), emptyArray = [];
|
|
626
626
|
function loopOf(nodeAccessor, renderer) {
|
|
@@ -952,4 +952,3 @@ var compat = {
|
|
|
952
952
|
};
|
|
953
953
|
function noop() {
|
|
954
954
|
}
|
|
955
|
-
//# sourceMappingURL=dom.js.map
|
package/dist/dom.mjs
CHANGED
|
@@ -548,7 +548,7 @@ function setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer) {
|
|
|
548
548
|
}
|
|
549
549
|
prevScope && destroyScope(prevScope);
|
|
550
550
|
}
|
|
551
|
-
var emptyMarkerMap =
|
|
551
|
+
var emptyMarkerMap = /* @__PURE__ */ new Map([[Symbol(), getEmptyScope(void 0)]]), emptyMarkerArray = [
|
|
552
552
|
/* @__PURE__ */ getEmptyScope(void 0)
|
|
553
553
|
], emptyMap = /* @__PURE__ */ new Map(), emptyArray = [];
|
|
554
554
|
function loopOf(nodeAccessor, renderer) {
|
|
@@ -932,4 +932,3 @@ export {
|
|
|
932
932
|
values,
|
|
933
933
|
write
|
|
934
934
|
};
|
|
935
|
-
//# sourceMappingURL=dom.mjs.map
|
package/dist/html/writer.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ interface StreamData {
|
|
|
16
16
|
global: Record<string, unknown>;
|
|
17
17
|
serializer?: Serializer;
|
|
18
18
|
}
|
|
19
|
-
export declare
|
|
19
|
+
export declare function getStreamData(): StreamData | null;
|
|
20
20
|
export declare function createRenderFn(renderer: Renderer): (stream: Writable, input?: unknown, $global?: Record<string, unknown>, streamState?: Partial<StreamData>) => void;
|
|
21
21
|
export declare function write(data: string): void;
|
|
22
22
|
export declare function maybeFlush(): void;
|
package/dist/html.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { toString, escapeScript, escapeStyle, escapeXML, escapeAttrValue, } from "./html/content";
|
|
2
2
|
export { attr, attrs, classAttr, styleAttr } from "./html/attrs";
|
|
3
3
|
export { dynamicTagInput, dynamicTagArgs, createRenderer, patchDynamicTag, } from "./html/dynamic-tag";
|
|
4
|
-
export { write, maybeFlush, fork, tryPlaceholder, tryCatch, nextTagId, nextScopeId, markResumeNode, writeEffect, writeScope, markResumeScopeStart, markResumeControlEnd, markResumeControlSingleNodeEnd, createRenderFn, peekSerializedScope,
|
|
4
|
+
export { write, maybeFlush, fork, tryPlaceholder, tryCatch, nextTagId, nextScopeId, markResumeNode, writeEffect, writeScope, markResumeScopeStart, markResumeControlEnd, markResumeControlSingleNodeEnd, createRenderFn, peekSerializedScope, getStreamData, } from "./html/writer";
|
|
5
5
|
export { createTemplate } from "./html/template";
|
|
6
6
|
export { register, makeSerializable, serializedScope, getRegistryInfo, } from "./html/serializer";
|
package/dist/html.js
CHANGED
|
@@ -17,7 +17,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0
|
|
|
17
17
|
// src/html.ts
|
|
18
18
|
var html_exports = {};
|
|
19
19
|
__export(html_exports, {
|
|
20
|
-
$_streamData: () => $_streamData,
|
|
21
20
|
attr: () => attr,
|
|
22
21
|
attrs: () => attrs,
|
|
23
22
|
classAttr: () => classAttr,
|
|
@@ -32,6 +31,7 @@ __export(html_exports, {
|
|
|
32
31
|
escapeXML: () => escapeXML,
|
|
33
32
|
fork: () => fork,
|
|
34
33
|
getRegistryInfo: () => getRegistryInfo,
|
|
34
|
+
getStreamData: () => getStreamData,
|
|
35
35
|
makeSerializable: () => makeSerializable,
|
|
36
36
|
markResumeControlEnd: () => markResumeControlEnd,
|
|
37
37
|
markResumeControlSingleNodeEnd: () => markResumeControlSingleNodeEnd,
|
|
@@ -514,6 +514,9 @@ var runtimeId = "M" /* DefaultRuntimeId */, reorderRuntimeString = String(reorde
|
|
|
514
514
|
"RUNTIME_ID",
|
|
515
515
|
runtimeId
|
|
516
516
|
), $_buffer = null, $_streamData = null;
|
|
517
|
+
function getStreamData() {
|
|
518
|
+
return $_streamData;
|
|
519
|
+
}
|
|
517
520
|
function createRenderFn(renderer) {
|
|
518
521
|
return (stream, input = {}, $global, streamState = {}) => {
|
|
519
522
|
let remainingChildren = 1, originalBuffer = $_buffer, originalStreamState = $_streamData, reject = (err) => {
|
|
@@ -895,7 +898,6 @@ var ServerRenderResult = class {
|
|
|
895
898
|
};
|
|
896
899
|
// Annotate the CommonJS export names for ESM import in node:
|
|
897
900
|
0 && (module.exports = {
|
|
898
|
-
$_streamData,
|
|
899
901
|
attr,
|
|
900
902
|
attrs,
|
|
901
903
|
classAttr,
|
|
@@ -910,6 +912,7 @@ var ServerRenderResult = class {
|
|
|
910
912
|
escapeXML,
|
|
911
913
|
fork,
|
|
912
914
|
getRegistryInfo,
|
|
915
|
+
getStreamData,
|
|
913
916
|
makeSerializable,
|
|
914
917
|
markResumeControlEnd,
|
|
915
918
|
markResumeControlSingleNodeEnd,
|
|
@@ -930,4 +933,3 @@ var ServerRenderResult = class {
|
|
|
930
933
|
writeEffect,
|
|
931
934
|
writeScope
|
|
932
935
|
});
|
|
933
|
-
//# sourceMappingURL=html.js.map
|
package/dist/html.mjs
CHANGED
|
@@ -458,6 +458,9 @@ var runtimeId = "M" /* DefaultRuntimeId */, reorderRuntimeString = String(reorde
|
|
|
458
458
|
"RUNTIME_ID",
|
|
459
459
|
runtimeId
|
|
460
460
|
), $_buffer = null, $_streamData = null;
|
|
461
|
+
function getStreamData() {
|
|
462
|
+
return $_streamData;
|
|
463
|
+
}
|
|
461
464
|
function createRenderFn(renderer) {
|
|
462
465
|
return (stream, input = {}, $global, streamState = {}) => {
|
|
463
466
|
let remainingChildren = 1, originalBuffer = $_buffer, originalStreamState = $_streamData, reject = (err) => {
|
|
@@ -838,7 +841,6 @@ var ServerRenderResult = class {
|
|
|
838
841
|
}
|
|
839
842
|
};
|
|
840
843
|
export {
|
|
841
|
-
$_streamData,
|
|
842
844
|
attr,
|
|
843
845
|
attrs,
|
|
844
846
|
classAttr,
|
|
@@ -853,6 +855,7 @@ export {
|
|
|
853
855
|
escapeXML,
|
|
854
856
|
fork,
|
|
855
857
|
getRegistryInfo,
|
|
858
|
+
getStreamData,
|
|
856
859
|
makeSerializable,
|
|
857
860
|
markResumeControlEnd,
|
|
858
861
|
markResumeControlSingleNodeEnd,
|
|
@@ -873,4 +876,3 @@ export {
|
|
|
873
876
|
writeEffect,
|
|
874
877
|
writeScope
|
|
875
878
|
};
|
|
876
|
-
//# sourceMappingURL=html.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marko/runtime-tags",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Optimized runtime for Marko templates.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api",
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
"types": "./dist/*.d.ts",
|
|
22
22
|
"import": "./dist/*.mjs",
|
|
23
23
|
"default": "./dist/*.js"
|
|
24
|
+
},
|
|
25
|
+
"./debug/*": {
|
|
26
|
+
"types": "./dist/*.d.ts",
|
|
27
|
+
"import": "./dist/debug/*.mjs",
|
|
28
|
+
"default": "./dist/debug/*.js"
|
|
24
29
|
}
|
|
25
30
|
},
|
|
26
31
|
"files": [
|
package/dist/debug/dom.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/dom.ts", "../../src/dom/scope.ts", "../../src/dom/reconcile-longest-increasing-subsequence.ts", "../../src/common/helpers.ts", "../../src/dom/abort-signal.ts", "../../src/dom/dom.ts", "../../src/dom/walker.ts", "../../src/dom/renderer.ts", "../../src/dom/signals.ts", "../../src/dom/control-flow.ts", "../../src/dom/event.ts", "../../src/dom/resume.ts", "../../src/dom/schedule.ts", "../../src/dom/queue.ts", "../../src/dom/template.ts", "../../src/dom/compat.ts"],
|
|
4
|
-
"sourcesContent": ["export {\n conditional,\n conditionalOnlyChild,\n inConditionalScope,\n loopOf,\n loopIn,\n loopTo,\n inLoopScope,\n} from \"./dom/control-flow\";\n\nexport {\n data,\n html,\n attr,\n attrs,\n classAttr,\n styleAttr,\n props,\n lifecycle,\n} from \"./dom/dom\";\n\nexport { resetAbortSignal, getAbortSignal } from \"./dom/abort-signal\";\n\nexport { on } from \"./dom/event\";\n\nexport {\n init,\n register,\n registerSubscriber,\n getRegisteredWithScope,\n scopeLookup,\n} from \"./dom/resume\";\n\nexport {\n queueSource,\n queueEffect,\n run,\n prepare,\n runEffects,\n} from \"./dom/queue\";\n\nexport { write, bindFunction, bindRenderer, createScope } from \"./dom/scope\";\n\nexport type { Scope } from \"./common/types\";\n\nexport {\n createRenderer,\n dynamicTagAttrs,\n createScopeWithRenderer,\n} from \"./dom/renderer\";\n\nexport { createTemplate } from \"./dom/template\";\n\nexport {\n value,\n initValue,\n intersection,\n closure,\n dynamicClosure,\n dynamicSubscribers,\n childClosures,\n setTagVar,\n tagVarSignal,\n nextTagId,\n inChild,\n values,\n intersections,\n} from \"./dom/signals\";\n\nexport { compat } from \"./dom/compat\";\n", "import type { Scope } from \"../common/types\";\nimport type { Renderer } from \"./renderer\";\n\nlet debugID = 0;\n\nexport function createScope($global: Scope[\"$global\"]): Scope {\n const scope = {} as Scope;\n if (MARKO_DEBUG) {\n scope.___debugId = debugID++;\n }\n scope.___client = true;\n scope.$global = $global;\n return scope;\n}\n\nconst emptyScope = createScope({});\nexport function getEmptyScope(marker: Comment) {\n emptyScope.___startNode = emptyScope.___endNode = marker;\n return emptyScope;\n}\n\nexport function write<S extends Scope, K extends keyof S>(\n scope: S,\n localIndex: K,\n value: S[K],\n) {\n if (scope[localIndex] !== value) {\n scope[localIndex] = value;\n return 1;\n }\n return 0;\n}\n\nfunction binder<T, U = T>(bind: (scope: Scope, value: T) => U) {\n return (scope: Scope, value: T): U => {\n scope.___bound ??= new Map();\n let bound = scope.___bound.get(value) as U;\n if (!bound) {\n bound = bind(scope, value);\n scope.___bound.set(value, bound);\n }\n return bound;\n };\n}\n\nexport const bindRenderer = binder(\n (ownerScope, renderer: Renderer): Renderer =>\n renderer && {\n ...renderer,\n ___owner: ownerScope,\n },\n);\n\ntype BindableFunction = (\n this: unknown,\n scope: Scope,\n ...args: any[]\n) => unknown;\nexport const bindFunction = binder(\n <T extends BindableFunction>(boundScope: Scope, fn: T) =>\n fn.length\n ? function bound(this: unknown, ...args: any[]) {\n return fn.call(this, boundScope, ...args);\n }\n : function bound(this: unknown) {\n return fn.call(this, boundScope);\n },\n);\n\nexport function destroyScope(scope: Scope) {\n _destroyScope(scope);\n\n scope._?.___cleanup?.delete(scope);\n\n const closureSignals = scope.___renderer?.___closureSignals;\n if (closureSignals) {\n for (const signal of closureSignals) {\n signal.___unsubscribe?.(scope);\n }\n }\n return scope;\n}\n\nfunction _destroyScope(scope: Scope) {\n const cleanup = scope.___cleanup;\n if (cleanup) {\n for (const instance of cleanup) {\n _destroyScope(instance);\n }\n }\n\n const controllers = scope.___abortControllers;\n if (controllers) {\n for (const ctrl of controllers.values()) {\n ctrl.abort();\n }\n }\n}\n\nexport function onDestroy(scope: Scope) {\n let parentScope = scope._;\n while (parentScope && !parentScope.___cleanup?.has(scope)) {\n (parentScope.___cleanup ||= new Set()).add(scope);\n scope = parentScope;\n parentScope = scope._;\n }\n}\n\nexport function removeAndDestroyScope(scope: Scope) {\n destroyScope(scope);\n let current = scope.___startNode;\n const stop = scope.___endNode.nextSibling;\n while (current !== stop) {\n const next = current.nextSibling;\n current.remove();\n current = next!;\n }\n}\n\nexport function insertBefore(\n scope: Scope,\n parent: Node & ParentNode,\n nextSibling: Node | null,\n) {\n let current = scope.___startNode as Node;\n const stop = scope.___endNode.nextSibling;\n while (current !== stop) {\n const next = current.nextSibling;\n parent.insertBefore(current, nextSibling);\n current = next!;\n }\n}\n", "import type { Scope } from \"../common/types\";\nimport { insertBefore, removeAndDestroyScope } from \"./scope\";\n\nconst WRONG_POS = 2147483647;\n\nexport function reconcile(\n parent: Node & ParentNode,\n oldScopes: Scope[],\n newScopes: Scope[],\n afterReference: Node | null,\n): void {\n let oldStart = 0;\n let newStart = 0;\n let oldEnd = oldScopes.length - 1;\n let newEnd = newScopes.length - 1;\n let oldStartScope = oldScopes[oldStart];\n let newStartScope = newScopes[newStart];\n let oldEndScope = oldScopes[oldEnd];\n let newEndScope = newScopes[newEnd];\n let i: number;\n let j: number | undefined;\n let k: number;\n let nextSibling: Node | null;\n let oldScope: Scope | null;\n let newScope: Scope;\n\n // Step 1\n // tslint:disable-next-line: label-position\n outer: {\n // Skip nodes with the same key at the beginning.\n while (oldStartScope === newStartScope) {\n ++oldStart;\n ++newStart;\n if (oldStart > oldEnd || newStart > newEnd) {\n break outer;\n }\n oldStartScope = oldScopes[oldStart];\n newStartScope = newScopes[newStart];\n }\n\n // Skip nodes with the same key at the end.\n while (oldEndScope === newEndScope) {\n --oldEnd;\n --newEnd;\n if (oldStart > oldEnd || newStart > newEnd) {\n break outer;\n }\n oldEndScope = oldScopes[oldEnd];\n newEndScope = newScopes[newEnd];\n }\n }\n\n if (oldStart > oldEnd) {\n // All old nodes are in the correct place, insert the remaining new nodes.\n if (newStart <= newEnd) {\n k = newEnd + 1;\n nextSibling =\n k < newScopes.length ? newScopes[k].___startNode : afterReference;\n do {\n insertBefore(newScopes[newStart++], parent, nextSibling);\n } while (newStart <= newEnd);\n }\n } else if (newStart > newEnd) {\n // All new nodes are in the correct place, remove the remaining old nodes.\n do {\n removeAndDestroyScope(oldScopes[oldStart++]);\n } while (oldStart <= oldEnd);\n } else {\n // Step 2\n const oldLength = oldEnd - oldStart + 1;\n const newLength = newEnd - newStart + 1;\n\n const aNullable = oldScopes as Array<Scope | null>; // will be removed by js optimizing compilers.\n // Mark all nodes as inserted.\n const sources = new Array(newLength);\n for (i = 0; i < newLength; ++i) {\n sources[i] = -1;\n }\n\n // When pos === WRONG_POS, it means that one of the nodes in the wrong position.\n let pos = 0;\n let synced = 0;\n\n const keyIndex: Map<unknown, number> = new Map();\n for (j = newStart; j <= newEnd; ++j) {\n keyIndex.set(newScopes[j], j);\n }\n\n for (i = oldStart; i <= oldEnd && synced < newLength; ++i) {\n oldScope = oldScopes[i];\n j = keyIndex.get(oldScope);\n if (j !== undefined) {\n pos = pos > j ? WRONG_POS : j;\n ++synced;\n newScope = newScopes[j];\n sources[j - newStart] = i;\n aNullable[i] = null;\n }\n }\n\n if (oldLength === oldScopes.length && synced === 0) {\n // None of the newNodes already exist in the DOM\n // All newNodes need to be inserted\n for (; newStart < newLength; ++newStart) {\n insertBefore(newScopes[newStart], parent, afterReference);\n }\n // All oldNodes need to be removed\n for (; oldStart < oldLength; ++oldStart) {\n removeAndDestroyScope(oldScopes[oldStart]);\n }\n } else {\n i = oldLength - synced;\n while (i > 0) {\n oldScope = aNullable[oldStart++];\n if (oldScope !== null) {\n removeAndDestroyScope(oldScope);\n i--;\n }\n }\n\n // Step 3\n if (pos === WRONG_POS) {\n const seq = longestIncreasingSubsequence(sources);\n j = seq.length - 1;\n k = newScopes.length;\n for (i = newLength - 1; i >= 0; --i) {\n if (sources[i] === -1) {\n pos = i + newStart;\n newScope = newScopes[pos++];\n nextSibling =\n pos < k ? newScopes[pos].___startNode : afterReference;\n insertBefore(newScope, parent, nextSibling);\n } else {\n if (j < 0 || i !== seq[j]) {\n pos = i + newStart;\n newScope = newScopes[pos++];\n nextSibling =\n pos < k ? newScopes[pos].___startNode : afterReference;\n insertBefore(newScope, parent, nextSibling);\n } else {\n --j;\n }\n }\n }\n } else if (synced !== newLength) {\n k = newScopes.length;\n for (i = newLength - 1; i >= 0; --i) {\n if (sources[i] === -1) {\n pos = i + newStart;\n newScope = newScopes[pos++];\n nextSibling =\n pos < k ? newScopes[pos].___startNode : afterReference;\n insertBefore(newScope, parent, nextSibling);\n }\n }\n }\n }\n }\n}\n\nfunction longestIncreasingSubsequence(a: number[]): number[] {\n const p = a.slice();\n const result: number[] = [];\n result.push(0);\n let u: number;\n let v: number;\n\n for (let i = 0, il = a.length; i < il; ++i) {\n if (a[i] === -1) {\n continue;\n }\n\n const j = result[result.length - 1];\n if (a[j] < a[i]) {\n p[i] = j;\n result.push(i);\n continue;\n }\n\n u = 0;\n v = result.length - 1;\n\n while (u < v) {\n // tslint:disable-next-line:no-bitwise\n const c = ((u + v) / 2) | 0;\n if (a[result[c]] < a[i]) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n\n if (a[i] < a[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n\n u = result.length;\n v = result[u - 1];\n\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n\n return result;\n}\n", "export function classValue(value: unknown) {\n return toDelimitedString(value, \" \", stringifyClassObject);\n}\n\nfunction stringifyClassObject(name: string, value: unknown) {\n if (isVoid(value)) {\n return \"\";\n }\n\n return name;\n}\n\nexport function styleValue(value: unknown) {\n return toDelimitedString(value, \";\", stringifyStyleObject);\n}\n\nconst NON_DIMENSIONAL = /^(--|ta|or|li|z)|n-c|i(do|nk|m|t)|w$|we/;\nfunction stringifyStyleObject(name: string, value: unknown) {\n if (isVoid(value)) {\n return \"\";\n }\n\n if (typeof value === \"number\" && value && !NON_DIMENSIONAL.test(name)) {\n (value as unknown as string) += \"px\";\n }\n\n return `${name}:${value}`;\n}\n\nfunction toDelimitedString(\n val: unknown,\n delimiter: string,\n stringify: (n: string, v: unknown) => string | undefined,\n) {\n switch (typeof val) {\n case \"string\":\n return val;\n case \"object\":\n if (val !== null) {\n let result = \"\";\n let curDelimiter = \"\";\n\n if (Array.isArray(val)) {\n for (const v of val) {\n const part = toDelimitedString(v, delimiter, stringify);\n if (part !== \"\") {\n result += curDelimiter + part;\n curDelimiter = delimiter;\n }\n }\n } else {\n for (const name in val) {\n const v = (val as Record<string, unknown>)[name];\n const part = stringify(name, v);\n if (part !== \"\") {\n result += curDelimiter + part;\n curDelimiter = delimiter;\n }\n }\n }\n\n return result;\n }\n }\n\n return \"\";\n}\n\nexport function isVoid(value: unknown) {\n return value == null || value === false;\n}\n\nexport function alphaEncode(num: number): string {\n return num < 52\n ? String.fromCharCode(num < 26 ? num + 97 : num + (65 - 26))\n : alphaEncode((num / 52) | 0) + alphaEncode(num % 52);\n}\n", "import type { Scope } from \"../common/types\";\nimport { onDestroy } from \"./scope\";\n\nexport function resetAbortSignal(scope: Scope, id: string | number) {\n const controllers = scope.___abortControllers;\n if (controllers) {\n const ctrl = controllers.get(id);\n if (ctrl) {\n ctrl.abort();\n controllers.delete(id);\n }\n }\n}\n\nexport function getAbortSignal(scope: Scope, id: string | number) {\n const controllers = (scope.___abortControllers ??= new Map());\n let controller = controllers.get(id);\n if (!controller) {\n onDestroy(scope);\n controllers.set(id, (controller = new AbortController()));\n }\n\n return controller.signal;\n}\n", "import { classValue, styleValue } from \"../common/helpers\";\nimport {\n type Accessor,\n AccessorChar,\n NodeType,\n type Scope,\n} from \"../common/types\";\nimport { getAbortSignal } from \"./abort-signal\";\nimport { write } from \"./scope\";\n\nexport function isDocumentFragment(node: Node): node is DocumentFragment {\n return node.nodeType === NodeType.DocumentFragment;\n}\n\nexport function attr(element: Element, name: string, value: unknown) {\n const normalizedValue = normalizeAttrValue(value);\n if (normalizedValue === undefined) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, normalizedValue);\n }\n}\n\nexport function classAttr(element: Element, value: unknown) {\n attr(element, \"class\", classValue(value) || false);\n}\n\nexport function styleAttr(element: Element, value: unknown) {\n attr(element, \"style\", styleValue(value) || false);\n}\n\nexport function data(node: Text | Comment, value: unknown) {\n const normalizedValue = normalizeString(value);\n // TODO: benchmark if it is actually faster to check data first\n if (node.data !== normalizedValue) {\n node.data = normalizedValue;\n }\n}\n\nexport function attrs(\n scope: Scope,\n elementAccessor: Accessor,\n nextAttrs: Record<string, unknown>,\n) {\n const prevAttrs = scope[elementAccessor + AccessorChar.PreviousAttributes] as\n | typeof nextAttrs\n | undefined;\n const element = scope[elementAccessor] as Element;\n\n if (prevAttrs) {\n for (const name in prevAttrs) {\n if (!(nextAttrs && name in nextAttrs)) {\n element.removeAttribute(name);\n }\n }\n }\n // https://jsperf.com/object-keys-vs-for-in-with-closure/194\n for (const name in nextAttrs) {\n if (!(prevAttrs && nextAttrs[name] === prevAttrs[name])) {\n if (name === \"class\") {\n classAttr(element, nextAttrs[name]);\n } else if (name === \"style\") {\n styleAttr(element, nextAttrs[name]);\n } else if (name !== \"renderBody\") {\n attr(element, name, nextAttrs[name]);\n }\n }\n }\n\n scope[elementAccessor + AccessorChar.PreviousAttributes] = nextAttrs;\n}\n\nconst doc = document;\nconst parser = /* @__PURE__ */ doc.createElement(\"template\");\n\nexport function html(scope: Scope, value: unknown, index: Accessor) {\n const firstChild = scope[index] as Node & ChildNode;\n const lastChild = (scope[index + \"-\"] || firstChild) as Node & ChildNode;\n const parentNode = firstChild.parentNode!;\n const afterReference = lastChild.nextSibling;\n\n parser.innerHTML = value || value === 0 ? `${value}` : \"<!>\";\n const newContent = parser.content;\n write(scope, index, newContent.firstChild);\n write(scope, (index + \"-\") as any as number, newContent.lastChild);\n parentNode.insertBefore(newContent, firstChild);\n\n let current = firstChild;\n while (current !== afterReference) {\n const next = current.nextSibling;\n current.remove();\n current = next!;\n }\n}\n\nexport function props(scope: Scope, nodeIndex: number, index: number) {\n const nextProps = scope[index] as Record<string, unknown>;\n const prevProps = scope[index + \"-\"] as Record<string, unknown> | undefined;\n const node = scope[nodeIndex] as Node;\n\n if (prevProps) {\n for (const name in prevProps) {\n if (!(name in nextProps)) {\n (node as any)[name] = undefined;\n }\n }\n }\n // https://jsperf.com/object-keys-vs-for-in-with-closure/194\n for (const name in nextProps) {\n (node as any)[name] = nextProps[name];\n }\n\n scope[index + \"-\"] = nextProps;\n}\n\nfunction normalizeAttrValue(value: unknown) {\n if (value || value === 0) {\n return value === true ? \"\" : value + \"\";\n }\n}\n\nfunction normalizeString(value: unknown) {\n return value || value === 0 ? value + \"\" : \"\\u200d\";\n}\nexport function lifecycle(\n scope: Scope,\n index: string | number,\n thisObj: Record<string, unknown> & {\n onMount?: (this: unknown) => void;\n onUpdate?: (this: unknown) => void;\n onDestroy?: (this: unknown) => void;\n },\n) {\n const instance = scope[index] as typeof thisObj;\n if (instance) {\n Object.assign(instance, thisObj);\n instance.onUpdate?.();\n } else {\n scope[index] = thisObj;\n thisObj.onMount?.();\n getAbortSignal(\n scope,\n AccessorChar.LifecycleAbortController + index,\n ).onabort = () => thisObj.onDestroy?.();\n }\n}\n", "import { type Scope, NodeType, WalkCode, WalkRangeSize } from \"../common/types\";\nimport { createScope } from \"./scope\";\n\nexport const walker = /* @__PURE__ */ document.createTreeWalker(document);\n\n// Laws of the walks string:\n// - Always prefer Get to Before to After, Inside, or Replace\n// - Get must always be used to get a static node from clonable template if possible\n// - Replace must only be used to insert between two static text nodes\n// - Inside must only be used to insert into elements with no static children\n// - After must only be used to insert a last child or immediately following another action (if it makes the walks string smaller)\n// - Adjacent actions must always be in source order (Before* Get* Inside* After* || Before* Replace)\n// - When an element is both walked into and needs to insert After, you must walk in first (Next) and then walk Out before After\n// - Unless the inserted node is Text, Inside, After, & Replace must be followed by Out/Over to skip over unknown children\n// - Out must always be followed by After or Over\n// - Before must be done before walking into the node\n// - Next would walk back in the node we just walked Out of\n// - A component must assume the walker is on its first node, and include instructions for walking to its assumed nextSibling\n\nexport function trimWalkString(walkString: string): string {\n let end = walkString.length;\n while (walkString.charCodeAt(--end) > WalkCode.BeginChild);\n return walkString.slice(0, end + 1);\n}\n\nexport function walk(startNode: Node, walkCodes: string, scope: Scope) {\n walker.currentNode = startNode;\n walkInternal(walkCodes, scope, 0);\n walker.currentNode = document.documentElement;\n}\n\nfunction walkInternal(\n walkCodes: string,\n scope: Scope,\n currentWalkIndex: number,\n) {\n let value: number;\n let storedMultiplier = 0;\n let currentMultiplier = 0;\n let currentScopeIndex = 0;\n\n while ((value = walkCodes.charCodeAt(currentWalkIndex++))) {\n currentMultiplier = storedMultiplier;\n storedMultiplier = 0;\n if (value >= WalkCode.Multiplier) {\n storedMultiplier =\n currentMultiplier * WalkRangeSize.Multiplier +\n value -\n WalkCode.Multiplier;\n } else if (value >= WalkCode.Out) {\n value = WalkRangeSize.Out * currentMultiplier + value - WalkCode.Out;\n while (value--) {\n walker.parentNode();\n }\n walker.nextSibling();\n } else if (value >= WalkCode.Over) {\n value = WalkRangeSize.Over * currentMultiplier + value - WalkCode.Over;\n while (value--) {\n !walker.nextSibling() && !walker.nextNode();\n }\n } else if (value >= WalkCode.Next) {\n value = WalkRangeSize.Next * currentMultiplier + value - WalkCode.Next;\n while (value--) {\n walker.nextNode();\n }\n } else if (value === WalkCode.BeginChild) {\n currentWalkIndex = walkInternal(\n walkCodes,\n (scope[\n MARKO_DEBUG\n ? getDebugKey(currentScopeIndex++, \"#childScope\")\n : currentScopeIndex++\n ] = createScope(scope.$global)),\n currentWalkIndex,\n )!;\n } else if (value === WalkCode.EndChild) {\n return currentWalkIndex;\n } else if (value === WalkCode.Get) {\n scope[\n MARKO_DEBUG\n ? getDebugKey(currentScopeIndex++, walker.currentNode)\n : currentScopeIndex++\n ] = walker.currentNode;\n } else {\n const newNode = (scope[\n MARKO_DEBUG\n ? getDebugKey(currentScopeIndex++, \"#text\")\n : currentScopeIndex++\n ] = document.createTextNode(\"\"));\n const current = walker.currentNode;\n const parentNode = current.parentNode!;\n\n if (value === WalkCode.Before) {\n parentNode.insertBefore(newNode, current);\n } else {\n if (value === WalkCode.After) {\n parentNode.insertBefore(newNode, current.nextSibling);\n } else {\n if (MARKO_DEBUG && value !== WalkCode.Replace) {\n throw new Error(`Unknown walk code: ${value}`);\n }\n parentNode.replaceChild(newNode, current);\n }\n\n walker.currentNode = newNode;\n }\n } /* else {\n if (MARKO_DEBUG && value !== WalkCodes.Replace) {\n throw new Error(`Unknown walk code: ${value}`);\n }\n const current = walker.currentNode;\n current.parentNode!.replaceChild(walker.currentNode = scope[currentScopeIndex++] = document.createTextNode(\"\"), current);\n } */\n }\n\n return currentWalkIndex;\n}\n\nfunction getDebugKey(index: number, node: Node | string) {\n if (typeof node === \"string\") {\n return `${node}/${index}`;\n } else if (node.nodeType === NodeType.Text) {\n return `#text/${index}`;\n } else if (node.nodeType === NodeType.Comment) {\n return `#comment/${index}`;\n } else if (node.nodeType === NodeType.Element) {\n return `#${(node as Element).tagName.toLowerCase()}/${index}`;\n }\n\n return index;\n}\n", "import {\n type Accessor,\n AccessorChar,\n NodeType,\n WalkCode,\n type Scope,\n} from \"../common/types\";\nimport { setConditionalRendererOnlyChild } from \"./control-flow\";\nimport { attrs } from \"./dom\";\nimport { bindRenderer, createScope } from \"./scope\";\nimport type { IntersectionSignal, ValueSignal } from \"./signals\";\nimport { trimWalkString, walk } from \"./walker\";\n\nexport type Renderer = {\n ___template: string;\n ___walks: string | undefined;\n ___setup: SetupFn | undefined;\n ___closureSignals: Set<IntersectionSignal>;\n ___clone: () => Node;\n ___hasUserEffects: 0 | 1;\n ___sourceNode: Node | undefined;\n ___args: ValueSignal | undefined;\n ___owner: Scope | undefined;\n};\n\nexport type RendererOrElementName =\n | Renderer\n | (string & Record<keyof Renderer, undefined>);\n\ntype SetupFn = (scope: Scope) => void;\n\nexport function createScopeWithRenderer(\n renderer: RendererOrElementName,\n $global: Scope[\"___global\"],\n ownerScope?: Scope,\n) {\n const newScope = createScope($global);\n newScope._ = renderer.___owner || ownerScope;\n newScope.___renderer = renderer as Renderer;\n initRenderer(renderer, newScope);\n if (renderer.___closureSignals) {\n for (const signal of renderer.___closureSignals) {\n signal.___subscribe?.(newScope);\n }\n }\n return newScope;\n}\n\nexport function initRenderer(renderer: RendererOrElementName, scope: Scope) {\n const dom =\n typeof renderer === \"string\"\n ? document.createElement(renderer)\n : renderer.___clone();\n walk(\n dom.nodeType === NodeType.DocumentFragment ? dom.firstChild! : dom,\n renderer.___walks ?? \" \",\n scope,\n );\n scope.___startNode =\n dom.nodeType === NodeType.DocumentFragment\n ? dom.firstChild!\n : (dom as ChildNode);\n scope.___endNode =\n dom.nodeType === NodeType.DocumentFragment\n ? dom.lastChild!\n : (dom as ChildNode);\n if (renderer.___setup) {\n renderer.___setup(scope);\n }\n return dom;\n}\n\nexport function dynamicTagAttrs(\n nodeAccessor: Accessor,\n renderBody?: Renderer,\n inputIsArgs?: boolean,\n) {\n return (\n scope: Scope,\n getAttrs: () => Record<string, unknown>,\n clean?: boolean | 1,\n ) => {\n const renderer = scope[\n nodeAccessor + AccessorChar.ConditionalRenderer\n ] as Renderer;\n\n if (!renderer || renderer === renderBody || (clean && !renderer.___args)) {\n return;\n }\n\n const childScope = scope[nodeAccessor + AccessorChar.ConditionalScope];\n if (typeof renderer === \"string\") {\n // This will always be 0 because in dynamicRenderer we used WalkCodes.Get\n const elementAccessor = MARKO_DEBUG ? `#${renderer}/0` : 0;\n attrs(childScope, elementAccessor, getAttrs());\n setConditionalRendererOnlyChild(\n childScope,\n elementAccessor,\n renderBody && bindRenderer(scope, renderBody),\n );\n } else if (renderer.___args) {\n if (clean) {\n renderer.___args(childScope, null as any, clean);\n } else {\n const attributes = getAttrs();\n renderer.___args(\n childScope,\n inputIsArgs\n ? attributes\n : [\n renderBody\n ? {\n ...attributes,\n renderBody: bindRenderer(scope, renderBody),\n }\n : attributes,\n ],\n clean,\n );\n }\n }\n };\n}\n\nexport function createRenderer(\n template: string,\n walks?: string,\n setup?: SetupFn,\n closureSignals?: IntersectionSignal[],\n hasUserEffects: 0 | 1 = 0,\n args?: ValueSignal,\n): Renderer {\n return {\n ___template: template,\n ___walks: walks && /* @__PURE__ */ trimWalkString(walks),\n ___setup: setup,\n ___clone: _clone,\n ___closureSignals: new Set(closureSignals),\n ___hasUserEffects: hasUserEffects,\n ___sourceNode: undefined,\n ___args: args,\n ___owner: undefined,\n };\n}\n\nfunction _clone(this: Renderer) {\n let sourceNode: Node | null | undefined = this.___sourceNode;\n if (!sourceNode) {\n if (MARKO_DEBUG && this.___template === undefined) {\n throw new Error(\n \"The renderer does not have a template to clone: \" +\n JSON.stringify(this),\n );\n }\n const walks = this.___walks;\n // TODO: there's probably a better way to determine if nodes will be inserted before/after the parsed content\n // and therefore we need to put it in a document fragment, even though only a single node results from the parse\n const ensureFragment =\n walks &&\n walks.length < 4 &&\n walks.charCodeAt(walks.length - 1) !== WalkCode.Get;\n this.___sourceNode = sourceNode = parse(\n this.___template,\n ensureFragment as boolean,\n );\n }\n return sourceNode.cloneNode(true);\n}\n\nconst doc = document;\nconst parser = /* @__PURE__ */ doc.createElement(\"template\");\n\nfunction parse(template: string, ensureFragment?: boolean) {\n let node: Node | null;\n parser.innerHTML = template;\n const content = parser.content;\n\n if (\n ensureFragment ||\n (node = content.firstChild) !== content.lastChild ||\n (node && node.nodeType === NodeType.Comment)\n ) {\n node = doc.createDocumentFragment();\n node.appendChild(content);\n } else if (!node) {\n node = doc.createTextNode(\"\");\n }\n\n return node as Node & { firstChild: ChildNode; lastChild: ChildNode };\n}\n", "import { type Accessor, AccessorChar, type Scope } from \"../common/types\";\nimport type { RendererOrElementName } from \"./renderer\";\nimport { bindFunction } from \"./scope\";\n\nexport type Signal = ValueSignal | IntersectionSignal;\n\nexport type ValueSignal<T = unknown> = (\n scope: Scope,\n value: T,\n clean?: 1 | boolean,\n) => void;\n\nexport type BoundValueSignal<T = unknown> = (\n value: T,\n clean?: 1 | boolean,\n) => void;\n\nexport type IntersectionSignal = ((\n scope: Scope,\n clean?: 1 | boolean,\n) => void) & {\n ___subscribe?(scope: Scope): void;\n ___unsubscribe?(scope: Scope): void;\n};\n\nexport type BoundIntersectionSignal = ((clean?: 1 | boolean) => void) & {\n ___subscribe?(scope: Scope): void;\n ___unsubscribe?(scope: Scope): void;\n};\n\nexport function initValue<T>(\n valueAccessor: Accessor,\n fn: ValueSignal<T>,\n): ValueSignal<T> {\n const markAccessor = valueAccessor + AccessorChar.Mark;\n return (scope, nextValue, clean) => {\n if (clean !== 1 && scope[markAccessor] === undefined) {\n fn(scope, nextValue, clean);\n }\n };\n}\n\nexport function value<T>(\n valueAccessor: Accessor,\n render?: ValueSignal<T>,\n intersection?: IntersectionSignal,\n valueWithIntersection?: ValueSignal<any>,\n): ValueSignal<T> {\n const markAccessor = valueAccessor + AccessorChar.Mark;\n return (scope, nextValue, clean) => {\n let creation: boolean | undefined;\n let currentMark: number;\n\n if (clean === 1) {\n currentMark = scope[markAccessor] = (scope[markAccessor] ?? 0) + 1;\n } else {\n creation = scope[markAccessor] === undefined;\n currentMark = scope[markAccessor] ||= 1;\n }\n\n if (currentMark === 1) {\n if (\n clean !== 1 &&\n (creation || !(clean ||= scope[valueAccessor] === nextValue))\n ) {\n scope[valueAccessor] = nextValue;\n render?.(scope, nextValue);\n } else {\n valueWithIntersection?.(scope, 0, clean);\n }\n intersection?.(scope, clean);\n }\n\n // closure needs this to be called after the fn\n // so it is marked until all downstream have been called\n if (clean !== 1) {\n scope[markAccessor]--;\n }\n };\n}\n\nlet accessorId = 0;\n\nexport function intersection(\n count: number,\n fn: IntersectionSignal,\n intersection?: IntersectionSignal,\n valueWithIntersection?: ValueSignal,\n): IntersectionSignal {\n const cleanAccessor = AccessorChar.Dynamic + accessorId++;\n const markAccessor = cleanAccessor + AccessorChar.Mark;\n return (scope, clean) => {\n let currentMark;\n if (clean === 1) {\n currentMark = scope[markAccessor] = (scope[markAccessor] ?? 0) + 1;\n } else {\n if (scope[markAccessor] === undefined) {\n scope[markAccessor] = count - 1;\n clean = undefined;\n } else {\n currentMark = scope[markAccessor]--;\n clean = scope[cleanAccessor] &&= clean;\n }\n }\n if (currentMark === 1) {\n if (clean) {\n valueWithIntersection?.(scope, 0, clean);\n } else {\n scope[cleanAccessor] = true;\n fn(scope, clean);\n }\n intersection?.(scope, clean);\n }\n };\n}\n\nconst defaultGetOwnerScope = (scope: Scope) => scope._!;\n\nexport function closure<T>(\n ownerValueAccessor: Accessor | ((scope: Scope) => Accessor),\n fn: ValueSignal<T>,\n _getOwnerScope?: (scope: Scope) => Scope,\n intersection?: IntersectionSignal,\n valueWithIntersection?: ValueSignal<any>,\n): IntersectionSignal {\n const cleanAccessor = AccessorChar.Dynamic + accessorId++;\n const markAccessor = cleanAccessor + 1;\n const getOwnerScope = _getOwnerScope || defaultGetOwnerScope;\n const getOwnerValueAccessor =\n typeof ownerValueAccessor === \"function\"\n ? ownerValueAccessor\n : () => ownerValueAccessor as Accessor;\n return (scope, clean) => {\n let ownerScope, ownerValueAccessor, currentMark;\n if (clean === 1) {\n currentMark = scope[markAccessor] = (scope[markAccessor] ?? 0) + 1;\n } else {\n if (scope[markAccessor] === undefined) {\n ownerScope = getOwnerScope(scope);\n ownerValueAccessor = getOwnerValueAccessor(scope);\n const ownerMark = ownerScope[ownerValueAccessor + AccessorChar.Mark];\n const ownerHasRun =\n ownerMark === undefined ? !ownerScope.___client : ownerMark === 0;\n scope[markAccessor] = (currentMark = ownerHasRun ? 1 : 2) - 1;\n clean = undefined;\n } else {\n currentMark = scope[markAccessor]--;\n clean = scope[cleanAccessor] &&= clean;\n }\n }\n if (currentMark === 1) {\n if (clean) {\n valueWithIntersection?.(scope, 0, clean);\n } else {\n scope[cleanAccessor] = false;\n ownerScope ??= getOwnerScope(scope);\n ownerValueAccessor ??= getOwnerValueAccessor(scope);\n fn?.(scope, ownerScope[ownerValueAccessor]);\n }\n intersection?.(scope, clean);\n }\n };\n}\n\nexport function dynamicClosure<T>(\n ownerValueAccessor: Accessor | ((scope: Scope) => Accessor),\n fn: ValueSignal<T>,\n _getOwnerScope?: (scope: Scope) => Scope,\n intersection?: IntersectionSignal,\n valueWithIntersection?: ValueSignal,\n): IntersectionSignal {\n const getOwnerScope = _getOwnerScope || defaultGetOwnerScope;\n const getOwnerValueAccessor =\n typeof ownerValueAccessor === \"function\"\n ? ownerValueAccessor\n : () => ownerValueAccessor as string;\n const signalFn = closure(\n getOwnerValueAccessor,\n fn,\n getOwnerScope,\n intersection,\n valueWithIntersection,\n );\n return Object.assign(signalFn, {\n ___subscribe(scope: Scope) {\n const ownerScope = getOwnerScope(scope);\n const providerSubscriptionsAccessor =\n getOwnerValueAccessor(scope) + AccessorChar.Subscribers;\n ownerScope[providerSubscriptionsAccessor] ??= new Set();\n ownerScope[providerSubscriptionsAccessor].add(\n bindFunction(scope, signalFn as any),\n );\n },\n ___unsubscribe(scope: Scope) {\n const ownerScope = getOwnerScope(scope);\n const providerSubscriptionsAccessor =\n getOwnerValueAccessor(scope) + AccessorChar.Subscribers;\n ownerScope[providerSubscriptionsAccessor]?.delete(\n bindFunction(scope, signalFn as any),\n );\n },\n });\n}\n\nexport function childClosures(\n closureSignals: IntersectionSignal[],\n childAccessor: Accessor,\n) {\n const signal = (scope: Scope, clean?: boolean | 1) => {\n const childScope = scope[childAccessor] as Scope;\n for (const closureSignal of closureSignals) {\n closureSignal(childScope, clean);\n }\n };\n return Object.assign(signal, {\n ___subscribe(scope: Scope) {\n const childScope = scope[childAccessor] as Scope;\n for (const closureSignal of closureSignals) {\n closureSignal.___subscribe?.(childScope);\n }\n },\n ___unsubscribe(scope: Scope) {\n const childScope = scope[childAccessor] as Scope;\n for (const closureSignal of closureSignals) {\n closureSignal.___unsubscribe?.(childScope);\n }\n },\n });\n}\n\nexport function dynamicSubscribers(valueAccessor: Accessor) {\n const subscribersAccessor = valueAccessor + AccessorChar.Subscribers;\n return (scope: Scope, clean?: boolean | 1) => {\n const subscribers = scope[\n subscribersAccessor\n ] as Set<BoundIntersectionSignal>;\n if (subscribers) {\n for (const subscriber of subscribers) {\n subscriber(clean);\n }\n }\n };\n}\n\nexport function setTagVar(\n scope: Scope,\n childAccessor: Accessor,\n tagVarSignal: ValueSignal,\n) {\n scope[childAccessor][AccessorChar.TagVariable] = bindFunction(\n scope,\n tagVarSignal as any,\n ) as BoundValueSignal;\n}\n\nexport const tagVarSignal = (\n scope: Scope,\n value: unknown,\n clean?: boolean | 1,\n) => scope[AccessorChar.TagVariable]?.(value, clean);\n\nexport const renderBodyClosures = (\n renderBody: RendererOrElementName | undefined,\n childScope: Scope,\n clean?: 1 | boolean,\n) => {\n const signals = renderBody?.___closureSignals;\n if (signals) {\n for (const signal of signals) {\n signal(childScope, clean);\n }\n }\n};\n\nexport const inMany = (\n scopes: Scope[],\n clean: 1 | boolean | undefined,\n signal: IntersectionSignal,\n) => {\n for (const scope of scopes) {\n signal(scope, clean);\n }\n};\n\nlet tagId = 0;\nexport function nextTagId() {\n return \"c\" + tagId++;\n}\n\nexport function inChild(childAccessor: Accessor, signal: ValueSignal) {\n return (scope: Scope, _: unknown, clean?: 1 | boolean) => {\n signal(scope[childAccessor] as Scope, _, clean);\n };\n}\n\nexport function intersections(\n signals: IntersectionSignal[],\n): IntersectionSignal {\n return (scope, clean) => {\n for (const signal of signals) {\n signal(scope, clean);\n }\n };\n}\n\nexport function values(signals: ValueSignal[]): ValueSignal {\n return (scope, _, clean) => {\n for (const signal of signals) {\n signal(scope, _, clean);\n }\n };\n}\n", "import { type Accessor, AccessorChar, type Scope } from \"../common/types\";\nimport { reconcile } from \"./reconcile\";\nimport {\n type Renderer,\n type RendererOrElementName,\n createScopeWithRenderer,\n} from \"./renderer\";\nimport {\n destroyScope,\n getEmptyScope,\n insertBefore,\n removeAndDestroyScope,\n} from \"./scope\";\nimport {\n type IntersectionSignal,\n type ValueSignal,\n renderBodyClosures,\n} from \"./signals\";\nimport type { ClientTemplate as Template } from \"./template\";\n\ntype LoopForEach = (\n value: unknown[],\n cb: (key: unknown, args: unknown[]) => void,\n) => void;\n\nexport function patchConditionals(\n fn: <T extends typeof conditional | typeof conditionalOnlyChild>(\n cond: T,\n ) => T,\n) {\n conditional = fn(conditional);\n conditionalOnlyChild = fn(conditionalOnlyChild);\n}\n\nexport let conditional = function conditional(\n nodeAccessor: Accessor,\n dynamicTagAttrs?: IntersectionSignal,\n intersection?: IntersectionSignal,\n valueWithIntersection?: ValueSignal,\n): ValueSignal<RendererOrElementName | undefined> {\n const rendererAccessor = nodeAccessor + AccessorChar.ConditionalRenderer;\n const childScopeAccessor = nodeAccessor + AccessorChar.ConditionalScope;\n return (scope, newRenderer, clean) => {\n newRenderer = newRenderer\n ? (newRenderer as any as Template)._ || newRenderer\n : undefined;\n let currentRenderer = scope[rendererAccessor] as\n | RendererOrElementName\n | undefined;\n if (!clean && !(clean = currentRenderer === newRenderer)) {\n currentRenderer = scope[rendererAccessor] = newRenderer;\n setConditionalRenderer(scope, nodeAccessor, newRenderer);\n dynamicTagAttrs?.(scope);\n } else {\n valueWithIntersection?.(scope, 0, clean);\n }\n intersection?.(scope, clean);\n renderBodyClosures(currentRenderer, scope[childScopeAccessor], clean);\n };\n};\n\n// TODO: remove this, use return from conditional instead\nexport function inConditionalScope<S extends Scope>(\n signal: IntersectionSignal,\n nodeAccessor: Accessor /* branch?: Renderer */,\n): IntersectionSignal {\n const scopeAccessor = nodeAccessor + AccessorChar.ConditionalScope;\n const rendererAccessor = nodeAccessor + AccessorChar.ConditionalRenderer;\n return (scope: Scope, clean?: boolean | 1) => {\n const conditionalScope = scope[scopeAccessor] as S;\n if (conditionalScope) {\n const conditionalRenderer = scope[rendererAccessor] as Renderer;\n if (\n !conditionalRenderer?.___closureSignals ||\n conditionalRenderer.___closureSignals.has(signal)\n ) {\n signal(conditionalScope, clean);\n }\n }\n };\n}\n\nexport function setConditionalRenderer<ChildScope extends Scope>(\n scope: Scope,\n nodeAccessor: Accessor,\n newRenderer: RendererOrElementName | undefined,\n) {\n let newScope: ChildScope;\n let prevScope = scope[\n nodeAccessor + AccessorChar.ConditionalScope\n ] as ChildScope;\n\n if (newRenderer) {\n newScope = scope[nodeAccessor + AccessorChar.ConditionalScope] =\n createScopeWithRenderer(newRenderer, scope.$global, scope) as ChildScope;\n prevScope = prevScope || getEmptyScope(scope[nodeAccessor] as Comment);\n } else {\n newScope = getEmptyScope(scope[nodeAccessor] as Comment) as ChildScope;\n scope[nodeAccessor + AccessorChar.ConditionalScope] = undefined;\n }\n\n insertBefore(\n newScope,\n prevScope.___startNode.parentNode!,\n prevScope.___startNode,\n );\n removeAndDestroyScope(prevScope);\n}\n\nexport let conditionalOnlyChild = function conditionalOnlyChild(\n nodeAccessor: Accessor,\n action?: ValueSignal<RendererOrElementName | undefined>,\n): ValueSignal<RendererOrElementName | undefined> {\n const rendererAccessor = nodeAccessor + AccessorChar.ConditionalRenderer;\n const childScopeAccessor = nodeAccessor + AccessorChar.ConditionalScope;\n return (scope, newRenderer, clean) => {\n let currentRenderer = scope[rendererAccessor] as\n | RendererOrElementName\n | undefined;\n if (!clean && currentRenderer !== newRenderer) {\n currentRenderer = scope[rendererAccessor] = newRenderer;\n setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer);\n }\n renderBodyClosures(currentRenderer, scope[childScopeAccessor], clean);\n action?.(scope, currentRenderer, clean);\n };\n};\n\nexport function setConditionalRendererOnlyChild(\n scope: Scope,\n nodeAccessor: Accessor,\n newRenderer: RendererOrElementName | undefined,\n) {\n const prevScope = scope[\n nodeAccessor + AccessorChar.ConditionalScope\n ] as Scope;\n const referenceNode = scope[nodeAccessor] as Element;\n referenceNode.textContent = \"\";\n\n if (newRenderer) {\n const newScope = (scope[nodeAccessor + AccessorChar.ConditionalScope] =\n createScopeWithRenderer(newRenderer, scope.$global, scope));\n insertBefore(newScope, referenceNode, null);\n }\n\n prevScope && destroyScope(prevScope);\n}\n\nconst emptyMarkerMap = /* @__PURE__ */ (() =>\n new Map().set(Symbol(\"empty\"), getEmptyScope(undefined as any)))();\nexport const emptyMarkerArray = [\n /* @__PURE__ */ getEmptyScope(undefined as any),\n];\nconst emptyMap = new Map();\nconst emptyArray = [] as Scope[];\n\nexport function loopOf(nodeAccessor: Accessor, renderer: Renderer) {\n return loop(nodeAccessor, renderer, (value, cb) => {\n const [all, getKey = keyBySecondArg] = value as typeof value &\n [all: unknown[], getKey?: (item: unknown, index: number) => unknown];\n let i = 0;\n for (const item of all) {\n cb(getKey(item, i), [item, i, all]);\n i++;\n }\n });\n}\n\nexport function loopIn(nodeAccessor: Accessor, renderer: Renderer) {\n return loop(nodeAccessor, renderer, (value, cb) => {\n const [all, getKey = keyByFirstArg] = value as typeof value &\n [\n all: Record<string, unknown>,\n getKey?: (key: string, v: unknown) => unknown,\n ];\n for (const key in all) {\n const v = all[key];\n cb(getKey(key, v), [key, v, all]);\n }\n });\n}\n\nexport function loopTo(nodeAccessor: Accessor, renderer: Renderer) {\n return loop(nodeAccessor, renderer, (value, cb) => {\n const [to, from = 0, step = 1, getKey = keyByFirstArg] = value as [\n to: number,\n from: number,\n step: number,\n getKey?: (v: number) => unknown,\n ];\n const steps = (to - from) / step;\n for (let i = 0; i <= steps; i++) {\n const v = from + i * step;\n cb(getKey(v), [v]);\n }\n });\n}\n\nfunction loop(\n nodeAccessor: Accessor,\n renderer: Renderer,\n forEach: LoopForEach,\n) {\n const loopScopeAccessor = nodeAccessor + AccessorChar.LoopScopeArray;\n const closureSignals = renderer.___closureSignals;\n const params = renderer.___args;\n return (\n scope: Scope,\n value: [unknown, (...args: unknown[]) => unknown],\n clean: boolean | 1,\n ) => {\n if (clean) {\n for (const childScope of scope[loopScopeAccessor]) {\n params?.(childScope, null, clean);\n for (const signal of closureSignals) {\n signal(childScope, clean);\n }\n }\n\n return;\n }\n\n const referenceNode = scope[nodeAccessor] as Element | Comment | Text;\n // TODO: compiler should use only comment so the text check can be removed\n const referenceIsMarker =\n referenceNode.nodeType === 8 /* Comment */ ||\n referenceNode.nodeType === 3; /* Text */\n const oldMap =\n (scope[nodeAccessor + AccessorChar.LoopScopeMap] as Map<\n unknown,\n Scope\n >) || (referenceIsMarker ? emptyMarkerMap : emptyMap);\n const oldArray =\n (scope[nodeAccessor + AccessorChar.LoopScopeArray] as Scope[]) ||\n Array.from(oldMap.values());\n\n let newMap!: Map<unknown, Scope>;\n let newArray!: Scope[];\n let afterReference: Node | null;\n let parentNode: Node & ParentNode;\n let needsReconciliation = true;\n\n forEach(value, (key, args) => {\n let childScope = oldMap.get(key);\n const isNew = !childScope;\n if (!childScope) {\n childScope = createScopeWithRenderer(renderer, scope.$global, scope);\n // TODO: once we can track moves\n // needsReconciliation = true;\n } else {\n // TODO: track if any childScope has changed index\n // needsReconciliation ||= oldArray[index] !== childScope;\n }\n if (params) {\n params(childScope, args);\n }\n if (closureSignals) {\n for (const signal of closureSignals) {\n signal(childScope, isNew);\n }\n }\n\n if (newMap) {\n newMap.set(key, childScope);\n newArray.push(childScope);\n } else {\n newMap = new Map([[key, childScope]]);\n newArray = [childScope];\n }\n });\n\n if (!newMap) {\n if (referenceIsMarker) {\n newMap = emptyMarkerMap;\n newArray = emptyMarkerArray;\n getEmptyScope(referenceNode as Comment);\n } else {\n // Fast path when loop is only child of parent\n if (renderer.___hasUserEffects) {\n for (let i = 0; i < oldArray.length; i++) {\n destroyScope(oldArray[i]);\n }\n }\n referenceNode.textContent = \"\";\n newMap = emptyMap;\n newArray = emptyArray;\n needsReconciliation = false;\n }\n }\n\n if (needsReconciliation) {\n if (referenceIsMarker) {\n if (oldMap === emptyMarkerMap) {\n getEmptyScope(referenceNode as Comment);\n }\n const oldLastChild = oldArray[oldArray.length - 1];\n afterReference = oldLastChild.___endNode.nextSibling;\n parentNode = oldLastChild.___startNode.parentNode!;\n } else {\n afterReference = null;\n parentNode = referenceNode as Element;\n }\n reconcile(parentNode, oldArray, newArray!, afterReference);\n }\n\n scope[nodeAccessor + AccessorChar.LoopScopeMap] = newMap;\n scope[nodeAccessor + AccessorChar.LoopScopeArray] = newArray;\n };\n}\n\n// TODO: remove this, use return from loop instead\nexport function inLoopScope(\n signal: IntersectionSignal,\n loopNodeAccessor: Accessor,\n) {\n const loopScopeAccessor = loopNodeAccessor + AccessorChar.LoopScopeArray;\n return (scope: Scope, clean?: boolean | 1) => {\n const loopScopes =\n scope[loopScopeAccessor] ??\n scope[loopNodeAccessor + AccessorChar.LoopScopeMap]?.values() ??\n [];\n for (const scope of loopScopes) {\n signal(scope, clean);\n }\n };\n}\n\nfunction keyBySecondArg(_item: unknown, index: unknown) {\n return index;\n}\n\nfunction keyByFirstArg(name: unknown) {\n return name;\n}\n", "type EventNames = keyof GlobalEventHandlersEventMap;\n\nconst elementHandlersByEvent = new Map<\n string,\n WeakMap<Element, undefined | ((...args: any[]) => void)>\n>();\nconst delegatedEventsByRoot = new WeakMap<Node, Set<string>>();\nconst eventOpts: AddEventListenerOptions = { capture: true };\n\nexport function on<\n T extends EventNames,\n H extends\n | false\n | null\n | undefined\n | ((ev: GlobalEventHandlersEventMap[T], target: Element) => void),\n>(element: Element, type: T, handler: H) {\n let handlersByElement = elementHandlersByEvent.get(type);\n\n if (!handlersByElement) {\n elementHandlersByEvent.set(type, (handlersByElement = new WeakMap()));\n }\n\n if (!handlersByElement.has(element)) {\n ensureDelegated(element, type);\n }\n\n handlersByElement.set(element, handler || undefined);\n}\n\nfunction ensureDelegated(node: Node, type: string) {\n const root = node.getRootNode();\n let delegatedEvents = delegatedEventsByRoot.get(root);\n\n if (!delegatedEvents) {\n delegatedEventsByRoot.set(root, (delegatedEvents = new Set()));\n }\n\n if (!delegatedEvents.has(type)) {\n delegatedEvents.add(type);\n root.addEventListener(type, handleDelegated, eventOpts);\n }\n}\n\nfunction handleDelegated(ev: GlobalEventHandlersEventMap[EventNames]) {\n let target = ev.target as Element | null;\n if (target) {\n const handlersByElement = elementHandlersByEvent.get(ev.type)!;\n handlersByElement.get(target)?.(ev, target);\n\n if (ev.bubbles) {\n while ((target = target.parentElement) && !ev.cancelBubble) {\n handlersByElement.get(target)?.(ev, target);\n }\n }\n }\n}\n", "import { ResumeSymbol, type Scope } from \"../common/types\";\nimport type { Renderer } from \"./renderer\";\nimport { bindFunction, bindRenderer } from \"./scope\";\nimport type { IntersectionSignal, ValueSignal } from \"./signals\";\n\ntype RegisteredFn<S extends Scope = Scope> = (scope: S) => void;\n\nconst registeredObjects = new Map<\n string,\n RegisteredFn | ValueSignal | Renderer\n>();\nconst doc = document;\n\nexport function register<T>(id: string, obj: T): T {\n registeredObjects.set(id, obj as any);\n return obj;\n}\n\nexport function getRegisteredWithScope(registryId: string, scope: Scope) {\n const obj = registeredObjects.get(registryId);\n if (!scope) {\n return obj;\n } else if ((obj as Renderer).___template) {\n return bindRenderer(scope, obj as Renderer);\n } else {\n return bindFunction(scope, obj as RegisteredFn);\n }\n}\n\nexport const scopeLookup = {} as Record<number | string, Scope>;\n\nexport function init(\n runtimeId = ResumeSymbol.DefaultRuntimeId /* [a-zA-Z0-9]+ */,\n) {\n const runtimeLength = runtimeId.length;\n const resumeVar = runtimeId + ResumeSymbol.VarResume;\n // TODO: check if this is a fakeArray\n // and warn in dev that there are conflicting runtime ids\n const initialHydration = (window as any)[resumeVar];\n const walker = doc.createTreeWalker(doc, 128 /** NodeFilter.SHOW_COMMENT */);\n\n let currentScopeId: number;\n let currentNode: Node & ChildNode;\n // const scopeLookup: Record<number, Scope> = {};\n const getScope = (id: number) =>\n scopeLookup[id] ?? (scopeLookup[id] = {} as Scope);\n const stack: number[] = [];\n const fakeArray = { push: resume };\n\n if (initialHydration) {\n for (let i = 0; i < initialHydration.length; i += 2) {\n resume(initialHydration[i], initialHydration[i + 1]);\n }\n } else {\n (window as any)[resumeVar] = fakeArray;\n }\n\n function resume(\n scopesFn:\n | null\n | ((\n b: typeof getRegisteredWithScope,\n s: typeof scopeLookup,\n ...rest: unknown[]\n ) => Record<string, Scope>),\n calls: Array<string | number>,\n ) {\n // TODO: Can be refactored/removed when adding runtimeId and componentIdPrefix\n /**\n * Necessary for injecting content into an existing document (e.g. microframe)\n */\n if (doc.readyState !== \"loading\") {\n walker.currentNode = doc;\n }\n\n if (scopesFn) {\n const scopes = scopesFn(getRegisteredWithScope, scopeLookup);\n scopeLookup.$global ||= scopes.$global || {};\n\n /**\n * Loop over all the new hydration scopes and see if a previous walk\n * had to create a dummy scope to store Nodes of interest.\n * If so merge them and set/replace the scope in the scopeLookup.\n */\n for (const scopeIdAsString in scopes) {\n if (scopeIdAsString === \"$global\") continue;\n const scopeId = parseInt(scopeIdAsString);\n const scope = scopes[scopeId];\n const storedScope = scopeLookup[scopeId];\n scope.$global = scopes.$global;\n if (storedScope !== scope) {\n scopeLookup[scopeId] = Object.assign(scope, storedScope) as Scope;\n }\n }\n }\n\n while ((currentNode = walker.nextNode() as ChildNode)) {\n const nodeValue = currentNode.nodeValue!;\n if (nodeValue.startsWith(runtimeId)) {\n const token = nodeValue[runtimeLength];\n const scopeId = parseInt(nodeValue.slice(runtimeLength + 1));\n const scope = getScope(scopeId);\n const data = nodeValue.slice(nodeValue.indexOf(\" \") + 1);\n\n if (token === ResumeSymbol.Node) {\n scope[data] = currentNode.previousSibling;\n } else if (token === ResumeSymbol.SectionStart) {\n stack.push(currentScopeId);\n currentScopeId = scopeId;\n scope.___startNode = currentNode;\n } else if (token === ResumeSymbol.SectionEnd) {\n scope[data] = currentNode;\n if (scopeId < currentScopeId) {\n const currScope = scopeLookup[currentScopeId];\n const currParent = currentNode.parentNode!;\n const startNode = currScope.___startNode as Node;\n if (currParent !== startNode.parentNode) {\n currParent.prepend(startNode);\n }\n currScope.___endNode = currentNode.previousSibling!;\n currentScopeId = stack.pop()!;\n }\n } else if (token === ResumeSymbol.SectionSingleNodesEnd) {\n scope[\n MARKO_DEBUG ? data.slice(0, data.indexOf(\" \")) : parseInt(data)\n ] = currentNode;\n // https://jsben.ch/dR7uk\n const childScopeIds = JSON.parse(\n \"[\" + data.slice(data.indexOf(\" \") + 1) + \"]\",\n );\n for (let i = childScopeIds.length - 1; i >= 0; i--) {\n const childScope = getScope(childScopeIds[i]);\n // TODO: consider whether the single node optimization\n // should only apply to elements which means could\n // use previousElementSibling instead of a while loop\n while (\n (currentNode = currentNode.previousSibling!).nodeType ===\n 8 /* Node.COMMENT_NODE */\n );\n // TODO: consider only setting ___startNode?\n childScope.___startNode = childScope.___endNode = currentNode;\n }\n }\n }\n }\n\n for (let i = 0; i < calls.length; i += 2) {\n (registeredObjects.get(calls[i + 1] as string) as RegisteredFn)(\n scopeLookup[calls[i] as number]!,\n );\n }\n }\n}\n\nexport function registerSubscriber(\n id: string,\n signal: IntersectionSignal,\n // ownerValueAccessor: string | number,\n // getOwnerScope = (scope: Scope) => scope._!\n) {\n register(id, signal.___subscribe!);\n return signal;\n\n // TODO: we need to handle the async case - DO NOT REMOVE UNTIL WE DO\n // const ownerMarkAccessor = ownerValueAccessor + AccessorChars.MARK;\n // const ownerSubscribersAccessor =\n // ownerValueAccessor + AccessorChars.SUBSCRIBERS;\n\n // register(id, (subscriberScope: Scope) => {\n // const ownerScope = getOwnerScope(subscriberScope);\n // const boundSignal = bindFunction(subscriberScope, signal);\n // const ownerMark = ownerScope[ownerMarkAccessor];\n // (ownerScope[ownerSubscribersAccessor] ??= new Set()).add(boundSignal);\n\n // // TODO: if the mark is not undefined, it means the value was updated clientside\n // // before this subscriber was flushed.\n // if (ownerMark === 0) {\n // // the value has finished updating\n // // we should trigger an update to `signal`\n // } else if (ownerMark >= 1) {\n // // the value is queued for update\n // // we should mark `signal` and let it be updated when the owner is updated\n // }\n // });\n}\n", "import { run } from \"./queue\";\n\nconst port2 = /* @__PURE__ */ (() => {\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = () => {\n isScheduled = false;\n run();\n };\n return port2;\n})();\n\nexport let isScheduled: boolean;\n\nexport function schedule() {\n if (!isScheduled) {\n isScheduled = true;\n queueMicrotask(flushAndWaitFrame);\n }\n}\n\nfunction flushAndWaitFrame() {\n run();\n requestAnimationFrame(triggerMacroTask);\n}\n\nfunction triggerMacroTask() {\n port2.postMessage(0);\n}\n", "import type { Scope } from \"../common/types\";\nimport { schedule } from \"./schedule\";\nimport type { ValueSignal } from \"./signals\";\n\nconst enum BatchOffset {\n Scope = 0,\n Signal = 1,\n Value = 2,\n Total = 3,\n}\n\nconst enum EffectOffset {\n Scope = 0,\n Function = 1,\n Total = 2,\n}\n\ntype ExecFn<S extends Scope = Scope> = (scope: S, arg?: any) => void;\n\nlet currentBatch: unknown[] = [];\nlet currentEffects: unknown[] = [];\n\nexport function queueSource<T>(scope: Scope, signal: ValueSignal, value: T) {\n schedule();\n signal(scope, 0, 1);\n currentBatch.push(scope, signal, value);\n return value;\n}\n\nexport function queueEffect<S extends Scope, T extends ExecFn<S>>(\n scope: S,\n fn: T,\n) {\n currentEffects.push(scope, fn);\n}\n\nexport function run() {\n try {\n runBatch();\n } finally {\n currentBatch = [];\n }\n try {\n runEffects();\n } finally {\n currentEffects = [];\n }\n}\n\nexport function runSync(fn: () => void) {\n const prevBatch = currentBatch;\n const prevEffects = currentEffects;\n currentBatch = [];\n currentEffects = [];\n try {\n fn();\n runBatch();\n currentBatch = prevBatch;\n runEffects();\n } finally {\n currentBatch = prevBatch;\n currentEffects = prevEffects;\n }\n}\n\nexport function prepare(fn: () => void) {\n const prevBatch = currentBatch;\n const prevEffects = currentEffects;\n const preparedEffects = (currentEffects = []);\n currentBatch = [];\n try {\n fn();\n runBatch();\n } finally {\n currentBatch = prevBatch;\n currentEffects = prevEffects;\n }\n return preparedEffects;\n}\n\nexport function runEffects(effects: unknown[] = currentEffects) {\n for (let i = 0; i < effects.length; i += EffectOffset.Total) {\n const scope = effects[i] as Scope;\n const fn = effects[i + 1] as (scope: Scope) => void;\n fn(scope);\n }\n}\n\nfunction runBatch() {\n for (let i = 0; i < currentBatch.length; i += BatchOffset.Total) {\n const scope = currentBatch[i + BatchOffset.Scope] as Scope;\n const signal = currentBatch[i + BatchOffset.Signal] as ValueSignal;\n const value = currentBatch[i + BatchOffset.Value] as unknown;\n signal(scope, value);\n }\n}\n", "import type {\n Template,\n Input,\n TemplateInstance,\n Scope,\n RenderResult,\n} from \"../common/types\";\nimport { prepare, runEffects, runSync } from \"./queue\";\nimport { type Renderer, initRenderer } from \"./renderer\";\nimport { register } from \"./resume\";\nimport { createScope, removeAndDestroyScope } from \"./scope\";\n\nexport const createTemplate = (renderer: Renderer, templateId?: string) =>\n register(templateId!, new ClientTemplate(renderer));\n\nexport class ClientTemplate implements Template {\n public _: Renderer;\n\n constructor(renderer: Renderer) {\n this._ = renderer;\n }\n\n mount(\n templateInput: Input & { $global?: Record<string, unknown> } = {},\n reference: ParentNode & Node,\n position?: InsertPosition,\n ): TemplateInstance {\n let scope!: Scope, dom!: Node;\n const { $global = {}, ...input } = templateInput;\n const args = this._.___args;\n const effects = prepare(() => {\n scope = createScope($global);\n dom = initRenderer(this._, scope);\n if (args) {\n args(scope, [input]);\n }\n });\n\n /*\n <!-- beforebegin -->\n <reference>\n <!-- afterbegin -->\n foo\n <!-- beforeend -->\n </reference>\n <!-- afterend -->\n */\n\n switch (position) {\n case \"afterbegin\":\n reference.insertBefore(dom, reference.firstChild);\n break;\n case \"afterend\":\n reference.parentElement!.insertBefore(dom, reference.nextSibling);\n break;\n case \"beforebegin\":\n reference.parentElement!.insertBefore(dom, reference);\n break;\n default:\n reference.appendChild(dom);\n break;\n }\n\n runEffects(effects);\n\n return {\n update: (newInput: unknown) => {\n if (args) {\n runSync(() => {\n args(scope, null, 1);\n args(scope, [newInput]);\n });\n }\n },\n destroy: () => {\n removeAndDestroyScope(scope);\n },\n };\n }\n\n render(): RenderResult {\n throw new Error(\n `render() is not implemented for the DOM compilation of a Marko template`,\n );\n }\n}\n", "import { patchConditionals } from \"./control-flow\";\nimport { prepare, queueEffect, runEffects } from \"./queue\";\nimport {\n createRenderer,\n createScopeWithRenderer,\n type Renderer,\n} from \"./renderer\";\nimport { getRegisteredWithScope, register, scopeLookup } from \"./resume\";\n\nexport const compat = {\n register,\n patchConditionals,\n queueEffect,\n isRenderer(renderer: any) {\n return renderer.___clone !== undefined;\n },\n getStartNode(scope: any) {\n return scope.___startNode;\n },\n setScopeNodes(scope: any, startNode: Node, endNode: Node) {\n scope.___startNode = startNode;\n scope.___endNode = endNode;\n },\n runComponentEffects(this: any) {\n runEffects(this.effects);\n },\n resolveRenderer(renderer: any) {\n if (renderer && typeof renderer === \"object\") {\n if (Array.isArray(renderer)) {\n const [registerId, scopeId] = renderer;\n const scope = scopeLookup[scopeId];\n return getRegisteredWithScope(registerId, scope);\n }\n\n if (renderer.___clone) {\n return renderer;\n }\n }\n },\n createRenderer(\n setup: Renderer[\"___setup\"],\n clone: Renderer[\"___clone\"],\n args: Renderer[\"___args\"],\n ) {\n const renderer = createRenderer(\"\", undefined, setup, undefined, 1, args);\n renderer.___clone = clone;\n return renderer;\n },\n render(\n isHydrate: boolean,\n out: any,\n component: any,\n renderer: Renderer,\n input: any,\n ) {\n const args = renderer.___args || noop;\n let existing = false;\n let scope: any = isHydrate\n ? (component.scope =\n scopeLookup[(out.global.componentIdToScopeId as any)[component.id]])\n : component.scope;\n\n component.effects = prepare(() => {\n if (!scope) {\n scope = component.scope = createScopeWithRenderer(renderer, out.global);\n const closures = renderer.___closureSignals;\n if (closures) {\n for (const signal of closures) {\n signal(component.scope, true);\n }\n }\n } else {\n args(scope, input, 1);\n existing = true;\n }\n args(scope, input);\n });\n\n if (!existing) {\n return scope.___startNode === scope.___endNode\n ? scope.___startNode\n : scope.___startNode.parentNode;\n }\n },\n};\n\nfunction noop() {}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["value", "value", "value", "value", "doc", "parser", "intersection", "ownerValueAccessor", "tagVarSignal", "value", "conditional", "dynamicTagAttrs", "intersection", "conditionalOnlyChild", "value", "scope", "doc", "walker", "data", "port2", "value"]
|
|
7
|
-
}
|