ripple 0.3.9 → 0.3.11

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 (70) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/package.json +2 -2
  3. package/src/compiler/errors.js +1 -1
  4. package/src/compiler/index.d.ts +3 -1
  5. package/src/compiler/phases/1-parse/index.js +195 -23
  6. package/src/compiler/phases/2-analyze/index.js +266 -108
  7. package/src/compiler/phases/2-analyze/prune.js +13 -5
  8. package/src/compiler/phases/3-transform/client/index.js +304 -80
  9. package/src/compiler/phases/3-transform/server/index.js +108 -43
  10. package/src/compiler/types/index.d.ts +28 -3
  11. package/src/compiler/types/parse.d.ts +3 -1
  12. package/src/compiler/utils.js +275 -1
  13. package/src/runtime/element.js +39 -0
  14. package/src/runtime/index-client.js +14 -4
  15. package/src/runtime/internal/client/composite.js +10 -6
  16. package/src/runtime/internal/client/expression.js +280 -0
  17. package/src/runtime/internal/client/index.js +4 -0
  18. package/src/runtime/internal/client/portal.js +12 -6
  19. package/src/runtime/internal/server/index.js +26 -1
  20. package/src/utils/builders.js +30 -0
  21. package/tests/client/basic/__snapshots__/basic.rendering.test.ripple.snap +1 -0
  22. package/tests/client/basic/basic.components.test.ripple +85 -87
  23. package/tests/client/basic/basic.errors.test.ripple +4 -8
  24. package/tests/client/basic/basic.rendering.test.ripple +27 -10
  25. package/tests/client/capture-error.js +12 -0
  26. package/tests/client/compiler/compiler.basic.test.ripple +76 -6
  27. package/tests/client/composite/composite.props.test.ripple +1 -3
  28. package/tests/client/composite/composite.render.test.ripple +91 -13
  29. package/tests/client/css/global-additional-cases.test.ripple +3 -3
  30. package/tests/client/return.test.ripple +101 -0
  31. package/tests/client/svg.test.ripple +4 -4
  32. package/tests/client/tsx.test.ripple +486 -0
  33. package/tests/hydration/basic.test.js +23 -0
  34. package/tests/hydration/compiled/client/basic.js +111 -75
  35. package/tests/hydration/compiled/client/composite.js +81 -46
  36. package/tests/hydration/compiled/client/events.js +18 -63
  37. package/tests/hydration/compiled/client/for.js +90 -183
  38. package/tests/hydration/compiled/client/head.js +10 -25
  39. package/tests/hydration/compiled/client/hmr.js +10 -13
  40. package/tests/hydration/compiled/client/html.js +251 -380
  41. package/tests/hydration/compiled/client/if-children.js +35 -45
  42. package/tests/hydration/compiled/client/if.js +2 -2
  43. package/tests/hydration/compiled/client/mixed-control-flow.js +24 -72
  44. package/tests/hydration/compiled/client/nested-control-flow.js +115 -391
  45. package/tests/hydration/compiled/client/portal.js +8 -20
  46. package/tests/hydration/compiled/client/reactivity.js +14 -47
  47. package/tests/hydration/compiled/client/return.js +2 -5
  48. package/tests/hydration/compiled/client/try.js +4 -4
  49. package/tests/hydration/compiled/server/basic.js +64 -31
  50. package/tests/hydration/compiled/server/composite.js +62 -29
  51. package/tests/hydration/compiled/server/hmr.js +24 -37
  52. package/tests/hydration/compiled/server/html.js +472 -611
  53. package/tests/hydration/compiled/server/if-children.js +77 -103
  54. package/tests/hydration/compiled/server/portal.js +8 -8
  55. package/tests/hydration/components/basic.ripple +15 -5
  56. package/tests/hydration/components/composite.ripple +13 -1
  57. package/tests/hydration/components/hmr.ripple +1 -3
  58. package/tests/hydration/components/html.ripple +13 -35
  59. package/tests/hydration/components/if-children.ripple +4 -8
  60. package/tests/hydration/composite.test.js +11 -0
  61. package/tests/server/basic.attributes.test.ripple +50 -0
  62. package/tests/server/basic.components.test.ripple +22 -28
  63. package/tests/server/basic.test.ripple +12 -0
  64. package/tests/server/compiler.test.ripple +25 -8
  65. package/tests/server/composite.props.test.ripple +1 -3
  66. package/tests/server/style-identifier.test.ripple +2 -4
  67. package/tests/utils/compiler-compat-config.test.js +38 -0
  68. package/tests/utils/vite-plugin-config.test.js +113 -0
  69. package/tsconfig.typecheck.json +2 -1
  70. package/types/index.d.ts +8 -11
@@ -224,9 +224,9 @@ export function HtmlWrapper(__anchor, { children }, __block) {
224
224
  var div_7 = _$_.child(div_6);
225
225
 
226
226
  {
227
- var node_7 = _$_.child(div_7);
227
+ var expression = _$_.child(div_7);
228
228
 
229
- children(node_7, {}, _$_.active_block);
229
+ _$_.expression(expression, () => children);
230
230
  _$_.pop(div_7);
231
231
  }
232
232
  }
@@ -240,29 +240,26 @@ export function HtmlInChildren(__anchor, _, __block) {
240
240
 
241
241
  const content = '<p><strong>Bold</strong> text</p>';
242
242
  var fragment = root_7();
243
- var node_8 = _$_.first_child_frag(fragment);
243
+ var node_7 = _$_.first_child_frag(fragment);
244
244
 
245
245
  HtmlWrapper(
246
- node_8,
246
+ node_7,
247
247
  {
248
- children(__anchor, _, __block) {
249
- _$_.push_component();
250
-
248
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
251
249
  var div_8 = root_8();
252
250
 
253
251
  {
254
- var node_9 = _$_.child(div_8);
252
+ var node_8 = _$_.child(div_8);
255
253
 
256
254
  _$_.pop(div_8);
257
255
  }
258
256
 
259
257
  _$_.render(() => {
260
- _$_.html(node_9, () => content);
258
+ _$_.html(node_8, () => content);
261
259
  });
262
260
 
263
261
  _$_.append(__anchor, div_8);
264
- _$_.pop_component();
265
- }
262
+ })
266
263
  },
267
264
  _$_.active_block
268
265
  );
@@ -276,20 +273,18 @@ export function HtmlInChildrenWithSiblings(__anchor, _, __block) {
276
273
 
277
274
  const content = '<p>Dynamic content</p>';
278
275
  var fragment_1 = root_9();
279
- var node_10 = _$_.first_child_frag(fragment_1);
276
+ var node_9 = _$_.first_child_frag(fragment_1);
280
277
 
281
278
  HtmlWrapper(
282
- node_10,
279
+ node_9,
283
280
  {
284
- children(__anchor, _, __block) {
285
- _$_.push_component();
286
-
281
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
287
282
  var fragment_2 = root_10();
288
283
  var h1_1 = _$_.first_child_frag(fragment_2);
289
284
  var div_9 = _$_.sibling(h1_1);
290
285
 
291
286
  {
292
- var node_11 = _$_.child(div_9);
287
+ var node_10 = _$_.child(div_9);
293
288
 
294
289
  _$_.pop(div_9);
295
290
  }
@@ -297,12 +292,11 @@ export function HtmlInChildrenWithSiblings(__anchor, _, __block) {
297
292
  _$_.next();
298
293
 
299
294
  _$_.render(() => {
300
- _$_.html(node_11, () => content);
295
+ _$_.html(node_10, () => content);
301
296
  });
302
297
 
303
298
  _$_.append(__anchor, fragment_2, true);
304
- _$_.pop_component();
305
- }
299
+ })
306
300
  },
307
301
  _$_.active_block
308
302
  );
