ripple 0.3.128 → 0.4.1

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 (197) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/package.json +11 -4
  3. package/src/jsx-runtime.d.ts +12 -2
  4. package/src/runtime/element.js +23 -6
  5. package/src/runtime/index-client.js +81 -41
  6. package/src/runtime/index-server.js +1 -0
  7. package/src/runtime/internal/client/blocks.js +173 -91
  8. package/src/runtime/internal/client/component.js +4 -30
  9. package/src/runtime/internal/client/composite.js +12 -13
  10. package/src/runtime/internal/client/constants.js +9 -0
  11. package/src/runtime/internal/client/context.js +12 -19
  12. package/src/runtime/internal/client/css.js +7 -9
  13. package/src/runtime/internal/client/events.js +178 -90
  14. package/src/runtime/internal/client/expression.js +45 -25
  15. package/src/runtime/internal/client/for.js +409 -129
  16. package/src/runtime/internal/client/head.js +10 -5
  17. package/src/runtime/internal/client/html.js +1 -0
  18. package/src/runtime/internal/client/hydration.js +152 -10
  19. package/src/runtime/internal/client/if.js +239 -50
  20. package/src/runtime/internal/client/index.js +4 -12
  21. package/src/runtime/internal/client/operations.js +40 -61
  22. package/src/runtime/internal/client/portal.js +163 -85
  23. package/src/runtime/internal/client/render.js +44 -43
  24. package/src/runtime/internal/client/rpc.js +3 -3
  25. package/src/runtime/internal/client/runtime.js +592 -433
  26. package/src/runtime/internal/client/selector.js +5 -2
  27. package/src/runtime/internal/client/template.js +133 -158
  28. package/src/runtime/internal/client/transport.js +38 -0
  29. package/src/runtime/internal/client/try.js +465 -426
  30. package/src/runtime/internal/client/types.d.ts +56 -23
  31. package/src/runtime/internal/client/utils.js +1 -3
  32. package/src/runtime/internal/server/dynamic.js +20 -21
  33. package/src/runtime/internal/server/index.js +329 -277
  34. package/src/runtime/internal/server/rpc.js +3 -2
  35. package/src/runtime/internal/server/transport.js +16 -0
  36. package/src/runtime/transport.js +21 -0
  37. package/tests/client/__snapshots__/for.test.tsrx.snap +0 -5
  38. package/tests/client/array/array.copy-within.test.tsrx +12 -12
  39. package/tests/client/array/array.derived.test.tsrx +46 -46
  40. package/tests/client/array/array.iteration.test.tsrx +10 -10
  41. package/tests/client/array/array.mutations.test.tsrx +20 -20
  42. package/tests/client/array/array.static.test.tsrx +11 -11
  43. package/tests/client/array/array.to-methods.test.tsrx +6 -6
  44. package/tests/client/async-suspend.test.tsrx +74 -75
  45. package/tests/client/basic/basic.attributes.test.tsrx +123 -83
  46. package/tests/client/basic/basic.collections.test.tsrx +12 -12
  47. package/tests/client/basic/basic.components.test.tsrx +99 -25
  48. package/tests/client/basic/basic.errors.test.tsrx +18 -18
  49. package/tests/client/basic/basic.events.test.tsrx +42 -42
  50. package/tests/client/basic/basic.get-set.test.tsrx +8 -8
  51. package/tests/client/basic/basic.reactivity.test.tsrx +73 -38
  52. package/tests/client/basic/basic.rendering.test.tsrx +25 -25
  53. package/tests/client/basic/basic.utilities.test.tsrx +3 -3
  54. package/tests/client/boundaries.test.tsrx +8 -8
  55. package/tests/client/boxed-locals.test.tsrx +452 -0
  56. package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +6 -6
  57. package/tests/client/compiler/compiler.assignments.test.tsrx +9 -73
  58. package/tests/client/compiler/compiler.attributes.test.tsrx +23 -23
  59. package/tests/client/compiler/compiler.basic.test.tsrx +15 -60
  60. package/tests/client/compiler/compiler.tracked-access.test.tsrx +18 -43
  61. package/tests/client/compiler/compiler.try-in-function.test.tsrx +2 -2
  62. package/tests/client/composite/__snapshots__/composite.render.test.tsrx.snap +0 -1
  63. package/tests/client/composite/composite.dynamic-components.test.tsrx +77 -6
  64. package/tests/client/composite/composite.props.test.tsrx +149 -12
  65. package/tests/client/composite/composite.reactivity.test.tsrx +51 -52
  66. package/tests/client/composite/composite.render.test.tsrx +26 -9
  67. package/tests/client/css/scoped-styles.test.tsrx +8 -8
  68. package/tests/client/date.test.tsrx +42 -42
  69. package/tests/client/derived-release.test.tsrx +370 -0
  70. package/tests/client/dynamic-elements.test.tsrx +45 -45
  71. package/tests/client/events.test.tsrx +97 -71
  72. package/tests/client/for-selector.test.tsrx +14 -14
  73. package/tests/client/for-single-root-items.test.tsrx +118 -3
  74. package/tests/client/for.test.tsrx +332 -31
  75. package/tests/client/head.test.tsrx +19 -19
  76. package/tests/client/html.test.tsrx +11 -9
  77. package/tests/client/if-block.test.tsrx +80 -0
  78. package/tests/client/map.test.tsrx +16 -16
  79. package/tests/client/media-query.test.tsrx +7 -7
  80. package/tests/client/portal.test.tsrx +224 -26
  81. package/tests/client/primitive-text.test.tsrx +50 -0
  82. package/tests/client/prop-kind-switch.test.tsrx +141 -0
  83. package/tests/client/ref.test.tsrx +17 -17
  84. package/tests/client/return.test.tsrx +26 -3
  85. package/tests/client/root-boundary.test.tsrx +42 -0
  86. package/tests/client/scoped-flush.test.tsrx +8 -8
  87. package/tests/client/set.test.tsrx +6 -6
  88. package/tests/client/svg.test.tsrx +11 -11
  89. package/tests/client/switch.test.tsrx +44 -44
  90. package/tests/client/track-async-hydration.test.tsrx +4 -4
  91. package/tests/client/try.test.tsrx +151 -83
  92. package/tests/client/tsx.test.tsrx +43 -40
  93. package/tests/client/url/url.derived.test.tsrx +6 -6
  94. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +8 -8
  95. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +10 -10
  96. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +10 -10
  97. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +18 -18
  98. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +2 -2
  99. package/tests/hydration/basic.test.js +74 -1
  100. package/tests/hydration/build-components.js +22 -1
  101. package/tests/hydration/compiled/client/basic.js +1142 -713
  102. package/tests/hydration/compiled/client/composite.js +151 -100
  103. package/tests/hydration/compiled/client/events.js +184 -171
  104. package/tests/hydration/compiled/client/for.js +1472 -1132
  105. package/tests/hydration/compiled/client/fragment-cursor.js +2341 -0
  106. package/tests/hydration/compiled/client/head.js +254 -201
  107. package/tests/hydration/compiled/client/hmr.js +54 -41
  108. package/tests/hydration/compiled/client/html-in-template.js +54 -39
  109. package/tests/hydration/compiled/client/html.js +1633 -1263
  110. package/tests/hydration/compiled/client/if-children.js +420 -270
  111. package/tests/hydration/compiled/client/if-fragment-controlflow.js +363 -317
  112. package/tests/hydration/compiled/client/if.js +229 -219
  113. package/tests/hydration/compiled/client/mixed-control-flow.js +420 -404
  114. package/tests/hydration/compiled/client/nested-control-flow.js +1326 -1277
  115. package/tests/hydration/compiled/client/portal.js +87 -95
  116. package/tests/hydration/compiled/client/reactivity.js +135 -101
  117. package/tests/hydration/compiled/client/return.js +28 -19
  118. package/tests/hydration/compiled/client/streaming.js +390 -306
  119. package/tests/hydration/compiled/client/switch.js +258 -266
  120. package/tests/hydration/compiled/client/track-async-serialization.js +448 -280
  121. package/tests/hydration/compiled/client/try.js +173 -129
  122. package/tests/hydration/compiled/client/typed-text.js +71 -0
  123. package/tests/hydration/compiled/fixtures/money.js +10 -0
  124. package/tests/hydration/compiled/server/basic.js +123 -6
  125. package/tests/hydration/compiled/server/composite.js +16 -30
  126. package/tests/hydration/compiled/server/events.js +66 -18
  127. package/tests/hydration/compiled/server/for.js +117 -41
  128. package/tests/hydration/compiled/server/fragment-cursor.js +1687 -0
  129. package/tests/hydration/compiled/server/head.js +20 -20
  130. package/tests/hydration/compiled/server/hmr.js +2 -2
  131. package/tests/hydration/compiled/server/html.js +70 -238
  132. package/tests/hydration/compiled/server/if-children.js +107 -15
  133. package/tests/hydration/compiled/server/if.js +11 -15
  134. package/tests/hydration/compiled/server/mixed-control-flow.js +8 -8
  135. package/tests/hydration/compiled/server/portal.js +14 -22
  136. package/tests/hydration/compiled/server/reactivity.js +14 -14
  137. package/tests/hydration/compiled/server/streaming.js +19 -19
  138. package/tests/hydration/compiled/server/switch.js +8 -8
  139. package/tests/hydration/compiled/server/track-async-serialization.js +150 -23
  140. package/tests/hydration/compiled/server/try.js +8 -8
  141. package/tests/hydration/compiled/server/typed-text.js +17 -0
  142. package/tests/hydration/components/basic.tsrx +44 -8
  143. package/tests/hydration/components/composite.tsrx +2 -2
  144. package/tests/hydration/components/events.tsrx +25 -25
  145. package/tests/hydration/components/for.tsrx +115 -67
  146. package/tests/hydration/components/fragment-cursor.tsrx +650 -0
  147. package/tests/hydration/components/head.tsrx +16 -16
  148. package/tests/hydration/components/hmr.tsrx +2 -2
  149. package/tests/hydration/components/html.tsrx +7 -7
  150. package/tests/hydration/components/if-children.tsrx +72 -25
  151. package/tests/hydration/components/if.tsrx +18 -18
  152. package/tests/hydration/components/mixed-control-flow.tsrx +11 -11
  153. package/tests/hydration/components/portal.tsrx +3 -3
  154. package/tests/hydration/components/reactivity.tsrx +16 -16
  155. package/tests/hydration/components/streaming.tsrx +20 -20
  156. package/tests/hydration/components/switch.tsrx +20 -20
  157. package/tests/hydration/components/text-types.ts +4 -0
  158. package/tests/hydration/components/track-async-serialization.tsrx +80 -26
  159. package/tests/hydration/components/try.tsrx +8 -8
  160. package/tests/hydration/components/typed-text.tsrx +22 -0
  161. package/tests/hydration/fixtures/money.js +10 -0
  162. package/tests/hydration/for.test.js +36 -0
  163. package/tests/hydration/fragment-cursor.test.js +111 -0
  164. package/tests/hydration/if-children.test.js +24 -0
  165. package/tests/hydration/streaming.test.js +19 -0
  166. package/tests/hydration/track-async-serialization.test.js +87 -2
  167. package/tests/hydration/tsconfig.text-types.json +10 -0
  168. package/tests/hydration/typed-text.test.js +34 -0
  169. package/tests/server/await.test.tsrx +3 -3
  170. package/tests/server/basic.attributes.test.tsrx +70 -42
  171. package/tests/server/basic.components.test.tsrx +64 -8
  172. package/tests/server/basic.test.tsrx +34 -32
  173. package/tests/server/compiler.test.tsrx +1 -70
  174. package/tests/server/composite.props.test.tsrx +6 -6
  175. package/tests/server/dynamic-elements.test.tsrx +31 -8
  176. package/tests/server/for.test.tsrx +94 -0
  177. package/tests/server/head.test.tsrx +11 -11
  178. package/tests/server/scoped-styles.test.tsrx +2 -2
  179. package/tests/server/streaming-ssr.test.tsrx +48 -43
  180. package/tests/server/track-async-serialization.test.tsrx +204 -21
  181. package/tests/server/try.test.tsrx +48 -48
  182. package/tests/types/transport.ts +40 -0
  183. package/tests/utils/jsx-runtime-types.test.js +67 -2
  184. package/tests/utils/tracked-types.test.js +117 -0
  185. package/tests/utils/vite-plugin-config.test.js +23 -0
  186. package/types/index.d.ts +49 -9
  187. package/types/server.d.ts +3 -0
  188. package/types/transport.d.ts +15 -0
  189. package/src/runtime/internal/client/switch.js +0 -113
  190. package/src/utils/errors.js +0 -13
  191. package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +0 -12
  192. package/tests/client/compiler/__snapshots__/compiler.typescript.test.rsrx.snap +0 -46
  193. package/tests/client/lazy-array.test.tsrx +0 -31
  194. package/tests/client/lazy-destructuring.test.tsrx +0 -438
  195. package/tests/client/tracked-index-access.test.tsrx +0 -113
  196. package/tests/server/lazy-destructuring.test.tsrx +0 -595
  197. package/tests/server/tracked-index-access.test.tsrx +0 -76
