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
@@ -3,288 +3,344 @@ import * as _$_ from 'ripple/internal/client';
3
3
 
4
4
  var root_1 = _$_.template(`<div>Content</div>`, 0);
5
5
  var root = _$_.template(`<!>`, 1, 1);
6
+
7
+ function StaticTitle_render(__anchor, __block) {
8
+ var fragment = root();
9
+ var node = _$_.first_child_frag(fragment);
10
+
11
+ _$_.expression(node, () => _$_.tsrx_element((__anchor, __block) => {
12
+ var div = root_1();
13
+
14
+ _$_.head('6e1f1b90', (__anchor) => {
15
+ _$_.document.title = 'Static Test Title';
16
+ });
17
+
18
+ _$_.append(__anchor, div);
19
+ }));
20
+
21
+ _$_.append(__anchor, fragment);
22
+ }
23
+
24
+ StaticTitle[_$_.$r] = StaticTitle_render;
25
+
6
26
  var root_3 = _$_.template(`<div><span> </span></div>`, 0);
7
27
  var root_2 = _$_.template(`<!>`, 1, 1);
28
+
29
+ function ReactiveTitle_render(__anchor, __block) {
30
+ const title = _$_.track('Initial Title', __block, 'cbca63e3');
31
+ var fragment_1 = root_2();
32
+ var node_1 = _$_.first_child_frag(fragment_1);
33
+
34
+ _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
35
+ var div_1 = root_3();
36
+
37
+ {
38
+ var span = _$_.hydrating ? _$_.hydrate_child() : div_1.firstChild;
39
+
40
+ {
41
+ var expression = _$_.hydrating ? _$_.hydrate_child() : span.firstChild;
42
+
43
+ _$_.expression(expression, () => title.value);
44
+ _$_.hydrating && _$_.pop(span);
45
+ }
46
+ }
47
+
48
+ _$_.head('56ee4dab', (__anchor) => {
49
+ _$_.render(() => {
50
+ _$_.document.title = title.value;
51
+ });
52
+ });
53
+
54
+ _$_.append(__anchor, div_1);
55
+ }));
56
+
57
+ _$_.append(__anchor, fragment_1);
58
+ }
59
+
60
+ ReactiveTitle[_$_.$r] = ReactiveTitle_render;
61
+
8
62
  var root_6 = _$_.template(`<meta name="description" content="Page description"><link rel="stylesheet" href="/styles.css">`, 1, 2);
9
63
  var root_5 = _$_.template(`<div>Page content</div>`, 0);
10
64
  var root_4 = _$_.template(`<!>`, 1, 1);
65
+
66
+ function MultipleHeadElements_render(__anchor, __block) {
67
+ var fragment_2 = root_4();
68
+ var node_2 = _$_.first_child_frag(fragment_2);
69
+
70
+ _$_.expression(node_2, () => _$_.tsrx_element((__anchor, __block) => {
71
+ var div_2 = root_5();
72
+
73
+ _$_.head('a718096c', (__anchor) => {
74
+ var fragment_3 = root_6();
75
+
76
+ _$_.document.title = 'Page Title';
77
+ _$_.next();
78
+ _$_.append(__anchor, fragment_3);
79
+ });
80
+
81
+ _$_.append(__anchor, div_2);
82
+ }));
83
+
84
+ _$_.append(__anchor, fragment_2);
85
+ }
86
+
87
+ MultipleHeadElements[_$_.$r] = MultipleHeadElements_render;
88
+
11
89
  var root_9 = _$_.template(`<meta name="description">`, 0);
12
90
  var root_8 = _$_.template(`<div> </div>`, 0);
13
91
  var root_7 = _$_.template(`<!>`, 1, 1);
