ripple 0.4.1 → 0.4.3

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 (96) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/package.json +9 -3
  3. package/src/constants.js +4 -0
  4. package/src/jsx-runtime.d.ts +2 -1
  5. package/src/runtime/array.js +15 -9
  6. package/src/runtime/index-client.js +25 -7
  7. package/src/runtime/index-server.js +1 -0
  8. package/src/runtime/internal/client/attributes.js +313 -0
  9. package/src/runtime/internal/client/blocks.js +4 -14
  10. package/src/runtime/internal/client/component.js +2 -5
  11. package/src/runtime/internal/client/composite.js +14 -6
  12. package/src/runtime/internal/client/constants.js +12 -6
  13. package/src/runtime/internal/client/context.js +3 -2
  14. package/src/runtime/internal/client/css.js +11 -26
  15. package/src/runtime/internal/client/errors.js +188 -0
  16. package/src/runtime/internal/client/events.js +79 -34
  17. package/src/runtime/internal/client/expression.js +21 -116
  18. package/src/runtime/internal/client/for.js +272 -222
  19. package/src/runtime/internal/client/head.js +4 -3
  20. package/src/runtime/internal/client/html.js +5 -3
  21. package/src/runtime/internal/client/hydrate.js +484 -0
  22. package/src/runtime/internal/client/hydration-enabled.js +7 -0
  23. package/src/runtime/internal/client/hydration.js +16 -97
  24. package/src/runtime/internal/client/if.js +13 -9
  25. package/src/runtime/internal/client/index.js +16 -8
  26. package/src/runtime/internal/client/operations.js +12 -9
  27. package/src/runtime/internal/client/portal.js +3 -2
  28. package/src/runtime/internal/client/render.js +75 -321
  29. package/src/runtime/internal/client/root-boundary-enabled.js +7 -0
  30. package/src/runtime/internal/client/runtime.js +129 -362
  31. package/src/runtime/internal/client/template-ns.js +47 -0
  32. package/src/runtime/internal/client/template.js +63 -140
  33. package/src/runtime/internal/client/track-async.js +356 -0
  34. package/src/runtime/internal/client/try.js +133 -319
  35. package/src/runtime/internal/client/types.d.ts +48 -24
  36. package/src/runtime/internal/server/index.js +38 -33
  37. package/src/runtime/internal/server/prerender.js +27 -0
  38. package/src/server/index.js +1 -0
  39. package/src/utils/class-name.js +28 -0
  40. package/tests/client/basic/basic.errors.test.tsrx +3 -3
  41. package/tests/client/compiler/__snapshots__/compiler.typescript.test.tsrx.snap +0 -2
  42. package/tests/client/compiler/compiler.basic.test.tsrx +4 -4
  43. package/tests/client/compiler/compiler.tracked-access.test.tsrx +3 -3
  44. package/tests/client/composite/composite.props.test.tsrx +10 -10
  45. package/tests/client/derived-release.test.tsrx +3 -3
  46. package/tests/client/for-item.test.tsrx +443 -0
  47. package/tests/client/for-selector.test.tsrx +95 -0
  48. package/tests/hydration/compiled/client/basic.js +97 -123
  49. package/tests/hydration/compiled/client/composite.js +5 -5
  50. package/tests/hydration/compiled/client/events.js +84 -79
  51. package/tests/hydration/compiled/client/for.js +229 -233
  52. package/tests/hydration/compiled/client/fragment-cursor.js +781 -481
  53. package/tests/hydration/compiled/client/head.js +23 -26
  54. package/tests/hydration/compiled/client/hmr.js +4 -4
  55. package/tests/hydration/compiled/client/html-in-template.js +5 -5
  56. package/tests/hydration/compiled/client/html.js +174 -208
  57. package/tests/hydration/compiled/client/if-children.js +71 -70
  58. package/tests/hydration/compiled/client/if-fragment-controlflow.js +46 -46
  59. package/tests/hydration/compiled/client/if.js +26 -26
  60. package/tests/hydration/compiled/client/mixed-control-flow.js +63 -105
  61. package/tests/hydration/compiled/client/nested-control-flow.js +170 -390
  62. package/tests/hydration/compiled/client/portal.js +10 -10
  63. package/tests/hydration/compiled/client/reactivity.js +36 -50
  64. package/tests/hydration/compiled/client/return.js +2 -2
  65. package/tests/hydration/compiled/client/streaming.js +34 -40
  66. package/tests/hydration/compiled/client/switch.js +25 -25
  67. package/tests/hydration/compiled/client/track-async-serialization.js +41 -41
  68. package/tests/hydration/compiled/client/try.js +15 -15
  69. package/tests/hydration/compiled/client/typed-text.js +8 -19
  70. package/tests/hydration/compiled/server/basic.js +6 -6
  71. package/tests/hydration/compiled/server/events.js +13 -61
  72. package/tests/hydration/compiled/server/for.js +23 -31
  73. package/tests/hydration/compiled/server/fragment-cursor.js +214 -366
  74. package/tests/hydration/compiled/server/head.js +6 -6
  75. package/tests/hydration/compiled/server/hmr.js +1 -1
  76. package/tests/hydration/compiled/server/html.js +1 -1
  77. package/tests/hydration/compiled/server/if-children.js +9 -9
  78. package/tests/hydration/compiled/server/if.js +5 -5
  79. package/tests/hydration/compiled/server/mixed-control-flow.js +4 -4
  80. package/tests/hydration/compiled/server/portal.js +1 -1
  81. package/tests/hydration/compiled/server/reactivity.js +9 -9
  82. package/tests/hydration/compiled/server/streaming.js +9 -9
  83. package/tests/hydration/compiled/server/switch.js +4 -4
  84. package/tests/hydration/compiled/server/track-async-serialization.js +16 -16
  85. package/tests/hydration/compiled/server/try.js +4 -4
  86. package/tests/hydration/compiled/server/typed-text.js +1 -1
  87. package/tests/hydration/components/fragment-cursor.tsrx +60 -0
  88. package/tests/hydration/components/track-async-serialization.tsrx +2 -2
  89. package/tests/hydration/fragment-cursor.test.js +34 -1
  90. package/tests/hydration/track-async-serialization.test.js +1 -1
  91. package/tests/server/basic.components.test.tsrx +3 -3
  92. package/tests/server/basic.test.tsrx +23 -0
  93. package/tests/server/track-async-serialization.test.tsrx +6 -6
  94. package/tests/utils/tracked-types.test.js +3 -3
  95. package/types/index.d.ts +8 -8
  96. package/types/server.d.ts +17 -0
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div>Hello World</div>`, 0);
4
+ var root = _$_.template(`<div>Hello World`);
5
5
 
6
6
  function StaticText_render(__anchor, __block) {
7
7
  var div = root();
@@ -11,7 +11,7 @@ function StaticText_render(__anchor, __block) {
11
11
 
12
12
  StaticText[_$_.$r] = StaticText_render;
13
13
 
14
- var root_2 = _$_.template(`<h1>Title</h1><p>Paragraph text</p><span>Span text</span>`, 1, 3);
14
+ var root_2 = _$_.template(`<h1>Title</h1><p>Paragraph text</p><span>Span text`, 1, 3);
15
15
  var root_1 = _$_.template(`<!>`, 1, 1);
16
16
 
17
17
  function MultipleElements_render(__anchor, __block) {
@@ -30,7 +30,7 @@ function MultipleElements_render(__anchor, __block) {
30
30
 
31
31
  MultipleElements[_$_.$r] = MultipleElements_render;
32
32
 
33
- var root_3 = _$_.template(`<div class="outer"><div class="inner"><span>Nested content</span></div></div>`, 0);
33
+ var root_3 = _$_.template(`<div class=outer><div class=inner><span>Nested content`);
34
34
 
35
35
  function NestedElements_render(__anchor, __block) {
36
36
  var div_1 = root_3();
@@ -40,7 +40,7 @@ function NestedElements_render(__anchor, __block) {
40
40
 
41
41
  NestedElements[_$_.$r] = NestedElements_render;
42
42
 
43
- var root_5 = _$_.template(`<input type="text" placeholder="Enter text" disabled><a href="/link" target="_blank">Link</a>`, 1, 2);
43
+ var root_5 = _$_.template(`<input type=text placeholder="Enter text" disabled><a href=/link target=_blank>Link`, 1, 2);
44
44
  var root_4 = _$_.template(`<!>`, 1, 1);
45
45
 
46
46
  function WithAttributes_render(__anchor, __block) {
@@ -59,7 +59,7 @@ function WithAttributes_render(__anchor, __block) {
59
59
 
60
60
  WithAttributes[_$_.$r] = WithAttributes_render;
61
61
 
62
- var root_6 = _$_.template(`<span class="child">Child content</span>`, 0);
62
+ var root_6 = _$_.template(`<span class=child>Child content`);
63
63
 
64
64
  function ChildComponent_render(__anchor, __block) {
65
65
  var span = root_6();
@@ -69,7 +69,7 @@ function ChildComponent_render(__anchor, __block) {
69
69
 
70
70
  ChildComponent[_$_.$r] = ChildComponent_render;
71
71
 
72
- var root_7 = _$_.template(`<div class="parent"></div>`, 0);
72
+ var root_7 = _$_.template(`<div class=parent>`);
73
73
 
74
74
  function ParentWithChild_render(__anchor, __block) {
75
75
  var div_2 = root_7();
@@ -86,7 +86,7 @@ function ParentWithChild_render(__anchor, __block) {
86
86
 
87
87
  ParentWithChild[_$_.$r] = ParentWithChild_render;
88
88
 
89
- var root_8 = _$_.template(`<div class="first">First</div>`, 0);
89
+ var root_8 = _$_.template(`<div class=first>First`);
90
90
 
91
91
  function FirstSibling_render(__anchor, __block) {
92
92
  var div_3 = root_8();
@@ -96,7 +96,7 @@ function FirstSibling_render(__anchor, __block) {
96
96
 
97
97
  FirstSibling[_$_.$r] = FirstSibling_render;
98
98
 
99
- var root_9 = _$_.template(`<div class="second">Second</div>`, 0);
99
+ var root_9 = _$_.template(`<div class=second>Second`);
100
100
 
101
101
  function SecondSibling_render(__anchor, __block) {
102
102
  var div_4 = root_9();
@@ -130,24 +130,21 @@ function SiblingComponents_render(__anchor, __block) {
130
130
 
131
131
  SiblingComponents[_$_.$r] = SiblingComponents_render;
132
132
 
133
- var root_12 = _$_.template(`<div> </div>`, 0);
133
+ var root_12 = _$_.template(`<div>`);
134
134
 
135
135
  function render(__prev) {
136
- var __a = 'Hello ' + __prev._props.name;
136
+ var __a = 'Hello ' + __prev._a.name;
137
137
 
138
138
  if (__prev.a !== __a) {
139
- _$_.set_text(__prev._expression, __prev.a = __a);
139
+ _$_.set_text_content(__prev._b, __a, __prev.a);
140
+ __prev.a = __a;
140
141
  }
141
142
  }
142
143
 
143
144
  function Greeting_render(__anchor, __block, props) {
144
145
  var div_5 = root_12();
145
146
 
146
- {
147
- var expression = _$_.hydrating ? _$_.hydrate_text() : div_5.firstChild;
148
- }
149
-
150
- _$_.render(render, { a: ' ', _props: props, _expression: expression });
147
+ _$_.render(render, { a: '', _a: props, _b: div_5 });
151
148
  _$_.append(__anchor, div_5);
152
149
  }
153
150
 
@@ -159,7 +156,7 @@ function WithGreeting_render(__anchor, __block) {
159
156
 
160
157
  WithGreeting[_$_.$r] = WithGreeting_render;
161
158
 
162
- var root_14 = _$_.template(`<div> </div><span> </span>`, 1, 2);
159
+ var root_14 = _$_.template(`<div></div><span> `, 1, 2);
163
160
  var root_13 = _$_.template(`<!>`, 1, 1);
164
161
 
165
162
  function ExpressionContent_render(__anchor, __block) {
@@ -173,9 +170,7 @@ function ExpressionContent_render(__anchor, __block) {
173
170
  var div_6 = _$_.first_child_frag(fragment_7);
174
171
 
175
172
  {
176
- var expression_1 = _$_.hydrating ? _$_.hydrate_text() : div_6.firstChild;
177
-
178
- expression_1.nodeValue = value;
173
+ div_6.textContent = value;
179
174
  }
180
175
 
181
176
  var span_1 = _$_.hydrating ? _$_.hydrate_sibling() : div_6.nextSibling;
@@ -195,15 +190,13 @@ function ExpressionContent_render(__anchor, __block) {
195
190
 
196
191
  ExpressionContent[_$_.$r] = ExpressionContent_render;
197
192
 
198
- var root_15 = _$_.template(`<div class="helper-item"> </div>`, 0);
193
+ var root_15 = _$_.template(`<div class=helper-item>`);
199
194
 
200
195
  function NestedHelperItem_render(__anchor, __block, { item }) {
201
196
  var div_7 = root_15();
202
197
 
203
198
  {
204
- var expression_3 = _$_.hydrating ? _$_.hydrate_text() : div_7.firstChild;
205
-
206
- expression_3.nodeValue = item;
199
+ div_7.textContent = item;
207
200
  }
208
201
 
209
202
  _$_.append(__anchor, div_7);
@@ -211,7 +204,7 @@ function NestedHelperItem_render(__anchor, __block, { item }) {
211
204
 
212
205
  NestedHelperItem[_$_.$r] = NestedHelperItem_render;
213
206
 
214
- var root_17 = _$_.template(`<span class="label"> </span><!>`, 1, 2);
207
+ var root_17 = _$_.template(`<span class=label></span><!>`, 1, 2);
215
208
  var root_16 = _$_.template(`<!>`, 1, 1);
216
209
 
217
210
  function NestedTsxTsrxFragment_render(__anchor, __block, { label }) {
@@ -223,9 +216,7 @@ function NestedTsxTsrxFragment_render(__anchor, __block, { label }) {
223
216
  var span_2 = _$_.first_child_frag(fragment_9);
224
217
 
225
218
  {
226
- var expression_4 = _$_.hydrating ? _$_.hydrate_text() : span_2.firstChild;
227
-
228
- expression_4.nodeValue = label;
219
+ span_2.textContent = label;
229
220
  }
230
221
 
231
222
  var node_6 = _$_.hydrating ? _$_.hydrate_sibling() : span_2.nextSibling;
@@ -247,8 +238,8 @@ function NestedTsxTsrxFragment_render(__anchor, __block, { label }) {
247
238
 
248
239
  NestedTsxTsrxFragment[_$_.$r] = NestedTsxTsrxFragment_render;
249
240
 
250
- var root_19 = _$_.template(`<div class="app-item"> </div>`, 0);
251
- var root_18 = _$_.template(`<div class="nested-expression-values"><!></div>`, 0);
241
+ var root_19 = _$_.template(`<div class=app-item> `);
242
+ var root_18 = _$_.template(`<div class=nested-expression-values><!>`);
252
243
 
253
244
  function NestedTsxTsrxExpressionValues_render(__anchor, __block) {
254
245
  var div_8 = root_18();
@@ -285,10 +276,10 @@ function NestedTsxTsrxExpressionValues_render(__anchor, __block) {
285
276
 
286
277
  NestedTsxTsrxExpressionValues[_$_.$r] = NestedTsxTsrxExpressionValues_render;
287
278
 
288
- var root_20 = _$_.template(`<strong class="middle">beta</strong>`, 0);
289
- var root_21 = _$_.template(`<em class="tail">epsilon</em>`, 0);
279
+ var root_20 = _$_.template(`<strong class=middle>beta`);
280
+ var root_21 = _$_.template(`<em class=tail>epsilon`);
290
281
  var root_22 = _$_.template(` `, 1, 1);
291
- var root_23 = _$_.template(`<div class="mixed-collection"><!></div>`, 0);
282
+ var root_23 = _$_.template(`<div class=mixed-collection><!>`);
292
283
 
293
284
  function MixedTsrxCollectionText_render(__anchor, __block) {
294
285
  const content = _$_.tsrx_element((__anchor, __block) => {
@@ -331,10 +322,10 @@ function MixedTsrxCollectionText_render(__anchor, __block) {
331
322
 
332
323
  MixedTsrxCollectionText[_$_.$r] = MixedTsrxCollectionText_render;
333
324
 
334
- var root_24 = _$_.template(`<strong class="middle">beta</strong>`, 0);
335
- var root_25 = _$_.template(`<em class="tail">epsilon</em>`, 0);
325
+ var root_24 = _$_.template(`<strong class=middle>beta`);
326
+ var root_25 = _$_.template(`<em class=tail>epsilon`);
336
327
  var root_26 = _$_.template(` `, 1, 1);
337
- var root_27 = _$_.template(`<div class="mixed-collection-split"><!></div>`, 0);
328
+ var root_27 = _$_.template(`<div class=mixed-collection-split><!>`);
338
329
 
339
330
  function MixedTsrxCollectionSplitServerText_render(__anchor, __block) {
340
331
  const content = _$_.tsrx_element((__anchor, __block) => {
@@ -377,10 +368,10 @@ function MixedTsrxCollectionSplitServerText_render(__anchor, __block) {
377
368
 
378
369
  MixedTsrxCollectionSplitServerText[_$_.$r] = MixedTsrxCollectionSplitServerText_render;
379
370
 
380
- var root_28 = _$_.template(`<strong class="middle">beta</strong>`, 0);
381
- var root_29 = _$_.template(`<em class="tail">epsilon</em>`, 0);
371
+ var root_28 = _$_.template(`<strong class=middle>beta`);
372
+ var root_29 = _$_.template(`<em class=tail>epsilon`);
382
373
  var root_30 = _$_.template(` `, 1, 1);
383
- var root_31 = _$_.template(`<div class="mixed-collection-split"><!></div>`, 0);
374
+ var root_31 = _$_.template(`<div class=mixed-collection-split><!>`);
384
375
 
385
376
  function MixedTsrxCollectionSplitClientText_render(__anchor, __block) {
386
377
  const content = _$_.tsrx_element((__anchor, __block) => {
@@ -423,9 +414,9 @@ function MixedTsrxCollectionSplitClientText_render(__anchor, __block) {
423
414
 
424
415
  MixedTsrxCollectionSplitClientText[_$_.$r] = MixedTsrxCollectionSplitClientText_render;
425
416
 
426
- var root_32 = _$_.template(`<span class="primitive-tail"> ok</span>`, 0);
417
+ var root_32 = _$_.template(`<span class=primitive-tail> ok`);
427
418
  var root_33 = _$_.template(` `, 1, 1);
428
- var root_34 = _$_.template(`<div class="mixed-collection-primitive"><!></div>`, 0);
419
+ var root_34 = _$_.template(`<div class=mixed-collection-primitive><!>`);
429
420
 
430
421
  function MixedTsrxCollectionPrimitiveServerText_render(__anchor, __block) {
431
422
  const content = _$_.tsrx_element((__anchor, __block) => {
@@ -461,9 +452,9 @@ function MixedTsrxCollectionPrimitiveServerText_render(__anchor, __block) {
461
452
 
462
453
  MixedTsrxCollectionPrimitiveServerText[_$_.$r] = MixedTsrxCollectionPrimitiveServerText_render;
463
454
 
464
- var root_35 = _$_.template(`<span class="primitive-tail"> ok</span>`, 0);
455
+ var root_35 = _$_.template(`<span class=primitive-tail> ok`);
465
456
  var root_36 = _$_.template(` `, 1, 1);
466
- var root_37 = _$_.template(`<div class="mixed-collection-primitive"><!></div>`, 0);
457
+ var root_37 = _$_.template(`<div class=mixed-collection-primitive><!>`);
467
458
 
468
459
  function MixedTsrxCollectionPrimitiveClientText_render(__anchor, __block) {
469
460
  const content = _$_.tsrx_element((__anchor, __block) => {
@@ -499,7 +490,7 @@ function MixedTsrxCollectionPrimitiveClientText_render(__anchor, __block) {
499
490
 
500
491
  MixedTsrxCollectionPrimitiveClientText[_$_.$r] = MixedTsrxCollectionPrimitiveClientText_render;
501
492
 
502
- var root_38 = _$_.template(`<div class="dynamic-array-call"> </div>`, 0);
493
+ var root_38 = _$_.template(`<div class=dynamic-array-call> `);
503
494
 
504
495
  function DynamicArrayFromCall_render(__anchor, __block) {
505
496
  const items = _$_.with_scope(__block, createPrimitiveItems);
@@ -517,10 +508,10 @@ function DynamicArrayFromCall_render(__anchor, __block) {
517
508
 
518
509
  DynamicArrayFromCall[_$_.$r] = DynamicArrayFromCall_render;
519
510
 
520
- var root_39 = _$_.template(`<div class="dynamic-array-track"> </div>`, 0);
511
+ var root_39 = _$_.template(`<div class=dynamic-array-track> `);
521
512
 
522
513
  function DynamicArrayFromTrack_render(__anchor, __block) {
523
- const items = _$_.track(['start:', ['one', 2], true, null, false, ':end'], __block, 'b5de6402');
514
+ const items = _$_.track(['start:', ['one', 2], true, null, false, ':end'], __block, '1egmw3m');
524
515
  var div_16 = root_39();
525
516
 
526
517
  {
@@ -535,7 +526,7 @@ function DynamicArrayFromTrack_render(__anchor, __block) {
535
526
 
536
527
  DynamicArrayFromTrack[_$_.$r] = DynamicArrayFromTrack_render;
537
528
 
538
- var root_40 = _$_.template(`<div class="dynamic-array-conditional"> </div>`, 0);
529
+ var root_40 = _$_.template(`<div class=dynamic-array-conditional> `);
539
530
 
540
531
  function DynamicArrayFromConditional_render(__anchor, __block) {
541
532
  const condition = true;
@@ -558,7 +549,7 @@ function DynamicArrayFromConditional_render(__anchor, __block) {
558
549
 
559
550
  DynamicArrayFromConditional[_$_.$r] = DynamicArrayFromConditional_render;
560
551
 
561
- var root_41 = _$_.template(`<div class="dynamic-array-logical"> </div>`, 0);
552
+ var root_41 = _$_.template(`<div class=dynamic-array-logical> `);
562
553
 
563
554
  function DynamicArrayFromLogical_render(__anchor, __block) {
564
555
  const condition = true;
@@ -577,7 +568,7 @@ function DynamicArrayFromLogical_render(__anchor, __block) {
577
568
 
578
569
  DynamicArrayFromLogical[_$_.$r] = DynamicArrayFromLogical_render;
579
570
 
580
- var root_42 = _$_.template(`<section class="outer"><div class="inner">from tsrx</div></section>`, 0);
571
+ var root_42 = _$_.template(`<section class=outer><div class=inner>from tsrx`);
581
572
  var root_44 = _$_.template(`<!>`, 1, 1);
582
573
  var root_43 = _$_.template(`<!>`, 1, 1);
583
574
 
@@ -604,7 +595,7 @@ function NestedTsrxInsideTopLevelTsxExpression_render(__anchor, __block) {
604
595
 
605
596
  NestedTsrxInsideTopLevelTsxExpression[_$_.$r] = NestedTsrxInsideTopLevelTsxExpression_render;
606
597
 
607
- var root_45 = _$_.template(`<div class="wrapper"><section class="native"><span class="nested-tsrx">inside nested tsrx</span></section></div>`, 0);
598
+ var root_45 = _$_.template(`<div class=wrapper><section class=native><span class=nested-tsrx>inside nested tsrx`);
608
599
  var root_47 = _$_.template(`<!>`, 1, 1);
609
600
  var root_46 = _$_.template(`<!>`, 1, 1);
610
601
 
@@ -631,8 +622,8 @@ function NestedTsrxElementsInsideTopLevelTsxValue_render(__anchor, __block) {
631
622
 
632
623
  NestedTsrxElementsInsideTopLevelTsxValue[_$_.$r] = NestedTsrxElementsInsideTopLevelTsxValue_render;
633
624
 
634
- var root_48 = _$_.template(`<span class="nested-tsx">inside nested tsx</span>`, 0);
635
- var root_49 = _$_.template(`<div class="native"> </div>`, 0);
625
+ var root_48 = _$_.template(`<span class=nested-tsx>inside nested tsx`);
626
+ var root_49 = _$_.template(`<div class=native> `);
636
627
  var root_51 = _$_.template(`<!>`, 1, 1);
637
628
  var root_50 = _$_.template(`<!>`, 1, 1);
638
629
 
@@ -672,7 +663,7 @@ function TsxDeclaredBeforeTopLevelTsx_render(__anchor, __block) {
672
663
 
673
664
  TsxDeclaredBeforeTopLevelTsx[_$_.$r] = TsxDeclaredBeforeTopLevelTsx_render;
674
665
 
675
- var root_52 = _$_.template(`<div class="text-prop"> </div>`, 0);
666
+ var root_52 = _$_.template(`<div class=text-prop> `);
676
667
 
677
668
  function TextProp_render(__anchor, __block, { children }) {
678
669
  var div_21 = root_52();
@@ -689,34 +680,31 @@ function TextProp_render(__anchor, __block, { children }) {
689
680
 
690
681
  TextProp[_$_.$r] = TextProp_render;
691
682
 
692
- var root_53 = _$_.template(`<div class="text-prop"> </div>`, 0);
683
+ var root_53 = _$_.template(`<div class=text-prop>`);
693
684
 
694
685
  function render_1(__prev) {
695
- var __a = __prev._children.value;
686
+ var __a = __prev._a.value;
696
687
 
697
688
  if (__prev.a !== __a) {
698
- _$_.set_text(__prev._expression_25, __prev.a = __a);
689
+ _$_.set_text_content(__prev._b, __a, __prev.a);
690
+ __prev.a = __a;
699
691
  }
700
692
  }
701
693
 
702
694
  function TypedTextProp_render(__anchor, __block, { children }) {
703
695
  var div_22 = root_53();
704
696
 
705
- {
706
- var expression_25 = _$_.hydrating ? _$_.hydrate_text() : div_22.firstChild;
707
- }
708
-
709
- _$_.render(render_1, { a: ' ', _children: children, _expression_25: expression_25 });
697
+ _$_.render(render_1, { a: '', _a: children, _b: div_22 });
710
698
  _$_.append(__anchor, div_22);
711
699
  }
712
700
 
713
701
  TypedTextProp[_$_.$r] = TypedTextProp_render;
714
702
 
715
- var root_55 = _$_.template(`<!><button class="show-text">Show</button>`, 1, 2);
703
+ var root_55 = _$_.template(`<!><button class=show-text>Show`, 1, 2);
716
704
  var root_54 = _$_.template(`<!>`, 1, 1);
717
705
 
718
706
  function TextPropWithToggle_render(__anchor, __block) {
719
- const show = _$_.track(false, __block, '1ba81c3b');
707
+ const show = _$_.track(false, __block, '7o96bf');
720
708
  var fragment_21 = root_54();
721
709
  var node_14 = _$_.first_child_frag(fragment_21);
722
710
 
@@ -725,7 +713,7 @@ function TextPropWithToggle_render(__anchor, __block) {
725
713
  var node_13 = _$_.first_child_frag(fragment_22);
726
714
 
727
715
  _$_.render_component(TextProp, node_13, {
728
- children: _$_.normalize_children(_$_.track(() => show.value ? 'hello' : '', __block, '649e2af0'))
716
+ children: _$_.normalize_children(_$_.track(() => show.value ? 'hello' : '', __block, 'rx1khc'))
729
717
  });
730
718
 
731
719
  var button = _$_.hydrating ? _$_.hydrate_sibling() : node_13.nextSibling;
@@ -739,11 +727,11 @@ function TextPropWithToggle_render(__anchor, __block) {
739
727
 
740
728
  TextPropWithToggle[_$_.$r] = TextPropWithToggle_render;
741
729
 
742
- var root_57 = _$_.template(`<!><button class="show-text">Show</button>`, 1, 2);
730
+ var root_57 = _$_.template(`<!><button class=show-text>Show`, 1, 2);
743
731
  var root_56 = _$_.template(`<!>`, 1, 1);
744
732
 
745
733
  function TypedTextPropWithToggle_render(__anchor, __block) {
746
- const show = _$_.track(false, __block, 'ba719d47');
734
+ const show = _$_.track(false, __block, '1fqc2fb');
747
735
  var fragment_23 = root_56();
748
736
  var node_16 = _$_.first_child_frag(fragment_23);
749
737
 
@@ -752,7 +740,7 @@ function TypedTextPropWithToggle_render(__anchor, __block) {
752
740
  var node_15 = _$_.first_child_frag(fragment_24);
753
741
 
754
742
  _$_.render_component(TypedTextProp, node_15, {
755
- children: _$_.normalize_children(_$_.track(() => show.value ? 'hello' : '', __block, '6fb091f9'))
743
+ children: _$_.normalize_children(_$_.track(() => show.value ? 'hello' : '', __block, 'uzmy9l'))
756
744
  });
757
745
 
758
746
  var button_1 = _$_.hydrating ? _$_.hydrate_sibling() : node_15.nextSibling;
@@ -766,7 +754,7 @@ function TypedTextPropWithToggle_render(__anchor, __block) {
766
754
 
767
755
  TypedTextPropWithToggle[_$_.$r] = TypedTextPropWithToggle_render;
768
756
 
769
- var root_59 = _$_.template(`<h1 class="sr-only">heading</h1><p class="subtitle">first paragraph</p><p class="subtitle">second paragraph</p>`, 1, 3);
757
+ var root_59 = _$_.template(`<h1 class=sr-only>heading</h1><p class=subtitle>first paragraph</p><p class=subtitle>second paragraph`, 1, 3);
770
758
  var root_58 = _$_.template(`<!>`, 1, 1);
771
759
 
772
760
  function StaticHeader_render(__anchor, __block) {
@@ -785,7 +773,7 @@ function StaticHeader_render(__anchor, __block) {
785
773
 
786
774
  StaticHeader[_$_.$r] = StaticHeader_render;
787
775
 
788
- var root_61 = _$_.template(`<!><span class="sibling1"> </span><span class="sibling2"> </span>`, 1, 3);
776
+ var root_61 = _$_.template(`<!><span class=sibling1></span><span class=sibling2>`, 1, 3);
789
777
  var root_60 = _$_.template(`<!>`, 1, 1);
790
778
 
791
779
  function StaticChildWithSiblings_render(__anchor, __block) {
@@ -802,17 +790,13 @@ function StaticChildWithSiblings_render(__anchor, __block) {
802
790
  var span_6 = _$_.hydrating ? _$_.hydrate_sibling() : node_18.nextSibling;
803
791
 
804
792
  {
805
- var expression_26 = _$_.hydrating ? _$_.hydrate_text() : span_6.firstChild;
806
-
807
- expression_26.nodeValue = foo;
793
+ span_6.textContent = foo;
808
794
  }
809
795
 
810
796
  var span_7 = _$_.hydrating ? _$_.hydrate_sibling() : span_6.nextSibling;
811
797
 
812
798
  {
813
- var expression_27 = _$_.hydrating ? _$_.hydrate_text() : span_7.firstChild;
814
-
815
- expression_27.nodeValue = foo;
799
+ span_7.textContent = foo;
816
800
  }
817
801
 
818
802
  _$_.append(__anchor, fragment_28);
@@ -823,7 +807,7 @@ function StaticChildWithSiblings_render(__anchor, __block) {
823
807
 
824
808
  StaticChildWithSiblings[_$_.$r] = StaticChildWithSiblings_render;
825
809
 
826
- var root_63 = _$_.template(`<h1 class="sr-only">Ripple</h1><img src="/images/logo.png" alt="Logo" class="logo"><p class="subtitle">the elegant TypeScript UI framework</p>`, 1, 3);
810
+ var root_63 = _$_.template(`<h1 class=sr-only>Ripple</h1><img src=/images/logo.png alt=Logo class=logo><p class=subtitle>the elegant TypeScript UI framework`, 1, 3);
827
811
  var root_62 = _$_.template(`<!>`, 1, 1);
828
812
 
829
813
  function Header_render(__anchor, __block) {
@@ -842,8 +826,8 @@ function Header_render(__anchor, __block) {
842
826
 
843
827
  Header[_$_.$r] = Header_render;
844
828
 
845
- var root_65 = _$_.template(`<a href="/playground" class="playground-link">Playground</a>`, 0);
846
- var root_64 = _$_.template(`<div class="social-links"><a href="https://github.com" class="github-link">GitHub</a><a href="https://discord.com" class="discord-link">Discord</a><!></div>`, 0);
829
+ var root_65 = _$_.template(`<a href=/playground class=playground-link>Playground`);
830
+ var root_64 = _$_.template(`<div class=social-links><a href=https://github.com class=github-link>GitHub</a><a href=https://discord.com class=discord-link>Discord</a><!>`);
847
831
 
