ripple 0.4.2 → 0.4.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +164 -0
  2. package/package.json +10 -4
  3. package/src/constants.js +6 -0
  4. package/src/jsx-runtime.d.ts +2 -1
  5. package/src/runtime/array.js +15 -9
  6. package/src/runtime/index-client.js +25 -7
  7. package/src/runtime/index-server.js +1 -0
  8. package/src/runtime/internal/client/attributes.js +439 -0
  9. package/src/runtime/internal/client/blocks.js +20 -20
  10. package/src/runtime/internal/client/component.js +2 -5
  11. package/src/runtime/internal/client/composite.js +295 -95
  12. package/src/runtime/internal/client/constants.js +14 -6
  13. package/src/runtime/internal/client/context.js +3 -2
  14. package/src/runtime/internal/client/css.js +11 -26
  15. package/src/runtime/internal/client/errors.js +188 -0
  16. package/src/runtime/internal/client/events.js +79 -34
  17. package/src/runtime/internal/client/expression.js +25 -120
  18. package/src/runtime/internal/client/for.js +113 -262
  19. package/src/runtime/internal/client/head.js +4 -3
  20. package/src/runtime/internal/client/html.js +5 -3
  21. package/src/runtime/internal/client/hydrate.js +484 -0
  22. package/src/runtime/internal/client/hydration-enabled.js +7 -0
  23. package/src/runtime/internal/client/hydration.js +16 -81
  24. package/src/runtime/internal/client/if.js +69 -10
  25. package/src/runtime/internal/client/index.js +18 -10
  26. package/src/runtime/internal/client/operations.js +11 -7
  27. package/src/runtime/internal/client/portal.js +3 -2
  28. package/src/runtime/internal/client/render.js +42 -325
  29. package/src/runtime/internal/client/root-boundary-enabled.js +7 -0
  30. package/src/runtime/internal/client/runtime.js +157 -371
  31. package/src/runtime/internal/client/template-ns.js +88 -0
  32. package/src/runtime/internal/client/template.js +118 -139
  33. package/src/runtime/internal/client/track-async.js +356 -0
  34. package/src/runtime/internal/client/try.js +133 -319
  35. package/src/runtime/internal/client/types.d.ts +48 -24
  36. package/src/runtime/internal/server/index.js +31 -29
  37. package/src/runtime/internal/server/prerender.js +27 -0
  38. package/src/server/index.js +1 -0
  39. package/src/utils/class-name.js +28 -0
  40. package/tests/client/basic/basic.errors.test.tsrx +3 -3
  41. package/tests/client/compiler/__snapshots__/compiler.typescript.test.tsrx.snap +0 -2
  42. package/tests/client/compiler/compiler.basic.test.tsrx +2 -2
  43. package/tests/client/compiler/compiler.tracked-access.test.tsrx +3 -3
  44. package/tests/client/composite/composite.dynamic-components.test.tsrx +40 -0
  45. package/tests/client/composite/composite.props.test.tsrx +10 -10
  46. package/tests/client/css/scoped-styles.test.tsrx +3 -1
  47. package/tests/client/derived-release.test.tsrx +3 -3
  48. package/tests/client/for-item.test.tsrx +39 -0
  49. package/tests/client/for-selector.test.tsrx +95 -0
  50. package/tests/client/svg.test.tsrx +273 -1
  51. package/tests/hydration/compiled/client/basic.js +88 -87
  52. package/tests/hydration/compiled/client/composite.js +15 -6
  53. package/tests/hydration/compiled/client/events.js +40 -48
  54. package/tests/hydration/compiled/client/for.js +191 -199
  55. package/tests/hydration/compiled/client/fragment-cursor.js +633 -334
  56. package/tests/hydration/compiled/client/head.js +22 -22
  57. package/tests/hydration/compiled/client/hmr.js +14 -5
  58. package/tests/hydration/compiled/client/html-in-template.js +5 -5
  59. package/tests/hydration/compiled/client/html.js +195 -177
  60. package/tests/hydration/compiled/client/if-children.js +136 -63
  61. package/tests/hydration/compiled/client/if-fragment-controlflow.js +63 -43
  62. package/tests/hydration/compiled/client/if.js +78 -30
  63. package/tests/hydration/compiled/client/mixed-control-flow.js +90 -72
  64. package/tests/hydration/compiled/client/nested-control-flow.js +266 -307
  65. package/tests/hydration/compiled/client/portal.js +20 -11
  66. package/tests/hydration/compiled/client/reactivity.js +29 -29
  67. package/tests/hydration/compiled/client/return.js +2 -2
  68. package/tests/hydration/compiled/client/streaming.js +33 -35
  69. package/tests/hydration/compiled/client/switch.js +25 -25
  70. package/tests/hydration/compiled/client/track-async-serialization.js +41 -41
  71. package/tests/hydration/compiled/client/try.js +15 -15
  72. package/tests/hydration/compiled/client/typed-text.js +8 -7
  73. package/tests/hydration/compiled/server/basic.js +6 -6
  74. package/tests/hydration/compiled/server/events.js +8 -8
  75. package/tests/hydration/compiled/server/for.js +22 -22
  76. package/tests/hydration/compiled/server/fragment-cursor.js +188 -52
  77. package/tests/hydration/compiled/server/head.js +6 -6
  78. package/tests/hydration/compiled/server/hmr.js +1 -1
  79. package/tests/hydration/compiled/server/html.js +1 -1
  80. package/tests/hydration/compiled/server/if-children.js +9 -9
  81. package/tests/hydration/compiled/server/if.js +5 -5
  82. package/tests/hydration/compiled/server/mixed-control-flow.js +4 -4
  83. package/tests/hydration/compiled/server/portal.js +1 -1
  84. package/tests/hydration/compiled/server/reactivity.js +9 -9
  85. package/tests/hydration/compiled/server/streaming.js +9 -9
  86. package/tests/hydration/compiled/server/switch.js +4 -4
  87. package/tests/hydration/compiled/server/track-async-serialization.js +16 -16
  88. package/tests/hydration/compiled/server/try.js +4 -4
  89. package/tests/hydration/compiled/server/typed-text.js +1 -1
  90. package/tests/hydration/components/fragment-cursor.tsrx +60 -0
  91. package/tests/hydration/components/track-async-serialization.tsrx +2 -2
  92. package/tests/hydration/fragment-cursor.test.js +34 -1
  93. package/tests/hydration/track-async-serialization.test.js +1 -1
  94. package/tests/server/basic.components.test.tsrx +3 -3
  95. package/tests/server/track-async-serialization.test.tsrx +6 -6
  96. package/tests/utils/tracked-types.test.js +3 -3
  97. package/types/index.d.ts +8 -8
  98. package/types/server.d.ts +17 -0
@@ -1,8 +1,8 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root_1 = _$_.template(`<li> </li>`, 0);
5
- var root = _$_.template(`<ul></ul>`, 0);
4
+ var root_1 = _$_.template_el('li', null, ' ');
5
+ var root = _$_.template_el('ul');
6
6
 
