ripple 0.3.127 → 0.4.0

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 (192) hide show
  1. package/CHANGELOG.md +293 -0
  2. package/package.json +10 -4
  3. package/src/runtime/element.js +23 -6
  4. package/src/runtime/index-client.js +81 -41
  5. package/src/runtime/index-server.js +1 -0
  6. package/src/runtime/internal/client/blocks.js +192 -114
  7. package/src/runtime/internal/client/component.js +4 -30
  8. package/src/runtime/internal/client/composite.js +12 -13
  9. package/src/runtime/internal/client/constants.js +14 -5
  10. package/src/runtime/internal/client/context.js +12 -19
  11. package/src/runtime/internal/client/css.js +7 -9
  12. package/src/runtime/internal/client/events.js +178 -90
  13. package/src/runtime/internal/client/expression.js +185 -124
  14. package/src/runtime/internal/client/for.js +616 -264
  15. package/src/runtime/internal/client/head.js +10 -5
  16. package/src/runtime/internal/client/html.js +1 -0
  17. package/src/runtime/internal/client/hydration.js +152 -10
  18. package/src/runtime/internal/client/if.js +239 -50
  19. package/src/runtime/internal/client/index.js +9 -13
  20. package/src/runtime/internal/client/operations.js +44 -51
  21. package/src/runtime/internal/client/portal.js +163 -85
  22. package/src/runtime/internal/client/render.js +44 -25
  23. package/src/runtime/internal/client/rpc.js +3 -3
  24. package/src/runtime/internal/client/runtime.js +799 -576
  25. package/src/runtime/internal/client/selector.js +77 -0
  26. package/src/runtime/internal/client/template.js +133 -158
  27. package/src/runtime/internal/client/transport.js +38 -0
  28. package/src/runtime/internal/client/try.js +465 -426
  29. package/src/runtime/internal/client/types.d.ts +65 -21
  30. package/src/runtime/internal/client/utils.js +1 -3
  31. package/src/runtime/internal/server/dynamic.js +20 -21
  32. package/src/runtime/internal/server/index.js +327 -275
  33. package/src/runtime/internal/server/rpc.js +3 -2
  34. package/src/runtime/internal/server/transport.js +16 -0
  35. package/src/runtime/transport.js +21 -0
  36. package/tests/client/__snapshots__/for.test.tsrx.snap +0 -5
  37. package/tests/client/array/array.copy-within.test.tsrx +12 -12
  38. package/tests/client/array/array.derived.test.tsrx +46 -46
  39. package/tests/client/array/array.iteration.test.tsrx +10 -10
  40. package/tests/client/array/array.mutations.test.tsrx +20 -20
  41. package/tests/client/array/array.static.test.tsrx +11 -11
  42. package/tests/client/array/array.to-methods.test.tsrx +6 -6
  43. package/tests/client/async-suspend.test.tsrx +74 -75
  44. package/tests/client/basic/basic.attributes.test.tsrx +86 -83
  45. package/tests/client/basic/basic.collections.test.tsrx +12 -12
  46. package/tests/client/basic/basic.components.test.tsrx +99 -25
  47. package/tests/client/basic/basic.errors.test.tsrx +18 -18
  48. package/tests/client/basic/basic.events.test.tsrx +42 -42
  49. package/tests/client/basic/basic.get-set.test.tsrx +8 -8
  50. package/tests/client/basic/basic.reactivity.test.tsrx +97 -29
  51. package/tests/client/basic/basic.rendering.test.tsrx +25 -25
  52. package/tests/client/basic/basic.utilities.test.tsrx +3 -3
  53. package/tests/client/boundaries.test.tsrx +8 -8
  54. package/tests/client/boxed-locals.test.tsrx +452 -0
  55. package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +6 -6
  56. package/tests/client/compiler/compiler.assignments.test.tsrx +9 -73
  57. package/tests/client/compiler/compiler.attributes.test.tsrx +23 -23
  58. package/tests/client/compiler/compiler.basic.test.tsrx +15 -60
  59. package/tests/client/compiler/compiler.tracked-access.test.tsrx +18 -43
  60. package/tests/client/compiler/compiler.try-in-function.test.tsrx +2 -2
  61. package/tests/client/composite/__snapshots__/composite.render.test.tsrx.snap +0 -1
  62. package/tests/client/composite/composite.dynamic-components.test.tsrx +77 -6
  63. package/tests/client/composite/composite.props.test.tsrx +149 -12
  64. package/tests/client/composite/composite.reactivity.test.tsrx +51 -52
  65. package/tests/client/composite/composite.render.test.tsrx +26 -9
  66. package/tests/client/css/scoped-styles.test.tsrx +8 -8
  67. package/tests/client/date.test.tsrx +42 -42
  68. package/tests/client/derived-release.test.tsrx +370 -0
  69. package/tests/client/dynamic-elements.test.tsrx +45 -45
  70. package/tests/client/events.test.tsrx +97 -71
  71. package/tests/client/for-selector.test.tsrx +221 -0
  72. package/tests/client/for-single-root-items.test.tsrx +118 -3
  73. package/tests/client/for.test.tsrx +332 -31
  74. package/tests/client/head.test.tsrx +19 -19
  75. package/tests/client/html.test.tsrx +11 -9
  76. package/tests/client/if-block.test.tsrx +80 -0
  77. package/tests/client/map.test.tsrx +16 -16
  78. package/tests/client/media-query.test.tsrx +7 -7
  79. package/tests/client/portal.test.tsrx +224 -26
  80. package/tests/client/primitive-text.test.tsrx +50 -0
  81. package/tests/client/prop-kind-switch.test.tsrx +141 -0
  82. package/tests/client/ref.test.tsrx +17 -17
  83. package/tests/client/return.test.tsrx +26 -3
  84. package/tests/client/root-boundary.test.tsrx +42 -0
  85. package/tests/client/scoped-flush.test.tsrx +8 -8
  86. package/tests/client/set.test.tsrx +6 -6
  87. package/tests/client/svg.test.tsrx +11 -11
  88. package/tests/client/switch.test.tsrx +44 -44
  89. package/tests/client/track-async-hydration.test.tsrx +4 -4
  90. package/tests/client/try.test.tsrx +151 -83
  91. package/tests/client/tsx.test.tsrx +43 -40
  92. package/tests/client/url/url.derived.test.tsrx +6 -6
  93. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +8 -8
  94. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +10 -10
  95. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +10 -10
  96. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +18 -18
  97. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +2 -2
  98. package/tests/hydration/basic.test.js +74 -1
  99. package/tests/hydration/build-components.js +22 -1
  100. package/tests/hydration/compiled/client/basic.js +1142 -713
  101. package/tests/hydration/compiled/client/composite.js +151 -100
  102. package/tests/hydration/compiled/client/events.js +190 -150
  103. package/tests/hydration/compiled/client/for.js +1472 -1126
  104. package/tests/hydration/compiled/client/fragment-cursor.js +2341 -0
  105. package/tests/hydration/compiled/client/head.js +255 -199
  106. package/tests/hydration/compiled/client/hmr.js +54 -41
  107. package/tests/hydration/compiled/client/html-in-template.js +54 -39
  108. package/tests/hydration/compiled/client/html.js +1633 -1263
  109. package/tests/hydration/compiled/client/if-children.js +420 -270
  110. package/tests/hydration/compiled/client/if-fragment-controlflow.js +363 -317
  111. package/tests/hydration/compiled/client/if.js +229 -219
  112. package/tests/hydration/compiled/client/mixed-control-flow.js +420 -400
  113. package/tests/hydration/compiled/client/nested-control-flow.js +1326 -1255
  114. package/tests/hydration/compiled/client/portal.js +87 -95
  115. package/tests/hydration/compiled/client/reactivity.js +140 -83
  116. package/tests/hydration/compiled/client/return.js +28 -19
  117. package/tests/hydration/compiled/client/streaming.js +390 -306
  118. package/tests/hydration/compiled/client/switch.js +258 -266
  119. package/tests/hydration/compiled/client/track-async-serialization.js +448 -280
  120. package/tests/hydration/compiled/client/try.js +173 -129
  121. package/tests/hydration/compiled/client/typed-text.js +71 -0
  122. package/tests/hydration/compiled/fixtures/money.js +10 -0
  123. package/tests/hydration/compiled/server/basic.js +123 -6
  124. package/tests/hydration/compiled/server/composite.js +16 -30
  125. package/tests/hydration/compiled/server/events.js +19 -19
  126. package/tests/hydration/compiled/server/for.js +109 -49
  127. package/tests/hydration/compiled/server/fragment-cursor.js +1687 -0
  128. package/tests/hydration/compiled/server/head.js +20 -28
  129. package/tests/hydration/compiled/server/hmr.js +2 -2
  130. package/tests/hydration/compiled/server/html.js +71 -247
  131. package/tests/hydration/compiled/server/if-children.js +107 -15
  132. package/tests/hydration/compiled/server/if.js +11 -15
  133. package/tests/hydration/compiled/server/mixed-control-flow.js +8 -8
  134. package/tests/hydration/compiled/server/portal.js +14 -22
  135. package/tests/hydration/compiled/server/reactivity.js +14 -46
  136. package/tests/hydration/compiled/server/streaming.js +19 -19
  137. package/tests/hydration/compiled/server/switch.js +8 -8
  138. package/tests/hydration/compiled/server/track-async-serialization.js +150 -23
  139. package/tests/hydration/compiled/server/try.js +8 -8
  140. package/tests/hydration/compiled/server/typed-text.js +17 -0
  141. package/tests/hydration/components/basic.tsrx +44 -8
  142. package/tests/hydration/components/composite.tsrx +2 -2
  143. package/tests/hydration/components/events.tsrx +25 -25
  144. package/tests/hydration/components/for.tsrx +115 -67
  145. package/tests/hydration/components/fragment-cursor.tsrx +650 -0
  146. package/tests/hydration/components/head.tsrx +16 -16
  147. package/tests/hydration/components/hmr.tsrx +2 -2
  148. package/tests/hydration/components/html.tsrx +7 -7
  149. package/tests/hydration/components/if-children.tsrx +72 -25
  150. package/tests/hydration/components/if.tsrx +18 -18
  151. package/tests/hydration/components/mixed-control-flow.tsrx +11 -11
  152. package/tests/hydration/components/portal.tsrx +3 -3
  153. package/tests/hydration/components/reactivity.tsrx +16 -16
  154. package/tests/hydration/components/streaming.tsrx +20 -20
  155. package/tests/hydration/components/switch.tsrx +20 -20
  156. package/tests/hydration/components/text-types.ts +4 -0
  157. package/tests/hydration/components/track-async-serialization.tsrx +80 -26
  158. package/tests/hydration/components/try.tsrx +8 -8
  159. package/tests/hydration/components/typed-text.tsrx +22 -0
  160. package/tests/hydration/fixtures/money.js +10 -0
  161. package/tests/hydration/for.test.js +36 -0
  162. package/tests/hydration/fragment-cursor.test.js +111 -0
  163. package/tests/hydration/if-children.test.js +24 -0
  164. package/tests/hydration/streaming.test.js +19 -0
  165. package/tests/hydration/track-async-serialization.test.js +87 -2
  166. package/tests/hydration/tsconfig.text-types.json +10 -0
  167. package/tests/hydration/typed-text.test.js +34 -0
  168. package/tests/server/await.test.tsrx +3 -3
  169. package/tests/server/basic.attributes.test.tsrx +42 -42
  170. package/tests/server/basic.components.test.tsrx +64 -8
  171. package/tests/server/basic.test.tsrx +34 -32
  172. package/tests/server/compiler.test.tsrx +1 -70
  173. package/tests/server/composite.props.test.tsrx +6 -6
  174. package/tests/server/dynamic-elements.test.tsrx +31 -8
  175. package/tests/server/for.test.tsrx +94 -0
  176. package/tests/server/head.test.tsrx +11 -11
  177. package/tests/server/scoped-styles.test.tsrx +2 -2
  178. package/tests/server/streaming-ssr.test.tsrx +48 -43
  179. package/tests/server/track-async-serialization.test.tsrx +204 -21
  180. package/tests/server/try.test.tsrx +48 -48
  181. package/tests/types/transport.ts +40 -0
  182. package/tests/utils/vite-plugin-config.test.js +23 -0
  183. package/types/index.d.ts +48 -7
  184. package/types/server.d.ts +3 -0
  185. package/types/transport.d.ts +15 -0
  186. package/src/runtime/internal/client/switch.js +0 -113
  187. package/src/utils/errors.js +0 -13
  188. package/tests/client/lazy-array.test.tsrx +0 -31
  189. package/tests/client/lazy-destructuring.test.tsrx +0 -438
  190. package/tests/client/tracked-index-access.test.tsrx +0 -113
  191. package/tests/server/lazy-destructuring.test.tsrx +0 -595
  192. package/tests/server/tracked-index-access.test.tsrx +0 -76