14
- var root_11 = _$_.template(`<div> </div>`, 0);
15
- var root_10 = _$_.template(`<!>`, 1, 1);
16
- var root_13 = _$_.template(`<div>Empty title test</div>`, 0);
17
- var root_12 = _$_.template(`<!>`, 1, 1);
18
- var root_15 = _$_.template(`<div> </div>`, 0);
19
- var root_14 = _$_.template(`<!>`, 1, 1);
20
- var root_17 = _$_.template(`<div><span> </span></div>`, 0);
21
- var root_16 = _$_.template(`<!>`, 1, 1);
22
- var root_20 = _$_.template(`<meta name="author" content="Test Author">`, 0);
23
- var root_19 = _$_.template(`<div>Content</div>`, 0);
24
- var root_18 = _$_.template(`<!>`, 1, 1);
25
- var root_22 = _$_.template(`<div>Styled content</div>`, 0);
26
- var root_21 = _$_.template(`<!>`, 1, 1);
27
92
 
28
- import { track } from 'ripple';
93
+ function ReactiveMetaTags_render(__anchor, __block) {
94
+ const description = _$_.track('Initial description', __block, '38bfa3b2');
95
+ var fragment_4 = root_7();
96
+ var node_3 = _$_.first_child_frag(fragment_4);
29
97
 
30
- export function StaticTitle() {
31
- return _$_.tsrx_element((__anchor, __block) => {
32
- var fragment = root();
33
- var node = _$_.first_child_frag(fragment);
98
+ _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
99
+ var div_3 = root_8();
34
100
 
35
- _$_.expression(node, () => _$_.tsrx_element((__anchor, __block) => {
36
- var div = root_1();
101
+ {
102
+ var expression_1 = _$_.hydrating ? _$_.hydrate_child() : div_3.firstChild;
37
103
 
38
- _$_.head('6e1f1b90', (__anchor) => {
39
- _$_.document.title = 'Static Test Title';
40
- });
104
+ _$_.expression(expression_1, () => description.value);
105
+ _$_.hydrating && _$_.pop(div_3);
106
+ }
107
+
108
+ _$_.head('c297b350', (__anchor) => {
109
+ var meta = root_9();
110
+
111
+ _$_.document.title = 'My Page';
112
+ _$_.set_attribute(meta, 'content');
113
+ _$_.append(__anchor, meta);
114
+ });
41
115
 
42
- _$_.append(__anchor, div);
43
- }));
116
+ _$_.append(__anchor, div_3);
117
+ }));
44
118
 
45
- _$_.append(__anchor, fragment);
46
- });
119
+ _$_.append(__anchor, fragment_4);
47
120
  }
48
121
 