7
7
  function StaticForLoop_render(__anchor, __block) {
8
8
  const items = ['Apple', 'Banana', 'Cherry'];
@@ -35,18 +35,18 @@ function StaticForLoop_render(__anchor, __block) {
35
35
 
36
36
  StaticForLoop[_$_.$r] = StaticForLoop_render;
37
37
 
38
- var root_3 = _$_.template(`<li></li>`, 0);
38
+ var root_3 = _$_.template_el('li');
39
39
 
40
40
  function render(__prev) {
41
- var __a = `${__prev._i.value}: ${__prev._item}`;
41
+ var __a = `${__prev._a.value}: ${__prev._b}`;
42
42
 
43
43
  if (__prev.a !== __a) {
44
- _$_.set_text_content(__prev._li_1, __a, __prev.a);
44
+ _$_.set_text_content(__prev._c, __a, __prev.a);
45
45
  __prev.a = __a;
46
46
  }
47
47
  }
48
48
 
49
- var root_2 = _$_.template(`<ul></ul>`, 0);
49
+ var root_2 = _$_.template_el('ul');
50
50
 
51
51
  function ForLoopWithIndex_render(__anchor, __block) {
52
52
  const items = ['A', 'B', 'C'];
@@ -59,7 +59,7 @@ function ForLoopWithIndex_render(__anchor, __block) {
59
59
  (__anchor, item, i) => {
60
60
  var li_1 = root_3();
61
61
 
62
- _$_.item({ a: '', _i: i, _item: item, _li_1: li_1 });
62
+ _$_.item({ a: '', _a: i, _b: item, _c: li_1 });
63
63
  _$_.append(__anchor, li_1);
64
64
  },
65
65
  12,
@@ -75,8 +75,8 @@ function ForLoopWithIndex_render(__anchor, __block) {
75
75
 
76
76
  ForLoopWithIndex[_$_.$r] = ForLoopWithIndex_render;
77
77
 
78
- var root_5 = _$_.template(`<li> </li>`, 0);
79
- var root_4 = _$_.template(`<ul></ul>`, 0);
78
+ var root_5 = _$_.template_el('li', null, ' ');
79
+ var root_4 = _$_.template_el('ul');
80
80
 
81
81
  function KeyedForLoop_render(__anchor, __block) {
82
82
  const items = [
@@ -115,12 +115,12 @@ function KeyedForLoop_render(__anchor, __block) {
115
115
 
116
116
  KeyedForLoop[_$_.$r] = KeyedForLoop_render;
117
117
 
118
- var root_8 = _$_.template(`<li> </li>`, 0);
119
- var root_7 = _$_.template(`<button class="add">Add</button><ul></ul>`, 1, 2);
118
+ var root_8 = _$_.template_el('li', null, ' ');
119
+ var root_7 = _$_.template(`<button class=add>Add</button><ul>`, 1, 2);
120
120
  var root_6 = _$_.template(`<!>`, 1, 1);
121
121
 
122
122
  function ReactiveForLoopAdd_render(__anchor, __block) {
123
- const items = _$_.track(['A', 'B'], __block, 'e145678a');
123
+ const items = _$_.track(['A', 'B'], __block, '1qi64qy');
124
124
  var fragment = root_6();
125
125
  var node = _$_.first_child_frag(fragment);
126
126
 
@@ -164,12 +164,12 @@ function ReactiveForLoopAdd_render(__anchor, __block) {
164
164
 
165
165
  ReactiveForLoopAdd[_$_.$r] = ReactiveForLoopAdd_render;
166
166
 
167
- var root_11 = _$_.template(`<li> </li>`, 0);
168
- var root_10 = _$_.template(`<button class="remove">Remove</button><ul></ul>`, 1, 2);
167
+ var root_11 = _$_.template_el('li', null, ' ');
168
+ var root_10 = _$_.template(`<button class=remove>Remove</button><ul>`, 1, 2);
169
169
  var root_9 = _$_.template(`<!>`, 1, 1);
170
170
 
171
171
  function ReactiveForLoopRemove_render(__anchor, __block) {
172
- const items = _$_.track(['A', 'B', 'C'], __block, 'b4e9bd54');
172
+ const items = _$_.track(['A', 'B', 'C'], __block, '1e738lw');
173
173
  var fragment_2 = root_9();
174
174
  var node_1 = _$_.first_child_frag(fragment_2);
175
175
 
@@ -213,20 +213,20 @@ function ReactiveForLoopRemove_render(__anchor, __block) {
213
213
 
214
214
  ReactiveForLoopRemove[_$_.$r] = ReactiveForLoopRemove_render;
215
215
 
216
- var root_13 = _$_.template(`<div><span class="value"> </span><button class="increment">+</button></div>`, 0);
216
+ var root_13 = _$_.template(`<div><span class=value> </span><button class=increment>+`);
217
217
 
218
218
  function render_1(__prev) {
219
- var __a = `item-${__prev._i.value}`;
219
+ var __a = `item-${__prev._a.value}`;
220
220
 
221
221
  if (__prev.a !== __a) {
222
- _$_.set_class(__prev._div_1, __prev.a = __a, void 0, true);
222
+ _$_.set_class(__prev._b, __prev.a = __a);
223
223
  }
224
224
  }
225
225
 
226
- var root_12 = _$_.template(`<div></div>`, 0);
226
+ var root_12 = _$_.template_el('div');
227
227
 
228
228
  function ForLoopInteractive_render(__anchor, __block) {
229
- const counts = _$_.track([0, 0, 0], __block, '36f563df');
229
+ const counts = _$_.track([0, 0, 0], __block, 'f8yrj3');
230
230
  var div = root_12();
231
231
 
232
232
  {
@@ -256,7 +256,7 @@ function ForLoopInteractive_render(__anchor, __block) {
256
256
  };
257
257
  }
258
258
 
259
- _$_.item({ a: _$_.UNINITIALIZED, _i: i, _div_1: div_1 });
259
+ _$_.item({ a: _$_.UNINITIALIZED, _a: i, _b: div_1 });
260
260
  _$_.append(__anchor, div_1);
261
261
  },
262
262
  12,
@@ -272,26 +272,26 @@ function ForLoopInteractive_render(__anchor, __block) {
272
272
 
273
273
  ForLoopInteractive[_$_.$r] = ForLoopInteractive_render;
274
274
 
275
- var root_16 = _$_.template(`<span> </span>`, 0);
275
+ var root_16 = _$_.template_el('span', null, ' ');
276
276
 
277
277
  function render_2(__prev) {
278
- var __a = `cell-${__prev._rowIndex.value}-${__prev._colIndex.value}`;
278
+ var __a = `cell-${__prev._a.value}-${__prev._b.value}`;
279
279
 
280
280
  if (__prev.a !== __a) {
281
- _$_.set_class(__prev._span_1, __prev.a = __a, void 0, true);
281
+ _$_.set_class(__prev._c, __prev.a = __a);
282
282
  }
283
283
  }
284
284
 
285
285
  function render_3(__prev) {
286
- var __a = `row-${__prev._rowIndex.value}`;
286
+ var __a = `row-${__prev._a.value}`;
287
287
 
288
288
  if (__prev.a !== __a) {
289
- _$_.set_class(__prev._div_3, __prev.a = __a, void 0, true);
289
+ _$_.set_class(__prev._b, __prev.a = __a);
290
290
  }
291
291
  }
292
292
 
293
- var root_15 = _$_.template(`<div></div>`, 0);
294
- var root_14 = _$_.template(`<div class="grid"></div>`, 0);
293
+ var root_15 = _$_.template_el('div');
294
+ var root_14 = _$_.template_el('div', ['class', 'grid']);
295
295
 
296
296
  function NestedForLoop_render(__anchor, __block) {
297
297
  const grid = [[1, 2], [3, 4]];
@@ -318,13 +318,7 @@ function NestedForLoop_render(__anchor, __block) {
318
318
  _$_.hydrating && _$_.pop(span_1);
319
319
  }
320
320
 
321
- _$_.item({
322
- a: _$_.UNINITIALIZED,
323
- _rowIndex: rowIndex,
324
- _colIndex: colIndex,
325
- _span_1: span_1
326
- });
327
-
321
+ _$_.item({ a: _$_.UNINITIALIZED, _a: rowIndex, _b: colIndex, _c: span_1 });
328
322
  _$_.append(__anchor, span_1);
329
323
  },
330
324
  12,
@@ -333,7 +327,7 @@ function NestedForLoop_render(__anchor, __block) {
333
327
  );
334
328
 
335
329
  _$_.hydrating && _$_.pop(div_3);
336
- _$_.item({ a: _$_.UNINITIALIZED, _rowIndex: rowIndex, _div_3: div_3 });
330
+ _$_.item({ a: _$_.UNINITIALIZED, _a: rowIndex, _b: div_3 });
337
331
  }
338
332
 
339
333
  _$_.append(__anchor, div_3);
@@ -351,8 +345,8 @@ function NestedForLoop_render(__anchor, __block) {
351
345
 
352
346
  NestedForLoop[_$_.$r] = NestedForLoop_render;
353
347
 
354
- var root_18 = _$_.template(`<span></span>`, 0);
355
- var root_17 = _$_.template(`<div class="container"></div>`, 0);
348
+ var root_18 = _$_.template_el('span');
349
+ var root_17 = _$_.template_el('div', ['class', 'container']);
356
350
 
357
351
  function EmptyForLoop_render(__anchor, __block) {
358
352
  const items = [];
@@ -382,17 +376,17 @@ function EmptyForLoop_render(__anchor, __block) {
382
376
 
383
377
  EmptyForLoop[_$_.$r] = EmptyForLoop_render;
384
378
 
385
- var root_20 = _$_.template(`<div><span class="name"> </span><span class="role"> </span></div>`, 0);
379
+ var root_20 = _$_.template(`<div><span class=name> </span><span class=role> `);
386
380
 
387
381
  function render_4(__prev) {
388
- var __a = `user-${_$_.get(__prev._pattern_1).id}`;
382
+ var __a = `user-${_$_.get(__prev._a).id}`;
389
383
 
390
384
  if (__prev.a !== __a) {
391
- _$_.set_class(__prev._div_6, __prev.a = __a, void 0, true);
385
+ _$_.set_class(__prev._b, __prev.a = __a);
392
386
  }
393
387
  }
394
388
 
395
- var root_19 = _$_.template(`<div></div>`, 0);
389
+ var root_19 = _$_.template_el('div');
396
390
 
397
391
  function ForLoopComplexObjects_render(__anchor, __block) {
398
392
  const users = [
@@ -429,7 +423,7 @@ function ForLoopComplexObjects_render(__anchor, __block) {
429
423
  }
430
424
  }
431
425
 
432
- _$_.item({ a: _$_.UNINITIALIZED, _pattern_1: pattern_1, _div_6: div_6 });
426
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern_1, _b: div_6 });
433
427
  _$_.append(__anchor, div_6);
434
428
  },
435
429
  4,
@@ -447,17 +441,17 @@ function ForLoopComplexObjects_render(__anchor, __block) {
447
441
 
448
442
  ForLoopComplexObjects[_$_.$r] = ForLoopComplexObjects_render;
449
443
 
450
- var root_23 = _$_.template(`<li> </li>`, 0);
444
+ var root_23 = _$_.template_el('li', null, ' ');
451
445
 
452
446
  function render_5(__prev) {
453
- var __a = `item-${_$_.get(__prev._pattern_2).id}`;
447
+ var __a = `item-${_$_.get(__prev._a).id}`;
454
448
 
455
449
  if (__prev.a !== __a) {
456
- _$_.set_class(__prev._li_5, __prev.a = __a, void 0, true);
450
+ _$_.set_class(__prev._b, __prev.a = __a);
457
451
  }
458
452
  }
459
453
 
460
- var root_22 = _$_.template(`<button class="reorder">Reorder</button><ul></ul>`, 1, 2);
454
+ var root_22 = _$_.template(`<button class=reorder>Reorder</button><ul>`, 1, 2);
461
455
  var root_21 = _$_.template(`<!>`, 1, 1);
462
456
 
463
457
  function KeyedForLoopReorder_render(__anchor, __block) {
@@ -468,7 +462,7 @@ function KeyedForLoopReorder_render(__anchor, __block) {
468
462
  { id: 3, name: 'Third' }
469
463
  ],
470
464
  __block,
471
- 'e7abc6a3'
465
+ '1sa3hr7'
472
466
  );
473
467
 
474
468
  var fragment_4 = root_21();
@@ -498,7 +492,7 @@ function KeyedForLoopReorder_render(__anchor, __block) {
498
492
  _$_.hydrating && _$_.pop(li_5);
499
493
  }
500
494
 
501
- _$_.item({ a: _$_.UNINITIALIZED, _pattern_2: pattern_2, _li_5: li_5 });
495
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern_2, _b: li_5 });
502
496
  _$_.append(__anchor, li_5);
503
497
  },
504
498
  4,
@@ -519,21 +513,21 @@ function KeyedForLoopReorder_render(__anchor, __block) {
519
513
 
520
514
  KeyedForLoopReorder[_$_.$r] = KeyedForLoopReorder_render;
521
515
 
522
- var root_26 = _$_.template(`<li> </li>`, 0);
516
+ var root_26 = _$_.template_el('li', null, ' ');
523
517
 
524
518
  function render_6(__prev) {
525
- var __a = `item-${_$_.get(__prev._pattern_3).id}`;
519
+ var __a = `item-${_$_.get(__prev._a).id}`;
526
520
 
527
521
  if (__prev.a !== __a) {
528
- _$_.set_class(__prev._li_6, __prev.a = __a, void 0, true);
522
+ _$_.set_class(__prev._b, __prev.a = __a);
529
523
  }
530
524
  }
531
525
 
532
- var root_25 = _$_.template(`<button class="update">Update</button><ul></ul>`, 1, 2);
526
+ var root_25 = _$_.template(`<button class=update>Update</button><ul>`, 1, 2);
533
527
  var root_24 = _$_.template(`<!>`, 1, 1);
534
528
 
535
529
  function KeyedForLoopUpdate_render(__anchor, __block) {
536
- const items = _$_.track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], __block, '7a2c2ada');
530
+ const items = _$_.track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], __block, 'xwci56');
537
531
  var fragment_6 = root_24();
538
532
  var node_3 = _$_.first_child_frag(fragment_6);
539
533
 
@@ -561,7 +555,7 @@ function KeyedForLoopUpdate_render(__anchor, __block) {
561
555
  _$_.hydrating && _$_.pop(li_6);
562
556
  }
563
557
 
564
- _$_.item({ a: _$_.UNINITIALIZED, _pattern_3: pattern_3, _li_6: li_6 });
558
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern_3, _b: li_6 });
565
559
  _$_.append(__anchor, li_6);
566
560
  },
567
561
  4,
@@ -582,12 +576,12 @@ function KeyedForLoopUpdate_render(__anchor, __block) {
582
576
 
583
577
  KeyedForLoopUpdate[_$_.$r] = KeyedForLoopUpdate_render;
584
578
 
585
- var root_29 = _$_.template(`<li> </li>`, 0);
586
- var root_28 = _$_.template(`<button class="shuffle">Shuffle</button><ul></ul>`, 1, 2);
579
+ var root_29 = _$_.template_el('li', null, ' ');
580
+ var root_28 = _$_.template(`<button class=shuffle>Shuffle</button><ul>`, 1, 2);
587
581
  var root_27 = _$_.template(`<!>`, 1, 1);
588
582
 
589
583
  function ForLoopMixedOperations_render(__anchor, __block) {
590
- const items = _$_.track(['A', 'B', 'C', 'D'], __block, '3dd7c7b6');
584
+ const items = _$_.track(['A', 'B', 'C', 'D'], __block, 'h5qbw6');
591
585
  var fragment_8 = root_27();
592
586
  var node_4 = _$_.first_child_frag(fragment_8);
593
587
 
@@ -608,7 +602,7 @@ function ForLoopMixedOperations_render(__anchor, __block) {
608
602
  (__anchor, item) => {
609
603
  var li_7 = root_29();
610
604
 
611
- _$_.set_class(li_7, `item-${item}`, void 0, true);
605
+ _$_.set_class(li_7, `item-${item}`);
612
606
 
613
607
  {
614
608
  var expression_12 = _$_.hydrating ? _$_.hydrate_child() : li_7.firstChild;
@@ -633,10 +627,10 @@ function ForLoopMixedOperations_render(__anchor, __block) {
633
627
 
634
628
  ForLoopMixedOperations[_$_.$r] = ForLoopMixedOperations_render;
635
629
 
636
- var root_33 = _$_.template(`<li> </li>`, 0);
637
- var root_32 = _$_.template(`<ul class="list"></ul>`, 0);
630
+ var root_33 = _$_.template_el('li', null, ' ');
631
+ var root_32 = _$_.template_el('ul', ['class', 'list']);
638
632
 
639
- function consequent(__anchor, { showList, items }) {
633
+ function consequent(__anchor, { a: showList, b: items }) {
640
634
  var ul_8 = root_32();
641
635
 
642
636
  {
@@ -664,16 +658,25 @@ function consequent(__anchor, { showList, items }) {
664
658
  _$_.append(__anchor, ul_8);
665
659
  }
666
660
 
667
- function if_1({ showList, items }) {
661
+ function if_1({ a: showList, b: items }) {
668
662
  if (showList.value) return consequent;
669
663
  }
670
664
 
671
- var root_31 = _$_.template(`<button class="toggle">Toggle List</button><button class="add">Add Item</button><!>`, 1, 3);
665
+ var root_31 = _$_.template(`<button class=toggle>Toggle List</button><button class=add>Add Item</button><!>`, 1, 3);
666
+
667
+ function render_7(__prev) {
668
+ var __a = if_1({ a: __prev._a, b: __prev._b });
669
+
670
+ if (__prev.a !== __a) {
671
+ _$_.if_update(__prev._c, __prev.a = __a);
672
+ }
673
+ }
674
+
672
675
  var root_30 = _$_.template(`<!>`, 1, 1);
673
676
 
674
677
  function ForLoopInsideIf_render(__anchor, __block) {
675
- const showList = _$_.track(true, __block, '0528df30');
676
- const items = _$_.track(['X', 'Y', 'Z'], __block, 'bf375103');
678
+ const showList = _$_.track(true, __block, '1fjdps');
679
+ const items = _$_.track(['X', 'Y', 'Z'], __block, '1h205c3');
677
680
  var fragment_10 = root_30();
678
681
  var node_6 = _$_.first_child_frag(fragment_10);
679
682
 
@@ -692,8 +695,9 @@ function ForLoopInsideIf_render(__anchor, __block) {
692
695
  };
693
696
 
694
697
  var node_5 = _$_.hydrating ? _$_.hydrate_sibling() : button_7.nextSibling;
698
+ var ifs = _$_.if_static(node_5, if_1, 0, { a: showList, b: items });
695
699
 
696
- _$_.if(node_5, if_1, false, { showList, items });
700
+ _$_.render(render_7, { a: _$_.UNINITIALIZED, _a: showList, _b: items, _c: ifs });
697
701
  _$_.append(__anchor, fragment_11);
698
702
  }));
699
703
 
@@ -702,12 +706,12 @@ function ForLoopInsideIf_render(__anchor, __block) {
702
706
 
703
707
  ForLoopInsideIf[_$_.$r] = ForLoopInsideIf_render;
704
708
 
705
- var root_36 = _$_.template(`<li></li>`, 0);
706
- var root_35 = _$_.template(`<button class="populate">Populate</button><ul class="list"></ul>`, 1, 2);
709
+ var root_36 = _$_.template_el('li');
710
+ var root_35 = _$_.template(`<button class=populate>Populate</button><ul class=list>`, 1, 2);
707
711
  var root_34 = _$_.template(`<!>`, 1, 1);
708
712
 
709
713
  function ForLoopEmptyToPopulated_render(__anchor, __block) {
710
- const items = _$_.track([], __block, '525c5dbc');
714
+ const items = _$_.track([], __block, 'muog58');
711
715
  var fragment_12 = root_34();
712
716
  var node_7 = _$_.first_child_frag(fragment_12);
713
717
 
@@ -748,12 +752,12 @@ function ForLoopEmptyToPopulated_render(__anchor, __block) {
748
752
 
749
753
  ForLoopEmptyToPopulated[_$_.$r] = ForLoopEmptyToPopulated_render;
750
754
 
751
- var root_39 = _$_.template(`<li> </li>`, 0);
752
- var root_38 = _$_.template(`<button class="clear">Clear</button><ul class="list"></ul>`, 1, 2);
755
+ var root_39 = _$_.template_el('li', null, ' ');
756
+ var root_38 = _$_.template(`<button class=clear>Clear</button><ul class=list>`, 1, 2);
753
757
  var root_37 = _$_.template(`<!>`, 1, 1);
754
758
 
755
759
  function ForLoopPopulatedToEmpty_render(__anchor, __block) {
756
- const items = _$_.track(['One', 'Two', 'Three'], __block, 'ee47f078');
760
+ const items = _$_.track(['One', 'Two', 'Three'], __block, '1u44ewo');
757
761
  var fragment_14 = root_37();
758
762
  var node_8 = _$_.first_child_frag(fragment_14);
759
763
 
@@ -797,29 +801,29 @@ function ForLoopPopulatedToEmpty_render(__anchor, __block) {
797
801
 
798
802
  ForLoopPopulatedToEmpty[_$_.$r] = ForLoopPopulatedToEmpty_render;
799
803
 
800
- var root_42 = _$_.template(`<span> </span>`, 0);
804
+ var root_42 = _$_.template_el('span', null, ' ');
801
805
 
802
- function render_7(__prev) {
803
- var __a = `cell-${__prev._rowIndex.value}-${__prev._colIndex.value}`;
806
+ function render_8(__prev) {
807
+ var __a = `cell-${__prev._a.value}-${__prev._b.value}`;
804
808
 
805
809
  if (__prev.a !== __a) {
806
- _$_.set_class(__prev._span_5, __prev.a = __a, void 0, true);
810
+ _$_.set_class(__prev._c, __prev.a = __a);
807
811
  }
808
812
  }
809
813
 
810
- function render_8(__prev) {
811
- var __a = `row-${__prev._rowIndex.value}`;
814
+ function render_9(__prev) {
815
+ var __a = `row-${__prev._a.value}`;
812
816
 
813
817
  if (__prev.a !== __a) {
814
- _$_.set_class(__prev._div_9, __prev.a = __a, void 0, true);
818
+ _$_.set_class(__prev._b, __prev.a = __a);
815
819
  }
816
820
  }
817
821
 
818
- var root_41 = _$_.template(`<div></div>`, 0);
819
- var root_40 = _$_.template(`<div class="nested-for-reactive"><button class="add-row">Add Row</button><button class="update-cell">Update Cell</button><div class="grid"></div></div>`, 0);
822
+ var root_41 = _$_.template_el('div');
823
+ var root_40 = _$_.template(`<div class=nested-for-reactive><button class=add-row>Add Row</button><button class=update-cell>Update Cell</button><div class=grid>`);
820
824
 
821
825
  function NestedForLoopReactive_render(__anchor, __block) {
822
- const grid = _$_.track([[1, 2], [3, 4]], __block, 'a2f41fb3');
826
+ const grid = _$_.track([[1, 2], [3, 4]], __block, '197p4tv');
823
827
  var div_7 = root_40();
824
828
 
825
829
  {
@@ -861,29 +865,23 @@ function NestedForLoopReactive_render(__anchor, __block) {
861
865
  _$_.hydrating && _$_.pop(span_5);
862
866
  }
863
867
 
864
- _$_.item({
865
- a: _$_.UNINITIALIZED,
866
- _rowIndex: rowIndex,
867
- _colIndex: colIndex,
868
- _span_5: span_5
869
- });
870
-
868
+ _$_.item({ a: _$_.UNINITIALIZED, _a: rowIndex, _b: colIndex, _c: span_5 });
871
869
  _$_.append(__anchor, span_5);
872
870
  },
873
871
  12,
874
872
  void 0,
875
- render_7
873
+ render_8
876
874
  );
877
875
 
878
876
  _$_.hydrating && _$_.pop(div_9);
879
- _$_.item({ a: _$_.UNINITIALIZED, _rowIndex: rowIndex, _div_9: div_9 });
877
+ _$_.item({ a: _$_.UNINITIALIZED, _a: rowIndex, _b: div_9 });
880
878
  }
881
879
 
882
880
  _$_.append(__anchor, div_9);
883
881
  },
884
882
  12,
885
883
  void 0,
886
- render_8
884
+ render_9
887
885
  );
888
886
 
889
887
  _$_.hydrating && _$_.pop(div_8);
@@ -895,28 +893,28 @@ function NestedForLoopReactive_render(__anchor, __block) {
895
893
 
896
894
  NestedForLoopReactive[_$_.$r] = NestedForLoopReactive_render;
897
895
 
898
- var root_46 = _$_.template(`<li class="member"> </li>`, 0);
899
- var root_45 = _$_.template(`<div><h3 class="team-name"> </h3><ul></ul></div>`, 0);
896
+ var root_46 = _$_.template_el('li', ['class', 'member'], ' ');
897
+ var root_45 = _$_.template(`<div><h3 class=team-name> </h3><ul>`);
900
898
 
901
- function render_9(__prev) {
902
- var __a = `team-${_$_.get(__prev._pattern_5).id}`;
899
+ function render_10(__prev) {
900
+ var __a = `team-${_$_.get(__prev._a).id}`;
903
901
 
904
902
  if (__prev.a !== __a) {
905
- _$_.set_class(__prev._div_12, __prev.a = __a, void 0, true);
903
+ _$_.set_class(__prev._b, __prev.a = __a);
906
904
  }
907
905
  }
908
906
 
909
- var root_44 = _$_.template(`<div><h2 class="dept-name"> </h2></div>`, 0);
907
+ var root_44 = _$_.template(`<div><h2 class=dept-name> `);
910
908
 
911
- function render_10(__prev) {
912
- var __a = `dept-${_$_.get(__prev._pattern_4).id}`;
909
+ function render_11(__prev) {
910
+ var __a = `dept-${_$_.get(__prev._a).id}`;
913
911
 
914
912
  if (__prev.a !== __a) {
915
- _$_.set_class(__prev._div_11, __prev.a = __a, void 0, true);
913
+ _$_.set_class(__prev._b, __prev.a = __a);
916
914
  }
917
915
  }
918
916
 
919
- var root_43 = _$_.template(`<div class="org"></div>`, 0);
917
+ var root_43 = _$_.template_el('div', ['class', 'org']);
920
918
 
921
919
  function ForLoopDeeplyNested_render(__anchor, __block) {
922
920
  const departments = [
@@ -998,27 +996,27 @@ function ForLoopDeeplyNested_render(__anchor, __block) {
998
996
  }
999
997
  }
1000
998
 
1001
- _$_.item({ a: _$_.UNINITIALIZED, _pattern_5: pattern_5, _div_12: div_12 });
999
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern_5, _b: div_12 });
1002
1000
  _$_.append(__anchor, div_12);
1003
1001
  },
1004
1002
  0,
1005
1003
  (pattern_5) => pattern_5.id,
1006
1004
  void 0,
1007
1005
  void 0,
1008
- render_9
1006
+ render_10
1009
1007
  );
1010
1008
 
1011
1009
  _$_.hydrating && _$_.pop(div_11);
1012
1010
  }
1013
1011
 
1014
- _$_.item({ a: _$_.UNINITIALIZED, _pattern_4: pattern_4, _div_11: div_11 });
1012
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern_4, _b: div_11 });
1015
1013
  _$_.append(__anchor, div_11);
1016
1014
  },
1017
1015
  4,
1018
1016
  (pattern_4) => pattern_4.id,
1019
1017
  void 0,
1020
1018
  void 0,
1021
- render_10
1019
+ render_11
1022
1020
  );
1023
1021
 
1024
1022
  _$_.hydrating && _$_.pop(div_10);
@@ -1029,28 +1027,28 @@ function ForLoopDeeplyNested_render(__anchor, __block) {
1029
1027
 
1030
1028
  ForLoopDeeplyNested[_$_.$r] = ForLoopDeeplyNested_render;
1031
1029
 
1032
- var root_49 = _$_.template(`<li></li>`, 0);
1030
+ var root_49 = _$_.template_el('li');
1033
1031
 
1034
- function render_11(__prev) {
1035
- var __a = `[${__prev._i.value}] ${__prev._item}`;
1032
+ function render_12(__prev) {
1033
+ var __a = `[${__prev._a.value}] ${__prev._b}`;
1036
1034
 
1037
1035
  if (__prev.a !== __a) {
1038
- _$_.set_text_content(__prev._li_12, __a, __prev.a);
1036
+ _$_.set_text_content(__prev._c, __a, __prev.a);
1039
1037
  __prev.a = __a;
1040
1038
  }
1041
1039
 
1042
- var __b = `item-${__prev._i.value}`;
1040
+ var __b = `item-${__prev._a.value}`;
1043
1041
 
1044
1042
  if (__prev.b !== __b) {
1045
- _$_.set_class(__prev._li_12, __prev.b = __b, void 0, true);
1043
+ _$_.set_class(__prev._c, __prev.b = __b);
1046
1044
  }
1047
1045
  }
1048
1046
 
1049
- var root_48 = _$_.template(`<button class="prepend">Prepend</button><ul></ul>`, 1, 2);
1047
+ var root_48 = _$_.template(`<button class=prepend>Prepend</button><ul>`, 1, 2);
1050
1048
  var root_47 = _$_.template(`<!>`, 1, 1);
1051
1049
 
1052
1050
  function ForLoopIndexUpdate_render(__anchor, __block) {
1053
- const items = _$_.track(['First', 'Second', 'Third'], __block, 'f61e31e6');
1051
+ const items = _$_.track(['First', 'Second', 'Third'], __block, '1waej1i');
1054
1052
  var fragment_16 = root_47();
1055
1053
  var node_10 = _$_.first_child_frag(fragment_16);
1056
1054
 
@@ -1071,19 +1069,12 @@ function ForLoopIndexUpdate_render(__anchor, __block) {
1071
1069
  (__anchor, item, i) => {
1072
1070
  var li_12 = root_49();
1073
1071
 
1074
- _$_.item({
1075
- a: '',
1076
- b: _$_.UNINITIALIZED,
1077
- _i: i,
1078
- _item: item,
1079
- _li_12: li_12
1080
- });
1081
-
1072
+ _$_.item({ a: '', b: _$_.UNINITIALIZED, _a: i, _b: item, _c: li_12 });
1082
1073
  _$_.append(__anchor, li_12);
1083
1074
  },
1084
1075
  12,
1085
1076
  void 0,
1086
- render_11
1077
+ render_12
1087
1078
  );
1088
1079
 
1089
1080
  _$_.hydrating && _$_.pop(ul_12);
@@ -1097,31 +1088,31 @@ function ForLoopIndexUpdate_render(__anchor, __block) {
1097
1088
 
1098
1089
  ForLoopIndexUpdate[_$_.$r] = ForLoopIndexUpdate_render;
1099
1090
 
1100
- var root_52 = _$_.template(`<li></li>`, 0);
1091
+ var root_52 = _$_.template_el('li');
1101
1092
 
1102
- function render_12(__prev) {
1103
- var __pattern_6 = _$_.get(__prev._pattern_6);
1104
- var __a = `[${__prev._i.value}] ${__pattern_6.id}: ${__pattern_6.value}`;
1093
+ function render_13(__prev) {
1094
+ var __pattern_6 = _$_.get(__prev._a);
1095
+ var __a = `[${__prev._b.value}] ${__pattern_6.id}: ${__pattern_6.value}`;
1105
1096
 
1106
1097
  if (__prev.a !== __a) {
1107
- _$_.set_text_content(__prev._li_13, __a, __prev.a);
1098
+ _$_.set_text_content(__prev._c, __a, __prev.a);
1108
1099
  __prev.a = __a;
1109
1100
  }
1110
1101
 
1111
- var __b = __prev._i.value;
1102
+ var __b = __prev._b.value;
1112
1103
 
1113
1104
  if (__prev.b !== __b) {
1114
- _$_.set_attribute(__prev._li_13, 'data-index', __prev.b = __b);
1105
+ _$_.set_attribute(__prev._c, 'data-index', __prev.b = __b);
1115
1106
  }
1116
1107
 
1117
1108
  var __c = `item-${__pattern_6.id}`;
1118
1109
 
1119
1110
  if (__prev.c !== __c) {
1120
- _$_.set_class(__prev._li_13, __prev.c = __c, void 0, true);
1111
+ _$_.set_class(__prev._c, __prev.c = __c);
1121
1112
  }
1122
1113
  }
1123
1114
 
1124
- var root_51 = _$_.template(`<button class="reorder">Rotate</button><ul></ul>`, 1, 2);
1115
+ var root_51 = _$_.template(`<button class=reorder>Rotate</button><ul>`, 1, 2);
1125
1116
  var root_50 = _$_.template(`<!>`, 1, 1);
1126
1117
 
1127
1118
  function KeyedForLoopWithIndex_render(__anchor, __block) {
@@ -1132,7 +1123,7 @@ function KeyedForLoopWithIndex_render(__anchor, __block) {
1132
1123
  { id: 'c', value: 'Gamma' }
1133
1124
  ],
1134
1125
  __block,
1135
- '3467975a'
1126
+ 'ejgeai'
1136
1127
  );
1137
1128
 
1138
1129
  var fragment_18 = root_50();
@@ -1159,9 +1150,9 @@ function KeyedForLoopWithIndex_render(__anchor, __block) {
1159
1150
  a: '',
1160
1151
  b: void 0,
1161
1152
  c: _$_.UNINITIALIZED,
1162
- _pattern_6: pattern_6,
1163
- _i: i,
1164
- _li_13: li_13
1153
+ _a: pattern_6,
1154
+ _b: i,
1155
+ _c: li_13
1165
1156
  });
1166
1157
 
1167
1158
  _$_.append(__anchor, li_13);
@@ -1170,7 +1161,7 @@ function KeyedForLoopWithIndex_render(__anchor, __block) {
1170
1161
  (pattern_6, i) => pattern_6.id,
1171
1162
  void 0,
1172
1163
  void 0,
1173
- render_12
1164
+ render_13
1174
1165
  );
1175
1166
 
1176
1167
  _$_.hydrating && _$_.pop(ul_13);
@@ -1184,12 +1175,12 @@ function KeyedForLoopWithIndex_render(__anchor, __block) {
1184
1175
 
1185
1176
  KeyedForLoopWithIndex[_$_.$r] = KeyedForLoopWithIndex_render;
1186
1177
 
1187
- var root_55 = _$_.template(`<div> </div>`, 0);
1188
- var root_54 = _$_.template(`<div class="wrapper"><header class="before">Before</header><!><footer class="after">After</footer></div><button class="add">Add</button>`, 1, 2);
1178
+ var root_55 = _$_.template_el('div', null, ' ');
1179
+ var root_54 = _$_.template(`<div class=wrapper><header class=before>Before</header><footer class=after>After</footer></div><button class=add>Add`, 1, 2);
1189
1180
  var root_53 = _$_.template(`<!>`, 1, 1);
1190
1181
 
1191
1182
  function ForLoopWithSiblings_render(__anchor, __block) {
1192
- const items = _$_.track(['A', 'B'], __block, '3c7e8152');
1183
+ const items = _$_.track(['A', 'B'], __block, 'gs9c2a');
1193
1184
  var fragment_20 = root_53();
1194
1185
  var node_13 = _$_.first_child_frag(fragment_20);
1195
1186
 
@@ -1207,7 +1198,7 @@ function ForLoopWithSiblings_render(__anchor, __block) {
1207
1198
  (__anchor, item) => {
1208
1199
  var div_14 = root_55();
1209
1200
 
1210
- _$_.set_class(div_14, `item-${item}`, void 0, true);
1201
+ _$_.set_class(div_14, `item-${item}`);
1211
1202
 
1212
1203
  {
1213
1204
  var expression_22 = _$_.hydrating ? _$_.hydrate_child() : div_14.firstChild;
@@ -1238,7 +1229,7 @@ function ForLoopWithSiblings_render(__anchor, __block) {
1238
1229
 
1239
1230
  ForLoopWithSiblings[_$_.$r] = ForLoopWithSiblings_render;
1240
1231
 
1241
- var root_56 = _$_.template(`<div></div>`, 0);
1232
+ var root_56 = _$_.template_el('div');
1242
1233
 
1243
1234
  function ForLoopItemState_render(__anchor, __block) {
1244
1235
  const initialItems = [
@@ -1268,37 +1259,38 @@ function ForLoopItemState_render(__anchor, __block) {
1268
1259
 
1269
1260
  ForLoopItemState[_$_.$r] = ForLoopItemState_render;
1270
1261
 
1271
- var root_57 = _$_.template(`<div><input type="checkbox" class="checkbox"><span></span></div>`, 0);
1262
+ var root_57 = _$_.template(`<div><input type=checkbox class=checkbox><span>`);
1272
1263
 
1273
- function render_13(__prev) {
1274
- var __a = __prev._done.value;
1264
+ function render_14(__prev) {
1265
+ var __done_value = __prev._a.value;
1266
+ var __a = __done_value;
1275
1267
 
1276
1268
  if (__prev.a !== __a) {
1277
- _$_.set_checked(__prev._input, __prev.a = __a);
1269
+ _$_.set_checked(__prev._b, __prev.a = __a);
1278
1270
  }
1279
1271
 
1280
- var __b = __prev._props.text;
1272
+ var __b = __prev._c.text;
1281
1273
 
1282
1274
  if (__prev.b !== __b) {
1283
- _$_.set_text_content(__prev._span_6, __b, __prev.b);
1275
+ _$_.set_text_content(__prev._d, __b, __prev.b);
1284
1276
  __prev.b = __b;
1285
1277
  }
1286
1278
 
1287
- var __c = __prev._done.value ? 'completed' : 'pending';
1279
+ var __c = __done_value ? 'completed' : 'pending';
1288
1280
 
1289
1281
  if (__prev.c !== __c) {
1290
- _$_.set_class(__prev._span_6, __prev.c = __c, void 0, true);
1282
+ _$_.set_class(__prev._d, __prev.c = __c);
1291
1283
  }
1292
1284
 
1293
- var __d = `todo-${__prev._props.id}`;
1285
+ var __d = `todo-${__prev._c.id}`;
1294
1286
 
1295
1287
  if (__prev.d !== __d) {
1296
- _$_.set_class(__prev._div_16, __prev.d = __d, void 0, true);
1288
+ _$_.set_class(__prev._e, __prev.d = __d);
1297
1289
  }
1298
1290
  }
1299
1291
 
1300
1292
  function TodoItem_render(__anchor, __block, props) {
1301
- const done = _$_.track(false, __block, '4f2402a4');
1293
+ const done = _$_.track(false, __block, 'lyii78');
1302
1294
  var div_16 = root_57();
1303
1295
 
1304
1296
  {
@@ -1311,16 +1303,16 @@ function TodoItem_render(__anchor, __block, props) {
1311
1303
  var span_6 = _$_.hydrating ? _$_.hydrate_sibling() : input.nextSibling;
1312
1304
  }
1313
1305
 
1314
- _$_.render(render_13, {
1306
+ _$_.render(render_14, {
1315
1307
  a: void 0,
1316
1308
  b: '',
1317
1309
  c: _$_.UNINITIALIZED,
1318
1310
  d: _$_.UNINITIALIZED,
1319
- _done: done,
1320
- _input: input,
1321
- _props: props,
1322
- _span_6: span_6,
1323
- _div_16: div_16
1311
+ _a: done,
1312
+ _b: input,
1313
+ _c: props,
1314
+ _d: span_6,
1315
+ _e: div_16
1324
1316
  });
1325
1317
 
1326
1318
  _$_.append(__anchor, div_16);
@@ -1328,8 +1320,8 @@ function TodoItem_render(__anchor, __block, props) {
1328
1320
 
1329
1321
  TodoItem[_$_.$r] = TodoItem_render;
1330
1322
 
1331
- var root_59 = _$_.template(`<li class="single"> </li>`, 0);
1332
- var root_58 = _$_.template(`<ul></ul>`, 0);
1323
+ var root_59 = _$_.template_el('li', ['class', 'single'], ' ');
1324
+ var root_58 = _$_.template_el('ul');
1333
1325
 
1334
1326
  function ForLoopSingleItem_render(__anchor, __block) {
1335
1327
  const items = ['Only'];
@@ -1362,12 +1354,12 @@ function ForLoopSingleItem_render(__anchor, __block) {
1362
1354
 
1363
1355
  ForLoopSingleItem[_$_.$r] = ForLoopSingleItem_render;
1364
1356
 
1365
- var root_62 = _$_.template(`<li> </li>`, 0);
1366
- var root_61 = _$_.template(`<button class="prepend">Prepend A</button><ul></ul>`, 1, 2);
1357
+ var root_62 = _$_.template_el('li', null, ' ');
1358
+ var root_61 = _$_.template(`<button class=prepend>Prepend A</button><ul>`, 1, 2);
1367
1359
  var root_60 = _$_.template(`<!>`, 1, 1);
1368
1360
 
1369
1361
  function ForLoopAddAtBeginning_render(__anchor, __block) {
1370
- const items = _$_.track(['B', 'C'], __block, '1561403a');
1362
+ const items = _$_.track(['B', 'C'], __block, '5xk2t6');
1371
1363
  var fragment_22 = root_60();
1372
1364
  var node_14 = _$_.first_child_frag(fragment_22);
1373
1365
 
@@ -1388,7 +1380,7 @@ function ForLoopAddAtBeginning_render(__anchor, __block) {
1388
1380
  (__anchor, item) => {
1389
1381
  var li_15 = root_62();
1390
1382
 
1391
- _$_.set_class(li_15, `item-${item}`, void 0, true);
1383
+ _$_.set_class(li_15, `item-${item}`);
1392
1384
 
1393
1385
  {
1394
1386
  var expression_25 = _$_.hydrating ? _$_.hydrate_child() : li_15.firstChild;
@@ -1413,12 +1405,12 @@ function ForLoopAddAtBeginning_render(__anchor, __block) {
1413
1405
 
1414
1406
  ForLoopAddAtBeginning[_$_.$r] = ForLoopAddAtBeginning_render;
1415
1407
 
1416
- var root_65 = _$_.template(`<li> </li>`, 0);
1417
- var root_64 = _$_.template(`<button class="insert">Insert B</button><ul></ul>`, 1, 2);
1408
+ var root_65 = _$_.template_el('li', null, ' ');
1409
+ var root_64 = _$_.template(`<button class=insert>Insert B</button><ul>`, 1, 2);
1418
1410
  var root_63 = _$_.template(`<!>`, 1, 1);
1419
1411
 
1420
1412
  function ForLoopAddInMiddle_render(__anchor, __block) {
1421
- const items = _$_.track(['A', 'C'], __block, '1bc60b46');
1413
+ const items = _$_.track(['A', 'C'], __block, '7pf806');
1422
1414
  var fragment_24 = root_63();
1423
1415
  var node_15 = _$_.first_child_frag(fragment_24);
1424
1416
 
@@ -1442,7 +1434,7 @@ function ForLoopAddInMiddle_render(__anchor, __block) {
1442
1434
  (__anchor, item) => {
1443
1435
  var li_16 = root_65();
1444
1436
 
1445
- _$_.set_class(li_16, `item-${item}`, void 0, true);
1437
+ _$_.set_class(li_16, `item-${item}`);
1446
1438
 
1447
1439
  {
1448
1440
  var expression_26 = _$_.hydrating ? _$_.hydrate_child() : li_16.firstChild;
@@ -1467,12 +1459,12 @@ function ForLoopAddInMiddle_render(__anchor, __block) {
1467
1459
 
1468
1460
  ForLoopAddInMiddle[_$_.$r] = ForLoopAddInMiddle_render;
1469
1461
 
1470
- var root_68 = _$_.template(`<li> </li>`, 0);
1471
- var root_67 = _$_.template(`<button class="remove-middle">Remove B</button><ul></ul>`, 1, 2);
1462
+ var root_68 = _$_.template_el('li', null, ' ');
1463
+ var root_67 = _$_.template(`<button class=remove-middle>Remove B</button><ul>`, 1, 2);
1472
1464
  var root_66 = _$_.template(`<!>`, 1, 1);
1473
1465
 
1474
1466
  function ForLoopRemoveFromMiddle_render(__anchor, __block) {
1475
- const items = _$_.track(['A', 'B', 'C'], __block, '1c87f95f');
1467
+ const items = _$_.track(['A', 'B', 'C'], __block, '7wzmn3');
1476
1468
  var fragment_26 = root_66();
1477
1469
  var node_16 = _$_.first_child_frag(fragment_26);
1478
1470
 
@@ -1493,7 +1485,7 @@ function ForLoopRemoveFromMiddle_render(__anchor, __block) {
1493
1485
  (__anchor, item) => {
1494
1486
  var li_17 = root_68();
1495
1487
 
1496
- _$_.set_class(li_17, `item-${item}`, void 0, true);
1488
+ _$_.set_class(li_17, `item-${item}`);
1497
1489
 
1498
1490
  {
1499
1491
  var expression_27 = _$_.hydrating ? _$_.hydrate_child() : li_17.firstChild;
@@ -1518,17 +1510,17 @@ function ForLoopRemoveFromMiddle_render(__anchor, __block) {
1518
1510
 
1519
1511
  ForLoopRemoveFromMiddle[_$_.$r] = ForLoopRemoveFromMiddle_render;
1520
1512
 
1521
- var root_70 = _$_.template(`<li> </li>`, 0);
1513
+ var root_70 = _$_.template_el('li', null, ' ');
1522
1514
 
1523
- function render_14(__prev) {
1524
- var __a = `item-${__prev._i.value}`;
1515
+ function render_15(__prev) {
1516
+ var __a = `item-${__prev._a.value}`;
1525
1517
 
1526
1518
  if (__prev.a !== __a) {
1527
- _$_.set_class(__prev._li_18, __prev.a = __a, void 0, true);
1519
+ _$_.set_class(__prev._b, __prev.a = __a);
1528
1520
  }
1529
1521
  }
1530
1522
 
1531
- var root_69 = _$_.template(`<ul class="large-list"></ul>`, 0);
1523
+ var root_69 = _$_.template_el('ul', ['class', 'large-list']);
1532
1524
 
1533
1525
  function ForLoopLargeList_render(__anchor, __block) {
1534
1526
  const items = _$_.with_scope(__block, () => Array.from({ length: 50 }, (_, i) => `Item ${i + 1}`));
@@ -1548,12 +1540,12 @@ function ForLoopLargeList_render(__anchor, __block) {
1548
1540
  _$_.hydrating && _$_.pop(li_18);
1549
1541
  }
1550
1542
 
1551
- _$_.item({ a: _$_.UNINITIALIZED, _i: i, _li_18: li_18 });
1543
+ _$_.item({ a: _$_.UNINITIALIZED, _a: i, _b: li_18 });
1552
1544
  _$_.append(__anchor, li_18);
1553
1545
  },
1554
1546
  12,
1555
1547
  void 0,
1556
- render_14
1548
+ render_15
1557
1549
  );
1558
1550
 
1559
1551
  _$_.hydrating && _$_.pop(ul_18);
@@ -1564,12 +1556,12 @@ function ForLoopLargeList_render(__anchor, __block) {
1564
1556
 
1565
1557
  ForLoopLargeList[_$_.$r] = ForLoopLargeList_render;
1566
1558
 
1567
- var root_73 = _$_.template(`<li> </li>`, 0);
1568
- var root_72 = _$_.template(`<button class="swap">Swap First and Last</button><ul></ul>`, 1, 2);
1559
+ var root_73 = _$_.template_el('li', null, ' ');
1560
+ var root_72 = _$_.template(`<button class=swap>Swap First and Last</button><ul>`, 1, 2);
1569
1561
  var root_71 = _$_.template(`<!>`, 1, 1);
1570
1562
 
1571
1563
  function ForLoopSwap_render(__anchor, __block) {
1572
- const items = _$_.track(['A', 'B', 'C', 'D'], __block, '5f8d152f');
1564
+ const items = _$_.track(['A', 'B', 'C', 'D'], __block, 'qiflm7');
1573
1565
  var fragment_28 = root_71();
1574
1566
  var node_17 = _$_.first_child_frag(fragment_28);
1575
1567
 
@@ -1593,7 +1585,7 @@ function ForLoopSwap_render(__anchor, __block) {
1593
1585
  (__anchor, item) => {
1594
1586
  var li_19 = root_73();
1595
1587
 
1596
- _$_.set_class(li_19, `item-${item}`, void 0, true);
1588
+ _$_.set_class(li_19, `item-${item}`);
1597
1589
 
1598
1590
  {
1599
1591
  var expression_29 = _$_.hydrating ? _$_.hydrate_child() : li_19.firstChild;
@@ -1618,12 +1610,12 @@ function ForLoopSwap_render(__anchor, __block) {
1618
1610
 
1619
1611
  ForLoopSwap[_$_.$r] = ForLoopSwap_render;
1620
1612
 
1621
- var root_76 = _$_.template(`<li> </li>`, 0);
1622
- var root_75 = _$_.template(`<button class="reverse">Reverse</button><ul></ul>`, 1, 2);
1613
+ var root_76 = _$_.template_el('li', null, ' ');
1614
+ var root_75 = _$_.template(`<button class=reverse>Reverse</button><ul>`, 1, 2);
1623
1615
  var root_74 = _$_.template(`<!>`, 1, 1);
1624
1616
 
1625
1617
  function ForLoopReverse_render(__anchor, __block) {
1626
- const items = _$_.track(['A', 'B', 'C', 'D'], __block, '24602e64');
1618
+ const items = _$_.track(['A', 'B', 'C', 'D'], __block, 'a3chgk');
1627
1619
  var fragment_30 = root_74();
1628
1620
  var node_18 = _$_.first_child_frag(fragment_30);
1629
1621
 
@@ -1644,7 +1636,7 @@ function ForLoopReverse_render(__anchor, __block) {
1644
1636
  (__anchor, item) => {
1645
1637
  var li_20 = root_76();
1646
1638
 
1647
- _$_.set_class(li_20, `item-${item}`, void 0, true);
1639
+ _$_.set_class(li_20, `item-${item}`);
1648
1640
 
1649
1641
  {
1650
1642
  var expression_30 = _$_.hydrating ? _$_.hydrate_child() : li_20.firstChild;
@@ -1669,11 +1661,11 @@ function ForLoopReverse_render(__anchor, __block) {
1669
1661
 
1670
1662
  ForLoopReverse[_$_.$r] = ForLoopReverse_render;
1671
1663
 
1672
- var root_78 = _$_.template(`<span class="item"> </span>`, 0);
1673
- var root_77 = _$_.template(`<div class="wrapper"><div class="host"><!><p class="tail">p</p></div><button class="push">Push</button><button class="rotate">Rotate</button></div>`, 0);
1664
+ var root_78 = _$_.template_el('span', ['class', 'item'], ' ');
1665
+ var root_77 = _$_.template(`<div class=wrapper><div class=host><p class=tail>p</p></div><button class=push>Push</button><button class=rotate>Rotate`);
1674
1666
 
1675
1667
  function KeyedForLoopAppendAndRotate_render(__anchor, __block) {
1676
- const items = _$_.track([1, 2, 3], __block, 'a8b41504');
1668
+ const items = _$_.track([1, 2, 3], __block, '1at4qo4');
1677
1669
  var div_17 = root_77();
1678
1670
 
1679
1671
  {
@@ -1720,13 +1712,13 @@ function KeyedForLoopAppendAndRotate_render(__anchor, __block) {
1720
1712
 
1721
1713
  KeyedForLoopAppendAndRotate[_$_.$r] = KeyedForLoopAppendAndRotate_render;
1722
1714
 
1723
- var root_79 = _$_.template(`<span class="item"></span>`, 0);
1715
+ var root_79 = _$_.template_el('span', ['class', 'item']);
1724
1716
 
1725
- function render_15(__prev) {
1717
+ function render_16(__prev) {
1726
1718
  var __a = __prev.$item;
1727
1719
 
1728
1720
  if (__prev.a !== __a) {
1729
- _$_.set_text_content(__prev._span_8, __a, __prev.a);
1721
+ _$_.set_text_content(__prev._b, __a, __prev.a);
1730
1722
  __prev.a = __a;
1731
1723
  }
1732
1724
  }
@@ -1738,23 +1730,23 @@ function RootKeyedList_render(__anchor, __block, props) {
1738
1730
  (__anchor, pattern_9) => {
1739
1731
  var span_8 = root_79();
1740
1732
 
1741
- _$_.item({ a: '', $item: pattern_9, _span_8: span_8 });
1733
+ _$_.item({ a: '', $item: pattern_9, _b: span_8 });
1742
1734
  _$_.append(__anchor, span_8);
1743
1735
  },
1744
1736
  144,
1745
1737
  void 0,
1746
1738
  void 0,
1747
1739
  void 0,
1748
- render_15
1740
+ render_16
1749
1741
  );
1750
1742
  }
1751
1743
 
1752
1744
  RootKeyedList[_$_.$r] = RootKeyedList_render;
1753
1745
 
1754
- var root_80 = _$_.template(`<div class="wrapper"><div class="host"><!><p class="tail">p</p></div><button class="push">Push</button><button class="rotate">Rotate</button></div>`, 0);
1746
+ var root_80 = _$_.template(`<div class=wrapper><div class=host><p class=tail>p</p></div><button class=push>Push</button><button class=rotate>Rotate`);
1755
1747
 
1756
1748
  function RootKeyedForLoopAppendAndRotate_render(__anchor, __block) {
1757
- const items = _$_.track([1, 2, 3], __block, '50a91d60');
1749
+ const items = _$_.track([1, 2, 3], __block, 'mdp2e8');
1758
1750
  var div_19 = root_80();
1759
1751
 
1760
1752
  {