@@ -2,303 +2,313 @@
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
4
  var root = _$_.template(`<div class="shown">Visible</div>`, 0);
5
+
6
+ function consequent(__anchor, show) {
7
+ var div = root();
8
+
9
+ _$_.append(__anchor, div);
10
+ }
11
+
12
+ function if_1(show) {
13
+ if (show) return consequent;
14
+ }
15
+
16
+ function IfTruthy_render(__anchor, __block) {
17
+ const show = true;
18
+
19
+ _$_.if(__anchor, if_1, true, show);
20
+ }
21
+
22
+ IfTruthy[_$_.$r] = IfTruthy_render;
23
+
5
24
  var root_1 = _$_.template(`<div class="shown">Visible</div>`, 0);
25
+
26
+ function consequent_1(__anchor, show) {
27
+ var div_1 = root_1();
28
+
29
+ _$_.append(__anchor, div_1);
30
+ }
31
+
32
+ function if_2(show) {
33
+ if (show) return consequent_1;
34
+ }
35
+
36
+ function IfFalsy_render(__anchor, __block) {
37
+ const show = false;
38
+
39
+ _$_.if(__anchor, if_2, true, show);
40
+ }
41
+
42
+ IfFalsy[_$_.$r] = IfFalsy_render;
43
+
6
44
  var root_2 = _$_.template(`<div class="logged-in">Welcome back!</div>`, 0);