@@ -2,443 +2,459 @@
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
4
  var root_1 = _$_.template(`<div> </div>`, 0);
5
+
6
+ function render(__prev) {
7
+ var __pattern = _$_.get(__prev._pattern);
8
+ var __a = `A-${__pattern.id}`;
9
+
10
+ if (__prev.a !== __a) {
11
+ _$_.set_text(__prev._expression, __prev.a = __a);
12
+ }
13
+
14
+ var __b = `row row-${__pattern.id} kind-a`;
15
+
16
+ if (__prev.b !== __b) {
17
+ _$_.set_class(__prev._div, __prev.b = __b, void 0, true);
18
+ }
19
+ }
20
+
5
21
  var root_2 = _$_.template(`<div>pending a</div>`, 0);
22
+
23
+ function render_1(__prev) {
24
+ var __a = `pending pending-${_$_.get(__prev._pattern).id}`;
25
+
26
+ if (__prev.a !== __a) {
27
+ _$_.set_class(__prev._div_1, __prev.a = __a, void 0, true);
28
+ }
29
+ }
30
+
6
31
  var root_3 = _$_.template(`<div> </div>`, 0);
32
+
33
+ function render_2(__prev) {
34
+ var __pattern_1 = _$_.get(__prev._pattern);
35
+ var __a = `B-${__pattern_1.id}`;
36
+
37
+ if (__prev.a !== __a) {
38
+ _$_.set_text(__prev._expression_1, __prev.a = __a);
39
+ }
40
+
41
+ var __b = `row row-${__pattern_1.id} kind-b`;
42
+
43
+ if (__prev.b !== __b) {
44
+ _$_.set_class(__prev._div_2, __prev.b = __b, void 0, true);
45
+ }
46
+ }
47
+
7
48
  var root_4 = _$_.template(`<div>pending b</div>`, 0);