@@ -317,34 +311,31 @@ export function MultipleHtmlInChildren(__anchor, _, __block) {
317
311
  const html1 = '<p>First</p>';
318
312
  const html2 = '<p>Second</p>';
319
313
  var fragment_3 = root_11();
320
- var node_12 = _$_.first_child_frag(fragment_3);
314
+ var node_11 = _$_.first_child_frag(fragment_3);
321
315
 
322
316
  HtmlWrapper(
323
- node_12,
317
+ node_11,
324
318
  {
325
- children(__anchor, _, __block) {
326
- _$_.push_component();
327
-
319
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
328
320
  var div_10 = root_12();
329
321
 
330
322
  {
331
- var node_13 = _$_.child(div_10);
332
- var node_14 = _$_.sibling(node_13);
323
+ var node_12 = _$_.child(div_10);
324
+ var node_13 = _$_.sibling(node_12);
333
325
 
334
326
  _$_.pop(div_10);
335
327
  }
336
328
 
337
329
  _$_.render(
338
330
  (__prev) => {
339
- _$_.html(node_13, () => html1);
340
- _$_.html(node_14, () => html2);
331
+ _$_.html(node_12, () => html1);
332
+ _$_.html(node_13, () => html2);
341
333
  },
342
334
  {}
343
335
  );
344
336
 
345
337
  _$_.append(__anchor, div_10);
346
- _$_.pop_component();
347
- }
338
+ })
348
339
  },
349
340
  _$_.active_block
350
341
  );