7
45
  var root_3 = _$_.template(`<div class="logged-out">Please log in</div>`, 0);
8
- var root_6 = _$_.template(`<div class="content">Content visible</div>`, 0);
9
- var root_5 = _$_.template(`<button class="toggle">Toggle</button><!>`, 1, 2);
10
- var root_4 = _$_.template(`<!>`, 1, 1);
11
- var root_9 = _$_.template(`<div class="on">ON</div>`, 0);
12
- var root_10 = _$_.template(`<div class="off">OFF</div>`, 0);
13
- var root_8 = _$_.template(`<button class="toggle">Toggle</button><!>`, 1, 2);
14
- var root_7 = _$_.template(`<!>`, 1, 1);
15
- var root_14 = _$_.template(`<span class="inner-content">Inner</span>`, 0);
16
- var root_13 = _$_.template(`<div class="outer-content">Outer<!></div>`, 0);
17
- var root_12 = _$_.template(`<button class="outer-toggle">Outer</button><button class="inner-toggle">Inner</button><!>`, 1, 3);
18
- var root_11 = _$_.template(`<!>`, 1, 1);
19
- var root_16 = _$_.template(`<div class="state">Loading...</div>`, 0);
20
- var root_17 = _$_.template(`<div class="state">Success!</div>`, 0);
21
- var root_18 = _$_.template(`<div class="state">Error occurred</div>`, 0);
22
- var root_15 = _$_.template(`<div><button class="success">Success</button><button class="error">Error</button><button class="loading">Loading</button><!></div>`, 0);
23
46
 