49
+
50
+ function render_3(__prev) {
51
+ var __a = `pending pending-${_$_.get(__prev._pattern).id}`;
52
+
53
+ if (__prev.a !== __a) {
54
+ _$_.set_class(__prev._div_3, __prev.a = __a, void 0, true);
55
+ }
56
+ }
57
+
58
+ function switch_case_0(__anchor, pattern) {
59
+ _$_.try(
60
+ __anchor,
61
+ (__anchor) => {
62
+ var div = root_1();
63
+
64
+ {
65
+ var expression = _$_.hydrating ? _$_.hydrate_text() : div.firstChild;
66
+ }
67
+
68
+ _$_.render(render, {
69
+ a: ' ',
70
+ b: _$_.UNINITIALIZED,
71
+ _pattern: pattern,
72
+ _expression: expression,
73
+ _div: div
74
+ });
75
+
76
+ _$_.append(__anchor, div);
77
+ },
78
+ null,
79
+ (__anchor) => {
80
+ var div_1 = root_2();
81
+
82
+ _$_.render(render_1, { a: _$_.UNINITIALIZED, _pattern: pattern, _div_1: div_1 });
83
+ _$_.append(__anchor, div_1);
84
+ },
85
+ true
86
+ );
87
+ }
88
+
89
+ function switch_case_default(__anchor, pattern) {
90
+ _$_.try(
91
+ __anchor,
92
+ (__anchor) => {
93
+ var div_2 = root_3();
94
+
95
+ {
96
+ var expression_1 = _$_.hydrating ? _$_.hydrate_text() : div_2.firstChild;
97
+ }
98
+
99
+ _$_.render(render_2, {
100
+ a: ' ',
101
+ b: _$_.UNINITIALIZED,
102
+ _pattern: pattern,
103
+ _expression_1: expression_1,
104
+ _div_2: div_2
105
+ });
106
+
107
+ _$_.append(__anchor, div_2);
108
+ },
109
+ null,
110
+ (__anchor) => {
111
+ var div_3 = root_4();
112
+
113
+ _$_.render(render_3, { a: _$_.UNINITIALIZED, _pattern: pattern, _div_3: div_3 });
114
+ _$_.append(__anchor, div_3);
115
+ },
116
+ true
117
+ );
118
+ }
119
+
120
+ function switch_1(pattern) {
121
+ switch (_$_.get(pattern).kind) {
122
+ case 'a':
123
+ return switch_case_0;
124
+
125
+ default:
126
+ return switch_case_default;
127
+ }
128
+ }
129
+
130
+ function consequent(__anchor, pattern) {
131
+ _$_.switch(__anchor, switch_1, true, pattern);
132
+ }
133
+
134
+ function if_1(pattern) {
135
+ if (_$_.get(pattern).enabled) return consequent;
136
+ }
137
+
8
138
  var root = _$_.template(`<section class="mixed-static"></section>`, 0);