848
832
  function Actions_render(__anchor, __block, { playgroundVisible = false }) {
849
833
  var div_23 = root_64();
@@ -869,7 +853,7 @@ function Actions_render(__anchor, __block, { playgroundVisible = false }) {
869
853
 
870
854
  Actions[_$_.$r] = Actions_render;
871
855
 
872
- var root_66 = _$_.template(`<main><div class="container"><!></div></main>`, 0);
856
+ var root_66 = _$_.template(`<main><div class=container><!>`);
873
857
 
874
858
  function Layout_render(__anchor, __block, { children }) {
875
859
  var main = root_66();
@@ -890,7 +874,7 @@ function Layout_render(__anchor, __block, { children }) {
890
874
 
891
875
  Layout[_$_.$r] = Layout_render;
892
876
 
893
- var root_67 = _$_.template(`<div class="content"><p>Some content here</p></div>`, 0);
877
+ var root_67 = _$_.template(`<div class=content><p>Some content here`);
894
878
 
895
879
  function Content_render(__anchor, __block) {
896
880
  var div_25 = root_67();
@@ -928,7 +912,7 @@ function WebsiteIndex_render(__anchor, __block) {
928
912
 
929
913
  WebsiteIndex[_$_.$r] = WebsiteIndex_render;
930
914
 
931
- var root_69 = _$_.template(`<footer class="last-child">I am the last child</footer>`, 0);
915
+ var root_69 = _$_.template(`<footer class=last-child>I am the last child`);
932
916
 
933
917
  function LastChild_render(__anchor, __block) {
934
918
  var footer = root_69();
@@ -938,7 +922,7 @@ function LastChild_render(__anchor, __block) {
938
922
 
939
923
  LastChild[_$_.$r] = LastChild_render;
940
924
 
941
- var root_70 = _$_.template(`<div class="wrapper"><h1>Header</h1><p>Some content</p></div>`, 0);
925
+ var root_70 = _$_.template(`<div class=wrapper><h1>Header</h1><p>Some content`);
942
926
 
943
927
  function ComponentAsLastSibling_render(__anchor, __block) {
944
928
  var div_26 = root_70();
@@ -957,7 +941,7 @@ function ComponentAsLastSibling_render(__anchor, __block) {
957
941
 
958
942
  ComponentAsLastSibling[_$_.$r] = ComponentAsLastSibling_render;
959
943
 
960
- var root_71 = _$_.template(`<div class="inner"><span>Inner text</span></div>`, 0);
944
+ var root_71 = _$_.template(`<div class=inner><span>Inner text`);
961
945
 
962
946
  function InnerContent_render(__anchor, __block) {
963
947
  var div_27 = root_71();
@@ -975,7 +959,7 @@ function InnerContent_render(__anchor, __block) {
975
959
 
976
960
  InnerContent[_$_.$r] = InnerContent_render;
977
961
 
978
- var root_72 = _$_.template(`<section class="outer"><h2>Section title</h2></section>`, 0);
962
+ var root_72 = _$_.template(`<section class=outer><h2>Section title`);
979
963
 
980
964
  function NestedComponentAsLastSibling_render(__anchor, __block) {
981
965
  var section_1 = root_72();
@@ -993,53 +977,47 @@ function NestedComponentAsLastSibling_render(__anchor, __block) {
993
977
 
994
978
  NestedComponentAsLastSibling[_$_.$r] = NestedComponentAsLastSibling_render;
995
979
 
996
- var root_73 = _$_.template(`<div> </div>`, 0);
980
+ var root_73 = _$_.template(`<div>`);
997
981
 
998
982
  function render_2(__prev) {
999
- var __a = "label: " + String(_$_.with_scope(__prev.___block, fetchLabel));
983
+ var __a = "label: " + String(_$_.with_scope(__prev._a, fetchLabel));
1000
984
 
1001
985
  if (__prev.a !== __a) {
1002
- _$_.set_text(__prev._text, __prev.a = __a);
986
+ _$_.set_text_content(__prev._b, __a, __prev.a);
987
+ __prev.a = __a;
1003
988
  }
1004
989
  }
1005
990
 
1006
991
  function TextTailExpression_render(__anchor, __block) {
1007
992
  var div_28 = root_73();
1008
993
 
1009
- {
1010
- var text = _$_.hydrating ? _$_.hydrate_text() : div_28.firstChild;
1011
- }
1012
-
1013
- _$_.render(render_2, { a: ' ', ___block: __block, _text: text });
994
+ _$_.render(render_2, { a: '', _a: __block, _b: div_28 });
1014
995
  _$_.append(__anchor, div_28);
1015
996
  }
1016
997
 
1017
998
  TextTailExpression[_$_.$r] = TextTailExpression_render;
1018
999
 
1019
- var root_74 = _$_.template(`<div> </div>`, 0);
1000
+ var root_74 = _$_.template(`<div>`);
1020
1001
 
1021
1002
  function render_3(__prev) {
1022
- var __a = 'frag-' + String(_$_.with_scope(__prev.___block, fetchLabel));
1003
+ var __a = 'frag-' + String(_$_.with_scope(__prev._a, fetchLabel));
1023
1004
 
1024
1005
  if (__prev.a !== __a) {
1025
- _$_.set_text(__prev._expression_30, __prev.a = __a);
1006
+ _$_.set_text_content(__prev._b, __a, __prev.a);
1007
+ __prev.a = __a;
1026
1008
  }
1027
1009
  }
1028
1010
 
1029
1011
  function FragmentTailExpression_render(__anchor, __block) {
1030
1012
  var div_29 = root_74();
1031
1013
 
1032
- {
1033
- var expression_30 = _$_.hydrating ? _$_.hydrate_text() : div_29.firstChild;
1034
- }
1035
-
1036
- _$_.render(render_3, { a: ' ', ___block: __block, _expression_30: expression_30 });
1014
+ _$_.render(render_3, { a: '', _a: __block, _b: div_29 });
1037
1015
  _$_.append(__anchor, div_29);
1038
1016
  }
1039
1017
 
1040
1018
  FragmentTailExpression[_$_.$r] = FragmentTailExpression_render;
1041
1019
 
1042
- var root_75 = _$_.template(`<div>frag-<span>tail</span></div>`, 0);
1020
+ var root_75 = _$_.template(`<div>frag-<span>tail`);
1043
1021
 
1044
1022
  function FragmentChildOnly_render(__anchor, __block) {
1045
1023
  var div_30 = root_75();
@@ -1053,7 +1031,7 @@ function FragmentChildOnly_render(__anchor, __block) {
1053
1031
 
1054
1032
  FragmentChildOnly[_$_.$r] = FragmentChildOnly_render;
1055
1033
 
1056
- var root_77 = _$_.template(`<!><p>after-opaque</p>`, 1, 2);
1034
+ var root_77 = _$_.template(`<!><p>after-opaque`, 1, 2);
1057
1035
  var root_76 = _$_.template(`<!>`, 1, 1);
1058
1036
 
1059
1037
  function OpaqueLead_render(__anchor, __block, props) {
@@ -1074,7 +1052,7 @@ function OpaqueLead_render(__anchor, __block, props) {
1074
1052
 
1075
1053
  OpaqueLead[_$_.$r] = OpaqueLead_render;
1076
1054
 
1077
- var root_78 = _$_.template(`<div></div>`, 0);
1055
+ var root_78 = _$_.template(`<div>`);
1078
1056
 
1079
1057
  function FragmentLeadsWithOpaqueValue_render(__anchor, __block) {
1080
1058
  var div_31 = root_78();
@@ -1091,13 +1069,13 @@ function FragmentLeadsWithOpaqueValue_render(__anchor, __block) {
1091
1069
 
1092
1070
  FragmentLeadsWithOpaqueValue[_$_.$r] = FragmentLeadsWithOpaqueValue_render;
1093
1071
 
1094
- var root_80 = _$_.template(` <p>after-call</p>`, 1, 2);
1072
+ var root_80 = _$_.template(` <p>after-call`, 1, 2);
1095
1073
 
1096
1074
  function render_4(__prev) {
1097
- var __a = String(_$_.with_scope(__prev.___block, fetchLabel));
1075
+ var __a = String(_$_.with_scope(__prev._a, fetchLabel));
1098
1076
 
1099
1077
  if (__prev.a !== __a) {
1100
- _$_.set_text(__prev._expression_32, __prev.a = __a);
1078
+ _$_.set_text(__prev._b, __prev.a = __a);
1101
1079
  }
1102
1080
  }
1103
1081
 
@@ -1112,7 +1090,7 @@ function PrimitiveCallLead_render(__anchor, __block) {
1112
1090
  var expression_32 = _$_.first_child_frag(fragment_35, true);
1113
1091
 
1114
1092
  _$_.next();
1115
- _$_.render(render_4, { a: ' ', ___block: __block, _expression_32: expression_32 });
1093
+ _$_.render(render_4, { a: ' ', _a: __block, _b: expression_32 });
1116
1094
  _$_.append(__anchor, fragment_35);
1117
1095
  }));
1118
1096
 
@@ -1121,7 +1099,7 @@ function PrimitiveCallLead_render(__anchor, __block) {
1121
1099
 
1122
1100
  PrimitiveCallLead[_$_.$r] = PrimitiveCallLead_render;
1123
1101
 
1124
- var root_81 = _$_.template(`<div></div>`, 0);
1102
+ var root_81 = _$_.template(`<div>`);
1125
1103
 
1126
1104
  function FragmentLeadsWithPrimitiveCall_render(__anchor, __block) {
1127
1105
  var div_32 = root_81();
@@ -1138,35 +1116,31 @@ function FragmentLeadsWithPrimitiveCall_render(__anchor, __block) {
1138
1116
 
1139
1117
  FragmentLeadsWithPrimitiveCall[_$_.$r] = FragmentLeadsWithPrimitiveCall_render;
1140
1118
 
1141
- var root_83 = _$_.template(`<div class="primitive-calls"> </div><button>update</button>`, 1, 2);
1119
+ var root_83 = _$_.template(`<div class=primitive-calls></div><button>update`, 1, 2);
1142
1120
 
1143
1121
  function render_5(__prev) {
1144
- var __a = "sum: " + (String(Number(__prev._count.value) + Number(__prev._count.value) ?? '') + ("; big: " + String(_$_.with_scope(__prev.___block, () => BigInt(__prev._count.value)) ?? '')));
1122
+ var __a = "sum: " + (String(Number(__prev._a.value) + Number(__prev._a.value) ?? '') + ("; big: " + String(_$_.with_scope(__prev._b, () => BigInt(__prev._a.value)) ?? '')));
1145
1123
 
1146
1124
  if (__prev.a !== __a) {
1147
- _$_.set_text(__prev._text_1, __prev.a = __a);
1125
+ _$_.set_text_content(__prev._c, __a, __prev.a);
1126
+ __prev.a = __a;
1148
1127
  }
1149
1128
  }
1150
1129
 
1151
1130
  var root_82 = _$_.template(`<!>`, 1, 1);
1152
1131
 
1153
1132
  function PrimitiveTextCalls_render(__anchor, __block) {
1154
- const count = _$_.track(2, __block, 'eea72017');
1133
+ const count = _$_.track(2, __block, '1u7u49j');
1155
1134
  var fragment_36 = root_82();
1156
1135
  var node_30 = _$_.first_child_frag(fragment_36);
1157
1136
 
1158
1137
  _$_.expression(node_30, () => _$_.tsrx_element((__anchor, __block) => {
1159
1138
  var fragment_37 = root_83();
1160
1139
  var div_33 = _$_.first_child_frag(fragment_37);
1161
-
1162
- {
1163
- var text_1 = _$_.hydrating ? _$_.hydrate_text() : div_33.firstChild;
1164
- }
1165
-
1166
1140
  var button_2 = _$_.hydrating ? _$_.hydrate_sibling() : div_33.nextSibling;
1167
1141
 
1168
1142
  button_2.__click = () => count.value++;
1169
- _$_.render(render_5, { a: ' ', _count: count, ___block: __block, _text_1: text_1 });
1143
+ _$_.render(render_5, { a: '', _a: count, _b: __block, _c: div_33 });
1170
1144
  _$_.append(__anchor, fragment_37);
1171
1145
  }));
1172
1146
 
@@ -1175,11 +1149,11 @@ function PrimitiveTextCalls_render(__anchor, __block) {
1175
1149
 
1176
1150
  PrimitiveTextCalls[_$_.$r] = PrimitiveTextCalls_render;
1177
1151
 
1178
- var root_84 = _$_.template(`<b>string</b>`, 0);
1179
- var root_85 = _$_.template(`<b>number</b>`, 0);
1180
- var root_86 = _$_.template(`<b>bigint</b>`, 0);
1181
- var root_87 = _$_.template(`<b>date</b>`, 0);
1182
- var root_89 = _$_.template(`<p>before<!>after</p><p>before<!>after</p><p>before<!>after</p><p>before<!>after</p>`, 1, 4);
1152
+ var root_84 = _$_.template(`<b>string`);
1153
+ var root_85 = _$_.template(`<b>number`);
1154
+ var root_86 = _$_.template(`<b>bigint`);
1155
+ var root_87 = _$_.template(`<b>date`);
1156
+ var root_89 = _$_.template(`<p>before<!>after</p><p>before<!>after</p><p>before<!>after</p><p>before<!>after`, 1, 4);
1183
1157
  var root_88 = _$_.template(`<!>`, 1, 1);
1184
1158
 
1185
1159
  function ShadowedTextCalls_render(__anchor, __block) {