24
- import { track } from 'ripple';
47
+ function consequent_2(__anchor, isLoggedIn) {
48
+ var div_2 = root_2();
25
49
 
26
- export function IfTruthy() {
27
- return _$_.tsrx_element((__anchor, __block) => {
28
- const show = true;
50
+ _$_.append(__anchor, div_2);
51
+ }
29
52
 
30
- {
31
- var consequent = (__anchor) => {
32
- var div = root();
53
+ function alternate(__anchor, isLoggedIn) {
54
+ var div_3 = root_3();
33
55
 
34
- _$_.append(__anchor, div);
35
- };
56
+ _$_.append(__anchor, div_3);
57
+ }
36
58
 
37
- _$_.if(
38
- __anchor,
39
- (__render) => {
40
- if (show) __render(consequent);
41
- },
42
- true
43
- );
44
- }
45
- });
59
+ function if_3(isLoggedIn) {
60
+ if (isLoggedIn) return consequent_2; else return alternate;
46
61
  }
47
62
 
48
- export function IfFalsy() {
49
- return _$_.tsrx_element((__anchor, __block) => {
50
- const show = false;
63
+ function IfElse_render(__anchor, __block) {
64
+ const isLoggedIn = true;
65
+
66
+ _$_.if(__anchor, if_3, true, isLoggedIn);
67
+ }
68
+
69
+ IfElse[_$_.$r] = IfElse_render;
70
+
71
+ var root_6 = _$_.template(`<div class="content">Content visible</div>`, 0);
51
72
 
52
- {
53
- var consequent_1 = (__anchor) => {
54
- var div_1 = root_1();
73
+ function consequent_3(__anchor, show) {
74
+ var div_4 = root_6();
55
75
 
56
- _$_.append(__anchor, div_1);
57
- };
76
+ _$_.append(__anchor, div_4);
77
+ }
58
78
 
59
- _$_.if(
60
- __anchor,
61
- (__render) => {
62
- if (show) __render(consequent_1);
63
- },
64
- true
65
- );
66
- }
67
- });
79
+ function if_4(show) {
80
+ if (show.value) return consequent_3;
68
81
  }
69
82
 
70
- export function IfElse() {
71
- return _$_.tsrx_element((__anchor, __block) => {
72
- const isLoggedIn = true;
83
+ var root_5 = _$_.template(`<button class="toggle">Toggle</button><!>`, 1, 2);
84
+ var root_4 = _$_.template(`<!>`, 1, 1);
85
+
86
+ function ReactiveIf_render(__anchor, __block) {
87
+ const show = _$_.track(true, __block, '19a16ff0');
88
+ var fragment = root_4();
89
+ var node_1 = _$_.first_child_frag(fragment);
73
90
 
74
- {
75
- var consequent_2 = (__anchor) => {
76
- var div_2 = root_2();
91
+ _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
92
+ var fragment_1 = root_5();
93
+ var button = _$_.first_child_frag(fragment_1);
77
94
 
78
- _$_.append(__anchor, div_2);
79
- };
95
+ button.__click = () => {
96
+ show.value = !show.value;
97
+ };
80
98
 
81
- var alternate = (__anchor) => {
82
- var div_3 = root_3();
99
+ var node = _$_.hydrating ? _$_.hydrate_sibling() : button.nextSibling;
83
100
 
84
- _$_.append(__anchor, div_3);
85
- };
101
+ _$_.if(node, if_4, false, show);
102
+ _$_.append(__anchor, fragment_1);
103
+ }));
86
104
 
87
- _$_.if(
88
- __anchor,
89
- (__render) => {
90
- if (isLoggedIn) __render(consequent_2); else __render(alternate, false);
91
- },
92
- true
93
- );
94
- }
95
- });
105
+ _$_.append(__anchor, fragment);
96
106
  }