139
+
140
+ function MixedControlFlowStatic_render(__anchor, __block) {
141
+ const rows = [
142
+ { id: 1, kind: 'a', enabled: true },
143
+ { id: 2, kind: 'b', enabled: true },
144
+ { id: 3, kind: 'a', enabled: false }
145
+ ];
146
+
147
+ var section = root();
148
+
149
+ {
150
+ _$_.for_keyed(
151
+ section,
152
+ () => rows,
153
+ (__anchor, pattern) => {
154
+ _$_.if(__anchor, if_1, true, pattern);
155
+ },
156
+ 4,
157
+ (pattern) => _$_.get(pattern).id
158
+ );
159
+
160
+ _$_.hydrating && _$_.pop(section);
161
+ }
162
+
163
+ _$_.append(__anchor, section);
164
+ }
165
+
166
+ MixedControlFlowStatic[_$_.$r] = MixedControlFlowStatic_render;
167
+
9
168
  var root_8 = _$_.template(`<p> </p>`, 0);
169
+
170
+ function render_4(__prev) {
171
+ var __pattern_1_1 = _$_.get(__prev._pattern_1);
172
+ var __a = `A:${__pattern_1_1.label}`;
173
+
174
+ if (__prev.a !== __a) {
175
+ _$_.set_text(__prev._expression_2, __prev.a = __a);
176
+ }
177
+
178
+ var __b = `item item-${__pattern_1_1.id}`;
179
+
180
+ if (__prev.b !== __b) {
181
+ _$_.set_class(__prev._p, __prev.b = __b, void 0, true);
182
+ }
183
+ }
184
+
10
185
  var root_9 = _$_.template(`<p class="pending">pending a</p>`, 0);
11
186
  var root_10 = _$_.template(`<p> </p>`, 0);
187
+
188
+ function render_5(__prev) {
189
+ var __pattern_1_2 = _$_.get(__prev._pattern_1);
190
+ var __a = `B:${__pattern_1_2.label}`;
191
+
192
+ if (__prev.a !== __a) {
193
+ _$_.set_text(__prev._expression_3, __prev.a = __a);
194
+ }
195
+
196
+ var __b = `item item-${__pattern_1_2.id}`;
197
+
198
+ if (__prev.b !== __b) {
199
+ _$_.set_class(__prev._p_2, __prev.b = __b, void 0, true);
200
+ }
201
+ }
202
+
12
203
  var root_11 = _$_.template(`<p class="pending">pending b</p>`, 0);