49
- export function ReactiveTitle() {
50
- return _$_.tsrx_element((__anchor, __block) => {
51
- let lazy = _$_.track('Initial Title', __block, 'cbca63e3');
52
- var fragment_1 = root_2();
53
- var node_1 = _$_.first_child_frag(fragment_1);
122
+ ReactiveMetaTags[_$_.$r] = ReactiveMetaTags_render;
123
+
124
+ var root_11 = _$_.template(`<div> </div>`, 0);
125
+ var root_10 = _$_.template(`<!>`, 1, 1);
54
126
 
55
- _$_.expression(node_1, () => _$_.tsrx_element((__anchor, __block) => {
56
- var div_1 = root_3();
127
+ function TitleWithTemplate_render(__anchor, __block) {
128
+ const name = _$_.track('World', __block, 'f3925cd5');
129
+ var fragment_5 = root_10();
130
+ var node_4 = _$_.first_child_frag(fragment_5);
57
131
 
58
- {
59
- var span = _$_.child(div_1);
132
+ _$_.expression(node_4, () => _$_.tsrx_element((__anchor, __block) => {
133
+ var div_4 = root_11();
60
134
 
61
- {
62
- var expression = _$_.child(span);
135
+ {
136
+ var expression_2 = _$_.hydrating ? _$_.hydrate_child() : div_4.firstChild;
63
137
 
64
- _$_.expression(expression, () => lazy.value);
65
- _$_.pop(span);
66
- }
67
- }
138
+ _$_.expression(expression_2, () => name.value);
139
+ _$_.hydrating && _$_.pop(div_4);
140
+ }
68
141
 
69
- _$_.head('91435bee', (__anchor) => {
70
- _$_.render(() => {
71
- _$_.document.title = lazy.value;
72
- });
142
+ _$_.head('9ab2373c', (__anchor) => {
143
+ _$_.render(() => {
144
+ _$_.document.title = `Hello ${name.value}!`;
73
145
  });
146
+ });
74
147
 
75
- _$_.append(__anchor, div_1);
76
- }));
148
+ _$_.append(__anchor, div_4);
149
+ }));
77
150
 
78
- _$_.append(__anchor, fragment_1);
79
- });
151
+ _$_.append(__anchor, fragment_5);
80
152
  }
81
153
 
82
- export function MultipleHeadElements() {
83
- return _$_.tsrx_element((__anchor, __block) => {
84
- var fragment_2 = root_4();
85
- var node_2 = _$_.first_child_frag(fragment_2);
154
+ TitleWithTemplate[_$_.$r] = TitleWithTemplate_render;
86
155
 
87
- _$_.expression(node_2, () => _$_.tsrx_element((__anchor, __block) => {
88
- var div_2 = root_5();
156
+ var root_13 = _$_.template(`<div>Empty title test</div>`, 0);
157
+ var root_12 = _$_.template(`<!>`, 1, 1);
89
158
 
90
- _$_.head('07a54928', (__anchor) => {
91
- var fragment_3 = root_6();
159
+ function EmptyTitle_render(__anchor, __block) {
160
+ var fragment_6 = root_12();
161
+ var node_5 = _$_.first_child_frag(fragment_6);
92
162
 
93
- _$_.document.title = 'Page Title';
94
- _$_.next();
95
- _$_.append(__anchor, fragment_3, true);
96
- });
163
+ _$_.expression(node_5, () => _$_.tsrx_element((__anchor, __block) => {
164
+ var div_5 = root_13();
97
165
 
98
- _$_.append(__anchor, div_2);
99
- }));
166
+ _$_.head('50cc7ae2', (__anchor) => {
167
+ _$_.document.title = '';
168
+ });
100
169
 
101
- _$_.append(__anchor, fragment_2);
102
- });
170
+ _$_.append(__anchor, div_5);
171
+ }));
172
+
173
+ _$_.append(__anchor, fragment_6);
103
174
  }
104
175
 
105
- export function ReactiveMetaTags() {
106
- return _$_.tsrx_element((__anchor, __block) => {
107
- let lazy_1 = _$_.track('Initial description', __block, '38bfa3b2');
108
- var fragment_4 = root_7();
109
- var node_3 = _$_.first_child_frag(fragment_4);
176
+ EmptyTitle[_$_.$r] = EmptyTitle_render;
177
+
178
+ var root_15 = _$_.template(`<div> </div>`, 0);
179
+ var root_14 = _$_.template(`<!>`, 1, 1);
110
180
 
111
- _$_.expression(node_3, () => _$_.tsrx_element((__anchor, __block) => {
112
- var div_3 = root_8();
181
+ function ConditionalTitle_render(__anchor, __block) {
182
+ const showPrefix = _$_.track(true, __block, 'ff71bf1f');
183
+ const title = _$_.track('Main Page', __block, '7cd7d671');
184
+ var fragment_7 = root_14();
185
+ var node_6 = _$_.first_child_frag(fragment_7);
113
186
 
114
- {
115
- var expression_1 = _$_.child(div_3);
187
+ _$_.expression(node_6, () => _$_.tsrx_element((__anchor, __block) => {
188
+ var div_6 = root_15();
116
189
 
117
- _$_.expression(expression_1, () => lazy_1.value);
118
- _$_.pop(div_3);
119
- }
190
+ {
191
+ var expression_3 = _$_.hydrating ? _$_.hydrate_child() : div_6.firstChild;
120
192
 
121
- _$_.head('4ca6a546', (__anchor) => {
122
- var meta = root_9();
193
+ _$_.expression(expression_3, () => title.value);
194
+ _$_.hydrating && _$_.pop(div_6);
195
+ }
123
196
 
124
- _$_.document.title = 'My Page';
125
- _$_.set_attribute(meta, 'content');
126
- _$_.append(__anchor, meta);
197
+ _$_.head('0877ba8e', (__anchor) => {
198
+ _$_.render(() => {
199
+ _$_.document.title = showPrefix.value ? 'App - ' + title.value : title.value;
127
200
  });
201
+ });
128
202
 
129
- _$_.append(__anchor, div_3);
130
- }));
203
+ _$_.append(__anchor, div_6);
204
+ }));
131
205
 
132
- _$_.append(__anchor, fragment_4);
133
- });
206
+ _$_.append(__anchor, fragment_7);
134
207
  }
135
208
 
136
- export function TitleWithTemplate() {
137
- return _$_.tsrx_element((__anchor, __block) => {
138
- let lazy_2 = _$_.track('World', __block, 'f3925cd5');
139
- var fragment_5 = root_10();
140
- var node_4 = _$_.first_child_frag(fragment_5);
209
+ ConditionalTitle[_$_.$r] = ConditionalTitle_render;
141
210
 
142
- _$_.expression(node_4, () => _$_.tsrx_element((__anchor, __block) => {
143
- var div_4 = root_11();
211
+ var root_17 = _$_.template(`<div><span> </span></div>`, 0);
144
212
 
145
- {
146
- var expression_2 = _$_.child(div_4);
213
+ function render(__prev) {
214
+ var __a = __prev._count.value;
147
215
 
148
- _$_.expression(expression_2, () => lazy_2.value);
149
- _$_.pop(div_4);
150
- }
216
+ if (__prev.a !== __a) {
217
+ _$_.set_text(__prev._expression_4, __prev.a = __a);
218
+ }
219
+ }
151
220
 
152
- _$_.head('10dc944d', (__anchor) => {
153
- _$_.render(() => {
154
- _$_.document.title = `Hello ${lazy_2.value}!`;
155
- });
156
- });
221
+ var root_16 = _$_.template(`<!>`, 1, 1);
157
222
 
158
- _$_.append(__anchor, div_4);
159
- }));
223
+ function ComputedTitle_render(__anchor, __block) {
224
+ const count = _$_.track(0, __block, 'b6a48610');
225
+ let prefix = 'Count: ';
226
+ var fragment_8 = root_16();
227
+ var node_7 = _$_.first_child_frag(fragment_8);
160
228
 
161
- _$_.append(__anchor, fragment_5);
162
- });
163
- }
229
+ _$_.expression(node_7, () => _$_.tsrx_element((__anchor, __block) => {
230
+ var div_7 = root_17();
164
231
 
165
- export function EmptyTitle() {
166
- return _$_.tsrx_element((__anchor, __block) => {
167
- var fragment_6 = root_12();
168
- var node_5 = _$_.first_child_frag(fragment_6);
232
+ {
233
+ var span_1 = _$_.hydrating ? _$_.hydrate_child() : div_7.firstChild;
169
234
 
170
- _$_.expression(node_5, () => _$_.tsrx_element((__anchor, __block) => {
171
- var div_5 = root_13();
235
+ {
236
+ var expression_4 = _$_.hydrating ? _$_.hydrate_text() : span_1.firstChild;
237
+ }
238
+ }
172
239
 
173
- _$_.head('13ba9873', (__anchor) => {
174
- _$_.document.title = '';
240
+ _$_.head('60e9fce1', (__anchor) => {
241
+ _$_.render(() => {
242
+ _$_.document.title = prefix + count.value;
175
243
  });
244
+ });
176
245
 
177
- _$_.append(__anchor, div_5);
178
- }));
246
+ _$_.render(render, { a: ' ', _count: count, _expression_4: expression_4 });
247
+ _$_.append(__anchor, div_7);
248
+ }));
179
249
 
180
- _$_.append(__anchor, fragment_6);
181
- });
250
+ _$_.append(__anchor, fragment_8);
182
251
  }
183
252
 
184
- export function ConditionalTitle() {
185
- return _$_.tsrx_element((__anchor, __block) => {
186
- let lazy_3 = _$_.track(true, __block, 'ff71bf1f');
187
- let lazy_4 = _$_.track('Main Page', __block, '7cd7d671');
188
- var fragment_7 = root_14();
189
- var node_6 = _$_.first_child_frag(fragment_7);
253
+ ComputedTitle[_$_.$r] = ComputedTitle_render;
190
254
 
191
- _$_.expression(node_6, () => _$_.tsrx_element((__anchor, __block) => {
192
- var div_6 = root_15();
255
+ var root_20 = _$_.template(`<meta name="author" content="Test Author">`, 0);
256
+ var root_19 = _$_.template(`<div>Content</div>`, 0);
257
+ var root_18 = _$_.template(`<!>`, 1, 1);
193
258
 
194
- {
195
- var expression_3 = _$_.child(div_6);
259
+ function MultipleHeadBlocks_render(__anchor, __block) {
260
+ var fragment_9 = root_18();
261
+ var node_8 = _$_.first_child_frag(fragment_9);
196
262
 
197
- _$_.expression(expression_3, () => lazy_4.value);
198
- _$_.pop(div_6);
199
- }
263
+ _$_.expression(node_8, () => _$_.tsrx_element((__anchor, __block) => {
264
+ var div_8 = root_19();
200
265
 
201
- _$_.head('4b39c36b', (__anchor) => {
202
- _$_.render(() => {
203
- _$_.document.title = lazy_3.value ? 'App - ' + lazy_4.value : lazy_4.value;
204
- });
205
- });
266
+ _$_.head('e56fc100', (__anchor) => {
267
+ _$_.document.title = 'First Head';
268
+ });
206
269
 
207
- _$_.append(__anchor, div_6);
208
- }));
270
+ _$_.head('ba797fb2', (__anchor) => {
271
+ var meta_1 = root_20();
209
272
 
210
- _$_.append(__anchor, fragment_7);
211
- });
212
- }
273
+ _$_.append(__anchor, meta_1);
274
+ });
213
275
 
214
- export function ComputedTitle() {
215
- return _$_.tsrx_element((__anchor, __block) => {
216
- let lazy_5 = _$_.track(0, __block, 'b6a48610');
217
- let prefix = 'Count: ';
218
- var fragment_8 = root_16();
219
- var node_7 = _$_.first_child_frag(fragment_8);
276
+ _$_.append(__anchor, div_8);
277
+ }));
220
278
 
221
- _$_.expression(node_7, () => _$_.tsrx_element((__anchor, __block) => {
222
- var div_7 = root_17();
279
+ _$_.append(__anchor, fragment_9);
280
+ }
223
281
 
224
- {
225
- var span_1 = _$_.child(div_7);
282
+ MultipleHeadBlocks[_$_.$r] = MultipleHeadBlocks_render;
226
283
 
227
- {
228
- var expression_4 = _$_.child(span_1);
284
+ var root_22 = _$_.template(`<div>Styled content</div>`, 0);
285
+ var root_21 = _$_.template(`<!>`, 1, 1);
229
286
 
230
- _$_.expression(expression_4, () => lazy_5.value);
231
- _$_.pop(span_1);
232
- }
233
- }
287
+ function HeadWithStyle_render(__anchor, __block) {
288
+ var fragment_10 = root_21();
289
+ var node_9 = _$_.first_child_frag(fragment_10);
234
290
 
235
- _$_.head('92c79d98', (__anchor) => {
236
- _$_.render(() => {
237
- _$_.document.title = prefix + lazy_5.value;
238
- });
239
- });
291
+ _$_.expression(node_9, () => _$_.tsrx_element((__anchor, __block) => {
292
+ var div_9 = root_22();
240
293
 
241
- _$_.append(__anchor, div_7);
242
- }));
294
+ _$_.head('872692a0', (__anchor) => {
295
+ _$_.document.title = 'Styled Page';
296
+ });
243
297
 
244
- _$_.append(__anchor, fragment_8);
245
- });
298
+ _$_.append(__anchor, div_9);
299
+ }));
300
+
301
+ _$_.append(__anchor, fragment_10);
246
302
  }
247
303
 
248
- export function MultipleHeadBlocks() {
249
- return _$_.tsrx_element((__anchor, __block) => {
250
- var fragment_9 = root_18();
251
- var node_8 = _$_.first_child_frag(fragment_9);
304
+ HeadWithStyle[_$_.$r] = HeadWithStyle_render;
252
305
 
253
- _$_.expression(node_8, () => _$_.tsrx_element((__anchor, __block) => {
254
- var div_8 = root_19();
306
+ import { track } from 'ripple';
255
307
 
256
- _$_.head('e50b427b', (__anchor) => {
257
- _$_.document.title = 'First Head';
258
- });
308
+ export function StaticTitle() {
309
+ return _$_.tsrx_element(StaticTitle_render);
310
+ }
259
311
 
260
- _$_.head('68467dce', (__anchor) => {
261
- var meta_1 = root_20();
312
+ export function ReactiveTitle() {
313
+ return _$_.tsrx_element(ReactiveTitle_render);
314
+ }
262
315
 
263
- _$_.append(__anchor, meta_1);
264
- });
316
+ export function MultipleHeadElements() {
317
+ return _$_.tsrx_element(MultipleHeadElements_render);
318
+ }
265
319
 
266
- _$_.append(__anchor, div_8);
267
- }));
320
+ export function ReactiveMetaTags() {
321
+ return _$_.tsrx_element(ReactiveMetaTags_render);
322
+ }
268
323
 
269
- _$_.append(__anchor, fragment_9);
270
- });
324
+ export function TitleWithTemplate() {
325
+ return _$_.tsrx_element(TitleWithTemplate_render);
271
326
  }
272
327
 
273
- export function HeadWithStyle() {
274
- return _$_.tsrx_element((__anchor, __block) => {
275
- var fragment_10 = root_21();
276
- var node_9 = _$_.first_child_frag(fragment_10);
328
+ export function EmptyTitle() {
329
+ return _$_.tsrx_element(EmptyTitle_render);
330
+ }
277
331
 
278
- _$_.expression(node_9, () => _$_.tsrx_element((__anchor, __block) => {
279
- var div_9 = root_22();
332
+ export function ConditionalTitle() {
333
+ return _$_.tsrx_element(ConditionalTitle_render);
334
+ }
280
335
 
281
- _$_.head('3a8578a5', (__anchor) => {
282
- _$_.document.title = 'Styled Page';
283
- });
336
+ export function ComputedTitle() {
337
+ return _$_.tsrx_element(ComputedTitle_render);
338
+ }
284
339
 
285
- _$_.append(__anchor, div_9);
286
- }));
340
+ export function MultipleHeadBlocks() {
341
+ return _$_.tsrx_element(MultipleHeadBlocks_render);
342
+ }
287
343
 
288
- _$_.append(__anchor, fragment_10);
289
- });
344
+ export function HeadWithStyle() {
345
+ return _$_.tsrx_element(HeadWithStyle_render);
290
346
  }
@@ -2,64 +2,77 @@
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
4
  var root = _$_.template(`<div class="layout"><nav class="nav">Navigation</nav><main class="main"><!></main></div>`, 0);
5
- var root_2 = _$_.template(`<p class="text">Hello world</p>`, 0);
6
- var root_1 = _$_.template(`<div class="content"><!></div>`, 0);
7
5
 
8
- import { track } from 'ripple';
6
+ function Layout_render(__anchor, __block, { children }) {
7
+ var div = root();
9
8
 
10
- export function Layout({ children }) {
11
- return _$_.tsrx_element((__anchor, __block) => {
12
- var div = root();
9
+ {
10
+ var nav = _$_.hydrating ? _$_.hydrate_child() : div.firstChild;
11
+ var main = _$_.hydrating ? _$_.hydrate_sibling() : nav.nextSibling;
13
12
 
14
13
  {
15
- var nav = _$_.child(div);
16
- var main = _$_.sibling(nav);
17
-
18
- {
19
- var expression = _$_.child(main);
14
+ var expression = _$_.hydrating ? _$_.hydrate_child() : main.firstChild;
20
15
 
21
- _$_.expression(expression, () => children);
22
- _$_.pop(main);
23
- }
16
+ _$_.expression(expression, () => children);
17
+ _$_.hydrating && _$_.pop(main);
24
18
  }
19
+ }
25
20
 
26
- _$_.append(__anchor, div);
27
- });
21
+ _$_.append(__anchor, div);
28
22
  }
29
23
 
30
- export function Content() {
31
- return _$_.tsrx_element((__anchor, __block) => {
32
- let lazy = _$_.track(true, __block, '0bdb1500');
33
- var div_1 = root_1();
24
+ Layout[_$_.$r] = Layout_render;
34
25
 
35
- {
36
- var node = _$_.child(div_1);
26
+ var root_2 = _$_.template(`<p class="text">Hello world</p>`, 0);
37
27
 
38
- {
39
- var consequent = (__anchor) => {
40
- var p = root_2();
28
+ function consequent(__anchor, visible) {
29
+ var p = root_2();
41
30
 
42
- _$_.append(__anchor, p);
43
- };
31
+ _$_.append(__anchor, p);
32
+ }
44
33
 
45
- _$_.if(node, (__render) => {
46
- if (lazy.value) __render(consequent);
47
- });
48
- }
34
+ function if_1(visible) {
35
+ if (visible.value) return consequent;
36
+ }
49
37
 
50
- _$_.pop(div_1);
51
- }
38
+ var root_1 = _$_.template(`<div class="content"><!></div>`, 0);
39
+
40
+ function Content_render(__anchor, __block) {
41
+ const visible = _$_.track(true, __block, '0bdb1500');
42
+ var div_1 = root_1();
43
+
44
+ {
45
+ var node = _$_.hydrating ? _$_.hydrate_child() : div_1.firstChild;
52
46
 
53
- _$_.append(__anchor, div_1);
47
+ _$_.if(node, if_1, false, visible);
48
+ _$_.hydrating && _$_.pop(div_1);
49
+ }
50
+
51
+ _$_.append(__anchor, div_1);
52
+ }
53
+
54
+ Content[_$_.$r] = Content_render;
55
+
56
+ function LayoutWithContent_render(__anchor, __block) {
57
+ _$_.render_component(Layout, __anchor, {
58
+ children: _$_.tsrx_element((__anchor, __block) => {
59
+ _$_.render_component(Content, __anchor, {});
60
+ })
54
61
  });
55
62
  }
56
63
 
64
+ LayoutWithContent[_$_.$r] = LayoutWithContent_render;
65
+
66
+ import { track } from 'ripple';
67
+
68
+ export function Layout(__props) {
69
+ return _$_.tsrx_element(Layout_render, __props);
70
+ }
71
+
72
+ export function Content() {
73
+ return _$_.tsrx_element(Content_render);
74
+ }
75
+
57
76
  export function LayoutWithContent() {
58
- return _$_.tsrx_element((__anchor, __block) => {
59
- _$_.render_component(Layout, __anchor, {
60
- children: _$_.tsrx_element((__anchor, __block) => {
61
- _$_.render_component(Content, __anchor, {});
62
- })
63
- });
64
- });
77
+ return _$_.tsrx_element(LayoutWithContent_render);
65
78
  }