@marko/runtime-tags 0.1.2 → 0.1.4

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 CHANGED
@@ -27,6 +27,7 @@ __export(dom_exports, {
27
27
  childClosures: () => childClosures,
28
28
  classAttr: () => classAttr,
29
29
  closure: () => closure,
30
+ compat: () => compat,
30
31
  conditional: () => conditional,
31
32
  conditionalOnlyChild: () => conditionalOnlyChild,
32
33
  createRenderer: () => createRenderer,
@@ -53,7 +54,6 @@ __export(dom_exports, {
53
54
  loopTo: () => loopTo,
54
55
  nextTagId: () => nextTagId,
55
56
  on: () => on,
56
- patchConditionals: () => patchConditionals,
57
57
  prepare: () => prepare,
58
58
  props: () => props,
59
59
  queueEffect: () => queueEffect,
@@ -1408,4 +1408,65 @@ var ClientTemplate = class {
1408
1408
  );
1409
1409
  }
1410
1410
  };
1411
- //# sourceMappingURL=dom.js.map
1411
+
1412
+ // src/dom/compat.ts
1413
+ var compat = {
1414
+ register,
1415
+ patchConditionals,
1416
+ queueEffect,
1417
+ isRenderer(renderer) {
1418
+ return renderer.___clone !== void 0;
1419
+ },
1420
+ getStartNode(scope) {
1421
+ return scope.___startNode;
1422
+ },
1423
+ setScopeNodes(scope, startNode, endNode) {
1424
+ scope.___startNode = startNode;
1425
+ scope.___endNode = endNode;
1426
+ },
1427
+ runComponentEffects() {
1428
+ runEffects(this.effects);
1429
+ },
1430
+ resolveRenderer(renderer) {
1431
+ if (renderer && typeof renderer === "object") {
1432
+ if (Array.isArray(renderer)) {
1433
+ const [registerId, scopeId] = renderer;
1434
+ const scope = scopeLookup[scopeId];
1435
+ return getRegisteredWithScope(registerId, scope);
1436
+ }
1437
+ if (renderer.___clone) {
1438
+ return renderer;
1439
+ }
1440
+ }
1441
+ },
1442
+ createRenderer(setup, clone, args) {
1443
+ const renderer = createRenderer("", void 0, setup, void 0, 1, args);
1444
+ renderer.___clone = clone;
1445
+ return renderer;
1446
+ },
1447
+ render(isHydrate, out, component, renderer, input) {
1448
+ const args = renderer.___args || noop;
1449
+ let existing = false;
1450
+ let scope = isHydrate ? component.scope = scopeLookup[out.global.componentIdToScopeId[component.id]] : component.scope;
1451
+ component.effects = prepare(() => {
1452
+ if (!scope) {
1453
+ scope = component.scope = createScopeWithRenderer(renderer, out.global);
1454
+ const closures = renderer.___closureSignals;
1455
+ if (closures) {
1456
+ for (const signal of closures) {
1457
+ signal(component.scope, true);
1458
+ }
1459
+ }
1460
+ } else {
1461
+ args(scope, input, 1);
1462
+ existing = true;
1463
+ }
1464
+ args(scope, input);
1465
+ });
1466
+ if (!existing) {
1467
+ return scope.___startNode === scope.___endNode ? scope.___startNode : scope.___startNode.parentNode;
1468
+ }
1469
+ }
1470
+ };
1471
+ function noop() {
1472
+ }
@@ -1333,6 +1333,68 @@ var ClientTemplate = class {
1333
1333
  );
1334
1334
  }
1335
1335
  };