204
+
205
+ function switch_case_0_1(__anchor, { mode, pattern_1 }) {
206
+ _$_.try(
207
+ __anchor,
208
+ (__anchor) => {
209
+ var p = root_8();
210
+
211
+ {
212
+ var expression_2 = _$_.hydrating ? _$_.hydrate_text() : p.firstChild;
213
+ }
214
+
215
+ _$_.render(render_4, {
216
+ a: ' ',
217
+ b: _$_.UNINITIALIZED,
218
+ _pattern_1: pattern_1,
219
+ _expression_2: expression_2,
220
+ _p: p
221
+ });
222
+
223
+ _$_.append(__anchor, p);
224
+ },
225
+ null,
226
+ (__anchor) => {
227
+ var p_1 = root_9();
228
+
229
+ _$_.append(__anchor, p_1);
230
+ },
231
+ true
232
+ );
233
+ }
234
+
235
+ function switch_case_default_1(__anchor, { mode, pattern_1 }) {
236
+ _$_.try(
237
+ __anchor,
238
+ (__anchor) => {
239
+ var p_2 = root_10();
240
+
241
+ {
242
+ var expression_3 = _$_.hydrating ? _$_.hydrate_text() : p_2.firstChild;
243
+ }
244
+
245
+ _$_.render(render_5, {
246
+ a: ' ',
247
+ b: _$_.UNINITIALIZED,
248
+ _pattern_1: pattern_1,
249
+ _expression_3: expression_3,
250
+ _p_2: p_2
251
+ });
252
+
253
+ _$_.append(__anchor, p_2);
254
+ },
255
+ null,
256
+ (__anchor) => {
257
+ var p_3 = root_11();
258
+
259
+ _$_.append(__anchor, p_3);
260
+ },
261
+ true
262
+ );
263
+ }
264
+
265
+ function switch_2({ mode, pattern_1 }) {
266
+ switch (mode.value) {
267
+ case 'a':
268
+ return switch_case_0_1;
269
+
270
+ default:
271
+ return switch_case_default_1;
272
+ }
273
+ }
274
+
13
275
  var root_7 = _$_.template(`<div class="mixed-reactive-list"></div>`, 0);
276
+
277
+ function consequent_1(__anchor, { show, items, mode }) {
278
+ var div_4 = root_7();
279
+
280
+ {
281
+ _$_.for_keyed(
282
+ div_4,
283
+ () => items.value,
284
+ (__anchor, pattern_1) => {
285
+ _$_.switch(__anchor, switch_2, true, { mode, pattern_1 });
286
+ },
287
+ 4,
288
+ (pattern_1) => _$_.get(pattern_1).id
289
+ );
290
+
291
+ _$_.hydrating && _$_.pop(div_4);
292
+ }
293
+
294
+ _$_.append(__anchor, div_4);
295
+ }
296
+
297
+ function if_2({ show, items, mode }) {
298
+ if (show.value) return consequent_1;
299
+ }
300
+
14
301
  var root_6 = _$_.template(`<button class="toggle-show">Toggle Show</button><button class="toggle-mode">Toggle Mode</button><button class="add-item">Add Item</button><!>`, 1, 4);
15
302
  var root_5 = _$_.template(`<!>`, 1, 1);
16
- var root_14 = _$_.template(`<div> </div>`, 0);
17
- var root_15 = _$_.template(`<div class="unexpected">unexpected</div>`, 0);
18
- var root_13 = _$_.template(`<div class="before">before</div><!>`, 1, 2);
19
- var root_12 = _$_.template(`<!>`, 1, 1);
20
- var root_16 = _$_.template(`<div class="resolved-row"> </div>`, 0);
21
303
 
22
- import { track, trackAsync } from 'ripple';
304
+ function MixedControlFlowReactive_render(__anchor, __block) {
305
+ const show = _$_.track(true, __block, '5ae53d26');
306
+ const mode = _$_.track('a', __block, '5b53eda2');
307
+ const items = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], __block, '7890dad6');
308
+ var fragment = root_5();
309
+ var node_1 = _$_.first_child_frag(fragment);
23
310
 