97
107
 
98
- export function ReactiveIf() {
99
- return _$_.tsrx_element((__anchor, __block) => {
100
- let lazy = _$_.track(true, __block, '19a16ff0');
101
- var fragment = root_4();
102
- var node_1 = _$_.first_child_frag(fragment);
108
+ ReactiveIf[_$_.$r] = ReactiveIf_render;
109
+
110
+ var root_9 = _$_.template(`<div class="on">ON</div>`, 0);
111
+ var root_10 = _$_.template(`<div class="off">OFF</div>`, 0);
112
+
113
+ function consequent_4(__anchor, isOn) {
114
+ var div_5 = root_9();
115
+
116
+ _$_.append(__anchor, div_5);
117
+ }
103
118
 
104
- _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
105
- var fragment_1 = root_5();
106
- var button = _$_.first_child_frag(fragment_1);
119
+ function alternate_1(__anchor, isOn) {
120
+ var div_6 = root_10();
107
121
 
108
- button.__click = () => {
109
- _$_.set(lazy, !lazy.value);
110
- };
122
+ _$_.append(__anchor, div_6);
123
+ }
124
+
125
+ function if_5(isOn) {
126
+ if (isOn.value) return consequent_4; else return alternate_1;
127
+ }
128
+
129
+ var root_8 = _$_.template(`<button class="toggle">Toggle</button><!>`, 1, 2);
130
+ var root_7 = _$_.template(`<!>`, 1, 1);
111
131
 
112
- var node = _$_.sibling(button);
132
+ function ReactiveIfElse_render(__anchor, __block) {
133
+ const isOn = _$_.track(false, __block, '41177f39');
134
+ var fragment_2 = root_7();
135
+ var node_3 = _$_.first_child_frag(fragment_2);
113
136
 
114
- {
115
- var consequent_3 = (__anchor) => {
116
- var div_4 = root_6();
137
+ _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
138
+ var fragment_3 = root_8();
139
+ var button_1 = _$_.first_child_frag(fragment_3);
117
140
 
118
- _$_.append(__anchor, div_4);
119
- };
141
+ button_1.__click = () => {
142
+ isOn.value = !isOn.value;
143
+ };
120
144
 
121
- _$_.if(node, (__render) => {
122
- if (lazy.value) __render(consequent_3);
123
- });
124
- }
145
+ var node_2 = _$_.hydrating ? _$_.hydrate_sibling() : button_1.nextSibling;
125
146
 
126
- _$_.append(__anchor, fragment_1);
127
- }));
147
+ _$_.if(node_2, if_5, false, isOn);
148
+ _$_.append(__anchor, fragment_3);
149
+ }));
128
150
 