@@ -360,13 +351,13 @@ export function HtmlWithComments(__anchor, _, __block) {
360
351
  var div_11 = root_13();
361
352
 
362
353
  {
363
- var node_15 = _$_.child(div_11);
354
+ var node_14 = _$_.child(div_11);
364
355
 
365
356
  _$_.pop(div_11);
366
357
  }
367
358
 
368
359
  _$_.render(() => {
369
- _$_.html(node_15, () => content);
360
+ _$_.html(node_14, () => content);
370
361
  });
371
362
 
372
363
  _$_.append(__anchor, div_11);
@@ -380,13 +371,13 @@ export function HtmlWithEmptyComment(__anchor, _, __block) {
380
371
  var div_12 = root_14();
381
372
 
382
373
  {
383
- var node_16 = _$_.child(div_12);
374
+ var node_15 = _$_.child(div_12);
384
375
 
385
376
  _$_.pop(div_12);
386
377
  }
387
378
 
388
379
  _$_.render(() => {
389
- _$_.html(node_16, () => content);
380
+ _$_.html(node_15, () => content);
390
381
  });
391
382
 
392
383
  _$_.append(__anchor, div_12);
@@ -398,29 +389,26 @@ export function HtmlWithCommentsInChildren(__anchor, _, __block) {
398
389
 
399
390
  const content = '<h2 id="intro">Introduction</h2><p>Some text</p><!-- TODO --><p>More text</p>';
400
391
  var fragment_4 = root_15();
401
- var node_17 = _$_.first_child_frag(fragment_4);
392
+ var node_16 = _$_.first_child_frag(fragment_4);
402
393
 
403
394
  HtmlWrapper(
404
- node_17,
395
+ node_16,
405
396
  {
406
- children(__anchor, _, __block) {
407
- _$_.push_component();
408
-
397
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
409
398
  var div_13 = root_16();
410
399
 
411
400
  {
412
- var node_18 = _$_.child(div_13);
401
+ var node_17 = _$_.child(div_13);
413
402
 
414
403
  _$_.pop(div_13);
415
404
  }
416
405
 
417
406
  _$_.render(() => {
418
- _$_.html(node_18, () => content);
407
+ _$_.html(node_17, () => content);
419
408
  });
420
409
 
421
410
  _$_.append(__anchor, div_13);
422
- _$_.pop_component();
423
- }
411
+ })
424
412
  },
425
413
  _$_.active_block
426
414
  );
@@ -457,16 +445,16 @@ export function DocLayout(
457
445
  var div_15 = _$_.child(article_1);
458
446
 
459
447
  {
460
- var node_19 = _$_.child(div_15);
448
+ var expression_1 = _$_.child(div_15);
461
449
 
462
- children(node_19, {}, _$_.active_block);
450
+ _$_.expression(expression_1, () => children);
463
451
  _$_.pop(div_15);
464
452
  }
465
453
  }
466
454
 
467
455
  _$_.pop(article_1);
468
456
 
469
- var node_20 = _$_.sibling(article_1);
457
+ var node_18 = _$_.sibling(article_1);
470
458
 
471
459
  {
472
460
  var consequent = (__anchor) => {
@@ -481,12 +469,12 @@ export function DocLayout(
481
469
  _$_.append(__anchor, div_17);
482
470
  };
483
471
 
484
- _$_.if(node_20, (__render) => {
472
+ _$_.if(node_18, (__render) => {
485
473
  if (editPath) __render(consequent);
486
474
  });
487
475
  }
488
476
 
489
- var node_21 = _$_.sibling(node_20);
477
+ var node_19 = _$_.sibling(node_18);
490
478
 
491
479
  {
492
480
  var consequent_1 = (__anchor) => {
@@ -496,47 +484,35 @@ export function DocLayout(
496
484
  var a_2 = _$_.child(nav_1);
497
485
 
498
486
  {
499
- var text_1 = _$_.child(a_2, true);
487
+ var expression_2 = _$_.child(a_2, true);
500
488
 
489
+ _$_.expression(expression_2, () => nextLink.text);
501
490
  _$_.pop(a_2);
502
491
  }
503
492
  }
504
493
 
505
- _$_.render(
506
- (__prev) => {
507
- var __a = nextLink.text;
508
-
509
- if (__prev.a !== __a) {
510
- _$_.set_text(text_1, __prev.a = __a);
511
- }
512
-
513
- var __b = nextLink.href;
514
-
515
- if (__prev.b !== __b) {
516
- _$_.set_attribute(a_2, 'href', __prev.b = __b);
517
- }
518
- },
519
- { a: ' ', b: void 0 }
520
- );
494
+ _$_.render(() => {
495
+ _$_.set_attribute(a_2, 'href', nextLink.href);
496
+ });
521
497
 
522
498
  _$_.append(__anchor, nav_1);
523
499
  };
524
500
 
525
- _$_.if(node_21, (__render) => {
501
+ _$_.if(node_19, (__render) => {
526
502
  if (nextLink) __render(consequent_1);
527
503
  });
528
504
  }
529
505
 
530
- var node_22 = _$_.sibling(node_21);
506
+ var node_20 = _$_.sibling(node_19);
531
507
 
532
- DocFooter(node_22, {}, _$_.active_block);
508
+ DocFooter(node_20, {}, _$_.active_block);
533
509
  _$_.pop(div_16);
534
510
  }
535
511
 
536
512
  var aside_1 = _$_.sibling(div_16);
537
513
 
538
514
  {
539
- var node_23 = _$_.child(aside_1);
515
+ var node_21 = _$_.child(aside_1);
540
516
 
541
517
  {
542
518
  var consequent_2 = (__anchor) => {
@@ -556,28 +532,16 @@ export function DocLayout(
556
532
  var a_3 = _$_.child(li_1);
557
533
 
558
534
  {
559
- var text_2 = _$_.child(a_3, true);
535
+ var expression_3 = _$_.child(a_3, true);
560
536
 
537
+ _$_.expression(expression_3, () => item.text);
561
538
  _$_.pop(a_3);
562
539
  }
563
540
  }
564
541
 
565
- _$_.render(
566
- (__prev) => {
567
- var __a = item.text;
568
-
569
- if (__prev.a !== __a) {
570
- _$_.set_text(text_2, __prev.a = __a);
571
- }
572
-
573
- var __b = item.href;
574
-
575
- if (__prev.b !== __b) {
576
- _$_.set_attribute(a_3, 'href', __prev.b = __b);
577
- }
578
- },
579
- { a: ' ', b: void 0 }
580
- );
542
+ _$_.render(() => {
543
+ _$_.set_attribute(a_3, 'href', item.href);
544
+ });
581
545
 
582
546
  _$_.append(__anchor, li_1);
583
547
  },
@@ -591,7 +555,7 @@ export function DocLayout(
591
555
  _$_.append(__anchor, div_18);
592
556
  };
593
557
 
594
- _$_.if(node_23, (__render) => {
558
+ _$_.if(node_21, (__render) => {
595
559
  if (toc.length > 0) __render(consequent_2);
596
560
  });
597
561
  }
@@ -609,10 +573,10 @@ export function HtmlWithServerData(__anchor, _, __block) {
609
573
 
610
574
  const content = '<h1 id="intro" class="doc-h1">Introduction</h1><p>Ripple is a framework.</p>';
611
575
  var fragment_5 = root_23();
612
- var node_24 = _$_.first_child_frag(fragment_5);
576
+ var node_22 = _$_.first_child_frag(fragment_5);
613
577
 
614
578
  DocLayout(
615
- node_24,
579
+ node_22,
616
580
  {
617
581
  editPath: "docs/introduction.md",
618
582
  nextLink: { href: '/docs/quick-start', text: 'Quick Start' },
@@ -621,24 +585,21 @@ export function HtmlWithServerData(__anchor, _, __block) {
621
585
  { href: '#features', text: 'Features' }
622
586
  ],
623
587
 
624
- children(__anchor, _, __block) {
625
- _$_.push_component();
626
-
588
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
627
589
  var div_19 = root_24();
628
590
 
629
591
  {
630
- var node_25 = _$_.child(div_19);
592
+ var node_23 = _$_.child(div_19);
631
593
 
632
594
  _$_.pop(div_19);
633
595
  }
634
596
 
635
597
  _$_.render(() => {
636
- _$_.html(node_25, () => content);
598
+ _$_.html(node_23, () => content);
637
599
  });
638
600
 
639
601
  _$_.append(__anchor, div_19);
640
- _$_.pop_component();
641
- }
602
+ })
642
603
  },
643
604
  _$_.active_block
644
605
  );
@@ -652,29 +613,26 @@ export function HtmlWithClientDefaults(__anchor, _, __block) {
652
613
 
653
614
  const content = '<h1 id="intro" class="doc-h1">Introduction</h1><p>Ripple is a framework.</p>';
654
615
  var fragment_6 = root_25();
655
- var node_26 = _$_.first_child_frag(fragment_6);
616
+ var node_24 = _$_.first_child_frag(fragment_6);
656
617
 
657
618
  DocLayout(
658
- node_26,
619
+ node_24,
659
620
  {
660
- children(__anchor, _, __block) {
661
- _$_.push_component();
662
-
621
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
663
622
  var div_20 = root_26();
664
623
 
665
624
  {
666
- var node_27 = _$_.child(div_20);
625
+ var node_25 = _$_.child(div_20);
667
626
 
668
627
  _$_.pop(div_20);
669
628
  }
670
629
 
671
630
  _$_.render(() => {
672
- _$_.html(node_27, () => content);
631
+ _$_.html(node_25, () => content);
673
632
  });
674
633
 
675
634
  _$_.append(__anchor, div_20);
676
- _$_.pop_component();
677
- }
635
+ })
678
636
  },
679
637
  _$_.active_block
680
638
  );
@@ -688,29 +646,26 @@ export function HtmlWithUndefinedContent(__anchor, _, __block) {
688
646
 
689
647
  const content = undefined;
690
648
  var fragment_7 = root_27();
691
- var node_28 = _$_.first_child_frag(fragment_7);
649
+ var node_26 = _$_.first_child_frag(fragment_7);
692
650
 
693
651
  DocLayout(
694
- node_28,
652
+ node_26,
695
653
  {
696
- children(__anchor, _, __block) {
697
- _$_.push_component();
698
-
654
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
699
655
  var div_21 = root_28();
700
656
 
701
657
  {
702
- var node_29 = _$_.child(div_21);
658
+ var node_27 = _$_.child(div_21);
703
659
 
704
660
  _$_.pop(div_21);
705
661
  }
706
662
 
707
663
  _$_.render(() => {
708
- _$_.html(node_29, () => content);
664
+ _$_.html(node_27, () => content);
709
665
  });
710
666
 
711
667
  _$_.append(__anchor, div_21);
712
- _$_.pop_component();
713
- }
668
+ })
714
669
  },
715
670
  _$_.active_block
716
671
  );
@@ -723,16 +678,16 @@ function DynamicHeading(__anchor, { level, children }, __block) {
723
678
  _$_.push_component();
724
679
 
725
680
  var fragment_8 = root_29();
726
- var node_30 = _$_.first_child_frag(fragment_8);
681
+ var node_28 = _$_.first_child_frag(fragment_8);
727
682
 
728
683
  {
729
684
  var switch_case_0 = (__anchor) => {
730
685
  var h1_2 = root_30();
731
686
 
732
687
  {
733
- var node_31 = _$_.child(h1_2);
688
+ var expression_4 = _$_.child(h1_2);
734
689
 
735
- children(node_31, {}, _$_.active_block);
690
+ _$_.expression(expression_4, () => children);
736
691
  _$_.pop(h1_2);
737
692
  }
738
693
 
@@ -743,16 +698,16 @@ function DynamicHeading(__anchor, { level, children }, __block) {
743
698
  var h2_1 = root_31();
744
699
 
745
700
  {
746
- var node_32 = _$_.child(h2_1);
701
+ var expression_5 = _$_.child(h2_1);
747
702
 
748
- children(node_32, {}, _$_.active_block);
703
+ _$_.expression(expression_5, () => children);
749
704
  _$_.pop(h2_1);
750
705
  }
751
706
 
752
707
  _$_.append(__anchor, h2_1);
753
708
  };
754
709
 
755
- _$_.switch(node_30, () => {
710
+ _$_.switch(node_28, () => {
756
711
  var result = [];
757
712
 
758
713
  switch (level) {
@@ -784,14 +739,14 @@ function CodeBlock(__anchor, { code }, __block) {
784
739
  var div_24 = _$_.sibling(div_23);
785
740
 
786
741
  {
787
- var node_33 = _$_.child(div_24);
742
+ var node_29 = _$_.child(div_24);
788
743
 
789
744
  _$_.pop(div_24);
790
745
  }
791
746
  }
792
747
 
793
748
  _$_.render(() => {
794
- _$_.html(node_33, () => highlighted);
749
+ _$_.html(node_29, () => highlighted);
795
750
  });
796
751
 
797
752
  _$_.append(__anchor, div_22);
@@ -807,9 +762,9 @@ function ContentWrapper(__anchor, { children }, __block) {
807
762
  var div_26 = _$_.child(div_25);
808
763
 
809
764
  {
810
- var node_34 = _$_.child(div_26);
765
+ var expression_6 = _$_.child(div_26);
811
766
 
812
- children(node_34, {}, _$_.active_block);
767
+ _$_.expression(expression_6, () => children);
813
768
  _$_.pop(div_26);
814
769
  }
815
770
  }
@@ -822,41 +777,35 @@ export function HtmlAfterSwitchInChildren(__anchor, _, __block) {
822
777
  _$_.push_component();
823
778
 
824
779
  var fragment_9 = root_34();
825
- var node_35 = _$_.first_child_frag(fragment_9);
780
+ var node_30 = _$_.first_child_frag(fragment_9);
826
781
 
827
782
  ContentWrapper(
828
- node_35,
783
+ node_30,
829
784
  {
830
- children(__anchor, _, __block) {
831
- _$_.push_component();
832
-
785
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
833
786
  var fragment_10 = root_35();
834
- var node_36 = _$_.first_child_frag(fragment_10);
787
+ var node_31 = _$_.first_child_frag(fragment_10);
835
788
 
836
789
  DynamicHeading(
837
- node_36,
790
+ node_31,
838
791
  {
839
792
  level: 1,
840
- children(__anchor, _, __block) {
841
- _$_.push_component();
842
-
843
- var text_3 = _$_.text('Title');
793
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
794
+ var expression_7 = _$_.text('Title');
844
795
 
845
- _$_.append(__anchor, text_3);
846
- _$_.pop_component();
847
- }
796
+ _$_.append(__anchor, expression_7);
797
+ })
848
798
  },
849
799
  _$_.active_block
850
800
  );
851
801
 
852
- var p_2 = _$_.sibling(node_36);
802
+ var p_2 = _$_.sibling(node_31);
853
803
  var p_1 = _$_.sibling(p_2);
854
- var node_37 = _$_.sibling(p_1);
804
+ var node_32 = _$_.sibling(p_1);
855
805
 
856
- CodeBlock(node_37, { code: "const x = 1;" }, _$_.active_block);
806
+ CodeBlock(node_32, { code: "const x = 1;" }, _$_.active_block);
857
807
  _$_.append(__anchor, fragment_10);
858
- _$_.pop_component();
859
- }
808
+ })
860
809
  },
861
810
  _$_.active_block
862
811
  );
@@ -865,7 +814,7 @@ export function HtmlAfterSwitchInChildren(__anchor, _, __block) {
865
814
  _$_.pop_component();
866
815
  }
867
816
 
868
- function NavItem(__anchor, { href, text, active = false }, __block) {
817
+ function NavItem(__anchor, { href, text: label, active = false }, __block) {
869
818
  _$_.push_component();
870
819
 
871
820
  var div_27 = root_36();
@@ -873,7 +822,7 @@ function NavItem(__anchor, { href, text, active = false }, __block) {
873
822
  _$_.set_class(div_27, `nav-item${active ? ' active' : ''}`, void 0, true);
874
823
 
875
824
  {
876
- var node_38 = _$_.child(div_27);
825
+ var node_33 = _$_.child(div_27);
877
826
 
878
827
  {
879
828
  var consequent_3 = (__anchor) => {
@@ -882,12 +831,12 @@ function NavItem(__anchor, { href, text, active = false }, __block) {
882
831
  _$_.append(__anchor, div_28);
883
832
  };
884
833
 
885
- _$_.if(node_38, (__render) => {
834
+ _$_.if(node_33, (__render) => {
886
835
  if (active) __render(consequent_3);
887
836
  });
888
837
  }
889
838
 
890
- var a_4 = _$_.sibling(node_38);
839
+ var a_4 = _$_.sibling(node_33);
891
840
 
892
841
  _$_.set_attribute(a_4, 'href', href);
893
842
 
@@ -895,9 +844,9 @@ function NavItem(__anchor, { href, text, active = false }, __block) {
895
844
  var span_1 = _$_.child(a_4);
896
845
 
897
846
  {
898
- var text_4 = _$_.child(span_1, true);
847
+ var expression_8 = _$_.child(span_1, true);
899
848
 
900
- text_4.nodeValue = text;
849
+ _$_.expression(expression_8, () => label);
901
850
  _$_.pop(span_1);
902
851
  }
903
852
  }
@@ -922,9 +871,9 @@ function SidebarSection(__anchor, { title, children }, __block) {
922
871
  var h2_2 = _$_.child(div_29);
923
872
 
924
873
  {
925
- var text_5 = _$_.child(h2_2, true);
874
+ var expression_9 = _$_.child(h2_2, true);
926
875
 
927
- text_5.nodeValue = title;
876
+ _$_.expression(expression_9, () => title);
928
877
  _$_.pop(h2_2);
929
878
  }
930
879
 
@@ -935,23 +884,23 @@ function SidebarSection(__anchor, { title, children }, __block) {
935
884
 
936
885
  _$_.pop(div_29);
937
886
 
938
- var node_39 = _$_.sibling(div_29);
887
+ var node_34 = _$_.sibling(div_29);
939
888
 
940
889
  {
941
890
  var consequent_4 = (__anchor) => {
942
891
  var div_30 = root_39();
943
892
 
944
893
  {
945
- var node_40 = _$_.child(div_30);
894
+ var expression_10 = _$_.child(div_30);
946
895
 
947
- children(node_40, {}, _$_.active_block);
896
+ _$_.expression(expression_10, () => children);
948
897
  _$_.pop(div_30);
949
898
  }
950
899
 
951
900
  _$_.append(__anchor, div_30);
952
901
  };
953
902
 
954
- _$_.if(node_39, (__render) => {
903
+ _$_.if(node_34, (__render) => {
955
904
  if (_$_.get(lazy)) __render(consequent_4);
956
905
  });
957
906
  }
@@ -975,20 +924,18 @@ function SideNav(__anchor, { currentPath }, __block) {
975
924
  var div_31 = _$_.child(nav_2);
976
925
 
977
926
  {
978
- var node_41 = _$_.child(div_31);
927
+ var node_35 = _$_.child(div_31);
979
928
 
980
929
  SidebarSection(
981
- node_41,
930
+ node_35,
982
931
  {
983
932
  title: "Getting Started",
984
- children(__anchor, _, __block) {
985
- _$_.push_component();
986
-
933
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
987
934
  var fragment_11 = root_41();
988
- var node_42 = _$_.first_child_frag(fragment_11);
935
+ var node_36 = _$_.first_child_frag(fragment_11);
989
936
 
990
937
  NavItem(
991
- node_42,
938
+ node_36,
992
939
  {
993
940
  href: "/intro",
994
941
  text: "Introduction",
@@ -997,10 +944,10 @@ function SideNav(__anchor, { currentPath }, __block) {
997
944
  _$_.active_block
998
945
  );
999
946
 
1000
- var node_43 = _$_.sibling(node_42);
947
+ var node_37 = _$_.sibling(node_36);
1001
948
 
1002
949
  NavItem(
1003
- node_43,
950
+ node_37,
1004
951
  {
1005
952
  href: "/start",
1006
953
  text: "Quick Start",
@@ -1010,8 +957,7 @@ function SideNav(__anchor, { currentPath }, __block) {
1010
957
  );
1011
958
 
1012
959
  _$_.append(__anchor, fragment_11);
1013
- _$_.pop_component();
1014
- }
960
+ })
1015
961
  },
1016
962
  _$_.active_block
1017
963
  );
@@ -1022,20 +968,18 @@ function SideNav(__anchor, { currentPath }, __block) {
1022
968
  var div_32 = _$_.sibling(div_31);
1023
969
 
1024
970
  {
1025
- var node_44 = _$_.child(div_32);
971
+ var node_38 = _$_.child(div_32);
1026
972
 
1027
973
  SidebarSection(
1028
- node_44,
974
+ node_38,
1029
975
  {
1030
976
  title: "Guide",
1031
- children(__anchor, _, __block) {
1032
- _$_.push_component();
1033
-
977
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1034
978
  var fragment_12 = root_42();
1035
- var node_45 = _$_.first_child_frag(fragment_12);
979
+ var node_39 = _$_.first_child_frag(fragment_12);
1036
980
 
1037
981
  NavItem(
1038
- node_45,
982
+ node_39,
1039
983
  {
1040
984
  href: "/guide/app",
1041
985
  text: "Application",
@@ -1044,10 +988,10 @@ function SideNav(__anchor, { currentPath }, __block) {
1044
988
  _$_.active_block
1045
989
  );
1046
990
 
1047
- var node_46 = _$_.sibling(node_45);
991
+ var node_40 = _$_.sibling(node_39);
1048
992
 
1049
993
  NavItem(
1050
- node_46,
994
+ node_40,
1051
995
  {
1052
996
  href: "/guide/syntax",
1053
997
  text: "Syntax",
@@ -1057,8 +1001,7 @@ function SideNav(__anchor, { currentPath }, __block) {
1057
1001
  );
1058
1002
 
1059
1003
  _$_.append(__anchor, fragment_12);
1060
- _$_.pop_component();
1061
- }
1004
+ })
1062
1005
  },
1063
1006
  _$_.active_block
1064
1007
  );
@@ -1087,25 +1030,25 @@ export function LayoutWithSidebarAndMain(__anchor, _, __block) {
1087
1030
  var div_33 = root_44();
1088
1031
 
1089
1032
  {
1090
- var node_47 = _$_.child(div_33);
1033
+ var node_41 = _$_.child(div_33);
1091
1034
 
1092
- PageHeader(node_47, {}, _$_.active_block);
1035
+ PageHeader(node_41, {}, _$_.active_block);
1093
1036
 
1094
- var div_34 = _$_.sibling(node_47);
1037
+ var div_34 = _$_.sibling(node_41);
1095
1038
 
1096
1039
  {
1097
- var node_48 = _$_.child(div_34);
1040
+ var node_42 = _$_.child(div_34);
1098
1041
 
1099
- SideNav(node_48, { currentPath: "/intro" }, _$_.active_block);
1042
+ SideNav(node_42, { currentPath: "/intro" }, _$_.active_block);
1100
1043
 
1101
- var main_1 = _$_.sibling(node_48);
1044
+ var main_1 = _$_.sibling(node_42);
1102
1045
 
1103
1046
  {
1104
1047
  var div_35 = _$_.child(main_1);
1105
1048
 
1106
1049
  _$_.pop(div_35);
1107
1050
 
1108
- var node_49 = _$_.sibling(div_35);
1051
+ var node_43 = _$_.sibling(div_35);
1109
1052
 
1110
1053
  {
1111
1054
  var consequent_5 = (__anchor) => {
@@ -1114,14 +1057,14 @@ export function LayoutWithSidebarAndMain(__anchor, _, __block) {
1114
1057
  _$_.append(__anchor, div_36);
1115
1058
  };
1116
1059
 
1117
- _$_.if(node_49, (__render) => {
1060
+ _$_.if(node_43, (__render) => {
1118
1061
  if (true) __render(consequent_5);
1119
1062
  });
1120
1063
  }
1121
1064
 
1122
- var node_50 = _$_.sibling(node_49);
1065
+ var node_44 = _$_.sibling(node_43);
1123
1066
 
1124
- PageHeader(node_50, {}, _$_.active_block);
1067
+ PageHeader(node_44, {}, _$_.active_block);
1125
1068
  _$_.pop(main_1);
1126
1069
  }
1127
1070
 
@@ -1144,9 +1087,9 @@ function ArticleWrapper(__anchor, { children }, __block) {
1144
1087
  var div_37 = _$_.child(article_2);
1145
1088
 
1146
1089
  {
1147
- var node_51 = _$_.child(div_37);
1090
+ var expression_11 = _$_.child(div_37);
1148
1091
 
1149
- children(node_51, {}, _$_.active_block);
1092
+ _$_.expression(expression_11, () => children);
1150
1093
  _$_.pop(div_37);
1151
1094
  }
1152
1095
  }
@@ -1170,24 +1113,21 @@ export function ArticleWithChildrenThenSibling(__anchor, _, __block) {
1170
1113
  var div_38 = root_48();
1171
1114
 
1172
1115
  {
1173
- var node_52 = _$_.child(div_38);
1116
+ var node_45 = _$_.child(div_38);
1174
1117
 
1175
1118
  ArticleWrapper(
1176
- node_52,
1119
+ node_45,
1177
1120
  {
1178
- children(__anchor, _, __block) {
1179
- _$_.push_component();
1180
-
1121
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1181
1122
  var fragment_13 = root_49();
1182
1123
 
1183
1124
  _$_.append(__anchor, fragment_13);
1184
- _$_.pop_component();
1185
- }
1125
+ })
1186
1126
  },
1187
1127
  _$_.active_block
1188
1128
  );
1189
1129
 
1190
- var node_53 = _$_.sibling(node_52);
1130
+ var node_46 = _$_.sibling(node_45);
1191
1131
 
1192
1132
  {
1193
1133
  var consequent_6 = (__anchor) => {
@@ -1196,12 +1136,12 @@ export function ArticleWithChildrenThenSibling(__anchor, _, __block) {
1196
1136
  _$_.append(__anchor, div_39);
1197
1137
  };
1198
1138
 
1199
- _$_.if(node_53, (__render) => {
1139
+ _$_.if(node_46, (__render) => {
1200
1140
  if (true) __render(consequent_6);
1201
1141
  });
1202
1142
  }
1203
1143
 
1204
- var node_54 = _$_.sibling(node_53);
1144
+ var node_47 = _$_.sibling(node_46);
1205
1145
 
1206
1146
  {
1207
1147
  var consequent_7 = (__anchor) => {
@@ -1210,14 +1150,14 @@ export function ArticleWithChildrenThenSibling(__anchor, _, __block) {
1210
1150
  _$_.append(__anchor, nav_3);
1211
1151
  };
1212
1152
 
1213
- _$_.if(node_54, (__render) => {
1153
+ _$_.if(node_47, (__render) => {
1214
1154
  if (true) __render(consequent_7);
1215
1155
  });
1216
1156
  }
1217
1157
 
1218
- var node_55 = _$_.sibling(node_54);
1158
+ var node_48 = _$_.sibling(node_47);
1219
1159
 
1220
- SimpleFooter(node_55, {}, _$_.active_block);
1160
+ SimpleFooter(node_48, {}, _$_.active_block);
1221
1161
  _$_.pop(div_38);
1222
1162
  }
1223
1163
 
@@ -1232,34 +1172,31 @@ export function ArticleWithHtmlChildThenSibling(__anchor, _, __block) {
1232
1172
  var div_40 = root_52();
1233
1173
 
1234
1174
  {
1235
- var node_56 = _$_.child(div_40);
1175
+ var node_49 = _$_.child(div_40);
1236
1176
 
1237
1177
  ArticleWrapper(
1238
- node_56,
1178
+ node_49,
1239
1179
  {
1240
- children(__anchor, _, __block) {
1241
- _$_.push_component();
1242
-
1180
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1243
1181
  var div_41 = root_53();
1244
1182
 
1245
1183
  {
1246
- var node_57 = _$_.child(div_41);
1184
+ var node_50 = _$_.child(div_41);
1247
1185
 
1248
1186
  _$_.pop(div_41);
1249
1187
  }
1250
1188
 
1251
1189
  _$_.render(() => {
1252
- _$_.html(node_57, () => htmlContent);
1190
+ _$_.html(node_50, () => htmlContent);
1253
1191
  });
1254
1192
 
1255
1193
  _$_.append(__anchor, div_41);
1256
- _$_.pop_component();
1257
- }
1194
+ })
1258
1195
  },
1259
1196
  _$_.active_block
1260
1197
  );
1261
1198
 
1262
- var node_58 = _$_.sibling(node_56);
1199
+ var node_51 = _$_.sibling(node_49);
1263
1200
 
1264
1201
  {
1265
1202
  var consequent_8 = (__anchor) => {
@@ -1268,14 +1205,14 @@ export function ArticleWithHtmlChildThenSibling(__anchor, _, __block) {
1268
1205
  _$_.append(__anchor, div_42);
1269
1206
  };
1270
1207
 
1271
- _$_.if(node_58, (__render) => {
1208
+ _$_.if(node_51, (__render) => {
1272
1209
  if (true) __render(consequent_8);
1273
1210
  });
1274
1211
  }
1275
1212
 
1276
- var node_59 = _$_.sibling(node_58);
1213
+ var node_52 = _$_.sibling(node_51);
1277
1214
 
1278
- SimpleFooter(node_59, {}, _$_.active_block);
1215
+ SimpleFooter(node_52, {}, _$_.active_block);
1279
1216
  _$_.pop(div_40);
1280
1217
  }
1281
1218
 
@@ -1295,16 +1232,16 @@ function InlineArticleLayout(__anchor, { children }, __block) {
1295
1232
  var div_44 = _$_.child(article_3);
1296
1233
 
1297
1234
  {
1298
- var node_60 = _$_.child(div_44);
1235
+ var expression_12 = _$_.child(div_44);
1299
1236
 
1300
- children(node_60, {}, _$_.active_block);
1237
+ _$_.expression(expression_12, () => children);
1301
1238
  _$_.pop(div_44);
1302
1239
  }
1303
1240
  }
1304
1241
 
1305
1242
  _$_.pop(article_3);
1306
1243
 
1307
- var node_61 = _$_.sibling(article_3);
1244
+ var node_53 = _$_.sibling(article_3);
1308
1245
 
1309
1246
  {
1310
1247
  var consequent_9 = (__anchor) => {
@@ -1313,14 +1250,14 @@ function InlineArticleLayout(__anchor, { children }, __block) {
1313
1250
  _$_.append(__anchor, div_45);
1314
1251
  };
1315
1252
 
1316
- _$_.if(node_61, (__render) => {
1253
+ _$_.if(node_53, (__render) => {
1317
1254
  if (true) __render(consequent_9);
1318
1255
  });
1319
1256
  }
1320
1257
 
1321
- var node_62 = _$_.sibling(node_61);
1258
+ var node_54 = _$_.sibling(node_53);
1322
1259
 
1323
- SimpleFooter(node_62, {}, _$_.active_block);
1260
+ SimpleFooter(node_54, {}, _$_.active_block);
1324
1261
  _$_.pop(div_43);
1325
1262
  }
1326
1263
 
@@ -1333,29 +1270,26 @@ export function InlineArticleWithHtmlChild(__anchor, _, __block) {
1333
1270
 
1334
1271
  const htmlContent = '<pre><code>const x = 1;</code></pre>';
1335
1272
  var fragment_14 = root_57();
1336
- var node_63 = _$_.first_child_frag(fragment_14);
1273
+ var node_55 = _$_.first_child_frag(fragment_14);
1337
1274
 
1338
1275
  InlineArticleLayout(
1339
- node_63,
1276
+ node_55,
1340
1277
  {
1341
- children(__anchor, _, __block) {
1342
- _$_.push_component();
1343
-
1278
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1344
1279
  var div_46 = root_58();
1345
1280
 
1346
1281
  {
1347
- var node_64 = _$_.child(div_46);
1282
+ var node_56 = _$_.child(div_46);
1348
1283
 
1349
1284
  _$_.pop(div_46);
1350
1285
  }
1351
1286
 
1352
1287
  _$_.render(() => {
1353
- _$_.html(node_64, () => htmlContent);
1288
+ _$_.html(node_56, () => htmlContent);
1354
1289
  });
1355
1290
 
1356
1291
  _$_.append(__anchor, div_46);
1357
- _$_.pop_component();
1358
- }
1292
+ })
1359
1293
  },
1360
1294
  _$_.active_block
1361
1295
  );
@@ -1401,18 +1335,18 @@ function DocsLayoutInner(
1401
1335
  var div_47 = root_62();
1402
1336
 
1403
1337
  {
1404
- var node_65 = _$_.child(div_47);
1338
+ var node_57 = _$_.child(div_47);
1405
1339
 
1406
- HeaderStub(node_65, {}, _$_.active_block);
1340
+ HeaderStub(node_57, {}, _$_.active_block);
1407
1341
 
1408
- var div_48 = _$_.sibling(node_65);
1342
+ var div_48 = _$_.sibling(node_57);
1409
1343
 
1410
1344
  {
1411
- var node_66 = _$_.child(div_48);
1345
+ var node_58 = _$_.child(div_48);
1412
1346
 
1413
- SidebarStub(node_66, {}, _$_.active_block);
1347
+ SidebarStub(node_58, {}, _$_.active_block);
1414
1348
 
1415
- var main_2 = _$_.sibling(node_66);
1349
+ var main_2 = _$_.sibling(node_58);
1416
1350
 
1417
1351
  {
1418
1352
  var div_52 = _$_.child(main_2);
@@ -1430,16 +1364,16 @@ function DocsLayoutInner(
1430
1364
  var div_49 = _$_.child(article_4);
1431
1365
 
1432
1366
  {
1433
- var node_67 = _$_.child(div_49);
1367
+ var expression_13 = _$_.child(div_49);
1434
1368
 
1435
- children(node_67, {}, _$_.active_block);
1369
+ _$_.expression(expression_13, () => children);
1436
1370
  _$_.pop(div_49);
1437
1371
  }
1438
1372
  }
1439
1373
 
1440
1374
  _$_.pop(article_4);
1441
1375
 
1442
- var node_68 = _$_.sibling(article_4);
1376
+ var node_59 = _$_.sibling(article_4);
1443
1377
 
1444
1378
  {
1445
1379
  var consequent_10 = (__anchor) => {
@@ -1448,12 +1382,12 @@ function DocsLayoutInner(
1448
1382
  _$_.append(__anchor, div_53);
1449
1383
  };
1450
1384
 
1451
- _$_.if(node_68, (__render) => {
1385
+ _$_.if(node_59, (__render) => {
1452
1386
  if (editPath) __render(consequent_10);
1453
1387
  });
1454
1388
  }
1455
1389
 
1456
- var node_69 = _$_.sibling(node_68);
1390
+ var node_60 = _$_.sibling(node_59);
1457
1391
 
1458
1392
  {
1459
1393
  var consequent_11 = (__anchor) => {
@@ -1463,40 +1397,28 @@ function DocsLayoutInner(
1463
1397
  var a_5 = _$_.child(nav_4);
1464
1398
 
1465
1399
  {
1466
- var text_6 = _$_.child(a_5, true);
1400
+ var expression_14 = _$_.child(a_5, true);
1467
1401
 
1402
+ _$_.expression(expression_14, () => nextLink.text);
1468
1403
  _$_.pop(a_5);
1469
1404
  }
1470
1405
  }
1471
1406
 
1472
- _$_.render(
1473
- (__prev) => {
1474
- var __a = nextLink.text;
1475
-
1476
- if (__prev.a !== __a) {
1477
- _$_.set_text(text_6, __prev.a = __a);
1478
- }
1479
-
1480
- var __b = nextLink.href;
1481
-
1482
- if (__prev.b !== __b) {
1483
- _$_.set_attribute(a_5, 'href', __prev.b = __b);
1484
- }
1485
- },
1486
- { a: ' ', b: void 0 }
1487
- );
1407
+ _$_.render(() => {
1408
+ _$_.set_attribute(a_5, 'href', nextLink.href);
1409
+ });
1488
1410
 
1489
1411
  _$_.append(__anchor, nav_4);
1490
1412
  };
1491
1413
 
1492
- _$_.if(node_69, (__render) => {
1414
+ _$_.if(node_60, (__render) => {
1493
1415
  if (nextLink) __render(consequent_11);
1494
1416
  });
1495
1417
  }
1496
1418
 
1497
- var node_70 = _$_.sibling(node_69);
1419
+ var node_61 = _$_.sibling(node_60);
1498
1420
 
1499
- FooterStub(node_70, {}, _$_.active_block);
1421
+ FooterStub(node_61, {}, _$_.active_block);
1500
1422
  _$_.pop(div_50);
1501
1423
  }
1502
1424
  }
@@ -1518,31 +1440,28 @@ export function DocsLayoutWithData(__anchor, _, __block) {
1518
1440
 
1519
1441
  const htmlContent = '<h1>Title</h1><p>Content</p>';
1520
1442
  var fragment_15 = root_65();
1521
- var node_71 = _$_.first_child_frag(fragment_15);
1443
+ var node_62 = _$_.first_child_frag(fragment_15);
1522
1444
 
1523
1445
  DocsLayoutInner(
1524
- node_71,
1446
+ node_62,
1525
1447
  {
1526
1448
  editPath: "docs/styling.md",
1527
1449
  nextLink: { href: '/next', text: 'Next' },
1528
- children(__anchor, _, __block) {
1529
- _$_.push_component();
1530
-
1450
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1531
1451
  var div_54 = root_66();
1532
1452
 
1533
1453
  {
1534
- var node_72 = _$_.child(div_54);
1454
+ var node_63 = _$_.child(div_54);
1535
1455
 
1536
1456
  _$_.pop(div_54);
1537
1457
  }
1538
1458
 
1539
1459
  _$_.render(() => {
1540
- _$_.html(node_72, () => htmlContent);
1460
+ _$_.html(node_63, () => htmlContent);
1541
1461
  });
1542
1462
 
1543
1463
  _$_.append(__anchor, div_54);
1544
- _$_.pop_component();
1545
- }
1464
+ })
1546
1465
  },
1547
1466
  _$_.active_block
1548
1467
  );
@@ -1556,29 +1475,26 @@ export function DocsLayoutWithoutData(__anchor, _, __block) {
1556
1475
 
1557
1476
  const htmlContent = undefined;
1558
1477
  var fragment_16 = root_67();
1559
- var node_73 = _$_.first_child_frag(fragment_16);
1478
+ var node_64 = _$_.first_child_frag(fragment_16);
1560
1479
 
1561
1480
  DocsLayoutInner(
1562
- node_73,
1481
+ node_64,
1563
1482
  {
1564
- children(__anchor, _, __block) {
1565
- _$_.push_component();
1566
-
1483
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1567
1484
  var div_55 = root_68();
1568
1485
 
1569
1486
  {
1570
- var node_74 = _$_.child(div_55);
1487
+ var node_65 = _$_.child(div_55);
1571
1488
 
1572
1489
  _$_.pop(div_55);
1573
1490
  }
1574
1491
 
1575
1492
  _$_.render(() => {
1576
- _$_.html(node_74, () => htmlContent);
1493
+ _$_.html(node_65, () => htmlContent);
1577
1494
  });
1578
1495
 
1579
1496
  _$_.append(__anchor, div_55);
1580
- _$_.pop_component();
1581
- }
1497
+ })
1582
1498
  },
1583
1499
  _$_.active_block
1584
1500
  );
@@ -1603,18 +1519,18 @@ function DocsLayoutExact(
1603
1519
  var div_56 = root_69();
1604
1520
 
1605
1521
  {
1606
- var node_75 = _$_.child(div_56);
1522
+ var node_66 = _$_.child(div_56);
1607
1523
 
1608
- HeaderStub(node_75, {}, _$_.active_block);
1524
+ HeaderStub(node_66, {}, _$_.active_block);
1609
1525
 
1610
- var div_57 = _$_.sibling(node_75);
1526
+ var div_57 = _$_.sibling(node_66);
1611
1527
 
1612
1528
  {
1613
- var node_76 = _$_.child(div_57);
1529
+ var node_67 = _$_.child(div_57);
1614
1530
 
1615
- SidebarStub(node_76, {}, _$_.active_block);
1531
+ SidebarStub(node_67, {}, _$_.active_block);
1616
1532
 
1617
- var main_3 = _$_.sibling(node_76);
1533
+ var main_3 = _$_.sibling(node_67);
1618
1534
 
1619
1535
  {
1620
1536
  var div_61 = _$_.child(main_3);
@@ -1632,16 +1548,16 @@ function DocsLayoutExact(
1632
1548
  var div_58 = _$_.child(article_5);
1633
1549
 
1634
1550
  {
1635
- var node_77 = _$_.child(div_58);
1551
+ var expression_15 = _$_.child(div_58);
1636
1552
 
1637
- children(node_77, {}, _$_.active_block);
1553
+ _$_.expression(expression_15, () => children);
1638
1554
  _$_.pop(div_58);
1639
1555
  }
1640
1556
  }
1641
1557
 
1642
1558
  _$_.pop(article_5);
1643
1559
 
1644
- var node_78 = _$_.sibling(article_5);
1560
+ var node_68 = _$_.sibling(article_5);
1645
1561
 
1646
1562
  {
1647
1563
  var consequent_12 = (__anchor) => {
@@ -1656,19 +1572,19 @@ function DocsLayoutExact(
1656
1572
  _$_.append(__anchor, div_62);
1657
1573
  };
1658
1574
 
1659
- _$_.if(node_78, (__render) => {
1575
+ _$_.if(node_68, (__render) => {
1660
1576
  if (editPath) __render(consequent_12);
1661
1577
  });
1662
1578
  }
1663
1579
 
1664
- var node_79 = _$_.sibling(node_78);
1580
+ var node_69 = _$_.sibling(node_68);
1665
1581
 
1666
1582
  {
1667
1583
  var consequent_15 = (__anchor) => {
1668
1584
  var nav_5 = root_71();
1669
1585
 
1670
1586
  {
1671
- var node_80 = _$_.child(nav_5);
1587
+ var node_70 = _$_.child(nav_5);
1672
1588
 
1673
1589
  {
1674
1590
  var consequent_13 = (__anchor) => {
@@ -1678,28 +1594,16 @@ function DocsLayoutExact(
1678
1594
  var span_2 = _$_.child(a_7);
1679
1595
 
1680
1596
  {
1681
- var text_7 = _$_.child(span_2, true);
1597
+ var expression_16 = _$_.child(span_2, true);
1682
1598
 
1599
+ _$_.expression(expression_16, () => prevLink.text);
1683
1600
  _$_.pop(span_2);
1684
1601
  }
1685
1602
  }
1686
1603
 
1687
- _$_.render(
1688
- (__prev) => {
1689
- var __a = prevLink.text;
1690
-
1691
- if (__prev.a !== __a) {
1692
- _$_.set_text(text_7, __prev.a = __a);
1693
- }
1694
-
1695
- var __b = prevLink.href;
1696
-
1697
- if (__prev.b !== __b) {
1698
- _$_.set_attribute(a_7, 'href', __prev.b = __b);
1699
- }
1700
- },
1701
- { a: ' ', b: void 0 }
1702
- );
1604
+ _$_.render(() => {
1605
+ _$_.set_attribute(a_7, 'href', prevLink.href);
1606
+ });
1703
1607
 
1704
1608
  _$_.append(__anchor, a_7);
1705
1609
  };
@@ -1710,12 +1614,12 @@ function DocsLayoutExact(
1710
1614
  _$_.append(__anchor, span_3);
1711
1615
  };
1712
1616
 
1713
- _$_.if(node_80, (__render) => {
1617
+ _$_.if(node_70, (__render) => {
1714
1618
  if (prevLink) __render(consequent_13); else __render(alternate, false);
1715
1619
  });
1716
1620
  }
1717
1621
 
1718
- var node_81 = _$_.sibling(node_80);
1622
+ var node_71 = _$_.sibling(node_70);
1719
1623
 
1720
1624
  {
1721
1625
  var consequent_14 = (__anchor) => {
@@ -1725,33 +1629,21 @@ function DocsLayoutExact(
1725
1629
  var span_4 = _$_.child(a_8);
1726
1630
 
1727
1631
  {
1728
- var text_8 = _$_.child(span_4, true);
1632
+ var expression_17 = _$_.child(span_4, true);
1729
1633
 
1634
+ _$_.expression(expression_17, () => nextLink.text);
1730
1635
  _$_.pop(span_4);
1731
1636
  }
1732
1637
  }
1733
1638
 
1734
- _$_.render(
1735
- (__prev) => {
1736
- var __a = nextLink.text;
1737
-
1738
- if (__prev.a !== __a) {
1739
- _$_.set_text(text_8, __prev.a = __a);
1740
- }
1741
-
1742
- var __b = nextLink.href;
1743
-
1744
- if (__prev.b !== __b) {
1745
- _$_.set_attribute(a_8, 'href', __prev.b = __b);
1746
- }
1747
- },
1748
- { a: ' ', b: void 0 }
1749
- );
1639
+ _$_.render(() => {
1640
+ _$_.set_attribute(a_8, 'href', nextLink.href);
1641
+ });
1750
1642
 
1751
1643
  _$_.append(__anchor, a_8);
1752
1644
  };
1753
1645
 
1754
- _$_.if(node_81, (__render) => {
1646
+ _$_.if(node_71, (__render) => {
1755
1647
  if (nextLink) __render(consequent_14);
1756
1648
  });
1757
1649
  }
@@ -1762,14 +1654,14 @@ function DocsLayoutExact(
1762
1654
  _$_.append(__anchor, nav_5);
1763
1655
  };
1764
1656
 
1765
- _$_.if(node_79, (__render) => {
1657
+ _$_.if(node_69, (__render) => {
1766
1658
  if (prevLink || nextLink) __render(consequent_15);
1767
1659
  });
1768
1660
  }
1769
1661
 
1770
- var node_82 = _$_.sibling(node_79);
1662
+ var node_72 = _$_.sibling(node_69);
1771
1663
 
1772
- FooterStub(node_82, {}, _$_.active_block);
1664
+ FooterStub(node_72, {}, _$_.active_block);
1773
1665
  _$_.pop(div_59);
1774
1666
  }
1775
1667
  }
@@ -1779,7 +1671,7 @@ function DocsLayoutExact(
1779
1671
  var aside_4 = _$_.sibling(div_60);
1780
1672
 
1781
1673
  {
1782
- var node_83 = _$_.child(aside_4);
1674
+ var node_73 = _$_.child(aside_4);
1783
1675
 
1784
1676
  {
1785
1677
  var consequent_16 = (__anchor) => {
@@ -1796,27 +1688,15 @@ function DocsLayoutExact(
1796
1688
  var a_9 = root_76();
1797
1689
 
1798
1690
  {
1799
- var text_9 = _$_.child(a_9, true);
1691
+ var expression_18 = _$_.child(a_9, true);
1800
1692
 
1693
+ _$_.expression(expression_18, () => item.text);
1801
1694
  _$_.pop(a_9);
1802
1695
  }
1803
1696
 
1804
- _$_.render(
1805
- (__prev) => {
1806
- var __a = item.text;
1807
-
1808
- if (__prev.a !== __a) {
1809
- _$_.set_text(text_9, __prev.a = __a);
1810
- }
1811
-
1812
- var __b = item.href;
1813
-
1814
- if (__prev.b !== __b) {
1815
- _$_.set_attribute(a_9, 'href', __prev.b = __b);
1816
- }
1817
- },
1818
- { a: ' ', b: void 0 }
1819
- );
1697
+ _$_.render(() => {
1698
+ _$_.set_attribute(a_9, 'href', item.href);
1699
+ });
1820
1700
 
1821
1701
  _$_.append(__anchor, a_9);
1822
1702
  },
@@ -1830,7 +1710,7 @@ function DocsLayoutExact(
1830
1710
  _$_.append(__anchor, div_63);
1831
1711
  };
1832
1712
 
1833
- _$_.if(node_83, (__render) => {
1713
+ _$_.if(node_73, (__render) => {
1834
1714
  if (toc.length > 0) __render(consequent_16);
1835
1715
  });
1836
1716
  }
@@ -1855,10 +1735,10 @@ export function DocsLayoutExactWithData(__anchor, _, __block) {
1855
1735
 
1856
1736
  const htmlContent = '<h1>Styling Guide</h1><p>Content</p>';
1857
1737
  var fragment_17 = root_77();
1858
- var node_84 = _$_.first_child_frag(fragment_17);
1738
+ var node_74 = _$_.first_child_frag(fragment_17);
1859
1739
 
1860
1740
  DocsLayoutExact(
1861
- node_84,
1741
+ node_74,
1862
1742
  {
1863
1743
  editPath: "docs/guide/styling.md",
1864
1744
  prevLink: { href: '/prev', text: 'Previous' },
@@ -1868,24 +1748,21 @@ export function DocsLayoutExactWithData(__anchor, _, __block) {
1868
1748
  { href: '#usage', text: 'Usage' }
1869
1749
  ],
1870
1750
 
1871
- children(__anchor, _, __block) {
1872
- _$_.push_component();
1873
-
1751
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1874
1752
  var div_64 = root_78();
1875
1753
 
1876
1754
  {
1877
- var node_85 = _$_.child(div_64);
1755
+ var node_75 = _$_.child(div_64);
1878
1756
 
1879
1757
  _$_.pop(div_64);
1880
1758
  }
1881
1759
 
1882
1760
  _$_.render(() => {
1883
- _$_.html(node_85, () => htmlContent);
1761
+ _$_.html(node_75, () => htmlContent);
1884
1762
  });
1885
1763
 
1886
1764
  _$_.append(__anchor, div_64);
1887
- _$_.pop_component();
1888
- }
1765
+ })
1889
1766
  },
1890
1767
  _$_.active_block
1891
1768
  );
@@ -1903,33 +1780,30 @@ export function DocsLayoutExactWithoutData(__anchor, _, __block) {
1903
1780
  const nextLink = undefined;
1904
1781
  const toc = undefined;
1905
1782
  var fragment_18 = root_79();
1906
- var node_86 = _$_.first_child_frag(fragment_18);
1783
+ var node_76 = _$_.first_child_frag(fragment_18);
1907
1784
 
1908
1785
  DocsLayoutExact(
1909
- node_86,
1786
+ node_76,
1910
1787
  {
1911
1788
  editPath,
1912
1789
  prevLink,
1913
1790
  nextLink,
1914
1791
  toc,
1915
- children(__anchor, _, __block) {
1916
- _$_.push_component();
1917
-
1792
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
1918
1793
  var div_65 = root_80();
1919
1794
 
1920
1795
  {
1921
- var node_87 = _$_.child(div_65);
1796
+ var node_77 = _$_.child(div_65);
1922
1797
 
1923
1798
  _$_.pop(div_65);
1924
1799
  }
1925
1800
 
1926
1801
  _$_.render(() => {
1927
- _$_.html(node_87, () => htmlContent);
1802
+ _$_.html(node_77, () => htmlContent);
1928
1803
  });
1929
1804
 
1930
1805
  _$_.append(__anchor, div_65);
1931
- _$_.pop_component();
1932
- }
1806
+ })
1933
1807
  },
1934
1808
  _$_.active_block
1935
1809
  );
@@ -1985,9 +1859,9 @@ function LayoutWithTemplate(__anchor, { children, data }, __block) {
1985
1859
  var main_4 = _$_.sibling(template_3);
1986
1860
 
1987
1861
  {
1988
- var node_88 = _$_.child(main_4);
1862
+ var expression_19 = _$_.child(main_4);
1989
1863
 
1990
- children(node_88, {}, _$_.active_block);
1864
+ _$_.expression(expression_19, () => children);
1991
1865
  _$_.pop(main_4);
1992
1866
  }
1993
1867
  }
@@ -2005,30 +1879,27 @@ export function NestedTemplateInLayout(__anchor, _, __block) {
2005
1879
 
2006
1880
  const doc = { title: 'Comparison', html: '<p>Content</p>' };
2007
1881
  var fragment_19 = root_84();
2008
- var node_89 = _$_.first_child_frag(fragment_19);
1882
+ var node_78 = _$_.first_child_frag(fragment_19);
2009
1883
 
2010
1884
  LayoutWithTemplate(
2011
- node_89,
1885
+ node_78,
2012
1886
  {
2013
1887
  data: doc,
2014
- children(__anchor, _, __block) {
2015
- _$_.push_component();
2016
-
1888
+ children: _$_.ripple_element(function render_children(__anchor, __block) {
2017
1889
  var div_69 = root_85();
2018
1890
 
2019
1891
  {
2020
- var node_90 = _$_.child(div_69);
1892
+ var node_79 = _$_.child(div_69);
2021
1893
 
2022
1894
  _$_.pop(div_69);
2023
1895
  }
2024
1896
 
2025
1897
  _$_.render(() => {
2026
- _$_.html(node_90, () => doc.html);
1898
+ _$_.html(node_79, () => doc.html);
2027
1899
  });
2028
1900
 
2029
1901
  _$_.append(__anchor, div_69);
2030
- _$_.pop_component();
2031
- }
1902
+ })
2032
1903
  },
2033
1904
  _$_.active_block
2034
1905
  );