24
- export function MixedControlFlowStatic() {
25
- return _$_.tsrx_element((__anchor, __block) => {
26
- const rows = [
27
- { id: 1, kind: 'a', enabled: true },
28
- { id: 2, kind: 'b', enabled: true },
29
- { id: 3, kind: 'a', enabled: false }
30
- ];
31
-
32
- var section = root();
33
-
34
- {
35
- _$_.for_keyed(
36
- section,
37
- () => rows,
38
- (__anchor, pattern) => {
39
- {
40
- var consequent = (__anchor) => {
41
- {
42
- var switch_case_0 = (__anchor) => {
43
- _$_.try(
44
- __anchor,
45
- (__anchor) => {
46
- var div = root_1();
47
-
48
- {
49
- var expression = _$_.hydrating ? _$_.hydrate_child(true) : div.firstChild;
50
-
51
- _$_.pop(div);
52
- }
53
-
54
- _$_.render(
55
- (__prev) => {
56
- var __pattern = _$_.get(pattern);
57
- var __a = `A-${__pattern.id}`;
58
-
59
- if (__prev.a !== __a) {
60
- _$_.set_text(expression, __prev.a = __a);
61
- }
62
-
63
- var __b = `row row-${__pattern.id} kind-a`;
64
-
65
- if (__prev.b !== __b) {
66
- _$_.set_class(div, __prev.b = __b, void 0, true);
67
- }
68
- },
69
- { a: ' ', b: _$_.UNINITIALIZED }
70
- );
71
-
72
- _$_.append(__anchor, div);
73
- },
74
- null,
75
- (__anchor) => {
76
- var div_1 = root_2();
77
-
78
- _$_.render(() => {
79
- _$_.set_class(div_1, `pending pending-${_$_.get(pattern).id}`, void 0, true);
80
- });
81
-
82
- _$_.append(__anchor, div_1);
83
- },
84
- true
85
- );
86
- };
87
-
88
- var switch_case_default = (__anchor) => {
89
- _$_.try(
90
- __anchor,
91
- (__anchor) => {
92
- var div_2 = root_3();
93
-
94
- {
95
- var expression_1 = _$_.hydrating ? _$_.hydrate_child(true) : div_2.firstChild;
96
-
97
- _$_.pop(div_2);
98
- }
99
-
100
- _$_.render(
101
- (__prev) => {
102
- var __pattern_1 = _$_.get(pattern);
103
- var __a = `B-${__pattern_1.id}`;
104
-
105
- if (__prev.a !== __a) {
106
- _$_.set_text(expression_1, __prev.a = __a);
107
- }
108
-
109
- var __b = `row row-${__pattern_1.id} kind-b`;
110
-
111
- if (__prev.b !== __b) {
112
- _$_.set_class(div_2, __prev.b = __b, void 0, true);
113
- }
114
- },
115
- { a: ' ', b: _$_.UNINITIALIZED }
116
- );
117
-
118
- _$_.append(__anchor, div_2);
119
- },
120
- null,
121
- (__anchor) => {
122
- var div_3 = root_4();
123
-
124
- _$_.render(() => {
125
- _$_.set_class(div_3, `pending pending-${_$_.get(pattern).id}`, void 0, true);
126
- });
127
-
128
- _$_.append(__anchor, div_3);
129
- },
130
- true
131
- );
132
- };
133
-
134
- _$_.switch(
135
- __anchor,
136
- () => {
137
- var result = [];
138
-
139
- switch (_$_.get(pattern).kind) {
140
- case 'a':
141
- result.push(switch_case_0);
142
- return result;
143
-
144
- default:
145
- result.push(switch_case_default);
146
- return result;
147
- }
148
- },
149
- true
150
- );
151
- }
152
- };
153
-
154
- _$_.if(
155
- __anchor,
156
- (__render) => {
157
- if (_$_.get(pattern).enabled) __render(consequent);
158
- },
159
- true
160
- );
161
- }
162
- },
163
- 4,
164
- (pattern) => _$_.get(pattern).id
165
- );
166
-
167
- _$_.pop(section);
168
- }
169
-
170
- _$_.append(__anchor, section);
171
- });
172
- }
311
+ _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
312
+ var fragment_1 = root_6();
313
+ var button = _$_.first_child_frag(fragment_1);
173
314
 
174
- export function MixedControlFlowReactive() {
175
- return _$_.tsrx_element((__anchor, __block) => {
176
- let lazy = _$_.track(true, __block, '5ae53d26');
177
- let lazy_1 = _$_.track('a', __block, '5b53eda2');
178
- let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], __block, '7890dad6');
179
- var fragment = root_5();
180
- var node_1 = _$_.first_child_frag(fragment);
315
+ button.__click = () => {
316
+ show.value = !show.value;
317
+ };
318
+
319
+ var button_1 = _$_.hydrating ? _$_.hydrate_sibling() : button.nextSibling;
320
+
321
+ button_1.__click = () => {
322
+ mode.value = mode.value === 'a' ? 'b' : 'a';
323
+ };
324
+
325
+ var button_2 = _$_.hydrating ? _$_.hydrate_sibling() : button_1.nextSibling;
181
326
 
182
- _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
183
- var fragment_1 = root_6();
184
- var button = _$_.first_child_frag(fragment_1);
327
+ button_2.__click = () => {
328
+ items.value = [...items.value, { id: 3, label: 'Three' }];
329
+ };
185
330
 
186
- button.__click = () => {
187
- _$_.set(lazy, !lazy.value);
188
- };
331
+ var node = _$_.hydrating ? _$_.hydrate_sibling() : button_2.nextSibling;
189
332
 
190
- var button_1 = _$_.hydrating ? _$_.hydrate_sibling() : button.nextSibling;
333
+ _$_.if(node, if_2, false, { show, items, mode });
334
+ _$_.append(__anchor, fragment_1);
335
+ }));
191
336
 
192
- button_1.__click = () => {
193
- _$_.set(lazy_1, lazy_1.value === 'a' ? 'b' : 'a');
194
- };
337
+ _$_.append(__anchor, fragment);
338
+ }
339
+
340
+ MixedControlFlowReactive[_$_.$r] = MixedControlFlowReactive_render;
195
341
 
196
- var button_2 = _$_.hydrating ? _$_.hydrate_sibling() : button_1.nextSibling;
342
+ var root_14 = _$_.template(`<div> </div>`, 0);
343
+ var root_15 = _$_.template(`<div class="unexpected">unexpected</div>`, 0);
197
344
 
