ripple 0.3.67 → 0.3.69

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 (182) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/package.json +3 -3
  3. package/src/jsx-runtime.d.ts +2 -2
  4. package/src/runtime/element.js +1 -1
  5. package/src/runtime/index-client.js +11 -11
  6. package/src/runtime/index-server.js +7 -4
  7. package/src/runtime/internal/client/bindings.js +1 -1
  8. package/src/runtime/internal/client/blocks.js +13 -4
  9. package/src/runtime/internal/client/component.js +55 -0
  10. package/src/runtime/internal/client/composite.js +4 -2
  11. package/src/runtime/internal/client/expression.js +65 -7
  12. package/src/runtime/internal/client/hmr.js +54 -43
  13. package/src/runtime/internal/client/index.js +5 -1
  14. package/src/runtime/internal/client/portal.js +70 -69
  15. package/src/runtime/internal/client/render.js +3 -0
  16. package/src/runtime/internal/server/index.js +92 -8
  17. package/tests/client/__snapshots__/html.test.tsrx.snap +3 -3
  18. package/tests/client/array/array.copy-within.test.tsrx +33 -31
  19. package/tests/client/array/array.derived.test.tsrx +186 -169
  20. package/tests/client/array/array.iteration.test.tsrx +40 -37
  21. package/tests/client/array/array.mutations.test.tsrx +113 -101
  22. package/tests/client/array/array.static.test.tsrx +119 -101
  23. package/tests/client/array/array.to-methods.test.tsrx +24 -21
  24. package/tests/client/async-suspend.test.tsrx +247 -246
  25. package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +0 -1
  26. package/tests/client/basic/basic.attributes.test.tsrx +428 -423
  27. package/tests/client/basic/basic.collections.test.tsrx +109 -102
  28. package/tests/client/basic/basic.components.test.tsrx +323 -205
  29. package/tests/client/basic/basic.errors.test.tsrx +91 -91
  30. package/tests/client/basic/basic.events.test.tsrx +114 -115
  31. package/tests/client/basic/basic.get-set.test.tsrx +97 -87
  32. package/tests/client/basic/basic.hmr.test.tsrx +19 -16
  33. package/tests/client/basic/basic.reactivity.test.tsrx +199 -191
  34. package/tests/client/basic/basic.rendering.test.tsrx +272 -182
  35. package/tests/client/basic/basic.styling.test.tsrx +23 -22
  36. package/tests/client/basic/basic.utilities.test.tsrx +10 -8
  37. package/tests/client/boundaries.test.tsrx +26 -26
  38. package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +5 -5
  39. package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +5 -5
  40. package/tests/client/compiler/compiler.assignments.test.tsrx +77 -81
  41. package/tests/client/compiler/compiler.attributes.test.tsrx +15 -15
  42. package/tests/client/compiler/compiler.basic.test.tsrx +322 -314
  43. package/tests/client/compiler/compiler.regex.test.tsrx +44 -47
  44. package/tests/client/compiler/compiler.tracked-access.test.tsrx +38 -38
  45. package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
  46. package/tests/client/compiler/compiler.typescript.test.tsrx +2 -2
  47. package/tests/client/composite/composite.dynamic-components.test.tsrx +47 -48
  48. package/tests/client/composite/composite.generics.test.tsrx +168 -192
  49. package/tests/client/composite/composite.props.test.tsrx +97 -81
  50. package/tests/client/composite/composite.reactivity.test.tsrx +177 -147
  51. package/tests/client/composite/composite.render.test.tsrx +122 -105
  52. package/tests/client/computed-properties.test.tsrx +28 -28
  53. package/tests/client/context.test.tsrx +21 -21
  54. package/tests/client/css/global-additional-cases.test.tsrx +58 -58
  55. package/tests/client/css/global-advanced-selectors.test.tsrx +16 -16
  56. package/tests/client/css/global-at-rules.test.tsrx +10 -10
  57. package/tests/client/css/global-basic.test.tsrx +14 -14
  58. package/tests/client/css/global-classes-ids.test.tsrx +14 -14
  59. package/tests/client/css/global-combinators.test.tsrx +10 -10
  60. package/tests/client/css/global-complex-nesting.test.tsrx +14 -14
  61. package/tests/client/css/global-edge-cases.test.tsrx +18 -18
  62. package/tests/client/css/global-keyframes.test.tsrx +12 -12
  63. package/tests/client/css/global-nested.test.tsrx +10 -10
  64. package/tests/client/css/global-pseudo.test.tsrx +12 -12
  65. package/tests/client/css/global-scoping.test.tsrx +20 -20
  66. package/tests/client/css/style-identifier.test.tsrx +143 -291
  67. package/tests/client/date.test.tsrx +146 -133
  68. package/tests/client/dynamic-elements.test.tsrx +398 -365
  69. package/tests/client/events.test.tsrx +292 -290
  70. package/tests/client/for.test.tsrx +156 -153
  71. package/tests/client/head.test.tsrx +105 -96
  72. package/tests/client/html.test.tsrx +122 -26
  73. package/tests/client/input-value.test.tsrx +1361 -1314
  74. package/tests/client/lazy-array.test.tsrx +16 -13
  75. package/tests/client/lazy-destructuring.test.tsrx +257 -213
  76. package/tests/client/map.test.tsrx +65 -60
  77. package/tests/client/media-query.test.tsrx +22 -20
  78. package/tests/client/object.test.tsrx +87 -81
  79. package/tests/client/portal.test.tsrx +57 -51
  80. package/tests/client/ref.test.tsrx +233 -202
  81. package/tests/client/return.test.tsrx +71 -2560
  82. package/tests/client/set.test.tsrx +54 -45
  83. package/tests/client/svg.test.tsrx +216 -186
  84. package/tests/client/switch.test.tsrx +194 -193
  85. package/tests/client/track-async-hydration.test.tsrx +18 -14
  86. package/tests/client/tracked-index-access.test.tsrx +28 -18
  87. package/tests/client/try.test.tsrx +675 -548
  88. package/tests/client/tsx.test.tsrx +373 -311
  89. package/tests/client/typescript-generics.test.tsrx +145 -145
  90. package/tests/client/url/url.derived.test.tsrx +33 -28
  91. package/tests/client/url/url.parsing.test.tsrx +61 -51
  92. package/tests/client/url/url.partial-removal.test.tsrx +56 -48
  93. package/tests/client/url/url.reactivity.test.tsrx +142 -125
  94. package/tests/client/url/url.serialization.test.tsrx +13 -11
  95. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +34 -29
  96. package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +25 -21
  97. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +50 -45
  98. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +111 -99
  99. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +49 -43
  100. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +14 -12
  101. package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +16 -14
  102. package/tests/hydration/basic.test.js +3 -3
  103. package/tests/hydration/compiled/client/basic.js +586 -651
  104. package/tests/hydration/compiled/client/composite.js +79 -104
  105. package/tests/hydration/compiled/client/events.js +140 -148
  106. package/tests/hydration/compiled/client/for.js +1005 -1018
  107. package/tests/hydration/compiled/client/head.js +124 -134
  108. package/tests/hydration/compiled/client/hmr.js +41 -48
  109. package/tests/hydration/compiled/client/html-in-template.js +38 -41
  110. package/tests/hydration/compiled/client/html.js +970 -1314
  111. package/tests/hydration/compiled/client/if-children.js +234 -249
  112. package/tests/hydration/compiled/client/if.js +182 -189
  113. package/tests/hydration/compiled/client/mixed-control-flow.js +347 -303
  114. package/tests/hydration/compiled/client/nested-control-flow.js +1084 -832
  115. package/tests/hydration/compiled/client/portal.js +65 -85
  116. package/tests/hydration/compiled/client/reactivity.js +84 -90
  117. package/tests/hydration/compiled/client/return.js +38 -1939
  118. package/tests/hydration/compiled/client/switch.js +218 -224
  119. package/tests/hydration/compiled/client/track-async-serialization.js +250 -259
  120. package/tests/hydration/compiled/client/try.js +123 -132
  121. package/tests/hydration/compiled/server/basic.js +773 -831
  122. package/tests/hydration/compiled/server/composite.js +166 -191
  123. package/tests/hydration/compiled/server/events.js +170 -184
  124. package/tests/hydration/compiled/server/for.js +851 -909
  125. package/tests/hydration/compiled/server/head.js +206 -216
  126. package/tests/hydration/compiled/server/hmr.js +64 -72
  127. package/tests/hydration/compiled/server/html-in-template.js +42 -76
  128. package/tests/hydration/compiled/server/html.js +1362 -1667
  129. package/tests/hydration/compiled/server/if-children.js +419 -445
  130. package/tests/hydration/compiled/server/if.js +194 -208
  131. package/tests/hydration/compiled/server/mixed-control-flow.js +249 -257
  132. package/tests/hydration/compiled/server/nested-control-flow.js +491 -515
  133. package/tests/hydration/compiled/server/portal.js +152 -160
  134. package/tests/hydration/compiled/server/reactivity.js +94 -106
  135. package/tests/hydration/compiled/server/return.js +28 -2172
  136. package/tests/hydration/compiled/server/switch.js +274 -286
  137. package/tests/hydration/compiled/server/track-async-serialization.js +340 -358
  138. package/tests/hydration/compiled/server/try.js +167 -185
  139. package/tests/hydration/components/basic.tsrx +320 -272
  140. package/tests/hydration/components/composite.tsrx +44 -32
  141. package/tests/hydration/components/events.tsrx +101 -91
  142. package/tests/hydration/components/for.tsrx +510 -452
  143. package/tests/hydration/components/head.tsrx +87 -80
  144. package/tests/hydration/components/hmr.tsrx +22 -17
  145. package/tests/hydration/components/html-in-template.tsrx +22 -17
  146. package/tests/hydration/components/html.tsrx +525 -443
  147. package/tests/hydration/components/if-children.tsrx +158 -148
  148. package/tests/hydration/components/if.tsrx +109 -95
  149. package/tests/hydration/components/mixed-control-flow.tsrx +100 -96
  150. package/tests/hydration/components/nested-control-flow.tsrx +215 -203
  151. package/tests/hydration/components/portal.tsrx +41 -34
  152. package/tests/hydration/components/reactivity.tsrx +37 -27
  153. package/tests/hydration/components/return.tsrx +12 -556
  154. package/tests/hydration/components/switch.tsrx +120 -114
  155. package/tests/hydration/components/track-async-serialization.tsrx +107 -91
  156. package/tests/hydration/components/try.tsrx +55 -40
  157. package/tests/hydration/html.test.js +4 -4
  158. package/tests/hydration/return.test.js +13 -532
  159. package/tests/server/await.test.tsrx +3 -3
  160. package/tests/server/basic.attributes.test.tsrx +264 -195
  161. package/tests/server/basic.components.test.tsrx +296 -169
  162. package/tests/server/basic.test.tsrx +300 -198
  163. package/tests/server/compiler.test.tsrx +62 -60
  164. package/tests/server/composite.props.test.tsrx +77 -63
  165. package/tests/server/composite.test.tsrx +168 -192
  166. package/tests/server/context.test.tsrx +18 -12
  167. package/tests/server/dynamic-elements.test.tsrx +197 -180
  168. package/tests/server/for.test.tsrx +85 -78
  169. package/tests/server/head.test.tsrx +50 -43
  170. package/tests/server/html-nesting-validation.test.tsrx +8 -8
  171. package/tests/server/if.test.tsrx +57 -51
  172. package/tests/server/lazy-destructuring.test.tsrx +366 -294
  173. package/tests/server/return.test.tsrx +76 -1355
  174. package/tests/server/streaming-ssr.test.tsrx +4 -75
  175. package/tests/server/style-identifier.test.tsrx +169 -148
  176. package/tests/server/switch.test.tsrx +91 -85
  177. package/tests/server/track-async-serialization.test.tsrx +105 -85
  178. package/tests/server/try.test.tsrx +374 -280
  179. package/tests/utils/compiler-compat-config.test.js +2 -2
  180. package/tests/utils/runtime-imports.test.js +10 -0
  181. package/types/index.d.ts +8 -0
  182. package/tests/client/__snapshots__/html.test.rsrx.snap +0 -40