1336
+
1337
+ // src/dom/compat.ts
1338
+ var compat = {
1339
+ register,
1340
+ patchConditionals,
1341
+ queueEffect,
1342
+ isRenderer(renderer) {
1343
+ return renderer.___clone !== void 0;
1344
+ },
1345
+ getStartNode(scope) {
1346
+ return scope.___startNode;
1347
+ },
1348
+ setScopeNodes(scope, startNode, endNode) {
1349
+ scope.___startNode = startNode;
1350
+ scope.___endNode = endNode;
1351
+ },
1352
+ runComponentEffects() {
1353
+ runEffects(this.effects);
1354
+ },
1355
+ resolveRenderer(renderer) {
1356
+ if (renderer && typeof renderer === "object") {
1357
+ if (Array.isArray(renderer)) {
1358
+ const [registerId, scopeId] = renderer;
1359
+ const scope = scopeLookup[scopeId];
1360
+ return getRegisteredWithScope(registerId, scope);
1361
+ }
1362
+ if (renderer.___clone) {
1363
+ return renderer;
1364
+ }
1365
+ }
1366
+ },
1367
+ createRenderer(setup, clone, args) {
1368
+ const renderer = createRenderer("", void 0, setup, void 0, 1, args);
1369
+ renderer.___clone = clone;
1370
+ return renderer;
1371
+ },
1372
+ render(isHydrate, out, component, renderer, input) {
1373
+ const args = renderer.___args || noop;
1374
+ let existing = false;
1375
+ let scope = isHydrate ? component.scope = scopeLookup[out.global.componentIdToScopeId[component.id]] : component.scope;
1376
+ component.effects = prepare(() => {
1377
+ if (!scope) {
1378
+ scope = component.scope = createScopeWithRenderer(renderer, out.global);
1379
+ const closures = renderer.___closureSignals;
1380
+ if (closures) {
1381
+ for (const signal of closures) {
1382
+ signal(component.scope, true);
1383
+ }
1384
+ }
1385
+ } else {
1386
+ args(scope, input, 1);
1387
+ existing = true;
1388
+ }
1389
+ args(scope, input);
1390
+ });
1391
+ if (!existing) {
1392
+ return scope.___startNode === scope.___endNode ? scope.___startNode : scope.___startNode.parentNode;
1393
+ }
1394
+ }
1395
+ };
1396
+ function noop() {
1397
+ }
1336
1398
  export {
1337
1399
  attr,
1338
1400
  attrs,
@@ -1341,6 +1403,7 @@ export {
1341
1403
  childClosures,
1342
1404
  classAttr,
1343
1405
  closure,
1406
+ compat,
1344
1407
  conditional,
1345
1408
  conditionalOnlyChild,
1346
1409
  createRenderer,
@@ -1367,7 +1430,6 @@ export {
1367
1430
  loopTo,
1368
1431
  nextTagId,
1369
1432
  on,
1370
- patchConditionals,
1371
1433
  prepare,
1372
1434
  props,
1373
1435
  queueEffect,
@@ -1385,4 +1447,3 @@ export {
1385
1447
  values,
1386
1448
  write
1387
1449
  };
1388
- //# sourceMappingURL=dom.mjs.map
@@ -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
@@ -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
@@ -0,0 +1,16 @@
1
+ import { patchConditionals } from "./control-flow";
2
+ import { queueEffect } from "./queue";
3
+ import { type Renderer } from "./renderer";
4
+ import { register } from "./resume";
5
+ export declare const compat: {
6
+ register: typeof register;
7
+ patchConditionals: typeof patchConditionals;
8
+ queueEffect: typeof queueEffect;
9
+ isRenderer(renderer: any): boolean;
10
+ getStartNode(scope: any): any;
11
+ setScopeNodes(scope: any, startNode: Node, endNode: Node): void;
12
+ runComponentEffects(this: any): void;
13
+ resolveRenderer(renderer: any): any;
14
+ createRenderer(setup: Renderer["___setup"], clone: Renderer["___clone"], args: Renderer["___args"]): Renderer;
15
+ render(isHydrate: boolean, out: any, component: any, renderer: Renderer, input: any): any;
16
+ };
package/dist/dom.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { conditional, conditionalOnlyChild, inConditionalScope, loopOf, loopIn, loopTo, inLoopScope, patchConditionals, } from "./dom/control-flow";
1
+ export { conditional, conditionalOnlyChild, inConditionalScope, loopOf, loopIn, loopTo, inLoopScope, } from "./dom/control-flow";
2
2
  export { data, html, attr, attrs, classAttr, styleAttr, props, lifecycle, } from "./dom/dom";
3
3
  export { resetAbortSignal, getAbortSignal } from "./dom/abort-signal";
4
4
  export { on } from "./dom/event";
@@ -9,3 +9,4 @@ export type { Scope } from "./common/types";
9
9
  export { createRenderer, dynamicTagAttrs, createScopeWithRenderer, } from "./dom/renderer";
10
10
  export { createTemplate } from "./dom/template";
11
11
  export { value, initValue, intersection, closure, dynamicClosure, dynamicSubscribers, childClosures, setTagVar, tagVarSignal, nextTagId, inChild, values, intersections, } from "./dom/signals";
12
+ export { compat } from "./dom/compat";
package/dist/dom.js CHANGED
@@ -24,6 +24,7 @@ __export(dom_exports, {
24
24
  childClosures: () => childClosures,
25
25
  classAttr: () => classAttr,
26
26
  closure: () => closure,
27
+ compat: () => compat,
27
28
  conditional: () => conditional,
28
29
  conditionalOnlyChild: () => conditionalOnlyChild,
29
30
  createRenderer: () => createRenderer,
@@ -50,7 +51,6 @@ __export(dom_exports, {
50
51
  loopTo: () => loopTo,
51
52
  nextTagId: () => nextTagId,
52
53
  on: () => on,
53
- patchConditionals: () => patchConditionals,
54
54
  prepare: () => prepare,
55
55
  props: () => props,
56
56
  queueEffect: () => queueEffect,
@@ -73,26 +73,26 @@ module.exports = __toCommonJS(dom_exports);
73
73
  // src/dom/scope.ts
74
74
  function createScope($global) {
75
75
  let scope = {};
76
- return scope.o = !0, scope.$global = $global, scope;
76
+ return scope.p = !0, scope.$global = $global, scope;
77
77
  }
78
78
  var emptyScope = createScope({});
79
79
  function getEmptyScope(marker) {
80
- return emptyScope.a = emptyScope.c = marker, emptyScope;
80
+ return emptyScope.a = emptyScope.b = marker, emptyScope;
81
81
  }
82
82
  function write(scope, localIndex, value2) {
83
83
  return scope[localIndex] !== value2 ? (scope[localIndex] = value2, 1) : 0;
84
84
  }
85
85
  function binder(bind) {
86
86
  return (scope, value2) => {
87
- scope.h ??= /* @__PURE__ */ new Map();
88
- let bound = scope.h.get(value2);
89
- return bound || (bound = bind(scope, value2), scope.h.set(value2, bound)), bound;
87
+ scope.i ??= /* @__PURE__ */ new Map();
88
+ let bound = scope.i.get(value2);
89
+ return bound || (bound = bind(scope, value2), scope.i.set(value2, bound)), bound;
90
90
  };
91
91
  }
92
92
  var bindRenderer = binder(
93
93
  (ownerScope, renderer) => renderer && {
94
94
  ...renderer,
95
- i: ownerScope
95
+ j: ownerScope
96
96
  }
97
97
  ), bindFunction = binder(
98
98
  (boundScope, fn) => fn.length ? function(...args) {
@@ -102,38 +102,38 @@ var bindRenderer = binder(
102
102
  }
103
103
  );
104
104
  function destroyScope(scope) {
105
- _destroyScope(scope), scope._?.f?.delete(scope);
106
- let closureSignals = scope.p?.b;
105
+ _destroyScope(scope), scope._?.g?.delete(scope);
106
+ let closureSignals = scope.q?.c;
107
107
  if (closureSignals)
108
108
  for (let signal of closureSignals)
109
- signal.g?.(scope);
109
+ signal.h?.(scope);
110
110
  return scope;
111
111
  }
112
112
  function _destroyScope(scope) {
113
- let cleanup = scope.f;
113
+ let cleanup = scope.g;
114
114
  if (cleanup)
115
115
  for (let instance of cleanup)
116
116
  _destroyScope(instance);
117
- let controllers = scope.j;
117
+ let controllers = scope.k;
118
118
  if (controllers)
119
119
  for (let ctrl of controllers.values())
120
120
  ctrl.abort();
121
121
  }
122
122
  function onDestroy(scope) {
123
123
  let parentScope = scope._;
124
- for (; parentScope && !parentScope.f?.has(scope); )
125
- (parentScope.f ||= /* @__PURE__ */ new Set()).add(scope), scope = parentScope, parentScope = scope._;
124
+ for (; parentScope && !parentScope.g?.has(scope); )
125
+ (parentScope.g ||= /* @__PURE__ */ new Set()).add(scope), scope = parentScope, parentScope = scope._;
126
126
  }
127
127
  function removeAndDestroyScope(scope) {
128
128
  destroyScope(scope);
129
- let current = scope.a, stop = scope.c.nextSibling;
129
+ let current = scope.a, stop = scope.b.nextSibling;
130
130
  for (; current !== stop; ) {
131
131
  let next = current.nextSibling;
132
132
  current.remove(), current = next;
133
133
  }
134
134
  }
135
135
  function insertBefore(scope, parent, nextSibling) {
136
- let current = scope.a, stop = scope.c.nextSibling;
136
+ let current = scope.a, stop = scope.b.nextSibling;
137
137
  for (; current !== stop; ) {
138
138
  let next = current.nextSibling;
139
139
  parent.insertBefore(current, nextSibling), current = next;
@@ -259,14 +259,14 @@ function isVoid(value2) {
259
259
 
260
260
  // src/dom/abort-signal.ts
261
261
  function resetAbortSignal(scope, id) {
262
- let controllers = scope.j;
262
+ let controllers = scope.k;
263
263
  if (controllers) {
264
264
  let ctrl = controllers.get(id);
265
265
  ctrl && (ctrl.abort(), controllers.delete(id));
266
266
  }
267
267
  }
268
268
  function getAbortSignal(scope, id) {
269
- let controllers = scope.j ??= /* @__PURE__ */ new Map(), controller = controllers.get(id);
269
+ let controllers = scope.k ??= /* @__PURE__ */ new Map(), controller = controllers.get(id);
270
270
  return controller || (onDestroy(scope), controllers.set(id, controller = new AbortController())), controller.signal;
271
271
  }
272
272
 
@@ -378,18 +378,18 @@ function walkInternal(walkCodes, scope, currentWalkIndex) {
378
378
  // src/dom/renderer.ts
379
379
  function createScopeWithRenderer(renderer, $global, ownerScope) {
380
380
  let newScope = createScope($global);
381
- if (newScope._ = renderer.i || ownerScope, newScope.p = renderer, initRenderer(renderer, newScope), renderer.b)
382
- for (let signal of renderer.b)
381
+ if (newScope._ = renderer.j || ownerScope, newScope.q = renderer, initRenderer(renderer, newScope), renderer.c)
382
+ for (let signal of renderer.c)
383
383
  signal.e?.(newScope);
384
384
  return newScope;
385
385
  }
386
386
  function initRenderer(renderer, scope) {
387
- let dom = typeof renderer == "string" ? document.createElement(renderer) : renderer.q();
387
+ let dom = typeof renderer == "string" ? document.createElement(renderer) : renderer.f();
388
388
  return walk(
389
389
  dom.nodeType === 11 /* DocumentFragment */ ? dom.firstChild : dom,
390
- renderer.k ?? " ",
390
+ renderer.l ?? " ",
391
391
  scope
392
- ), scope.a = dom.nodeType === 11 /* DocumentFragment */ ? dom.firstChild : dom, scope.c = dom.nodeType === 11 /* DocumentFragment */ ? dom.lastChild : dom, renderer.l && renderer.l(scope), dom;
392
+ ), scope.a = dom.nodeType === 11 /* DocumentFragment */ ? dom.firstChild : dom, scope.b = dom.nodeType === 11 /* DocumentFragment */ ? dom.lastChild : dom, renderer.m && renderer.m(scope), dom;
393
393
  }
394
394
  function dynamicTagAttrs(nodeAccessor, renderBody, inputIsArgs) {
395
395
  return (scope, getAttrs, clean) => {
@@ -423,23 +423,23 @@ function dynamicTagAttrs(nodeAccessor, renderBody, inputIsArgs) {
423
423
  }
424
424
  function createRenderer(template, walks, setup, closureSignals, hasUserEffects = 0, args) {
425
425
  return {
426
- m: template,
427
- k: walks && /* @__PURE__ */ trimWalkString(walks),
428
- l: setup,
429
- q: _clone,
430
- b: new Set(closureSignals),
426
+ n: template,
427
+ l: walks && /* @__PURE__ */ trimWalkString(walks),
428
+ m: setup,
429
+ f: _clone,
430
+ c: new Set(closureSignals),
431
431
  r: hasUserEffects,
432
- n: void 0,
432
+ o: void 0,
433
433
  d: args,
434
- i: void 0
434
+ j: void 0
435
435
  };
436
436
  }
437
437
  function _clone() {
438
- let sourceNode = this.n;
438
+ let sourceNode = this.o;
439
439
  if (!sourceNode) {
440
- let walks = this.k, ensureFragment = walks && walks.length < 4 && walks.charCodeAt(walks.length - 1) !== 32 /* Get */;
441
- this.n = sourceNode = parse(
442
- this.m,
440
+ let walks = this.l, ensureFragment = walks && walks.length < 4 && walks.charCodeAt(walks.length - 1) !== 32 /* Get */;
441
+ this.o = sourceNode = parse(
442
+ this.n,
443
443
  ensureFragment
444
444
  );
445
445
  }
@@ -484,7 +484,7 @@ function closure(ownerValueAccessor, fn, _getOwnerScope, intersection2, valueWit
484
484
  currentMark = scope[markAccessor] = (scope[markAccessor] ?? 0) + 1;
485
485
  else if (scope[markAccessor] === void 0) {
486
486
  ownerScope = getOwnerScope(scope), ownerValueAccessor2 = getOwnerValueAccessor(scope);
487
- let ownerMark = ownerScope[ownerValueAccessor2 + "#" /* Mark */], ownerHasRun = ownerMark === void 0 ? !ownerScope.o : ownerMark === 0;
487
+ let ownerMark = ownerScope[ownerValueAccessor2 + "#" /* Mark */], ownerHasRun = ownerMark === void 0 ? !ownerScope.p : ownerMark === 0;
488
488
  scope[markAccessor] = (currentMark = ownerHasRun ? 1 : 2) - 1, clean = void 0;
489
489
  } else
490
490
  currentMark = scope[markAccessor]--, clean = scope[cleanAccessor] &&= clean;
@@ -506,7 +506,7 @@ function dynamicClosure(ownerValueAccessor, fn, _getOwnerScope, intersection2, v
506
506
  bindFunction(scope, signalFn)
507
507
  );
508
508
  },
509
- g(scope) {
509
+ h(scope) {
510
510
  let ownerScope = getOwnerScope(scope), providerSubscriptionsAccessor = getOwnerValueAccessor(scope) + "*" /* Subscribers */;
511
511
  ownerScope[providerSubscriptionsAccessor]?.delete(
512
512
  bindFunction(scope, signalFn)
@@ -525,10 +525,10 @@ function childClosures(closureSignals, childAccessor) {
525
525
  for (let closureSignal of closureSignals)
526
526
  closureSignal.e?.(childScope);
527
527
  },
528
- g(scope) {
528
+ h(scope) {
529
529
  let childScope = scope[childAccessor];
530
530
  for (let closureSignal of closureSignals)
531
- closureSignal.g?.(childScope);
531
+ closureSignal.h?.(childScope);
532
532
  }
533
533
  });
534
534
  }
@@ -548,7 +548,7 @@ function setTagVar(scope, childAccessor, tagVarSignal2) {
548
548
  );
549
549
  }
550
550
  var tagVarSignal = (scope, value2, clean) => scope["/" /* TagVariable */]?.(value2, clean), renderBodyClosures = (renderBody, childScope, clean) => {
551
- let signals = renderBody?.b;
551
+ let signals = renderBody?.c;
552
552
  if (signals)
553
553
  for (let signal of signals)
554
554
  signal(childScope, clean);
@@ -593,7 +593,7 @@ function inConditionalScope(signal, nodeAccessor) {
593
593
  let conditionalScope = scope[scopeAccessor];
594
594
  if (conditionalScope) {
595
595
  let conditionalRenderer = scope[rendererAccessor];
596
- (!conditionalRenderer?.b || conditionalRenderer.b.has(signal)) && signal(conditionalScope, clean);
596
+ (!conditionalRenderer?.c || conditionalRenderer.c.has(signal)) && signal(conditionalScope, clean);
597
597
  }
598
598
  };
599
599
  }
@@ -649,7 +649,7 @@ function loopTo(nodeAccessor, renderer) {
649
649
  });
650
650
  }
651
651
  function loop(nodeAccessor, renderer, forEach) {
652
- let loopScopeAccessor = nodeAccessor + "!" /* LoopScopeArray */, closureSignals = renderer.b, params = renderer.d;
652
+ let loopScopeAccessor = nodeAccessor + "!" /* LoopScopeArray */, closureSignals = renderer.c, params = renderer.d;
653
653
  return (scope, value2, clean) => {
654
654
  if (clean) {
655
655
  for (let childScope of scope[loopScopeAccessor]) {
@@ -679,7 +679,7 @@ function loop(nodeAccessor, renderer, forEach) {
679
679
  if (referenceIsMarker) {
680
680
  oldMap === emptyMarkerMap && getEmptyScope(referenceNode);
681
681
  let oldLastChild = oldArray[oldArray.length - 1];
682
- afterReference = oldLastChild.c.nextSibling, parentNode = oldLastChild.a.parentNode;
682
+ afterReference = oldLastChild.b.nextSibling, parentNode = oldLastChild.a.parentNode;
683
683
  } else
684
684
  afterReference = null, parentNode = referenceNode;
685
685
  reconcile(parentNode, oldArray, newArray, afterReference);
@@ -729,7 +729,7 @@ function register(id, obj) {
729
729
  }
730
730
  function getRegisteredWithScope(registryId, scope) {
731
731
  let obj = registeredObjects.get(registryId);
732
- return scope ? obj.m ? bindRenderer(scope, obj) : bindFunction(scope, obj) : obj;
732
+ return scope ? obj.n ? bindRenderer(scope, obj) : bindFunction(scope, obj) : obj;
733
733
  }
734
734
  var scopeLookup = {};
735
735
  function init(runtimeId = "M" /* DefaultRuntimeId */) {
@@ -765,7 +765,7 @@ function init(runtimeId = "M" /* DefaultRuntimeId */) {
765
765
  else if (token === "]" /* SectionEnd */) {
766
766
  if (scope[data2] = currentNode, scopeId < currentScopeId) {
767
767
  let currScope = scopeLookup[currentScopeId], currParent = currentNode.parentNode, startNode = currScope.a;
768
- currParent !== startNode.parentNode && currParent.prepend(startNode), currScope.c = currentNode.previousSibling, currentScopeId = stack.pop();
768
+ currParent !== startNode.parentNode && currParent.prepend(startNode), currScope.b = currentNode.previousSibling, currentScopeId = stack.pop();
769
769
  }
770
770
  } else if (token === "|" /* SectionSingleNodesEnd */) {
771
771
  scope[parseInt(data2)] = currentNode;
@@ -776,7 +776,7 @@ function init(runtimeId = "M" /* DefaultRuntimeId */) {
776
776
  let childScope = getScope(childScopeIds[i]);
777
777
  for (; (currentNode = currentNode.previousSibling).nodeType === 8; )
778
778
  ;
779
- childScope.a = childScope.c = currentNode;
779
+ childScope.a = childScope.b = currentNode;
780
780
  }
781
781
  }
782
782
  }
@@ -901,4 +901,54 @@ var createTemplate = (renderer, templateId) => register(templateId, new ClientTe
901
901
  );
902
902
  }
903
903
  };
904
- //# sourceMappingURL=dom.js.map
904
+
905
+ // src/dom/compat.ts
906
+ var compat = {
907
+ register,
908
+ patchConditionals,
909
+ queueEffect,
910
+ isRenderer(renderer) {
911
+ return renderer.f !== void 0;
912
+ },
913
+ getStartNode(scope) {
914
+ return scope.a;
915
+ },
916
+ setScopeNodes(scope, startNode, endNode) {
917
+ scope.a = startNode, scope.b = endNode;
918
+ },
919
+ runComponentEffects() {
920
+ runEffects(this.effects);
921
+ },
922
+ resolveRenderer(renderer) {
923
+ if (renderer && typeof renderer == "object") {
924
+ if (Array.isArray(renderer)) {
925
+ let [registerId, scopeId] = renderer, scope = scopeLookup[scopeId];
926
+ return getRegisteredWithScope(registerId, scope);
927
+ }
928
+ if (renderer.f)
929
+ return renderer;
930
+ }
931
+ },
932
+ createRenderer(setup, clone, args) {
933
+ let renderer = createRenderer("", void 0, setup, void 0, 1, args);
934
+ return renderer.f = clone, renderer;
935
+ },
936
+ render(isHydrate, out, component, renderer, input) {
937
+ let args = renderer.d || noop, existing = !1, scope = isHydrate ? component.scope = scopeLookup[out.global.componentIdToScopeId[component.id]] : component.scope;
938
+ if (component.effects = prepare(() => {
939
+ if (scope)
940
+ args(scope, input, 1), existing = !0;
941
+ else {
942
+ scope = component.scope = createScopeWithRenderer(renderer, out.global);
943
+ let closures = renderer.c;
944
+ if (closures)
945
+ for (let signal of closures)
946
+ signal(component.scope, !0);
947
+ }
948
+ args(scope, input);
949
+ }), !existing)
950
+ return scope.a === scope.b ? scope.a : scope.a.parentNode;
951
+ }
952
+ };
953
+ function noop() {
954
+ }