198
- button_2.__click = () => {
199
- _$_.set(lazy_2, [...lazy_2.value, { id: 3, label: 'Three' }]);
200
- };
345
+ function switch_case_0_2(__anchor, { state, row }) {
346
+ _$_.try(
347
+ __anchor,
348
+ (__anchor) => {
349
+ _$_.render_component(AsyncRow, __anchor, { label: `row-${row}` });
350
+ },
351
+ null,
352
+ (__anchor) => {
353
+ var div_6 = root_14();
201
354
 
202
- var node = _$_.hydrating ? _$_.hydrate_sibling() : button_2.nextSibling;
355
+ _$_.set_class(div_6, `pending-row pending-row-${row}`, void 0, true);
203
356
 
204
357
  {
205
- var consequent_1 = (__anchor) => {
206
- var div_4 = root_7();
207
-
208
- {
209
- _$_.for_keyed(
210
- div_4,
211
- () => lazy_2.value,
212
- (__anchor, pattern_1) => {
213
- {
214
- var switch_case_0_1 = (__anchor) => {
215
- _$_.try(
216
- __anchor,
217
- (__anchor) => {
218
- var p = root_8();
219
-
220
- {
221
- var expression_2 = _$_.hydrating ? _$_.hydrate_child(true) : p.firstChild;
222
-
223
- _$_.pop(p);
224
- }
225
-
226
- _$_.render(
227
- (__prev) => {
228
- var __pattern_1_1 = _$_.get(pattern_1);
229
- var __a = `A:${__pattern_1_1.label}`;
230
-
231
- if (__prev.a !== __a) {
232
- _$_.set_text(expression_2, __prev.a = __a);
233
- }
234
-
235
- var __b = `item item-${__pattern_1_1.id}`;
236
-
237
- if (__prev.b !== __b) {
238
- _$_.set_class(p, __prev.b = __b, void 0, true);
239
- }
240
- },
241
- { a: ' ', b: _$_.UNINITIALIZED }
242
- );
243
-
244
- _$_.append(__anchor, p);
245
- },
246
- null,
247
- (__anchor) => {
248
- var p_1 = root_9();
249
-
250
- _$_.append(__anchor, p_1);
251
- },
252
- true
253
- );
254
- };
255
-
256
- var switch_case_default_1 = (__anchor) => {
257
- _$_.try(
258
- __anchor,
259
- (__anchor) => {
260
- var p_2 = root_10();
261
-
262
- {
263
- var expression_3 = _$_.hydrating ? _$_.hydrate_child(true) : p_2.firstChild;
264
-
265
- _$_.pop(p_2);
266
- }
267
-
268
- _$_.render(
269
- (__prev) => {
270
- var __pattern_1_2 = _$_.get(pattern_1);
271
- var __a = `B:${__pattern_1_2.label}`;
272
-
273
- if (__prev.a !== __a) {
274
- _$_.set_text(expression_3, __prev.a = __a);
275
- }
276
-
277
- var __b = `item item-${__pattern_1_2.id}`;
278
-
279
- if (__prev.b !== __b) {
280
- _$_.set_class(p_2, __prev.b = __b, void 0, true);
281
- }
282
- },
283
- { a: ' ', b: _$_.UNINITIALIZED }
284
- );
285
-
286
- _$_.append(__anchor, p_2);
287
- },
288
- null,
289
- (__anchor) => {
290
- var p_3 = root_11();
291
-
292
- _$_.append(__anchor, p_3);
293
- },
294
- true
295
- );
296
- };
297
-
298
- _$_.switch(
299
- __anchor,
300
- () => {
301
- var result = [];
302
-
303
- switch (lazy_1.value) {
304
- case 'a':
305
- result.push(switch_case_0_1);
306
- return result;
307
-
308
- default:
309
- result.push(switch_case_default_1);
310
- return result;
311
- }
312
- },
313
- true
314
- );
315
- }
316
- },
317
- 4,
318
- (pattern_1) => _$_.get(pattern_1).id
319
- );
320
-
321
- _$_.pop(div_4);
322
- }
323
-
324
- _$_.append(__anchor, div_4);
325
- };
326
-
327
- _$_.if(node, (__render) => {
328
- if (lazy.value) __render(consequent_1);
329
- });
358
+ var expression_4 = _$_.hydrating ? _$_.hydrate_text() : div_6.firstChild;
359
+
360
+ expression_4.nodeValue = `pending ${row}`;
330
361
  }
331
362
 
332
- _$_.append(__anchor, fragment_1);
333
- }));
363
+ _$_.append(__anchor, div_6);
364
+ },
365
+ true
366
+ );
367
+ }
368
+
369
+ function switch_case_default_2(__anchor, { state, row }) {
370
+ var div_7 = root_15();
334
371
 
335
- _$_.append(__anchor, fragment);
336
- });
372
+ _$_.append(__anchor, div_7);
337
373
  }
338
374
 