129
- _$_.append(__anchor, fragment);
130
- });
151
+ _$_.append(__anchor, fragment_2);
131
152
  }
132
153
 
133
- export function ReactiveIfElse() {
134
- return _$_.tsrx_element((__anchor, __block) => {
135
- let lazy_1 = _$_.track(false, __block, '41177f39');
136
- var fragment_2 = root_7();
137
- var node_3 = _$_.first_child_frag(fragment_2);
154
+ ReactiveIfElse[_$_.$r] = ReactiveIfElse_render;
138
155
 
139
- _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
140
- var fragment_3 = root_8();
141
- var button_1 = _$_.first_child_frag(fragment_3);
156
+ var root_14 = _$_.template(`<span class="inner-content">Inner</span>`, 0);
142
157
 
143
- button_1.__click = () => {
144
- _$_.set(lazy_1, !lazy_1.value);
145
- };
158
+ function consequent_5(__anchor, inner) {
159
+ var span = root_14();
146
160
 
147
- var node_2 = _$_.sibling(button_1);
161
+ _$_.append(__anchor, span);
162
+ }
148
163
 
149
- {
150
- var consequent_4 = (__anchor) => {
151
- var div_5 = root_9();
164
+ function if_6(inner) {
165
+ if (inner.value) return consequent_5;
166
+ }
152
167
 
153
- _$_.append(__anchor, div_5);
154
- };
168
+ var root_13 = _$_.template(`<div class="outer-content">Outer<!></div>`, 0);
155
169
 
156
- var alternate_1 = (__anchor) => {
157
- var div_6 = root_10();
170
+ function consequent_6(__anchor, { outer, inner }) {
171
+ var div_7 = root_13();
158
172
 
159
- _$_.append(__anchor, div_6);
160
- };
173
+ {
174
+ var expression = _$_.hydrating ? _$_.hydrate_child() : div_7.firstChild;
175
+ var node_5 = _$_.hydrating ? _$_.hydrate_sibling() : expression.nextSibling;
161
176
 
162
- _$_.if(node_2, (__render) => {
163
- if (lazy_1.value) __render(consequent_4); else __render(alternate_1, false);
164
- });
165
- }
177
+ _$_.if(node_5, if_6, false, inner);
178
+ _$_.hydrating && _$_.pop(div_7);
179
+ }
166
180
 
167
- _$_.append(__anchor, fragment_3);
168
- }));
181
+ _$_.append(__anchor, div_7);
182
+ }
169
183
 
170
- _$_.append(__anchor, fragment_2);
171
- });
184
+ function if_7({ outer, inner }) {
185
+ if (outer.value) return consequent_6;
172
186
  }
173
187
 
