ripple 0.4.3 → 0.4.5

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 (42) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/package.json +3 -3
  3. package/src/constants.js +6 -0
  4. package/src/runtime/internal/client/attributes.js +259 -126
  5. package/src/runtime/internal/client/blocks.js +16 -6
  6. package/src/runtime/internal/client/composite.js +292 -100
  7. package/src/runtime/internal/client/constants.js +8 -0
  8. package/src/runtime/internal/client/events.js +15 -1
  9. package/src/runtime/internal/client/expression.js +4 -4
  10. package/src/runtime/internal/client/for.js +13 -38
  11. package/src/runtime/internal/client/if.js +56 -1
  12. package/src/runtime/internal/client/index.js +8 -6
  13. package/src/runtime/internal/client/operations.js +9 -4
  14. package/src/runtime/internal/client/render.js +37 -0
  15. package/src/runtime/internal/client/runtime.js +94 -20
  16. package/src/runtime/internal/client/template-ns.js +45 -4
  17. package/src/runtime/internal/client/template.js +103 -0
  18. package/tests/client/composite/composite.dynamic-components.test.tsrx +40 -0
  19. package/tests/client/css/scoped-styles.test.tsrx +3 -1
  20. package/tests/client/svg.test.tsrx +273 -1
  21. package/tests/hydration/compiled/client/basic.js +79 -51
  22. package/tests/hydration/compiled/client/composite.js +13 -4
  23. package/tests/hydration/compiled/client/events.js +22 -7
  24. package/tests/hydration/compiled/client/for.js +110 -71
  25. package/tests/hydration/compiled/client/fragment-cursor.js +342 -156
  26. package/tests/hydration/compiled/client/head.js +13 -13
  27. package/tests/hydration/compiled/client/hmr.js +16 -4
  28. package/tests/hydration/compiled/client/html-in-template.js +1 -1
  29. package/tests/hydration/compiled/client/html.js +144 -87
  30. package/tests/hydration/compiled/client/if-children.js +118 -33
  31. package/tests/hydration/compiled/client/if-fragment-controlflow.js +41 -21
  32. package/tests/hydration/compiled/client/if.js +70 -18
  33. package/tests/hydration/compiled/client/mixed-control-flow.js +50 -20
  34. package/tests/hydration/compiled/client/nested-control-flow.js +191 -100
  35. package/tests/hydration/compiled/client/portal.js +29 -9
  36. package/tests/hydration/compiled/client/reactivity.js +9 -5
  37. package/tests/hydration/compiled/client/streaming.js +21 -18
  38. package/tests/hydration/compiled/client/switch.js +17 -17
  39. package/tests/hydration/compiled/client/track-async-serialization.js +29 -21
  40. package/tests/hydration/compiled/client/try.js +13 -10
  41. package/tests/hydration/compiled/client/typed-text.js +3 -2
  42. package/tests/utils/inline-drift.test.js +83 -0
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class=shown>Visible`);
4
+ var root = _$_.template_el('div', ['class', 'shown'], 'Visible');
5
5
 
6
6
  function consequent(__anchor, show) {
7
7
  var div = root();
@@ -21,7 +21,7 @@ function IfTruthy_render(__anchor, __block) {
21
21
 
22
22
  IfTruthy[_$_.$r] = IfTruthy_render;
23
23
 
24
- var root_1 = _$_.template(`<div class=shown>Visible`);
24
+ var root_1 = _$_.template_el('div', ['class', 'shown'], 'Visible');
25
25
 
26
26
  function consequent_1(__anchor, show) {
27
27
  var div_1 = root_1();
@@ -41,8 +41,8 @@ function IfFalsy_render(__anchor, __block) {
41
41
 
42
42
  IfFalsy[_$_.$r] = IfFalsy_render;
43
43
 
44
- var root_2 = _$_.template(`<div class=logged-in>Welcome back!`);
45
- var root_3 = _$_.template(`<div class=logged-out>Please log in`);
44
+ var root_2 = _$_.template_el('div', ['class', 'logged-in'], 'Welcome back!');
45
+ var root_3 = _$_.template_el('div', ['class', 'logged-out'], 'Please log in');
46
46
 
47
47
  function consequent_2(__anchor, isLoggedIn) {
48
48
  var div_2 = root_2();
@@ -68,7 +68,7 @@ function IfElse_render(__anchor, __block) {
68
68
 
69
69
  IfElse[_$_.$r] = IfElse_render;
70
70
 
71
- var root_6 = _$_.template(`<div class=content>Content visible`);
71
+ var root_6 = _$_.template_el('div', ['class', 'content'], 'Content visible');
72
72
 
73
73
  function consequent_3(__anchor, show) {
74
74
  var div_4 = root_6();
@@ -81,6 +81,15 @@ function if_4(show) {
81
81
  }
82
82
 
83
83
  var root_5 = _$_.template(`<button class=toggle>Toggle</button><!>`, 1, 2);
84
+
85
+ function render(__prev) {
86
+ var __a = if_4(__prev._a);
87
+
88
+ if (__prev.a !== __a) {
89
+ _$_.if_update(__prev._b, __prev.a = __a);
90
+ }
91
+ }
92
+
84
93
  var root_4 = _$_.template(`<!>`, 1, 1);
85
94
 
86
95
  function ReactiveIf_render(__anchor, __block) {
@@ -97,8 +106,9 @@ function ReactiveIf_render(__anchor, __block) {
97
106
  };
98
107
 
99
108
  var node = _$_.hydrating ? _$_.hydrate_sibling() : button.nextSibling;
109
+ var ifs = _$_.if_static(node, if_4, 0, show);
100
110
 
101
- _$_.if(node, if_4, false, show);
111
+ _$_.render(render, { a: _$_.UNINITIALIZED, _a: show, _b: ifs });
102
112
  _$_.append(__anchor, fragment_1);
103
113
  }));
104
114
 
@@ -107,8 +117,8 @@ function ReactiveIf_render(__anchor, __block) {
107
117
 
108
118
  ReactiveIf[_$_.$r] = ReactiveIf_render;
109
119
 
110
- var root_9 = _$_.template(`<div class=on>ON`);
111
- var root_10 = _$_.template(`<div class=off>OFF`);
120
+ var root_9 = _$_.template_el('div', ['class', 'on'], 'ON');
121
+ var root_10 = _$_.template_el('div', ['class', 'off'], 'OFF');
112
122
 
113
123
  function consequent_4(__anchor, isOn) {
114
124
  var div_5 = root_9();
@@ -127,6 +137,15 @@ function if_5(isOn) {
127
137
  }
128
138
 
129
139
  var root_8 = _$_.template(`<button class=toggle>Toggle</button><!>`, 1, 2);
140
+
141
+ function render_1(__prev) {
142
+ var __a = if_5(__prev._a);
143
+
144
+ if (__prev.a !== __a) {
145
+ _$_.if_update(__prev._b, __prev.a = __a);
146
+ }
147
+ }
148
+
130
149
  var root_7 = _$_.template(`<!>`, 1, 1);
131
150
 
132
151
  function ReactiveIfElse_render(__anchor, __block) {
@@ -143,8 +162,9 @@ function ReactiveIfElse_render(__anchor, __block) {
143
162
  };
144
163
 
145
164
  var node_2 = _$_.hydrating ? _$_.hydrate_sibling() : button_1.nextSibling;
165
+ var ifs_1 = _$_.if_static(node_2, if_5, 0, isOn);
146
166
 
147
- _$_.if(node_2, if_5, false, isOn);
167
+ _$_.render(render_1, { a: _$_.UNINITIALIZED, _a: isOn, _b: ifs_1 });
148
168
  _$_.append(__anchor, fragment_3);
149
169
  }));
150
170
 
@@ -153,7 +173,7 @@ function ReactiveIfElse_render(__anchor, __block) {
153
173
 
154
174
  ReactiveIfElse[_$_.$r] = ReactiveIfElse_render;
155
175
 
156
- var root_14 = _$_.template(`<span class=inner-content>Inner`);
176
+ var root_14 = _$_.template_el('span', ['class', 'inner-content'], 'Inner');
157
177
 
158
178
  function consequent_5(__anchor, inner) {
159
179
  var span = root_14();
@@ -165,7 +185,15 @@ function if_6(inner) {
165
185
  if (inner.value) return consequent_5;
166
186
  }
167
187
 
168
- var root_13 = _$_.template(`<div class=outer-content>Outer`);
188
+ var root_13 = _$_.template_el('div', ['class', 'outer-content'], 'Outer');
189
+
190
+ function render_2(__prev) {
191
+ var __a = if_6(__prev._a);
192
+
193
+ if (__prev.a !== __a) {
194
+ _$_.if_update(__prev._b, __prev.a = __a);
195
+ }
196
+ }
169
197
 
170
198
  function consequent_6(__anchor, { a: outer, b: inner }) {
171
199
  var div_7 = root_13();
@@ -173,11 +201,12 @@ function consequent_6(__anchor, { a: outer, b: inner }) {
173
201
  {
174
202
  var expression = _$_.hydrating ? _$_.hydrate_child() : div_7.firstChild;
175
203
  var node_5 = _$_.hydrating ? _$_.hydrate_sibling() : _$_.append_into(div_7, true);
204
+ var ifs_2 = _$_.if_static(node_5, if_6, 0, inner);
176
205
 
177
- _$_.if(node_5, if_6, false, inner);
178
206
  _$_.hydrating && _$_.pop(div_7);
179
207
  }
180
208
 
209
+ _$_.render(render_2, { a: _$_.UNINITIALIZED, _a: inner, _b: ifs_2 });
181
210
  _$_.append(__anchor, div_7);
182
211
  }
183
212
 
@@ -186,6 +215,15 @@ function if_7({ a: outer, b: inner }) {
186
215
  }
187
216
 
188
217
  var root_12 = _$_.template(`<button class=outer-toggle>Outer</button><button class=inner-toggle>Inner</button><!>`, 1, 3);
218
+
219
+ function render_3(__prev) {
220
+ var __a = if_7({ a: __prev._a, b: __prev._b });
221
+
222
+ if (__prev.a !== __a) {
223
+ _$_.if_update(__prev._c, __prev.a = __a);
224
+ }
225
+ }
226
+
189
227
  var root_11 = _$_.template(`<!>`, 1, 1);
190
228
 
191
229
  function NestedIf_render(__anchor, __block) {
@@ -209,8 +247,9 @@ function NestedIf_render(__anchor, __block) {
209
247
  };
210
248
 
211
249
  var node_4 = _$_.hydrating ? _$_.hydrate_sibling() : button_3.nextSibling;
250
+ var ifs_3 = _$_.if_static(node_4, if_7, 0, { a: outer, b: inner });
212
251
 
213
- _$_.if(node_4, if_7, false, { a: outer, b: inner });
252
+ _$_.render(render_3, { a: _$_.UNINITIALIZED, _a: outer, _b: inner, _c: ifs_3 });
214
253
  _$_.append(__anchor, fragment_5);
215
254
  }));
216
255
 
@@ -219,9 +258,9 @@ function NestedIf_render(__anchor, __block) {
219
258
 
220
259
  NestedIf[_$_.$r] = NestedIf_render;
221
260
 
222
- var root_16 = _$_.template(`<div class=state>Loading...`);
223
- var root_17 = _$_.template(`<div class=state>Success!`);
224
- var root_18 = _$_.template(`<div class=state>Error occurred`);
261
+ var root_16 = _$_.template_el('div', ['class', 'state'], 'Loading...');
262
+ var root_17 = _$_.template_el('div', ['class', 'state'], 'Success!');
263
+ var root_18 = _$_.template_el('div', ['class', 'state'], 'Error occurred');
225
264
 
226
265
  function consequent_7(__anchor, status) {
227
266
  var div_9 = root_16();
@@ -245,7 +284,19 @@ function if_8(status) {
245
284
  if (status.value === 'loading') return consequent_7; else if (status.value === 'success') return consequent_8; else return alternate_2;
246
285
  }
247
286
 
248
- var root_15 = _$_.template(`<div><button class=success>Success</button><button class=error>Error</button><button class=loading>Loading`);
287
+ var root_15 = _$_.template_el('div', null, [
288
+ ['button', ['class', 'success'], 'Success'],
289
+ ['button', ['class', 'error'], 'Error'],
290
+ ['button', ['class', 'loading'], 'Loading']
291
+ ]);
292
+
293
+ function render_4(__prev) {
294
+ var __a = if_8(__prev._a);
295
+
296
+ if (__prev.a !== __a) {
297
+ _$_.if_update(__prev._b, __prev.a = __a);
298
+ }
299
+ }
249
300
 
250
301
  function IfElseIfChain_render(__anchor, __block) {
251
302
  const status = _$_.track('loading', __block, 'l79qh6');
@@ -271,11 +322,12 @@ function IfElseIfChain_render(__anchor, __block) {
271
322
  };
272
323
 
273
324
  var node_7 = _$_.hydrating ? _$_.hydrate_sibling() : _$_.append_into(div_8, true);
325
+ var ifs_4 = _$_.if_static(node_7, if_8, 0, status);
274
326
 
275
- _$_.if(node_7, if_8, false, status);
276
327
  _$_.hydrating && _$_.pop(div_8);
277
328
  }
278
329
 
330
+ _$_.render(render_4, { a: _$_.UNINITIALIZED, _a: status, _b: ifs_4 });
279
331
  _$_.append(__anchor, div_8);
280
332
  }
281
333
 
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root_1 = _$_.template(`<div>`);
4
+ var root_1 = _$_.template_el('div');
5
5
 
6
6
  function render(__prev) {
7
7
  var __pattern = _$_.get(__prev._a);
@@ -19,7 +19,7 @@ function render(__prev) {
19
19
  }
20
20
  }
21
21
 
22
- var root_2 = _$_.template(`<div>pending a`);
22
+ var root_2 = _$_.template_el('div', null, 'pending a');
23
23
 
24
24
  function render_1(__prev) {
25
25
  var __a = `pending pending-${_$_.get(__prev._a).id}`;
@@ -29,7 +29,7 @@ function render_1(__prev) {
29
29
  }
30
30
  }
31
31
 
32
- var root_3 = _$_.template(`<div>`);
32
+ var root_3 = _$_.template_el('div');
33
33
 
34
34
  function render_2(__prev) {
35
35
  var __pattern_1 = _$_.get(__prev._a);
@@ -47,7 +47,7 @@ function render_2(__prev) {
47
47
  }
48
48
  }
49
49
 
50
- var root_4 = _$_.template(`<div>pending b`);
50
+ var root_4 = _$_.template_el('div', null, 'pending b');
51
51
 
52
52
  function render_3(__prev) {
53
53
  var __a = `pending pending-${_$_.get(__prev._a).id}`;
@@ -115,7 +115,15 @@ function if_1(pattern) {
115
115
  if (_$_.get(pattern).enabled) return consequent;
116
116
  }
117
117
 
118
- var root = _$_.template(`<section class=mixed-static>`);
118
+ function render_4(__prev) {
119
+ var __a = if_1(__prev._a);
120
+
121
+ if (__prev.a !== __a) {
122
+ _$_.if_update(__prev._b, __prev.a = __a);
123
+ }
124
+ }
125
+
126
+ var root = _$_.template_el('section', ['class', 'mixed-static']);
119
127
 
120
128
  function MixedControlFlowStatic_render(__anchor, __block) {
121
129
  const rows = [
@@ -131,10 +139,15 @@ function MixedControlFlowStatic_render(__anchor, __block) {
131
139
  section,
132
140
  () => rows,
133
141
  (__anchor, pattern) => {
134
- _$_.if(__anchor, if_1, true, pattern);
142
+ var ifs = _$_.if_static(__anchor, if_1, 3, pattern);
143
+
144
+ _$_.item({ a: _$_.UNINITIALIZED, _a: pattern, _b: ifs });
135
145
  },
136
146
  4,
137
- (pattern) => pattern.id
147
+ (pattern) => pattern.id,
148
+ void 0,
149
+ void 0,
150
+ render_4
138
151
  );
139
152
 
140
153
  _$_.hydrating && _$_.pop(section);
@@ -145,9 +158,9 @@ function MixedControlFlowStatic_render(__anchor, __block) {
145
158
 
146
159
  MixedControlFlowStatic[_$_.$r] = MixedControlFlowStatic_render;
147
160
 
148
- var root_8 = _$_.template(`<p>`);
161
+ var root_8 = _$_.template_el('p');
149
162
 
150
- function render_4(__prev) {
163
+ function render_5(__prev) {
151
164
  var __pattern_1_1 = _$_.get(__prev._a);
152
165
  var __a = `A:${__pattern_1_1.label}`;
153
166
 
@@ -163,10 +176,10 @@ function render_4(__prev) {
163
176
  }
164
177
  }
165
178
 
166
- var root_9 = _$_.template(`<p class=pending>pending a`);
167
- var root_10 = _$_.template(`<p>`);
179
+ var root_9 = _$_.template_el('p', ['class', 'pending'], 'pending a');
180
+ var root_10 = _$_.template_el('p');
168
181
 
169
- function render_5(__prev) {
182
+ function render_6(__prev) {
170
183
  var __pattern_1_2 = _$_.get(__prev._a);
171
184
  var __a = `B:${__pattern_1_2.label}`;
172
185
 
@@ -182,7 +195,7 @@ function render_5(__prev) {
182
195
  }
183
196
  }
184
197
 
185
- var root_11 = _$_.template(`<p class=pending>pending b`);
198
+ var root_11 = _$_.template_el('p', ['class', 'pending'], 'pending b');
186
199
 
187
200
  function switch_case_0_1(__anchor, { a: mode, b: pattern_1 }) {
188
201
  _$_.try(
@@ -190,7 +203,7 @@ function switch_case_0_1(__anchor, { a: mode, b: pattern_1 }) {
190
203
  (__anchor) => {
191
204
  var p = root_8();
192
205
 
193
- _$_.render(render_4, { a: '', b: _$_.UNINITIALIZED, _a: pattern_1, _b: p });
206
+ _$_.render(render_5, { a: '', b: _$_.UNINITIALIZED, _a: pattern_1, _b: p });
194
207
  _$_.append(__anchor, p);
195
208
  },
196
209
  null,
@@ -209,7 +222,7 @@ function switch_case_default_1(__anchor, { a: mode, b: pattern_1 }) {
209
222
  (__anchor) => {
210
223
  var p_2 = root_10();
211
224
 
212
- _$_.render(render_5, { a: '', b: _$_.UNINITIALIZED, _a: pattern_1, _b: p_2 });
225
+ _$_.render(render_6, { a: '', b: _$_.UNINITIALIZED, _a: pattern_1, _b: p_2 });
213
226
  _$_.append(__anchor, p_2);
214
227
  },
215
228
  null,
@@ -232,7 +245,7 @@ function switch_2({ a: mode, b: pattern_1 }) {
232
245
  }
233
246
  }
234
247
 
235
- var root_7 = _$_.template(`<div class=mixed-reactive-list>`);
248
+ var root_7 = _$_.template_el('div', ['class', 'mixed-reactive-list']);
236
249
 
237
250
  function consequent_1(__anchor, { a: show, b: items, c: mode }) {
238
251
  var div_4 = root_7();
@@ -259,6 +272,15 @@ function if_2({ a: show, b: items, c: mode }) {
259
272
  }
260
273
 
261
274
  var root_6 = _$_.template(`<button class=toggle-show>Toggle Show</button><button class=toggle-mode>Toggle Mode</button><button class=add-item>Add Item</button><!>`, 1, 4);
275
+
276
+ function render_7(__prev) {
277
+ var __a = if_2({ a: __prev._a, b: __prev._b, c: __prev._c });
278
+
279
+ if (__prev.a !== __a) {
280
+ _$_.if_update(__prev._d, __prev.a = __a);
281
+ }
282
+ }
283
+
262
284
  var root_5 = _$_.template(`<!>`, 1, 1);
263
285
 
264
286
  function MixedControlFlowReactive_render(__anchor, __block) {
@@ -289,8 +311,16 @@ function MixedControlFlowReactive_render(__anchor, __block) {
289
311
  };
290
312
 
291
313
  var node = _$_.hydrating ? _$_.hydrate_sibling() : button_2.nextSibling;
314
+ var ifs_1 = _$_.if_static(node, if_2, 0, { a: show, b: items, c: mode });
315
+
316
+ _$_.render(render_7, {
317
+ a: _$_.UNINITIALIZED,
318
+ _a: show,
319
+ _b: items,
320
+ _c: mode,
321
+ _d: ifs_1
322
+ });
292
323
 
293
- _$_.if(node, if_2, false, { a: show, b: items, c: mode });
294
324
  _$_.append(__anchor, fragment_1);
295
325
  }));
296
326
 
@@ -299,8 +329,8 @@ function MixedControlFlowReactive_render(__anchor, __block) {
299
329
 
300
330
  MixedControlFlowReactive[_$_.$r] = MixedControlFlowReactive_render;
301
331
 
302
- var root_14 = _$_.template(`<div>`);
303
- var root_15 = _$_.template(`<div class=unexpected>unexpected`);
332
+ var root_14 = _$_.template_el('div');
333
+ var root_15 = _$_.template_el('div', ['class', 'unexpected'], 'unexpected');
304
334
 
305
335
  function switch_case_0_2(__anchor, { a: state, b: row }) {
306
336
  _$_.try(
@@ -379,7 +409,7 @@ function MixedControlFlowAsyncPending_render(__anchor, __block) {
379
409
 
380
410
  MixedControlFlowAsyncPending[_$_.$r] = MixedControlFlowAsyncPending_render;
381
411
 
382
- var root_16 = _$_.template(`<div class=resolved-row> `);
412
+ var root_16 = _$_.template_el('div', ['class', 'resolved-row'], ' ');
383
413
 
384
414
  function AsyncRow_render(__anchor, __block, { label }) {
385
415
  const value = _$_.track_async(() => _$_.with_scope(__block, () => Promise.resolve(label)), __block, '4nsq00');