339
- export function MixedControlFlowAsyncPending() {
340
- return _$_.tsrx_element((__anchor, __block) => {
341
- const rows = [1, 2];
342
- const state = 'slow';
343
- var fragment_2 = root_12();
344
- var node_3 = _$_.first_child_frag(fragment_2);
345
-
346
- _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
347
- var fragment_3 = root_13();
348
- var div_5 = _$_.first_child_frag(fragment_3);
349
- var node_2 = _$_.hydrating ? _$_.hydrate_sibling() : div_5.nextSibling;
350
-
351
- _$_.for(
352
- node_2,
353
- () => rows,
354
- (__anchor, row) => {
355
- {
356
- var consequent_2 = (__anchor) => {
357
- {
358
- var switch_case_0_2 = (__anchor) => {
359
- _$_.try(
360
- __anchor,
361
- (__anchor) => {
362
- _$_.render_component(AsyncRow, __anchor, { label: `row-${row}` });
363
- },
364
- null,
365
- (__anchor) => {
366
- var div_6 = root_14();
367
-
368
- _$_.set_class(div_6, `pending-row pending-row-${row}`, void 0, true);
369
-
370
- {
371
- var expression_4 = _$_.hydrating ? _$_.hydrate_child(true) : div_6.firstChild;
372
-
373
- expression_4.nodeValue = `pending ${row}`;
374
- _$_.pop(div_6);
375
- }
376
-
377
- _$_.append(__anchor, div_6);
378
- },
379
- true
380
- );
381
- };
382
-
383
- var switch_case_default_2 = (__anchor) => {
384
- var div_7 = root_15();
385
-
386
- _$_.append(__anchor, div_7);
387
- };
388
-
389
- _$_.switch(
390
- __anchor,
391
- () => {
392
- var result = [];
393
-
394
- switch (state) {
395
- case 'slow':
396
- result.push(switch_case_0_2);
397
- return result;
398
-
399
- default:
400
- result.push(switch_case_default_2);
401
- return result;
402
- }
403
- },
404
- true
405
- );
406
- }
407
- };
408
-
409
- _$_.if(
410
- __anchor,
411
- (__render) => {
412
- if (row === 1) __render(consequent_2);
413
- },
414
- true
415
- );
416
- }
417
- },
418
- 0
419
- );
420
-
421
- _$_.append(__anchor, fragment_3);
422
- }));
423
-
424
- _$_.append(__anchor, fragment_2);
425
- });
375
+ function switch_3({ state, row }) {
376
+ switch (state) {
377
+ case 'slow':
378
+ return switch_case_0_2;
379
+
380
+ default:
381
+ return switch_case_default_2;
382
+ }
383
+ }
384
+
385
+ function consequent_2(__anchor, { row, state }) {
386
+ _$_.switch(__anchor, switch_3, true, { state, row });
387
+ }
388
+
389
+ function if_3({ row, state }) {
390
+ if (row === 1) return consequent_2;
391
+ }
392
+
393
+ var root_13 = _$_.template(`<div class="before">before</div><!>`, 1, 2);
394
+ var root_12 = _$_.template(`<!>`, 1, 1);
395
+
396
+ function MixedControlFlowAsyncPending_render(__anchor, __block) {
397
+ const rows = [1, 2];
398
+ const state = 'slow';
399
+ var fragment_2 = root_12();
400
+ var node_3 = _$_.first_child_frag(fragment_2);
401
+
402
+ _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
403
+ var fragment_3 = root_13();
404
+ var div_5 = _$_.first_child_frag(fragment_3);
405
+ var node_2 = _$_.hydrating ? _$_.hydrate_sibling() : div_5.nextSibling;
406
+
407
+ _$_.for(
408
+ node_2,
409
+ () => rows,
410
+ (__anchor, row) => {
411
+ _$_.if(__anchor, if_3, true, { row, state });
412
+ },
413
+ 0
414
+ );
415
+
416
+ _$_.append(__anchor, fragment_3);
417
+ }));
418
+
419
+ _$_.append(__anchor, fragment_2);
426
420
  }
427
421
 
428
- function AsyncRow({ label }) {
429
- return _$_.tsrx_element((__anchor, __block) => {
430
- let lazy_3 = _$_.track_async(() => _$_.with_scope(__block, () => Promise.resolve(label)), __block, '10cc79a0');
431
- var div_8 = root_16();
422
+ MixedControlFlowAsyncPending[_$_.$r] = MixedControlFlowAsyncPending_render;
423
+
424
+ var root_16 = _$_.template(`<div class="resolved-row"> </div>`, 0);
432
425
 
433
- {
434
- var expression_5 = _$_.hydrating ? _$_.hydrate_child() : div_8.firstChild;
426
+ function AsyncRow_render(__anchor, __block, { label }) {
427
+ const value = _$_.track_async(() => _$_.with_scope(__block, () => Promise.resolve(label)), __block, '10cc79a0');
428
+ var div_8 = root_16();
435
429
 
436
- _$_.expression(expression_5, () => lazy_3.value);
437
- _$_.pop(div_8);
438
- }
430
+ {
431
+ var expression_5 = _$_.hydrating ? _$_.hydrate_child() : div_8.firstChild;
432
+
433
+ _$_.expression(expression_5, () => value.value);
434
+ _$_.hydrating && _$_.pop(div_8);
435
+ }
436
+
437
+ _$_.append(__anchor, div_8);
438
+ }
439
+
440
+ AsyncRow[_$_.$r] = AsyncRow_render;
441
+
442
+ import { track, trackAsync } from 'ripple';
443
+
444
+ export function MixedControlFlowStatic() {
445
+ return _$_.tsrx_element(MixedControlFlowStatic_render);
446
+ }
447
+
448
+ export function MixedControlFlowReactive() {
449
+ return _$_.tsrx_element(MixedControlFlowReactive_render);
450
+ }
451
+
452
+ export function MixedControlFlowAsyncPending() {
453
+ return _$_.tsrx_element(MixedControlFlowAsyncPending_render);
454
+ }
439
455
 
440
- _$_.append(__anchor, div_8);
441
- });
456
+ function AsyncRow(__props) {
457
+ return _$_.tsrx_element(AsyncRow_render, __props);
442
458
  }
443
459
 
444
460
  _$_.delegate(['click']);