@@ -4,91 +4,93 @@ import * as _$_ from 'ripple/internal/server';
4
4
  import { track, trackAsync } from 'ripple/server';
5
5
 
6
6
  export function MixedControlFlowStatic() {
7
- _$_.push_component();
8
-
9
- const rows = [
10
- { id: 1, kind: 'a', enabled: true },
11
- { id: 2, kind: 'b', enabled: true },
12
- { id: 3, kind: 'a', enabled: false }
13
- ];
14
-
15
- _$_.regular_block(() => {
16
- _$_.output_push('<section');
17
- _$_.output_push(' class="mixed-static"');
18
- _$_.output_push('>');
19
-
20
- {
21
- _$_.output_push('<!--[-->');
7
+ return _$_.tsrx_element(() => {
8
+ const rows = [
9
+ { id: 1, kind: 'a', enabled: true },
10
+ { id: 2, kind: 'b', enabled: true },
11
+ { id: 3, kind: 'a', enabled: false }
12
+ ];
13
+
14
+ _$_.regular_block(() => {
15
+ _$_.output_push('<section');
16
+ _$_.output_push(' class="mixed-static"');
17
+ _$_.output_push('>');
22
18
 
23
- for (const row of rows) {
19
+ {
24
20
  _$_.output_push('<!--[-->');
25
21
 
26
- if (row.enabled) {
22
+ for (const row of rows) {
27
23
  _$_.output_push('<!--[-->');
28
24
 
29
- switch (row.kind) {
30
- case 'a':
31
- _$_.try_block(
32
- () => {
33
- _$_.output_push('<!--[-->');
34
- _$_.output_push('<div');
35
- _$_.output_push(_$_.attr('class', `row row-${row.id} kind-a`));
36
- _$_.output_push('>');
37
-
38
- {
39
- _$_.output_push(_$_.escape(`A-${row.id}`));
40
- }
41
-
42
- _$_.output_push('</div>');
43
- _$_.output_push('<!--]-->');
44
- },
45
- null,
46
- () => {
47
- _$_.output_push('<!--[-->');
48
- _$_.output_push('<div');
49
- _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
50
- _$_.output_push('>');
51
-
52
- {
53
- _$_.output_push('pending a');
54
- }
55
-
56
- _$_.output_push('</div>');
57
- _$_.output_push('<!--]-->');
58
- }
59
- );
60
- break;
61
-
62
- default:
63
- _$_.try_block(
64
- () => {
65
- _$_.output_push('<!--[-->');
66
- _$_.output_push('<div');
67
- _$_.output_push(_$_.attr('class', `row row-${row.id} kind-b`));
68
- _$_.output_push('>');
69
-
70
- {
71
- _$_.output_push(_$_.escape(`B-${row.id}`));
25
+ if (row.enabled) {
26
+ _$_.output_push('<!--[-->');
27
+
28
+ switch (row.kind) {
29
+ case 'a':
30
+ _$_.try_block(
31
+ () => {
32
+ _$_.output_push('<!--[-->');
33
+ _$_.output_push('<div');
34
+ _$_.output_push(_$_.attr('class', `row row-${row.id} kind-a`));
35
+ _$_.output_push('>');
36
+
37
+ {
38
+ _$_.output_push(_$_.escape(`A-${row.id}`));
39
+ }
40
+
41
+ _$_.output_push('</div>');
42
+ _$_.output_push('<!--]-->');
43
+ },
44
+ null,
45
+ () => {
46
+ _$_.output_push('<!--[-->');
47
+ _$_.output_push('<div');
48
+ _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
49
+ _$_.output_push('>');
50
+
51
+ {
52
+ _$_.output_push('pending a');
53
+ }
54
+
55
+ _$_.output_push('</div>');
56
+ _$_.output_push('<!--]-->');
72
57
  }
73
-
74
- _$_.output_push('</div>');
75
- _$_.output_push('<!--]-->');
76
- },
77
- null,
78
- () => {
79
- _$_.output_push('<!--[-->');
80
- _$_.output_push('<div');
81
- _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
82
- _$_.output_push('>');
83
-
84
- {
85
- _$_.output_push('pending b');
58
+ );
59
+ break;
60
+
61
+ default:
62
+ _$_.try_block(
63
+ () => {
64
+ _$_.output_push('<!--[-->');
65
+ _$_.output_push('<div');
66
+ _$_.output_push(_$_.attr('class', `row row-${row.id} kind-b`));
67
+ _$_.output_push('>');
68
+
69
+ {
70
+ _$_.output_push(_$_.escape(`B-${row.id}`));
71
+ }
72
+
73
+ _$_.output_push('</div>');
74
+ _$_.output_push('<!--]-->');
75
+ },
76
+ null,
77
+ () => {
78
+ _$_.output_push('<!--[-->');
79
+ _$_.output_push('<div');
80
+ _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
81
+ _$_.output_push('>');
82
+
83
+ {
84
+ _$_.output_push('pending b');
85
+ }
86
+
87
+ _$_.output_push('</div>');
88
+ _$_.output_push('<!--]-->');
86
89
  }
90
+ );
91
+ }
87
92
 
88
- _$_.output_push('</div>');
89
- _$_.output_push('<!--]-->');
90
- }
91
- );
93
+ _$_.output_push('<!--]-->');
92
94
  }
93
95
 
94
96
  _$_.output_push('<!--]-->');
@@ -97,135 +99,212 @@ export function MixedControlFlowStatic() {
97
99
  _$_.output_push('<!--]-->');
98
100
  }
99
101
 
100
- _$_.output_push('<!--]-->');
101
- }
102
-
103
- _$_.output_push('</section>');
102
+ _$_.output_push('</section>');
103
+ });
104
104
  });
105
-
106
- _$_.pop_component();
107
105
  }
108
106
 
109
107
  export function MixedControlFlowReactive() {
110
- _$_.push_component();
108
+ return _$_.tsrx_element(() => {
109
+ let lazy = _$_.track(true, '5ae53d26');
110
+ let lazy_1 = _$_.track('a', '5b53eda2');
111
+ let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], '7890dad6');
112
+
113
+ _$_.regular_block(() => {
114
+ _$_.output_push('<button');
115
+ _$_.output_push(' class="toggle-show"');
116
+ _$_.output_push('>');
111
117
 
112
- let lazy = _$_.track(true, '5ae53d26');
113
- let lazy_1 = _$_.track('a', '5b53eda2');
114
- let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], '7890dad6');
118
+ {
119
+ _$_.output_push('Toggle Show');
120
+ }
115
121
 
116
- _$_.regular_block(() => {
117
- _$_.output_push('<button');
118
- _$_.output_push(' class="toggle-show"');
119
- _$_.output_push('>');
122
+ _$_.output_push('</button>');
123
+ });
120
124
 
121
- {
122
- _$_.output_push('Toggle Show');
123
- }
125
+ _$_.regular_block(() => {
126
+ _$_.output_push('<button');
127
+ _$_.output_push(' class="toggle-mode"');
128
+ _$_.output_push('>');
124
129
 
125
- _$_.output_push('</button>');
126
- });
130
+ {
131
+ _$_.output_push('Toggle Mode');
132
+ }
127
133
 
128
- _$_.regular_block(() => {
129
- _$_.output_push('<button');
130
- _$_.output_push(' class="toggle-mode"');
131
- _$_.output_push('>');
134
+ _$_.output_push('</button>');
135
+ });
132
136
 
133
- {
134
- _$_.output_push('Toggle Mode');
135
- }
137
+ _$_.regular_block(() => {
138
+ _$_.output_push('<button');
139
+ _$_.output_push(' class="add-item"');
140
+ _$_.output_push('>');
136
141
 
137
- _$_.output_push('</button>');
138
- });
142
+ {
143
+ _$_.output_push('Add Item');
144
+ }
139
145
 
140
- _$_.regular_block(() => {
141
- _$_.output_push('<button');
142
- _$_.output_push(' class="add-item"');
143
- _$_.output_push('>');
146
+ _$_.output_push('</button>');
147
+ });
144
148
 
145
- {
146
- _$_.output_push('Add Item');
147
- }
149
+ _$_.regular_block(() => {
150
+ _$_.output_push('<!--[-->');
151
+
152
+ if (lazy.value) {
153
+ _$_.output_push('<div');
154
+ _$_.output_push(' class="mixed-reactive-list"');
155
+ _$_.output_push('>');
156
+
157
+ {
158
+ _$_.output_push('<!--[-->');
159
+
160
+ for (const item of lazy_2.value) {
161
+ _$_.output_push('<!--[-->');
162
+
163
+ switch (lazy_1.value) {
164
+ case 'a':
165
+ _$_.try_block(
166
+ () => {
167
+ _$_.output_push('<!--[-->');
168
+ _$_.output_push('<p');
169
+ _$_.output_push(_$_.attr('class', `item item-${item.id}`));
170
+ _$_.output_push('>');
171
+
172
+ {
173
+ _$_.output_push(_$_.escape(`A:${item.label}`));
174
+ }
175
+
176
+ _$_.output_push('</p>');
177
+ _$_.output_push('<!--]-->');
178
+ },
179
+ null,
180
+ () => {
181
+ _$_.output_push('<!--[-->');
182
+ _$_.output_push('<p');
183
+ _$_.output_push(' class="pending"');
184
+ _$_.output_push('>');
185
+
186
+ {
187
+ _$_.output_push('pending a');
188
+ }
189
+
190
+ _$_.output_push('</p>');
191
+ _$_.output_push('<!--]-->');
192
+ }
193
+ );
194
+ break;
195
+
196
+ default:
197
+ _$_.try_block(
198
+ () => {
199
+ _$_.output_push('<!--[-->');
200
+ _$_.output_push('<p');
201
+ _$_.output_push(_$_.attr('class', `item item-${item.id}`));
202
+ _$_.output_push('>');
203
+
204
+ {
205
+ _$_.output_push(_$_.escape(`B:${item.label}`));
206
+ }
207
+
208
+ _$_.output_push('</p>');
209
+ _$_.output_push('<!--]-->');
210
+ },
211
+ null,
212
+ () => {
213
+ _$_.output_push('<!--[-->');
214
+ _$_.output_push('<p');
215
+ _$_.output_push(' class="pending"');
216
+ _$_.output_push('>');
217
+
218
+ {
219
+ _$_.output_push('pending b');
220
+ }
221
+
222
+ _$_.output_push('</p>');
223
+ _$_.output_push('<!--]-->');
224
+ }
225
+ );
226
+ }
227
+
228
+ _$_.output_push('<!--]-->');
229
+ }
148
230
 
149
- _$_.output_push('</button>');
231
+ _$_.output_push('<!--]-->');
232
+ }
233
+
234
+ _$_.output_push('</div>');
235
+ }
236
+
237
+ _$_.output_push('<!--]-->');
238
+ });
150
239
  });
240
+ }
151
241
 
152
- _$_.regular_block(() => {
153
- _$_.output_push('<!--[-->');
242
+ export function MixedControlFlowAsyncPending() {
243
+ return _$_.tsrx_element(() => {
244
+ const rows = [1, 2];
245
+ const state = 'slow';
154
246
 
155
- if (lazy.value) {
247
+ _$_.regular_block(() => {
156
248
  _$_.output_push('<div');
157
- _$_.output_push(' class="mixed-reactive-list"');
249
+ _$_.output_push(' class="before"');
158
250
  _$_.output_push('>');
159
251
 
160
252
  {
253
+ _$_.output_push('before');
254
+ }
255
+
256
+ _$_.output_push('</div>');
257
+ });
258
+
259
+ _$_.regular_block(() => {
260
+ _$_.output_push('<!--[-->');
261
+
262
+ for (const row of rows) {
161
263
  _$_.output_push('<!--[-->');
162
264
 
163
- for (const item of lazy_2.value) {
265
+ if (row === 1) {
164
266
  _$_.output_push('<!--[-->');
165
267
 
166
- switch (lazy_1.value) {
167
- case 'a':
268
+ switch (state) {
269
+ case 'slow':
168
270
  _$_.try_block(
169
271
  () => {
170
272
  _$_.output_push('<!--[-->');
171
- _$_.output_push('<p');
172
- _$_.output_push(_$_.attr('class', `item item-${item.id}`));
173
- _$_.output_push('>');
174
273
 
175
274
  {
176
- _$_.output_push(_$_.escape(`A:${item.label}`));
275
+ const comp = AsyncRow;
276
+ const args = [{ label: `row-${row}` }];
277
+
278
+ _$_.render_component(comp, ...args);
177
279
  }
178
280
 
179
- _$_.output_push('</p>');
180
281
  _$_.output_push('<!--]-->');
181
282
  },
182
283
  null,
183
284
  () => {
184
285
  _$_.output_push('<!--[-->');
185
- _$_.output_push('<p');
186
- _$_.output_push(' class="pending"');
286
+ _$_.output_push('<div');
287
+ _$_.output_push(_$_.attr('class', `pending-row pending-row-${row}`));
187
288
  _$_.output_push('>');
188
289
 
189
290
  {
190
- _$_.output_push('pending a');
291
+ _$_.output_push(_$_.escape(`pending ${row}`));
191
292
  }
192
293
 
193
- _$_.output_push('</p>');
294
+ _$_.output_push('</div>');
194
295
  _$_.output_push('<!--]-->');
195
296
  }
196
297
  );
197
298
  break;
198
299
 
199
300
  default:
200
- _$_.try_block(
201
- () => {
202
- _$_.output_push('<!--[-->');
203
- _$_.output_push('<p');
204
- _$_.output_push(_$_.attr('class', `item item-${item.id}`));
205
- _$_.output_push('>');
206
-
207
- {
208
- _$_.output_push(_$_.escape(`B:${item.label}`));
209
- }
210
-
211
- _$_.output_push('</p>');
212
- _$_.output_push('<!--]-->');
213
- },
214
- null,
215
- () => {
216
- _$_.output_push('<!--[-->');
217
- _$_.output_push('<p');
218
- _$_.output_push(' class="pending"');
219
- _$_.output_push('>');
220
-
221
- {
222
- _$_.output_push('pending b');
223
- }
224
-
225
- _$_.output_push('</p>');
226
- _$_.output_push('<!--]-->');
227
- }
228
- );
301
+ _$_.output_push('<div');
302
+ _$_.output_push(' class="unexpected"');
303
+ _$_.output_push('>');
304
+ {
305
+ _$_.output_push('unexpected');
306
+ }
307
+ _$_.output_push('</div>');
229
308
  }
230
309
 
231
310
  _$_.output_push('<!--]-->');
@@ -234,112 +313,25 @@ export function MixedControlFlowReactive() {
234
313
  _$_.output_push('<!--]-->');
235
314
  }
236
315
 
237
- _$_.output_push('</div>');
238
- }
239
-
240
- _$_.output_push('<!--]-->');
241
- });
242
-
243
- _$_.pop_component();
244
- }
245
-
246
- export function MixedControlFlowAsyncPending() {
247
- _$_.push_component();
248
-
249
- const rows = [1, 2];
250
- const state = 'slow';
251
-
252
- _$_.regular_block(() => {
253
- _$_.output_push('<div');
254
- _$_.output_push(' class="before"');
255
- _$_.output_push('>');
256
-
257
- {
258
- _$_.output_push('before');
259
- }
260
-
261
- _$_.output_push('</div>');
262
- });
263
-
264
- _$_.regular_block(() => {
265
- _$_.output_push('<!--[-->');
266
-
267
- for (const row of rows) {
268
- _$_.output_push('<!--[-->');
269
-
270
- if (row === 1) {
271
- _$_.output_push('<!--[-->');
272
-
273
- switch (state) {
274
- case 'slow':
275
- _$_.try_block(
276
- () => {
277
- _$_.output_push('<!--[-->');
278
-
279
- {
280
- const comp = AsyncRow;
281
- const args = [{ label: `row-${row}` }];
282
-
283
- comp(...args);
284
- }
285
-
286
- _$_.output_push('<!--]-->');
287
- },
288
- null,
289
- () => {
290
- _$_.output_push('<!--[-->');
291
- _$_.output_push('<div');
292
- _$_.output_push(_$_.attr('class', `pending-row pending-row-${row}`));
293
- _$_.output_push('>');
294
-
295
- {
296
- _$_.output_push(_$_.escape(`pending ${row}`));
297
- }
298
-
299
- _$_.output_push('</div>');
300
- _$_.output_push('<!--]-->');
301
- }
302
- );
303
- break;
304
-
305
- default:
306
- _$_.output_push('<div');
307
- _$_.output_push(' class="unexpected"');
308
- _$_.output_push('>');
309
- {
310
- _$_.output_push('unexpected');
311
- }
312
- _$_.output_push('</div>');
313
- }
314
-
315
- _$_.output_push('<!--]-->');
316
- }
317
-
318
316
  _$_.output_push('<!--]-->');
319
- }
320
-
321
- _$_.output_push('<!--]-->');
317
+ });
322
318
  });
323
-
324
- _$_.pop_component();
325
319
  }
326
320
 
327
321
  function AsyncRow({ label }) {
328
- _$_.push_component();
322
+ return _$_.tsrx_element(() => {
323
+ let lazy_3 = _$_.track_async(() => Promise.resolve(label), '10cc79a0');
329
324
 
330
- let lazy_3 = _$_.track_async(() => Promise.resolve(label), '10cc79a0');
331
-
332
- _$_.regular_block(() => {
333
- _$_.output_push('<div');
334
- _$_.output_push(' class="resolved-row"');
335
- _$_.output_push('>');
325
+ _$_.regular_block(() => {
326
+ _$_.output_push('<div');
327
+ _$_.output_push(' class="resolved-row"');
328
+ _$_.output_push('>');
336
329
 
337
- {
338
- _$_.output_push(_$_.escape(lazy_3.value));
339
- }
330
+ {
331
+ _$_.output_push(_$_.escape(lazy_3.value));
332
+ }
340
333
 
341
- _$_.output_push('</div>');
334
+ _$_.output_push('</div>');
335
+ });
342
336
  });
343
-
344
- _$_.pop_component();
345
337
  }