174
- export function NestedIf() {
175
- return _$_.tsrx_element((__anchor, __block) => {
176
- let lazy_2 = _$_.track(true, __block, '7894e1df');
177
- let lazy_3 = _$_.track(true, __block, 'f21b8c26');
178
- var fragment_4 = root_11();
179
- var node_6 = _$_.first_child_frag(fragment_4);
188
+ var root_12 = _$_.template(`<button class="outer-toggle">Outer</button><button class="inner-toggle">Inner</button><!>`, 1, 3);
189
+ var root_11 = _$_.template(`<!>`, 1, 1);
180
190
 
181
- _$_.expression(node_6, () => _$_.tsrx_element((__anchor, __block) => {
182
- var fragment_5 = root_12();
183
- var button_2 = _$_.first_child_frag(fragment_5);
191
+ function NestedIf_render(__anchor, __block) {
192
+ const outer = _$_.track(true, __block, '7894e1df');
193
+ const inner = _$_.track(true, __block, 'f21b8c26');
194
+ var fragment_4 = root_11();
195
+ var node_6 = _$_.first_child_frag(fragment_4);
184
196
 
185
- button_2.__click = () => {
186
- _$_.set(lazy_2, !lazy_2.value);
187
- };
197
+ _$_.expression(node_6, () => _$_.tsrx_element((__anchor, __block) => {
198
+ var fragment_5 = root_12();
199
+ var button_2 = _$_.first_child_frag(fragment_5);
188
200
 
189
- var button_3 = _$_.sibling(button_2);
201
+ button_2.__click = () => {
202
+ outer.value = !outer.value;
203
+ };
190
204
 
191
- button_3.__click = () => {
192
- _$_.set(lazy_3, !lazy_3.value);
193
- };
205
+ var button_3 = _$_.hydrating ? _$_.hydrate_sibling() : button_2.nextSibling;
194
206
 
195
- var node_4 = _$_.sibling(button_3);
207
+ button_3.__click = () => {
208
+ inner.value = !inner.value;
209
+ };
196
210
 
197
- {
198
- var consequent_6 = (__anchor) => {
199
- var div_7 = root_13();
211
+ var node_4 = _$_.hydrating ? _$_.hydrate_sibling() : button_3.nextSibling;
212
+
213
+ _$_.if(node_4, if_7, false, { outer, inner });
214
+ _$_.append(__anchor, fragment_5);
215
+ }));
216
+
217
+ _$_.append(__anchor, fragment_4);
218
+ }
200
219
 
201
- {
202
- var expression = _$_.child(div_7);
203
- var node_5 = _$_.sibling(expression);
220
+ NestedIf[_$_.$r] = NestedIf_render;
204
221
 
205
- {
206
- var consequent_5 = (__anchor) => {
207
- var span = root_14();
222
+ var root_16 = _$_.template(`<div class="state">Loading...</div>`, 0);
223
+ var root_17 = _$_.template(`<div class="state">Success!</div>`, 0);
224
+ var root_18 = _$_.template(`<div class="state">Error occurred</div>`, 0);
208
225
 
209
- _$_.append(__anchor, span);
210
- };
226
+ function consequent_7(__anchor, status) {
227
+ var div_9 = root_16();
211
228
 
212
- _$_.if(node_5, (__render) => {
213
- if (lazy_3.value) __render(consequent_5);
214
- });
215
- }
229
+ _$_.append(__anchor, div_9);
230
+ }
216
231
 
217
- _$_.pop(div_7);
218
- }
232
+ function consequent_8(__anchor, status) {
233
+ var div_10 = root_17();
219
234
 
220
- _$_.append(__anchor, div_7);
221
- };
235
+ _$_.append(__anchor, div_10);
236
+ }
222
237
 
223
- _$_.if(node_4, (__render) => {
224
- if (lazy_2.value) __render(consequent_6);
225
- });
226
- }
238
+ function alternate_2(__anchor, status) {
239
+ var div_11 = root_18();
227
240
 
228
- _$_.append(__anchor, fragment_5);
229
- }));
241
+ _$_.append(__anchor, div_11);
242
+ }
230
243
 
231
- _$_.append(__anchor, fragment_4);
232
- });
244
+ function if_8(status) {
245
+ if (status.value === 'loading') return consequent_7; else if (status.value === 'success') return consequent_8; else return alternate_2;
233
246
  }
234
247
 
235
- export function IfElseIfChain() {
236
- return _$_.tsrx_element((__anchor, __block) => {
237
- let lazy_4 = _$_.track('loading', __block, '4c69c94a');
238
- var div_8 = root_15();
248
+ var root_15 = _$_.template(`<div><button class="success">Success</button><button class="error">Error</button><button class="loading">Loading</button><!></div>`, 0);
239
249
 
240
- {
241
- var button_4 = _$_.child(div_8);
250
+ function IfElseIfChain_render(__anchor, __block) {
251
+ const status = _$_.track('loading', __block, '4c69c94a');
252
+ var div_8 = root_15();
242
253
 
243
- button_4.__click = () => {
244
- _$_.set(lazy_4, 'success');
245
- };
254
+ {
255
+ var button_4 = _$_.hydrating ? _$_.hydrate_child() : div_8.firstChild;
246
256
 
247
- var button_5 = _$_.sibling(button_4);
257
+ button_4.__click = () => {
258
+ status.value = 'success';
259
+ };
248
260
 
249
- button_5.__click = () => {
250
- _$_.set(lazy_4, 'error');
251
- };
261
+ var button_5 = _$_.hydrating ? _$_.hydrate_sibling() : button_4.nextSibling;
252
262
 
253
- var button_6 = _$_.sibling(button_5);
263
+ button_5.__click = () => {
264
+ status.value = 'error';
265
+ };
254
266
 
255
- button_6.__click = () => {
256
- _$_.set(lazy_4, 'loading');
257
- };
267
+ var button_6 = _$_.hydrating ? _$_.hydrate_sibling() : button_5.nextSibling;
258
268
 
259
- var node_7 = _$_.sibling(button_6);
269
+ button_6.__click = () => {
270
+ status.value = 'loading';
271
+ };
260
272
 
261
- {
262
- var consequent_7 = (__anchor) => {
263
- var div_9 = root_16();
273
+ var node_7 = _$_.hydrating ? _$_.hydrate_sibling() : button_6.nextSibling;
264
274
 
265
- _$_.append(__anchor, div_9);
266
- };
275
+ _$_.if(node_7, if_8, false, status);
276
+ _$_.hydrating && _$_.pop(div_8);
277
+ }
267
278
 
268
- var alternate_3 = (__anchor) => {
269
- {
270
- var consequent_8 = (__anchor) => {
271
- var div_10 = root_17();
279
+ _$_.append(__anchor, div_8);
280
+ }
272
281
 
273
- _$_.append(__anchor, div_10);
274
- };
282
+ IfElseIfChain[_$_.$r] = IfElseIfChain_render;
275
283
 
276
- var alternate_2 = (__anchor) => {
277
- var div_11 = root_18();
284
+ import { track } from 'ripple';
278
285
 
279
- _$_.append(__anchor, div_11);
280
- };
286
+ export function IfTruthy() {
287
+ return _$_.tsrx_element(IfTruthy_render);
288
+ }
281
289
 
282
- _$_.if(
283
- __anchor,
284
- (__render) => {
285
- if (lazy_4.value === 'success') __render(consequent_8); else __render(alternate_2, false);
286
- },
287
- true
288
- );
289
- }
290
- };
290
+ export function IfFalsy() {
291
+ return _$_.tsrx_element(IfFalsy_render);
292
+ }
293
+
294
+ export function IfElse() {
295
+ return _$_.tsrx_element(IfElse_render);
296
+ }
297
+
298
+ export function ReactiveIf() {
299
+ return _$_.tsrx_element(ReactiveIf_render);
300
+ }
291
301
 
292
- _$_.if(node_7, (__render) => {
293
- if (lazy_4.value === 'loading') __render(consequent_7); else __render(alternate_3, false);
294
- });
295
- }
302
+ export function ReactiveIfElse() {
303
+ return _$_.tsrx_element(ReactiveIfElse_render);
304
+ }
296
305
 
297
- _$_.pop(div_8);
298
- }
306
+ export function NestedIf() {
307
+ return _$_.tsrx_element(NestedIf_render);
308
+ }
299
309
 
300
- _$_.append(__anchor, div_8);
301
- });
310
+ export function IfElseIfChain() {
311
+ return _$_.tsrx_element(IfElseIfChain_render);
302
312
  }
303
313
 
304
314
  _$_.delegate(['click']);