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(`<div class="portal-content">Portal content</div>`, 0);
5
- var root = _$_.template(`<div class="container"><h1>Main Content</h1></div>`, 0);
4
+ var root_1 = _$_.template_el('div', ['class', 'portal-content'], 'Portal content');
5
+ var root = _$_.template(`<div class=container><h1>Main Content`);
6
6
 
7
7
  function SimplePortal_render(__anchor, __block) {
8
8
  var div = root();
@@ -25,7 +25,7 @@ function SimplePortal_render(__anchor, __block) {
25
25
 
26
26
  SimplePortal[_$_.$r] = SimplePortal_render;
27
27
 
28
- var root_3 = _$_.template(`<div class="portal-content">Portal is visible</div>`, 0);
28
+ var root_3 = _$_.template_el('div', ['class', 'portal-content'], 'Portal is visible');
29
29
 
30
30
  function consequent(__anchor, show) {
31
31
  _$_.portal(__anchor, () => typeof document !== 'undefined' ? document.body : null, (__anchor, __block) => {
@@ -39,10 +39,18 @@ function if_1(show) {
39
39
  if (show.value) return consequent;
40
40
  }
41
41
 
42
- var root_2 = _$_.template(`<div class="container"><button class="toggle">Toggle</button></div>`, 0);
42
+ var root_2 = _$_.template(`<div class=container><button class=toggle>Toggle`);
43
+
44
+ function render(__prev) {
45
+ var __a = if_1(__prev._a);
46
+
47
+ if (__prev.a !== __a) {
48
+ _$_.if_update(__prev._b, __prev.a = __a);
49
+ }
50
+ }
43
51
 
44
52
  function ConditionalPortal_render(__anchor, __block) {
45
- const show = _$_.track(true, __block, '4f6df174');
53
+ const show = _$_.track(true, __block, 'm1ectw');
46
54
  var div_2 = root_2();
47
55
 
48
56
  {
@@ -50,19 +58,20 @@ function ConditionalPortal_render(__anchor, __block) {
50
58
 
51
59
  button.__click = () => show.value = !show.value;
52
60
 
53
- var node_1 = _$_.hydrating ? _$_.hydrate_sibling() : _$_.append_into(div_2);
61
+ var node_1 = _$_.hydrating ? _$_.hydrate_sibling() : _$_.append_into(div_2, true);
62
+ var ifs = _$_.if_static(node_1, if_1, 0, show);
54
63
 
55
- _$_.if(node_1, if_1, false, show);
56
64
  _$_.hydrating && _$_.pop(div_2);
57
65
  }
58
66
 
67
+ _$_.render(render, { a: _$_.UNINITIALIZED, _a: show, _b: ifs });
59
68
  _$_.append(__anchor, div_2);
60
69
  }
61
70
 
62
71
  ConditionalPortal[_$_.$r] = ConditionalPortal_render;
63
72
 
64
- var root_5 = _$_.template(`<div class="portal-content">Modal content</div>`, 0);
65
- var root_4 = _$_.template(`<div><div class="main-content">Main page content</div><!><div class="footer">Footer</div></div>`, 0);
73
+ var root_5 = _$_.template_el('div', ['class', 'portal-content'], 'Modal content');
74
+ var root_4 = _$_.template(`<div><div class=main-content>Main page content</div><div class=footer>Footer`);
66
75
 
67
76
  function PortalWithMainContent_render(__anchor, __block) {
68
77
  var div_4 = root_4();
@@ -85,8 +94,8 @@ function PortalWithMainContent_render(__anchor, __block) {
85
94
 
86
95
  PortalWithMainContent[_$_.$r] = PortalWithMainContent_render;
87
96
 
88
- var root_7 = _$_.template(`<div class="portal-content">Portal content</div>`, 0);
89
- var root_6 = _$_.template(`<div class="outer"><div class="inner"><span>Nested content</span></div></div>`, 0);
97
+ var root_7 = _$_.template_el('div', ['class', 'portal-content'], 'Portal content');
98
+ var root_6 = _$_.template(`<div class=outer><div class=inner><span>Nested content`);
90
99
 
91
100
  function NestedContentWithPortal_render(__anchor, __block) {
92
101
  var div_7 = root_6();
@@ -1,31 +1,31 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class="count"></div>`, 0);
4
+ var root = _$_.template_el('div', ['class', 'count']);
5
5
 
6
6
  function render(__prev) {
7
- var __a = __prev._count.value;
7
+ var __a = __prev._a.value;
8
8
 
9
9
  if (__prev.a !== __a) {
10
- _$_.set_text_content(__prev._div, __a, __prev.a);
10
+ _$_.set_text_content(__prev._b, __a, __prev.a);
11
11
  __prev.a = __a;
12
12
  }
13
13
  }
14
14
 
15
15
  function TrackedState_render(__anchor, __block) {
16
- const count = _$_.track(0, __block, 'c1818584');
16
+ const count = _$_.track(0, __block, '1hovkhw');
17
17
  var div = root();
18
18
 
19
- _$_.render(render, { a: '', _count: count, _div: div });
19
+ _$_.render(render, { a: '', _a: count, _b: div });
20
20
  _$_.append(__anchor, div);
21
21
  }
22
22
 
23
23
  TrackedState[_$_.$r] = TrackedState_render;
24
24
 
25
- var root_1 = _$_.template(`<div><span class="count"> </span></div>`, 0);
25
+ var root_1 = _$_.template(`<div><span class=count> `);
26
26
 
27
27
  function CounterWithInitial_render(__anchor, __block, props) {
28
- const count = _$_.track(props.initial, __block, '03ea4348');
28
+ const count = _$_.track(props.initial, __block, '133ubs');
29
29
  var div_1 = root_1();
30
30
 
31
31
  {
@@ -50,11 +50,11 @@ function CounterWrapper_render(__anchor, __block) {
50
50
 
51
51
  CounterWrapper[_$_.$r] = CounterWrapper_render;
52
52
 
53
- var root_2 = _$_.template(`<div class="sum"> </div>`, 0);
53
+ var root_2 = _$_.template_el('div', ['class', 'sum'], ' ');
54
54
 
55
55
  function ComputedValues_render(__anchor, __block) {
56
- const a = _$_.track(2, __block, 'b78281db');
57
- const b = _$_.track(3, __block, 'a0cf6c6d');
56
+ const a = _$_.track(2, __block, '1ex10ij');
57
+ const b = _$_.track(3, __block, '18mae7h');
58
58
  const sum = () => a.value + b.value;
59
59
  var div_2 = root_2();
60
60
 
@@ -70,35 +70,35 @@ function ComputedValues_render(__anchor, __block) {
70
70
 
71
71
  ComputedValues[_$_.$r] = ComputedValues_render;
72
72
 
73
- var root_3 = _$_.template(`<div class="multiple-tracked"><div class="x"></div><div class="y"></div><div class="z"></div></div>`, 0);
73
+ var root_3 = _$_.template(`<div class=multiple-tracked><div class=x></div><div class=y></div><div class=z>`);
74
74
 
75
75
  function render_1(__prev) {
76
- var __a = __prev._x.value;
76
+ var __a = __prev._a.value;
77
77
 
78
78
  if (__prev.a !== __a) {
79
- _$_.set_text_content(__prev._div_4, __a, __prev.a);
79
+ _$_.set_text_content(__prev._b, __a, __prev.a);
80
80
  __prev.a = __a;
81
81
  }
82
82
 
83
- var __b = __prev._y.value;
83
+ var __b = __prev._c.value;
84
84
 
85
85
  if (__prev.b !== __b) {
86
- _$_.set_text_content(__prev._div_5, __b, __prev.b);
86
+ _$_.set_text_content(__prev._d, __b, __prev.b);
87
87
  __prev.b = __b;
88
88
  }
89
89
 
90
- var __c = __prev._z.value;
90
+ var __c = __prev._e.value;
91
91
 
92
92
  if (__prev.c !== __c) {
93
- _$_.set_text_content(__prev._div_6, __c, __prev.c);
93
+ _$_.set_text_content(__prev._f, __c, __prev.c);
94
94
  __prev.c = __c;
95
95
  }
96
96
  }
97
97
 
98
98
  function MultipleTracked_render(__anchor, __block) {
99
- const x = _$_.track(10, __block, '843522de');
100
- const y = _$_.track(20, __block, '1308996d');
101
- const z = _$_.track(30, __block, '048c3fd0');
99
+ const x = _$_.track(10, __block, '10ol1i6');
100
+ const y = _$_.track(20, __block, '5a4d4d');
101
+ const z = _$_.track(30, __block, '19fdn4');
102
102
  var div_3 = root_3();
103
103
 
104
104
  {
@@ -111,12 +111,12 @@ function MultipleTracked_render(__anchor, __block) {
111
111
  a: '',
112
112
  b: '',
113
113
  c: '',
114
- _x: x,
115
- _div_4: div_4,
116
- _y: y,
117
- _div_5: div_5,
118
- _z: z,
119
- _div_6: div_6
114
+ _a: x,
115
+ _b: div_4,
116
+ _c: y,
117
+ _d: div_5,
118
+ _e: z,
119
+ _f: div_6
120
120
  });
121
121
 
122
122
  _$_.append(__anchor, div_3);
@@ -124,11 +124,11 @@ function MultipleTracked_render(__anchor, __block) {
124
124
 
125
125
  MultipleTracked[_$_.$r] = MultipleTracked_render;
126
126
 
127
- var root_4 = _$_.template(`<div class="name"> </div>`, 0);
127
+ var root_4 = _$_.template_el('div', ['class', 'name'], ' ');
128
128
 
129
129
  function DerivedState_render(__anchor, __block) {
130
- const firstName = _$_.track('John', __block, '6015eeca');
131
- const lastName = _$_.track('Doe', __block, '4fa9a20e');
130
+ const firstName = _$_.track('John', __block, 'qnrtu2');
131
+ const lastName = _$_.track('Doe', __block, 'm3q77y');
132
132
  const fullName = () => `${firstName.value} ${lastName.value}`;
133
133
  var div_7 = root_4();
134
134
 
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class="ready">ready</div>`, 1, 1);
4
+ var root = _$_.template(`<div class=ready>ready`, 1, 1);
5
5
 
6
6
  function GuardReturnRenders_render(__anchor, __block) {
7
7
  const ready = true;
@@ -17,7 +17,7 @@ function GuardReturnRenders_render(__anchor, __block) {
17
17
 
18
18
  GuardReturnRenders[_$_.$r] = GuardReturnRenders_render;
19
19
 
20
- var root_1 = _$_.template(`<div class="ready">ready</div>`, 1, 1);
20
+ var root_1 = _$_.template(`<div class=ready>ready`, 1, 1);
21
21
 
22
22
  function GuardReturnNull_render(__anchor, __block) {
23
23
  const ready = false;
@@ -1,20 +1,20 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class="resolved"><span class="value"></span><button class="inc">inc</button></div>`, 0);
4
+ var root = _$_.template(`<div class=resolved><span class=value></span><button class=inc>inc`);
5
5
 
6
6
  function render(__prev) {
7
- var __a = __prev._data.value + ':' + __prev._count.value;
7
+ var __a = __prev._a.value + ':' + __prev._b.value;
8
8
 
9
9
  if (__prev.a !== __a) {
10
- _$_.set_text_content(__prev._span, __a, __prev.a);
10
+ _$_.set_text_content(__prev._c, __a, __prev.a);
11
11
  __prev.a = __a;
12
12
  }
13
13
  }
14
14
 
15
15
  function BasicContent_render(__anchor, __block) {
16
- const data = _$_.track_async(() => controls.basic.promise, __block, '703e438e');
17
- const count = _$_.track(0, __block, '928bce39');
16
+ const data = _$_.track_async(() => controls.basic.promise, __block, 'v55zf2');
17
+ const count = _$_.track(0, __block, '14nt3jt');
18
18
  var div = root();
19
19
 
20
20
  {
@@ -24,15 +24,15 @@ function BasicContent_render(__anchor, __block) {
24
24
  button.__click = () => count.value++;
25
25
  }
26
26
 
27
- _$_.render(render, { a: '', _data: data, _count: count, _span: span });
27
+ _$_.render(render, { a: '', _a: data, _b: count, _c: span });
28
28
  _$_.append(__anchor, div);
29
29
  }
30
30
 
31
31
  BasicContent[_$_.$r] = BasicContent_render;
32
32
 
33
- var root_3 = _$_.template(`<!><footer class="after-async">after-async</footer>`, 1, 2);
34
- var root_4 = _$_.template(`<p class="loading">loading...</p>`, 0);
35
- var root_2 = _$_.template(`<span class="before">before</span><!><span class="sibling-after">sibling-after</span>`, 1, 3);
33
+ var root_3 = _$_.template(`<!><footer class=after-async>after-async`, 1, 2);
34
+ var root_4 = _$_.template_el('p', ['class', 'loading'], 'loading...');
35
+ var root_2 = _$_.template(`<span class=before>before</span><!><span class=sibling-after>sibling-after`, 1, 3);
36
36
  var root_1 = _$_.template(`<!>`, 1, 1);
37
37
 
38
38
  function StreamPending_render(__anchor, __block) {
@@ -71,10 +71,10 @@ function StreamPending_render(__anchor, __block) {
71
71
 
72
72
  StreamPending[_$_.$r] = StreamPending_render;
73
73
 
74
- var root_5 = _$_.template(`<p class="resolved"> </p>`, 0);
74
+ var root_5 = _$_.template_el('p', ['class', 'resolved'], ' ');
75
75
 
76
76
  function CatchOnlyContent_render(__anchor, __block) {
77
- const data = _$_.track_async(() => controls.catchOnly.promise, __block, '50f939c6');
77
+ const data = _$_.track_async(() => controls.catchOnly.promise, __block, 'mgtlfq');
78
78
  var p_1 = root_5();
79
79
 
80
80
  {
@@ -89,8 +89,8 @@ function CatchOnlyContent_render(__anchor, __block) {
89
89
 
90
90
  CatchOnlyContent[_$_.$r] = CatchOnlyContent_render;
91
91
 
92
- var root_8 = _$_.template(`<em class="caught"> </em>`, 0);
93
- var root_7 = _$_.template(`<span class="before">before</span><!>`, 1, 2);
92
+ var root_8 = _$_.template_el('em', ['class', 'caught'], ' ');
93
+ var root_7 = _$_.template(`<span class=before>before</span><!>`, 1, 2);
94
94
  var root_6 = _$_.template(`<!>`, 1, 1);
95
95
 
96
96
  function StreamCatchOnly_render(__anchor, __block) {
@@ -129,10 +129,10 @@ function StreamCatchOnly_render(__anchor, __block) {
129
129
 
130
130
  StreamCatchOnly[_$_.$r] = StreamCatchOnly_render;
131
131
 
132
- var root_9 = _$_.template(`<p class="resolved"> </p>`, 0);
132
+ var root_9 = _$_.template_el('p', ['class', 'resolved'], ' ');
133
133
 
134
134
  function RejectContent_render(__anchor, __block) {
135
- const data = _$_.track_async(() => controls.rejects.promise, __block, '96452a54');
135
+ const data = _$_.track_async(() => controls.rejects.promise, __block, '15p08yc');
136
136
  var p_2 = root_9();
137
137
 
138
138
  {
@@ -147,8 +147,8 @@ function RejectContent_render(__anchor, __block) {
147
147
 
148
148
  RejectContent[_$_.$r] = RejectContent_render;
149
149
 
150
- var root_10 = _$_.template(`<em class="caught"> </em>`, 0);
151
- var root_11 = _$_.template(`<p class="loading">loading...</p>`, 0);
150
+ var root_10 = _$_.template_el('em', ['class', 'caught'], ' ');
151
+ var root_11 = _$_.template_el('p', ['class', 'loading'], 'loading...');
152
152
 
153
153
  function StreamRejects_render(__anchor, __block) {
154
154
  _$_.try(
@@ -179,10 +179,10 @@ function StreamRejects_render(__anchor, __block) {
179
179
 
180
180
  StreamRejects[_$_.$r] = StreamRejects_render;
181
181
 
182
- var root_12 = _$_.template(`<p class="resolved"> </p>`, 0);
182
+ var root_12 = _$_.template_el('p', ['class', 'resolved'], ' ');
183
183
 
184
184
  function NoCatchContent_render(__anchor, __block) {
185
- const data = _$_.track_async(() => controls.noCatch.promise, __block, '6baa716b');
185
+ const data = _$_.track_async(() => controls.noCatch.promise, __block, 'tvfywb');
186
186
  var p_4 = root_12();
187
187
 
188
188
  {
@@ -197,7 +197,7 @@ function NoCatchContent_render(__anchor, __block) {
197
197
 
198
198
  NoCatchContent[_$_.$r] = NoCatchContent_render;
199
199
 
200
- var root_13 = _$_.template(`<p class="loading">loading...</p>`, 0);
200
+ var root_13 = _$_.template_el('p', ['class', 'loading'], 'loading...');
201
201
 
202
202
  function StreamNoCatch_render(__anchor, __block) {
203
203
  _$_.try(
@@ -217,7 +217,7 @@ function StreamNoCatch_render(__anchor, __block) {
217
217
 
218
218
  StreamNoCatch[_$_.$r] = StreamNoCatch_render;
219
219
 
220
- var root_14 = _$_.template(`<section class="root-catch"> </section>`, 0);
220
+ var root_14 = _$_.template_el('section', ['class', 'root-catch'], ' ');
221
221
 
222
222
  function RootCatch_render(__anchor, __block, { error, reset }) {
223
223
  var section = root_14();
@@ -236,7 +236,7 @@ function RootCatch_render(__anchor, __block, { error, reset }) {
236
236
 
237
237
  RootCatch[_$_.$r] = RootCatch_render;
238
238
 
239
- var root_15 = _$_.template(`<p class="root-pending">root-loading</p>`, 0);
239
+ var root_15 = _$_.template_el('p', ['class', 'root-pending'], 'root-loading');
240
240
 
241
241
  function RootPending_render(__anchor, __block) {
242
242
  var p_6 = root_15();
@@ -246,11 +246,11 @@ function RootPending_render(__anchor, __block) {
246
246
 
247
247
  RootPending[_$_.$r] = RootPending_render;
248
248
 
249
- var root_17 = _$_.template(`<p class="head-content"> </p>`, 0);
249
+ var root_17 = _$_.template_el('p', ['class', 'head-content'], ' ');
250
250
  var root_16 = _$_.template(`<!>`, 1, 1);
251
251
 
252
252
  function HeadContent_render(__anchor, __block) {
253
- const data = _$_.track_async(() => controls.head.promise, __block, '9cd3c3cd');
253
+ const data = _$_.track_async(() => controls.head.promise, __block, '17ii47h');
254
254
  var fragment_5 = root_16();
255
255
  var node_5 = _$_.first_child_frag(fragment_5);
256
256
 
@@ -290,7 +290,7 @@ function HeadContent_render(__anchor, __block) {
290
290
 
291
291
  HeadContent[_$_.$r] = HeadContent_render;
292
292
 
293
- var root_18 = _$_.template(`<p class="loading">loading...</p>`, 0);
293
+ var root_18 = _$_.template_el('p', ['class', 'loading'], 'loading...');
294
294
 
295
295
  function StreamHead_render(__anchor, __block) {
296
296
  _$_.try(
@@ -310,10 +310,10 @@ function StreamHead_render(__anchor, __block) {
310
310
 
311
311
  StreamHead[_$_.$r] = StreamHead_render;
312
312
 
313
- var root_19 = _$_.template(`<p class="root-async"> </p>`, 0);
313
+ var root_19 = _$_.template_el('p', ['class', 'root-async'], ' ');
314
314
 
315
315
  function StreamRootDirect_render(__anchor, __block) {
316
- const data = _$_.track_async(() => controls.rootDirect.promise, __block, 'bc9e61da');
316
+ const data = _$_.track_async(() => controls.rootDirect.promise, __block, '1gc250a');
317
317
  var p_9 = root_19();
318
318
 
319
319
  {
@@ -328,10 +328,10 @@ function StreamRootDirect_render(__anchor, __block) {
328
328
 
329
329
  StreamRootDirect[_$_.$r] = StreamRootDirect_render;
330
330
 
331
- var root_20 = _$_.template(`<p class="outer"> </p>`, 0);
331
+ var root_20 = _$_.template_el('p', ['class', 'outer'], ' ');
332
332
 
333
333
  function OuterContent_render(__anchor, __block) {
334
- const data = _$_.track_async(() => controls.outer.promise, __block, '35931cce');
334
+ const data = _$_.track_async(() => controls.outer.promise, __block, 'ev54ge');
335
335
  var p_10 = root_20();
336
336
 
337
337
  {
@@ -346,10 +346,10 @@ function OuterContent_render(__anchor, __block) {
346
346
 
347
347
  OuterContent[_$_.$r] = OuterContent_render;
348
348
 
349
- var root_21 = _$_.template(`<p class="inner"> </p>`, 0);
349
+ var root_21 = _$_.template_el('p', ['class', 'inner'], ' ');
350
350
 
351
351
  function InnerContent_render(__anchor, __block) {
352
- const data = _$_.track_async(() => controls.inner.promise, __block, '6c7d38ed');
352
+ const data = _$_.track_async(() => controls.inner.promise, __block, 'u3o1kd');
353
353
  var p_11 = root_21();
354
354
 
355
355
  {
@@ -364,9 +364,9 @@ function InnerContent_render(__anchor, __block) {
364
364
 
365
365
  InnerContent[_$_.$r] = InnerContent_render;
366
366
 
367
- var root_23 = _$_.template(`<p class="inner-loading">inner-loading</p>`, 0);
367
+ var root_23 = _$_.template_el('p', ['class', 'inner-loading'], 'inner-loading');
368
368
  var root_22 = _$_.template(`<!><!>`, 1, 2);
369
- var root_24 = _$_.template(`<p class="outer-loading">outer-loading</p>`, 0);
369
+ var root_24 = _$_.template_el('p', ['class', 'outer-loading'], 'outer-loading');
370
370
 
371
371
  function StreamNested_render(__anchor, __block) {
372
372
  _$_.try(
@@ -423,8 +423,6 @@ function make() {
423
423
  export const controls = {};
424
424
 
425
425
  export function resetControls() {
426
- var __block = _$_.scope();
427
-
428
426
  controls.basic = make();
429
427
  controls.catchOnly = make();
430
428
  controls.rejects = make();
@@ -1,9 +1,9 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class="status-success">Success</div>`, 0);
5
- var root_1 = _$_.template(`<div class="status-error">Error</div>`, 0);
6
- var root_2 = _$_.template(`<div class="status-unknown">Unknown</div>`, 0);
4
+ var root = _$_.template_el('div', ['class', 'status-success'], 'Success');
5
+ var root_1 = _$_.template_el('div', ['class', 'status-error'], 'Error');
6
+ var root_2 = _$_.template_el('div', ['class', 'status-unknown'], 'Unknown');
7
7
 
8
8
  function switch_case_0(__anchor, status) {
9
9
  var div = root();
@@ -44,9 +44,9 @@ function SwitchStatic_render(__anchor, __block) {
44
44
 
45
45
  SwitchStatic[_$_.$r] = SwitchStatic_render;
46
46
 
47
- var root_5 = _$_.template(`<div class="case-a">Case A</div>`, 0);
48
- var root_6 = _$_.template(`<div class="case-b">Case B</div>`, 0);
49
- var root_7 = _$_.template(`<div class="case-c">Case C</div>`, 0);
47
+ var root_5 = _$_.template_el('div', ['class', 'case-a'], 'Case A');
48
+ var root_6 = _$_.template_el('div', ['class', 'case-b'], 'Case B');
49
+ var root_7 = _$_.template_el('div', ['class', 'case-c'], 'Case C');
50
50
 
51
51
  function switch_case_0_1(__anchor, status) {
52
52
  var div_3 = root_5();
@@ -79,11 +79,11 @@ function switch_2(status) {
79
79
  }
80
80
  }
81
81
 
82
- var root_4 = _$_.template(`<button class="toggle">Toggle</button><!>`, 1, 2);
82
+ var root_4 = _$_.template(`<button class=toggle>Toggle</button><!>`, 1, 2);
83
83
  var root_3 = _$_.template(`<!>`, 1, 1);
84
84
 
85
85
  function SwitchReactive_render(__anchor, __block) {
86
- const status = _$_.track('a', __block, '9b34d955');
86
+ const status = _$_.track('a', __block, '172bas5');
87
87
  var fragment = root_3();
88
88
  var node_1 = _$_.first_child_frag(fragment);
89
89
 
@@ -106,8 +106,8 @@ function SwitchReactive_render(__anchor, __block) {
106
106
 
107
107
  SwitchReactive[_$_.$r] = SwitchReactive_render;
108
108
 
109
- var root_8 = _$_.template(`<div class="case-1-2">1 or 2</div>`, 0);
110
- var root_9 = _$_.template(`<div class="case-other">Other</div>`, 0);
109
+ var root_8 = _$_.template_el('div', ['class', 'case-1-2'], '1 or 2');
110
+ var root_9 = _$_.template_el('div', ['class', 'case-other'], 'Other');
111
111
 
112
112
  function switch_case_0_2(__anchor, val) {
113
113
  var div_6 = root_8();
@@ -142,9 +142,9 @@ function SwitchFallthrough_render(__anchor, __block) {
142
142
 
143
143
  SwitchFallthrough[_$_.$r] = SwitchFallthrough_render;
144
144
 
145
- var root_12 = _$_.template(`<div class="level-1">Level 1</div>`, 0);
146
- var root_13 = _$_.template(`<div class="level-2">Level 2</div>`, 0);
147
- var root_14 = _$_.template(`<div class="level-3">Level 3</div>`, 0);
145
+ var root_12 = _$_.template_el('div', ['class', 'level-1'], 'Level 1');
146
+ var root_13 = _$_.template_el('div', ['class', 'level-2'], 'Level 2');
147
+ var root_14 = _$_.template_el('div', ['class', 'level-3'], 'Level 3');
148
148
 
149
149
  function switch_case_0_3(__anchor, level) {
150
150
  var div_8 = root_12();
@@ -177,11 +177,11 @@ function switch_4(level) {
177
177
  }
178
178
  }
179
179
 
180
- var root_11 = _$_.template(`<button class="level-toggle">Toggle Level</button><!>`, 1, 2);
180
+ var root_11 = _$_.template(`<button class=level-toggle>Toggle Level</button><!>`, 1, 2);
181
181
  var root_10 = _$_.template(`<!>`, 1, 1);
182
182
 
183
183
  function SwitchNumericLevels_render(__anchor, __block) {
184
- const level = _$_.track(1, __block, '7581a7ab');
184
+ const level = _$_.track(1, __block, 'wlqm5n');
185
185
  var fragment_2 = root_10();
186
186
  var node_3 = _$_.first_child_frag(fragment_2);
187
187
 
@@ -204,9 +204,9 @@ function SwitchNumericLevels_render(__anchor, __block) {
204
204
 
205
205
  SwitchNumericLevels[_$_.$r] = SwitchNumericLevels_render;
206
206
 
207
- var root_17 = _$_.template(`<div class="block-1">Block 1</div>`, 0);
208
- var root_18 = _$_.template(`<div class="block-2">Block 2</div>`, 0);
209
- var root_19 = _$_.template(`<div class="block-3">Block 3</div>`, 0);
207
+ var root_17 = _$_.template_el('div', ['class', 'block-1'], 'Block 1');
208
+ var root_18 = _$_.template_el('div', ['class', 'block-2'], 'Block 2');
209
+ var root_19 = _$_.template_el('div', ['class', 'block-3'], 'Block 3');
210
210
 
211
211
  function switch_case_0_4(__anchor, level) {
212
212
  var div_11 = root_17();
@@ -239,11 +239,11 @@ function switch_5(level) {
239
239
  }
240
240
  }
241
241
 
242
- var root_16 = _$_.template(`<button class="block-toggle">Toggle</button><!>`, 1, 2);
242
+ var root_16 = _$_.template(`<button class=block-toggle>Toggle</button><!>`, 1, 2);
243
243
  var root_15 = _$_.template(`<!>`, 1, 1);
244
244
 
245
245
  function SwitchBlockScoped_render(__anchor, __block) {
246
- const level = _$_.track(1, __block, 'ca9f9852');
246
+ const level = _$_.track(1, __block, '1k7y5oy');
247
247
  var fragment_4 = root_15();
248
248
  var node_5 = _$_.first_child_frag(fragment_4);
249
249
 
@@ -266,9 +266,9 @@ function SwitchBlockScoped_render(__anchor, __block) {
266
266
 
267
267
  SwitchBlockScoped[_$_.$r] = SwitchBlockScoped_render;
268
268
 
269
- var root_22 = _$_.template(`<div class="nobreak-1">NoBreak 1</div>`, 0);
270
- var root_23 = _$_.template(`<div class="nobreak-2">NoBreak 2</div>`, 0);
271
- var root_24 = _$_.template(`<div class="nobreak-3">NoBreak 3</div>`, 0);
269
+ var root_22 = _$_.template_el('div', ['class', 'nobreak-1'], 'NoBreak 1');
270
+ var root_23 = _$_.template_el('div', ['class', 'nobreak-2'], 'NoBreak 2');
271
+ var root_24 = _$_.template_el('div', ['class', 'nobreak-3'], 'NoBreak 3');
272
272
 
273
273
  function switch_case_0_5(__anchor, level) {
274
274
  var div_14 = root_22();
@@ -301,11 +301,11 @@ function switch_6(level) {
301
301
  }
302
302
  }
303
303
 
304
- var root_21 = _$_.template(`<button class="nobreak-toggle">Toggle</button><!>`, 1, 2);
304
+ var root_21 = _$_.template(`<button class=nobreak-toggle>Toggle</button><!>`, 1, 2);
305
305
  var root_20 = _$_.template(`<!>`, 1, 1);
306
306
 
307
307
  function SwitchNoBreak_render(__anchor, __block) {
308
- const level = _$_.track(1, __block, '6b7cb0ea');
308
+ const level = _$_.track(1, __block, 'ttnpbe');
309
309
  var fragment_6 = root_20();
310
310
  var node_7 = _$_.first_child_frag(fragment_6);
311
311