ripple 0.2.216 → 0.3.1

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 (155) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/package.json +16 -7
  3. package/src/compiler/errors.js +1 -1
  4. package/src/compiler/identifier-utils.js +2 -0
  5. package/src/compiler/index.d.ts +2 -6
  6. package/src/compiler/phases/1-parse/index.js +171 -233
  7. package/src/compiler/phases/2-analyze/index.js +192 -16
  8. package/src/compiler/phases/2-analyze/prune.js +2 -2
  9. package/src/compiler/phases/3-transform/client/index.js +308 -91
  10. package/src/compiler/phases/3-transform/segments.js +43 -15
  11. package/src/compiler/phases/3-transform/server/index.js +71 -21
  12. package/src/compiler/scope.js +31 -12
  13. package/src/compiler/source-map-utils.js +4 -6
  14. package/src/compiler/types/acorn.d.ts +11 -0
  15. package/src/compiler/types/estree-jsx.d.ts +11 -0
  16. package/src/compiler/types/estree.d.ts +11 -0
  17. package/src/compiler/types/import.d.ts +32 -18
  18. package/src/compiler/types/index.d.ts +75 -23
  19. package/src/compiler/types/parse.d.ts +7 -10
  20. package/src/compiler/utils.js +48 -0
  21. package/src/runtime/array.js +53 -22
  22. package/src/runtime/date.js +15 -5
  23. package/src/runtime/index-client.js +41 -7
  24. package/src/runtime/index-server.js +7 -7
  25. package/src/runtime/internal/client/bindings.js +2 -2
  26. package/src/runtime/internal/client/blocks.js +40 -1
  27. package/src/runtime/internal/client/context.js +8 -0
  28. package/src/runtime/internal/client/for.js +3 -3
  29. package/src/runtime/internal/client/index.js +27 -5
  30. package/src/runtime/internal/client/render.js +20 -8
  31. package/src/runtime/internal/client/runtime.js +9 -7
  32. package/src/runtime/internal/client/try.js +15 -22
  33. package/src/runtime/internal/client/utils.js +1 -1
  34. package/src/runtime/internal/server/context.js +8 -0
  35. package/src/runtime/internal/server/index.js +99 -6
  36. package/src/runtime/map.js +7 -7
  37. package/src/runtime/media-query.js +10 -1
  38. package/src/runtime/object.js +6 -6
  39. package/src/runtime/proxy.js +6 -6
  40. package/src/runtime/set.js +11 -11
  41. package/src/runtime/url-search-params.js +13 -2
  42. package/src/runtime/url.js +15 -5
  43. package/src/utils/builders.js +13 -3
  44. package/tests/client/array/array.copy-within.test.ripple +11 -11
  45. package/tests/client/array/array.derived.test.ripple +42 -42
  46. package/tests/client/array/array.iteration.test.ripple +12 -12
  47. package/tests/client/array/array.mutations.test.ripple +25 -25
  48. package/tests/client/array/array.static.test.ripple +103 -106
  49. package/tests/client/array/array.to-methods.test.ripple +8 -8
  50. package/tests/client/async-suspend.test.ripple +94 -0
  51. package/tests/client/basic/basic.attributes.test.ripple +31 -31
  52. package/tests/client/basic/basic.collections.test.ripple +7 -7
  53. package/tests/client/basic/basic.components.test.ripple +48 -10
  54. package/tests/client/basic/basic.errors.test.ripple +46 -31
  55. package/tests/client/basic/basic.events.test.ripple +11 -11
  56. package/tests/client/basic/basic.get-set.test.ripple +18 -18
  57. package/tests/client/basic/basic.reactivity.test.ripple +47 -42
  58. package/tests/client/basic/basic.rendering.test.ripple +7 -7
  59. package/tests/client/basic/basic.utilities.test.ripple +4 -4
  60. package/tests/client/boundaries.test.ripple +7 -7
  61. package/tests/client/compiler/__snapshots__/compiler.assignments.test.ripple.snap +2 -2
  62. package/tests/client/compiler/compiler.assignments.test.ripple +21 -21
  63. package/tests/client/compiler/compiler.basic.test.ripple +223 -82
  64. package/tests/client/compiler/compiler.tracked-access.test.ripple +8 -9
  65. package/tests/client/composite/composite.dynamic-components.test.ripple +8 -8
  66. package/tests/client/composite/composite.generics.test.ripple +4 -4
  67. package/tests/client/composite/composite.props.test.ripple +9 -9
  68. package/tests/client/composite/composite.reactivity.test.ripple +32 -26
  69. package/tests/client/composite/composite.render.test.ripple +13 -4
  70. package/tests/client/computed-properties.test.ripple +3 -3
  71. package/tests/client/context.test.ripple +3 -3
  72. package/tests/client/css/global-additional-cases.test.ripple +4 -4
  73. package/tests/client/css/style-identifier.test.ripple +49 -41
  74. package/tests/client/date.test.ripple +40 -40
  75. package/tests/client/dynamic-elements.test.ripple +165 -30
  76. package/tests/client/events.test.ripple +25 -25
  77. package/tests/client/for.test.ripple +76 -8
  78. package/tests/client/function-overload.test.ripple +0 -1
  79. package/tests/client/head.test.ripple +7 -7
  80. package/tests/client/html.test.ripple +2 -2
  81. package/tests/client/input-value.test.ripple +174 -176
  82. package/tests/client/map.test.ripple +21 -21
  83. package/tests/client/media-query.test.ripple +4 -4
  84. package/tests/client/object.test.ripple +12 -12
  85. package/tests/client/portal.test.ripple +4 -4
  86. package/tests/client/ref.test.ripple +5 -5
  87. package/tests/client/return.test.ripple +17 -17
  88. package/tests/client/set.test.ripple +16 -16
  89. package/tests/client/svg.test.ripple +6 -7
  90. package/tests/client/switch.test.ripple +10 -10
  91. package/tests/client/tracked-expression.test.ripple +1 -3
  92. package/tests/client/try.test.ripple +33 -4
  93. package/tests/client/url/url.derived.test.ripple +10 -9
  94. package/tests/client/url/url.parsing.test.ripple +10 -10
  95. package/tests/client/url/url.partial-removal.test.ripple +10 -10
  96. package/tests/client/url/url.reactivity.test.ripple +17 -17
  97. package/tests/client/url/url.serialization.test.ripple +4 -4
  98. package/tests/client/url-search-params/url-search-params.derived.test.ripple +11 -10
  99. package/tests/client/url-search-params/url-search-params.initialization.test.ripple +5 -7
  100. package/tests/client/url-search-params/url-search-params.iteration.test.ripple +13 -13
  101. package/tests/client/url-search-params/url-search-params.mutation.test.ripple +19 -19
  102. package/tests/client/url-search-params/url-search-params.retrieval.test.ripple +17 -17
  103. package/tests/client/url-search-params/url-search-params.serialization.test.ripple +5 -5
  104. package/tests/client/url-search-params/url-search-params.tracked-url.test.ripple +5 -5
  105. package/tests/hydration/compiled/client/events.js +8 -11
  106. package/tests/hydration/compiled/client/for.js +20 -23
  107. package/tests/hydration/compiled/client/head.js +17 -19
  108. package/tests/hydration/compiled/client/hmr.js +1 -3
  109. package/tests/hydration/compiled/client/html.js +1 -15
  110. package/tests/hydration/compiled/client/if-children.js +7 -9
  111. package/tests/hydration/compiled/client/if.js +5 -7
  112. package/tests/hydration/compiled/client/mixed-control-flow.js +3 -5
  113. package/tests/hydration/compiled/client/portal.js +1 -1
  114. package/tests/hydration/compiled/client/reactivity.js +9 -11
  115. package/tests/hydration/compiled/client/return.js +11 -13
  116. package/tests/hydration/compiled/client/switch.js +4 -6
  117. package/tests/hydration/compiled/server/basic.js +0 -1
  118. package/tests/hydration/compiled/server/composite.js +0 -3
  119. package/tests/hydration/compiled/server/events.js +8 -12
  120. package/tests/hydration/compiled/server/for.js +20 -23
  121. package/tests/hydration/compiled/server/head.js +17 -19
  122. package/tests/hydration/compiled/server/hmr.js +1 -4
  123. package/tests/hydration/compiled/server/html.js +1 -35
  124. package/tests/hydration/compiled/server/if-children.js +7 -11
  125. package/tests/hydration/compiled/server/if.js +5 -7
  126. package/tests/hydration/compiled/server/mixed-control-flow.js +3 -5
  127. package/tests/hydration/compiled/server/portal.js +1 -9
  128. package/tests/hydration/compiled/server/reactivity.js +9 -11
  129. package/tests/hydration/compiled/server/return.js +11 -13
  130. package/tests/hydration/compiled/server/switch.js +4 -6
  131. package/tests/hydration/components/events.ripple +8 -9
  132. package/tests/hydration/components/for.ripple +20 -21
  133. package/tests/hydration/components/head.ripple +6 -8
  134. package/tests/hydration/components/hmr.ripple +1 -2
  135. package/tests/hydration/components/html.ripple +1 -3
  136. package/tests/hydration/components/if-children.ripple +7 -8
  137. package/tests/hydration/components/if.ripple +5 -6
  138. package/tests/hydration/components/mixed-control-flow.ripple +4 -6
  139. package/tests/hydration/components/portal.ripple +1 -1
  140. package/tests/hydration/components/reactivity.ripple +9 -10
  141. package/tests/hydration/components/return.ripple +11 -12
  142. package/tests/hydration/components/switch.ripple +6 -8
  143. package/tests/server/await.test.ripple +2 -2
  144. package/tests/server/basic.attributes.test.ripple +19 -21
  145. package/tests/server/basic.components.test.ripple +13 -7
  146. package/tests/server/basic.test.ripple +20 -21
  147. package/tests/server/compiler.test.ripple +5 -5
  148. package/tests/server/composite.props.test.ripple +6 -7
  149. package/tests/server/composite.test.ripple +4 -4
  150. package/tests/server/context.test.ripple +1 -3
  151. package/tests/server/dynamic-elements.test.ripple +24 -24
  152. package/tests/server/head.test.ripple +5 -7
  153. package/tests/server/style-identifier.test.ripple +16 -17
  154. package/types/index.d.ts +266 -62
  155. package/types/server.d.ts +6 -6
@@ -1,9 +1,9 @@
1
- import { flushSync, track, TrackedURL, TrackedURLSearchParams } from 'ripple';
1
+ import { flushSync } from 'ripple';
2
2
 
3
- describe('TrackedURLSearchParams > mutation', () => {
3
+ describe('RippleURLSearchParams > mutation', () => {
4
4
  it('handles append operation with reactivity', () => {
5
5
  component URLTest() {
6
- const params = new TrackedURLSearchParams('foo=bar');
6
+ const params = #ripple.urlSearchParams('foo=bar');
7
7
 
8
8
  <button onClick={() => params.append('baz', 'qux')}>{'append'}</button>
9
9
  <pre>{params.toString()}</pre>
@@ -28,8 +28,8 @@ describe('TrackedURLSearchParams > mutation', () => {
28
28
 
29
29
  it('handles append with multiple values for same key', () => {
30
30
  component URLTest() {
31
- const params = new TrackedURLSearchParams('foo=bar');
32
- let allFoo = track(() => params.getAll('foo'));
31
+ const params = #ripple.urlSearchParams('foo=bar');
32
+ let allFoo = #ripple.track(() => params.getAll('foo'));
33
33
 
34
34
  <button onClick={() => params.append('foo', 'baz')}>{'append foo'}</button>
35
35
  <pre>{params.toString()}</pre>
@@ -54,7 +54,7 @@ describe('TrackedURLSearchParams > mutation', () => {
54
54
 
55
55
  it('handles delete operation with reactivity', () => {
56
56
  component URLTest() {
57
- const params = new TrackedURLSearchParams('foo=bar&baz=qux');
57
+ const params = #ripple.urlSearchParams('foo=bar&baz=qux');
58
58
 
59
59
  <button onClick={() => params.delete('foo')}>{'delete foo'}</button>
60
60
  <pre>{params.toString()}</pre>
@@ -82,7 +82,7 @@ describe('TrackedURLSearchParams > mutation', () => {
82
82
 
83
83
  it('handles delete with specific value', () => {
84
84
  component URLTest() {
85
- const params = new TrackedURLSearchParams('foo=bar&foo=baz&foo=qux');
85
+ const params = #ripple.urlSearchParams('foo=bar&foo=baz&foo=qux');
86
86
 
87
87
  <button onClick={() => params.delete('foo', 'baz')}>{'delete foo=baz'}</button>
88
88
  <pre>{params.toString()}</pre>
@@ -107,8 +107,8 @@ describe('TrackedURLSearchParams > mutation', () => {
107
107
 
108
108
  it('handles delete when key does not exist', () => {
109
109
  component URLTest() {
110
- const params = new TrackedURLSearchParams('foo=bar');
111
- let reactiveSize = track(() => params.size);
110
+ const params = #ripple.urlSearchParams('foo=bar');
111
+ let reactiveSize = #ripple.track(() => params.size);
112
112
 
113
113
  <button onClick={() => params.delete('nonexistent')}>{'delete nonexistent'}</button>
114
114
  <pre>{params.toString()}</pre>
@@ -133,7 +133,7 @@ describe('TrackedURLSearchParams > mutation', () => {
133
133
 
134
134
  it('handles set operation with reactivity', () => {
135
135
  component URLTest() {
136
- const params = new TrackedURLSearchParams('foo=bar');
136
+ const params = #ripple.urlSearchParams('foo=bar');
137
137
 
138
138
  <button onClick={() => params.set('foo', 'updated')}>{'update foo'}</button>
139
139
  <button onClick={() => params.set('baz', 'qux')}>{'add baz'}</button>
@@ -167,8 +167,8 @@ describe('TrackedURLSearchParams > mutation', () => {
167
167
 
168
168
  it('handles set with multiple existing values', () => {
169
169
  component URLTest() {
170
- const params = new TrackedURLSearchParams('foo=bar&foo=baz&foo=qux');
171
- let allFoo = track(() => params.getAll('foo'));
170
+ const params = #ripple.urlSearchParams('foo=bar&foo=baz&foo=qux');
171
+ let allFoo = #ripple.track(() => params.getAll('foo'));
172
172
 
173
173
  <button onClick={() => params.set('foo', 'single')}>{'set foo'}</button>
174
174
  <pre>{params.toString()}</pre>
@@ -193,8 +193,8 @@ describe('TrackedURLSearchParams > mutation', () => {
193
193
 
194
194
  it('handles set when value is the same', () => {
195
195
  component URLTest() {
196
- const params = new TrackedURLSearchParams('foo=bar');
197
- let reactiveString = track(() => params.toString());
196
+ const params = #ripple.urlSearchParams('foo=bar');
197
+ let reactiveString = #ripple.track(() => params.toString());
198
198
 
199
199
  <button onClick={() => params.set('foo', 'bar')}>{'set same value'}</button>
200
200
  <pre>{@reactiveString}</pre>
@@ -218,7 +218,7 @@ describe('TrackedURLSearchParams > mutation', () => {
218
218
 
219
219
  it('handles sort operation with reactivity', () => {
220
220
  component URLTest() {
221
- const params = new TrackedURLSearchParams('z=last&a=first&m=middle');
221
+ const params = #ripple.urlSearchParams('z=last&a=first&m=middle');
222
222
 
223
223
  <button onClick={() => params.sort()}>{'sort'}</button>
224
224
  <pre>{params.toString()}</pre>
@@ -240,7 +240,7 @@ describe('TrackedURLSearchParams > mutation', () => {
240
240
 
241
241
  it('handles clearing all params via delete', () => {
242
242
  component URLTest() {
243
- const url = new TrackedURL('https://example.com?foo=bar&baz=qux');
243
+ const url = #ripple.url('https://example.com?foo=bar&baz=qux');
244
244
  const params = url.searchParams;
245
245
 
246
246
  <button
@@ -275,7 +275,7 @@ describe('TrackedURLSearchParams > mutation', () => {
275
275
 
276
276
  it('handles multiple operations in sequence', () => {
277
277
  component URLTest() {
278
- const params = new TrackedURLSearchParams();
278
+ const params = #ripple.urlSearchParams();
279
279
 
280
280
  <button
281
281
  onClick={() => {
@@ -311,8 +311,8 @@ describe('TrackedURLSearchParams > mutation', () => {
311
311
 
312
312
  it('handles duplicate keys with different values', () => {
313
313
  component URLTest() {
314
- const params = new TrackedURLSearchParams();
315
- let tags = track(() => params.getAll('tag'));
314
+ const params = #ripple.urlSearchParams();
315
+ let tags = #ripple.track(() => params.getAll('tag'));
316
316
 
317
317
  <button onClick={() => params.append('tag', 'javascript')}>{'add js'}</button>
318
318
  <button onClick={() => params.append('tag', 'typescript')}>{'add ts'}</button>
@@ -1,11 +1,11 @@
1
- import { flushSync, track, TrackedURLSearchParams } from 'ripple';
1
+ import { flushSync } from 'ripple';
2
2
 
3
- describe('TrackedURLSearchParams > retrieval', () => {
3
+ describe('RippleURLSearchParams > retrieval', () => {
4
4
  it('handles get operation with reactivity', () => {
5
5
  component URLTest() {
6
- const params = new TrackedURLSearchParams('foo=bar&baz=qux');
7
- let foo = track(() => params.get('foo'));
8
- let baz = track(() => params.get('baz'));
6
+ const params = #ripple.urlSearchParams('foo=bar&baz=qux');
7
+ let foo = #ripple.track(() => params.get('foo'));
8
+ let baz = #ripple.track(() => params.get('baz'));
9
9
 
10
10
  <button onClick={() => params.set('foo', 'updated')}>{'update foo'}</button>
11
11
  <pre>{@foo}</pre>
@@ -30,8 +30,8 @@ describe('TrackedURLSearchParams > retrieval', () => {
30
30
 
31
31
  it('handles get for nonexistent key', () => {
32
32
  component URLTest() {
33
- const params = new TrackedURLSearchParams('foo=bar');
34
- let nonexistent = track(() => params.get('nonexistent'));
33
+ const params = #ripple.urlSearchParams('foo=bar');
34
+ let nonexistent = #ripple.track(() => params.get('nonexistent'));
35
35
 
36
36
  <pre>{String(@nonexistent)}</pre>
37
37
  }
@@ -43,8 +43,8 @@ describe('TrackedURLSearchParams > retrieval', () => {
43
43
 
44
44
  it('handles getAll operation with reactivity', () => {
45
45
  component URLTest() {
46
- const params = new TrackedURLSearchParams('foo=bar&foo=baz');
47
- let allFoo = track(() => params.getAll('foo'));
46
+ const params = #ripple.urlSearchParams('foo=bar&foo=baz');
47
+ let allFoo = #ripple.track(() => params.getAll('foo'));
48
48
 
49
49
  <button onClick={() => params.append('foo', 'qux')}>{'append foo'}</button>
50
50
  <pre>{JSON.stringify(@allFoo)}</pre>
@@ -66,9 +66,9 @@ describe('TrackedURLSearchParams > retrieval', () => {
66
66
 
67
67
  it('handles has operation with reactivity', () => {
68
68
  component URLTest() {
69
- const params = new TrackedURLSearchParams('foo=bar');
70
- let hasFoo = track(() => params.has('foo'));
71
- let hasBaz = track(() => params.has('baz'));
69
+ const params = #ripple.urlSearchParams('foo=bar');
70
+ let hasFoo = #ripple.track(() => params.has('foo'));
71
+ let hasBaz = #ripple.track(() => params.has('baz'));
72
72
 
73
73
  <button onClick={() => params.append('baz', 'qux')}>{'add baz'}</button>
74
74
  <button onClick={() => params.delete('foo')}>{'delete foo'}</button>
@@ -102,9 +102,9 @@ describe('TrackedURLSearchParams > retrieval', () => {
102
102
 
103
103
  it('handles has with specific value', () => {
104
104
  component URLTest() {
105
- const params = new TrackedURLSearchParams('foo=bar&foo=baz');
106
- let hasBarValue = track(() => params.has('foo', 'bar'));
107
- let hasQuxValue = track(() => params.has('foo', 'qux'));
105
+ const params = #ripple.urlSearchParams('foo=bar&foo=baz');
106
+ let hasBarValue = #ripple.track(() => params.has('foo', 'bar'));
107
+ let hasQuxValue = #ripple.track(() => params.has('foo', 'qux'));
108
108
 
109
109
  <button onClick={() => params.append('foo', 'qux')}>{'add qux'}</button>
110
110
  <pre>{@hasBarValue.toString()}</pre>
@@ -129,8 +129,8 @@ describe('TrackedURLSearchParams > retrieval', () => {
129
129
 
130
130
  it('handles size property with reactivity', () => {
131
131
  component URLTest() {
132
- const params = new TrackedURLSearchParams('foo=bar');
133
- let size = track(() => params.size);
132
+ const params = #ripple.urlSearchParams('foo=bar');
133
+ let size = #ripple.track(() => params.size);
134
134
 
135
135
  <button onClick={() => params.append('baz', 'qux')}>{'add'}</button>
136
136
  <button onClick={() => params.delete('foo')}>{'delete'}</button>
@@ -1,10 +1,10 @@
1
- import { flushSync, track, TrackedURLSearchParams } from 'ripple';
1
+ import { flushSync } from 'ripple';
2
2
 
3
- describe('TrackedURLSearchParams > serialization', () => {
3
+ describe('RippleURLSearchParams > serialization', () => {
4
4
  it('handles toString method with reactivity', () => {
5
5
  component URLTest() {
6
- const params = new TrackedURLSearchParams('foo=bar');
7
- let string = track(() => params.toString());
6
+ const params = #ripple.urlSearchParams('foo=bar');
7
+ let string = #ripple.track(() => params.toString());
8
8
 
9
9
  <button onClick={() => params.append('baz', 'qux')}>{'add'}</button>
10
10
  <pre>{@string}</pre>
@@ -26,7 +26,7 @@ describe('TrackedURLSearchParams > serialization', () => {
26
26
 
27
27
  it('handles special characters encoding', () => {
28
28
  component URLTest() {
29
- const params = new TrackedURLSearchParams();
29
+ const params = #ripple.urlSearchParams();
30
30
 
31
31
  <button onClick={() => params.set('key', 'value with spaces')}>{'add spaces'}</button>
32
32
  <button onClick={() => params.set('special', '!@#$%^&*()')}>{'add special'}</button>
@@ -1,9 +1,9 @@
1
- import { flushSync, TrackedURL } from 'ripple';
1
+ import { flushSync } from 'ripple';
2
2
 
3
- describe('TrackedURLSearchParams > TrackedURL integration', () => {
4
- it('integrates with TrackedURL', () => {
3
+ describe('RippleURLSearchParams > RippleURL integration', () => {
4
+ it('integrates with RippleURL', () => {
5
5
  component URLTest() {
6
- const url = new TrackedURL('https://example.com?foo=bar');
6
+ const url = #ripple.url('https://example.com?foo=bar');
7
7
  const params = url.searchParams;
8
8
 
9
9
  <button onClick={() => params.append('baz', 'qux')}>{'add param'}</button>
@@ -31,7 +31,7 @@ describe('TrackedURLSearchParams > TrackedURL integration', () => {
31
31
 
32
32
  it('handles empty search string in URL', () => {
33
33
  component URLTest() {
34
- const url = new TrackedURL('https://example.com');
34
+ const url = #ripple.url('https://example.com');
35
35
  const params = url.searchParams;
36
36
 
37
37
  <button onClick={() => params.append('foo', 'bar')}>{'add first param'}</button>
@@ -9,12 +9,10 @@ var root_4 = _$_.template(`<div><button class="toggle"> </button></div>`, 0);
9
9
  var root_5 = _$_.template(`<button class="child-btn"> </button>`, 0);
10
10
  var root_6 = _$_.template(`<div><!><span class="count"> </span></div>`, 0);
11
11
 
12
- import { track } from 'ripple';
13
-
14
12
  export function ClickCounter(__anchor, _, __block) {
15
13
  _$_.push_component();
16
14
 
17
- let count = track(0, void 0, void 0, __block);
15
+ let count = _$_.track(0, void 0, void 0, __block);
18
16
  var div_1 = root();
19
17
 
20
18
  {
@@ -44,7 +42,7 @@ export function ClickCounter(__anchor, _, __block) {
44
42
  export function IncrementDecrement(__anchor, _, __block) {
45
43
  _$_.push_component();
46
44
 
47
- let count = track(0, void 0, void 0, __block);
45
+ let count = _$_.track(0, void 0, void 0, __block);
48
46
  var div_2 = root_1();
49
47
 
50
48
  {
@@ -80,8 +78,8 @@ export function IncrementDecrement(__anchor, _, __block) {
80
78
  export function MultipleEvents(__anchor, _, __block) {
81
79
  _$_.push_component();
82
80
 
83
- let clicks = track(0, void 0, void 0, __block);
84
- let hovers = track(0, void 0, void 0, __block);
81
+ let clicks = _$_.track(0, void 0, void 0, __block);
82
+ let hovers = _$_.track(0, void 0, void 0, __block);
85
83
  var div_3 = root_2();
86
84
 
87
85
  {
@@ -136,8 +134,8 @@ export function MultipleEvents(__anchor, _, __block) {
136
134
  export function MultiStateUpdate(__anchor, _, __block) {
137
135
  _$_.push_component();
138
136
 
139
- let count = track(0, void 0, void 0, __block);
140
- let lastAction = track('none', void 0, void 0, __block);
137
+ let count = _$_.track(0, void 0, void 0, __block);
138
+ let lastAction = _$_.track('none', void 0, void 0, __block);
141
139
 
142
140
  const handleClick = () => {
143
141
  _$_.update(count);
@@ -192,7 +190,7 @@ export function MultiStateUpdate(__anchor, _, __block) {
192
190
  export function ToggleButton(__anchor, _, __block) {
193
191
  _$_.push_component();
194
192
 
195
- let isOn = track(false, void 0, void 0, __block);
193
+ let isOn = _$_.track(false, void 0, void 0, __block);
196
194
  var div_5 = root_4();
197
195
 
198
196
  {
@@ -241,7 +239,7 @@ export function ChildButton(__anchor, props, __block) {
241
239
  export function ParentWithChildButton(__anchor, _, __block) {
242
240
  _$_.push_component();
243
241
 
244
- let count = track(0, void 0, void 0, __block);
242
+ let count = _$_.track(0, void 0, void 0, __block);
245
243
  var div_6 = root_6();
246
244
 
247
245
  {
@@ -253,7 +251,6 @@ export function ParentWithChildButton(__anchor, _, __block) {
253
251
  onClick: () => {
254
252
  _$_.update(count);
255
253
  },
256
-
257
254
  label: "Click me"
258
255
  },
259
256
  _$_.active_block
@@ -64,8 +64,6 @@ var root_58 = _$_.template(`<button class="swap">Swap First and Last</button><ul
64
64
  var root_61 = _$_.template(`<li> </li>`, 0);
65
65
  var root_60 = _$_.template(`<button class="reverse">Reverse</button><ul></ul>`, 1, 2);
66
66
 
67
- import { track } from 'ripple';
68
-
69
67
  export function StaticForLoop(__anchor, _, __block) {
70
68
  _$_.push_component();
71
69
 
@@ -177,7 +175,7 @@ export function KeyedForLoop(__anchor, _, __block) {
177
175
  export function ReactiveForLoopAdd(__anchor, _, __block) {
178
176
  _$_.push_component();
179
177
 
180
- let items = track(['A', 'B'], void 0, void 0, __block);
178
+ let items = _$_.track(['A', 'B'], void 0, void 0, __block);
181
179
  var fragment = root_6();
182
180
  var button_1 = _$_.first_child_frag(fragment);
183
181
 
@@ -217,7 +215,7 @@ export function ReactiveForLoopAdd(__anchor, _, __block) {
217
215
  export function ReactiveForLoopRemove(__anchor, _, __block) {
218
216
  _$_.push_component();
219
217
 
220
- let items = track(['A', 'B', 'C'], void 0, void 0, __block);
218
+ let items = _$_.track(['A', 'B', 'C'], void 0, void 0, __block);
221
219
  var fragment_1 = root_8();
222
220
  var button_2 = _$_.first_child_frag(fragment_1);
223
221
 
@@ -257,7 +255,7 @@ export function ReactiveForLoopRemove(__anchor, _, __block) {
257
255
  export function ForLoopInteractive(__anchor, _, __block) {
258
256
  _$_.push_component();
259
257
 
260
- let counts = track([0, 0, 0], void 0, void 0, __block);
258
+ let counts = _$_.track([0, 0, 0], void 0, void 0, __block);
261
259
  var div_1 = root_10();
262
260
 
263
261
  {
@@ -464,7 +462,7 @@ export function ForLoopComplexObjects(__anchor, _, __block) {
464
462
  export function KeyedForLoopReorder(__anchor, _, __block) {
465
463
  _$_.push_component();
466
464
 
467
- let items = track(
465
+ let items = _$_.track(
468
466
  [
469
467
  { id: 1, name: 'First' },
470
468
  { id: 2, name: 'Second' },
@@ -531,7 +529,7 @@ export function KeyedForLoopReorder(__anchor, _, __block) {
531
529
  export function KeyedForLoopUpdate(__anchor, _, __block) {
532
530
  _$_.push_component();
533
531
 
534
- let items = track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], void 0, void 0, __block);
532
+ let items = _$_.track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], void 0, void 0, __block);
535
533
  var fragment_3 = root_21();
536
534
  var button_5 = _$_.first_child_frag(fragment_3);
537
535
 
@@ -588,7 +586,7 @@ export function KeyedForLoopUpdate(__anchor, _, __block) {
588
586
  export function ForLoopMixedOperations(__anchor, _, __block) {
589
587
  _$_.push_component();
590
588
 
591
- let items = track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
589
+ let items = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
592
590
  var fragment_4 = root_23();
593
591
  var button_6 = _$_.first_child_frag(fragment_4);
594
592
 
@@ -630,8 +628,8 @@ export function ForLoopMixedOperations(__anchor, _, __block) {
630
628
  export function ForLoopInsideIf(__anchor, _, __block) {
631
629
  _$_.push_component();
632
630
 
633
- let showList = track(true, void 0, void 0, __block);
634
- let items = track(['X', 'Y', 'Z'], void 0, void 0, __block);
631
+ let showList = _$_.track(true, void 0, void 0, __block);
632
+ let items = _$_.track(['X', 'Y', 'Z'], void 0, void 0, __block);
635
633
  var fragment_5 = root_25();
636
634
  var button_7 = _$_.first_child_frag(fragment_5);
637
635
 
@@ -688,7 +686,7 @@ export function ForLoopInsideIf(__anchor, _, __block) {
688
686
  export function ForLoopEmptyToPopulated(__anchor, _, __block) {
689
687
  _$_.push_component();
690
688
 
691
- let items = track([], void 0, void 0, __block);
689
+ let items = _$_.track([], void 0, void 0, __block);
692
690
  var fragment_6 = root_28();
693
691
  var button_9 = _$_.first_child_frag(fragment_6);
694
692
 
@@ -728,7 +726,7 @@ export function ForLoopEmptyToPopulated(__anchor, _, __block) {
728
726
  export function ForLoopPopulatedToEmpty(__anchor, _, __block) {
729
727
  _$_.push_component();
730
728
 
731
- let items = track(['One', 'Two', 'Three'], void 0, void 0, __block);
729
+ let items = _$_.track(['One', 'Two', 'Three'], void 0, void 0, __block);
732
730
  var fragment_7 = root_30();
733
731
  var button_10 = _$_.first_child_frag(fragment_7);
734
732
 
@@ -768,7 +766,7 @@ export function ForLoopPopulatedToEmpty(__anchor, _, __block) {
768
766
  export function NestedForLoopReactive(__anchor, _, __block) {
769
767
  _$_.push_component();
770
768
 
771
- let grid = track([[1, 2], [3, 4]], void 0, void 0, __block);
769
+ let grid = _$_.track([[1, 2], [3, 4]], void 0, void 0, __block);
772
770
  var fragment_8 = root_32();
773
771
  var button_11 = _$_.first_child_frag(fragment_8);
774
772
 
@@ -844,7 +842,6 @@ export function ForLoopDeeplyNested(__anchor, _, __block) {
844
842
  {
845
843
  id: 'd1',
846
844
  name: 'Engineering',
847
-
848
845
  teams: [
849
846
  { id: 't1', name: 'Frontend', members: ['Alice', 'Bob'] },
850
847
  { id: 't2', name: 'Backend', members: ['Charlie'] }
@@ -977,7 +974,7 @@ export function ForLoopDeeplyNested(__anchor, _, __block) {
977
974
  export function ForLoopIndexUpdate(__anchor, _, __block) {
978
975
  _$_.push_component();
979
976
 
980
- let items = track(['First', 'Second', 'Third'], void 0, void 0, __block);
977
+ let items = _$_.track(['First', 'Second', 'Third'], void 0, void 0, __block);
981
978
  var fragment_9 = root_39();
982
979
  var button_13 = _$_.first_child_frag(fragment_9);
983
980
 
@@ -1033,7 +1030,7 @@ export function ForLoopIndexUpdate(__anchor, _, __block) {
1033
1030
  export function KeyedForLoopWithIndex(__anchor, _, __block) {
1034
1031
  _$_.push_component();
1035
1032
 
1036
- let items = track(
1033
+ let items = _$_.track(
1037
1034
  [
1038
1035
  { id: 'a', value: 'Alpha' },
1039
1036
  { id: 'b', value: 'Beta' },
@@ -1106,7 +1103,7 @@ export function KeyedForLoopWithIndex(__anchor, _, __block) {
1106
1103
  export function ForLoopWithSiblings(__anchor, _, __block) {
1107
1104
  _$_.push_component();
1108
1105
 
1109
- let items = track(['A', 'B'], void 0, void 0, __block);
1106
+ let items = _$_.track(['A', 'B'], void 0, void 0, __block);
1110
1107
  var fragment_11 = root_43();
1111
1108
  var div_13 = _$_.first_child_frag(fragment_11);
1112
1109
 
@@ -1197,7 +1194,7 @@ export function ForLoopItemState(__anchor, _, __block) {
1197
1194
  function TodoItem(__anchor, props, __block) {
1198
1195
  _$_.push_component();
1199
1196
 
1200
- let done = track(false, void 0, void 0, __block);
1197
+ let done = _$_.track(false, void 0, void 0, __block);
1201
1198
  var div_16 = root_47();
1202
1199
 
1203
1200
  {
@@ -1284,7 +1281,7 @@ export function ForLoopSingleItem(__anchor, _, __block) {
1284
1281
  export function ForLoopAddAtBeginning(__anchor, _, __block) {
1285
1282
  _$_.push_component();
1286
1283
 
1287
- let items = track(['B', 'C'], void 0, void 0, __block);
1284
+ let items = _$_.track(['B', 'C'], void 0, void 0, __block);
1288
1285
  var fragment_13 = root_50();
1289
1286
  var button_16 = _$_.first_child_frag(fragment_13);
1290
1287
 
@@ -1326,7 +1323,7 @@ export function ForLoopAddAtBeginning(__anchor, _, __block) {
1326
1323
  export function ForLoopAddInMiddle(__anchor, _, __block) {
1327
1324
  _$_.push_component();
1328
1325
 
1329
- let items = track(['A', 'C'], void 0, void 0, __block);
1326
+ let items = _$_.track(['A', 'C'], void 0, void 0, __block);
1330
1327
  var fragment_14 = root_52();
1331
1328
  var button_17 = _$_.first_child_frag(fragment_14);
1332
1329
 
@@ -1371,7 +1368,7 @@ export function ForLoopAddInMiddle(__anchor, _, __block) {
1371
1368
  export function ForLoopRemoveFromMiddle(__anchor, _, __block) {
1372
1369
  _$_.push_component();
1373
1370
 
1374
- let items = track(['A', 'B', 'C'], void 0, void 0, __block);
1371
+ let items = _$_.track(['A', 'B', 'C'], void 0, void 0, __block);
1375
1372
  var fragment_15 = root_54();
1376
1373
  var button_18 = _$_.first_child_frag(fragment_15);
1377
1374
 
@@ -1449,7 +1446,7 @@ export function ForLoopLargeList(__anchor, _, __block) {
1449
1446
  export function ForLoopSwap(__anchor, _, __block) {
1450
1447
  _$_.push_component();
1451
1448
 
1452
- let items = track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1449
+ let items = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1453
1450
  var fragment_16 = root_58();
1454
1451
  var button_19 = _$_.first_child_frag(fragment_16);
1455
1452
 
@@ -1494,7 +1491,7 @@ export function ForLoopSwap(__anchor, _, __block) {
1494
1491
  export function ForLoopReverse(__anchor, _, __block) {
1495
1492
  _$_.push_component();
1496
1493
 
1497
- let items = track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1494
+ let items = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1498
1495
  var fragment_17 = root_60();
1499
1496
  var button_20 = _$_.first_child_frag(fragment_17);
1500
1497
 
@@ -15,14 +15,12 @@ var root_11 = _$_.template(`<meta name="author" content="Test Author">`, 0);
15
15
  var root_10 = _$_.template(`<div>Content</div>`, 0);
16
16
  var root_12 = _$_.template(`<div>Styled content</div>`, 0);
17
17
 
18
- import { track } from 'ripple';
19
-
20
18
  export function StaticTitle(__anchor, _, __block) {
21
19
  _$_.push_component();
22
20
 
23
21
  var div_1 = root();
24
22
 
25
- _$_.head('qwqurq', (__anchor) => {
23
+ _$_.head('df6gdi', (__anchor) => {
26
24
  _$_.document.title = 'Static Test Title';
27
25
  });
28
26
 
@@ -33,7 +31,7 @@ export function StaticTitle(__anchor, _, __block) {
33
31
  export function ReactiveTitle(__anchor, _, __block) {
34
32
  _$_.push_component();
35
33
 
36
- let title = track('Initial Title', void 0, void 0, __block);
34
+ let title = _$_.track('Initial Title', void 0, void 0, __block);
37
35
  var div_2 = root_1();
38
36
 
39
37
  {
@@ -46,7 +44,7 @@ export function ReactiveTitle(__anchor, _, __block) {
46
44
  }
47
45
  }
48
46
 
49
- _$_.head('1h8nm28', (__anchor) => {
47
+ _$_.head('13wropz', (__anchor) => {
50
48
  _$_.render(() => {
51
49
  _$_.document.title = _$_.get(title);
52
50
  });
@@ -65,7 +63,7 @@ export function MultipleHeadElements(__anchor, _, __block) {
65
63
 
66
64
  var div_3 = root_2();
67
65
 
68
- _$_.head('9v67ol', (__anchor) => {
66
+ _$_.head('jbv4cs', (__anchor) => {
69
67
  var fragment = root_3();
70
68
 
71
69
  _$_.document.title = 'Page Title';
@@ -80,7 +78,7 @@ export function MultipleHeadElements(__anchor, _, __block) {
80
78
  export function ReactiveMetaTags(__anchor, _, __block) {
81
79
  _$_.push_component();
82
80
 
83
- let description = track('Initial description', void 0, void 0, __block);
81
+ let description = _$_.track('Initial description', void 0, void 0, __block);
84
82
  var div_4 = root_4();
85
83
 
86
84
  {
@@ -89,7 +87,7 @@ export function ReactiveMetaTags(__anchor, _, __block) {
89
87
  _$_.pop(div_4);
90
88
  }
91
89
 
92
- _$_.head('166unm', (__anchor) => {
90
+ _$_.head('t794k2', (__anchor) => {
93
91
  var meta_1 = root_5();
94
92
 
95
93
  _$_.document.title = 'My Page';
@@ -108,7 +106,7 @@ export function ReactiveMetaTags(__anchor, _, __block) {
108
106
  export function TitleWithTemplate(__anchor, _, __block) {
109
107
  _$_.push_component();
110
108
 
111
- let name = track('World', void 0, void 0, __block);
109
+ let name = _$_.track('World', void 0, void 0, __block);
112
110
  var div_5 = root_6();
113
111
 
114
112
  {
@@ -117,7 +115,7 @@ export function TitleWithTemplate(__anchor, _, __block) {
117
115
  _$_.pop(div_5);
118
116
  }
119
117
 
120
- _$_.head('3o3mh2', (__anchor) => {
118
+ _$_.head('betaue', (__anchor) => {
121
119
  _$_.render(() => {
122
120
  _$_.document.title = `Hello ${_$_.get(name)}!`;
123
121
  });
@@ -136,7 +134,7 @@ export function EmptyTitle(__anchor, _, __block) {
136
134
 
137
135
  var div_6 = root_7();
138
136
 
139
- _$_.head('kwo3k6', (__anchor) => {
137
+ _$_.head('11sq4o6', (__anchor) => {
140
138
  _$_.document.title = '';
141
139
  });
142
140
 
@@ -147,8 +145,8 @@ export function EmptyTitle(__anchor, _, __block) {
147
145
  export function ConditionalTitle(__anchor, _, __block) {
148
146
  _$_.push_component();
149
147
 
150
- let showPrefix = track(true, void 0, void 0, __block);
151
- let title = track('Main Page', void 0, void 0, __block);
148
+ let showPrefix = _$_.track(true, void 0, void 0, __block);
149
+ let title = _$_.track('Main Page', void 0, void 0, __block);
152
150
  var div_7 = root_8();
153
151
 
154
152
  {
@@ -157,7 +155,7 @@ export function ConditionalTitle(__anchor, _, __block) {
157
155
  _$_.pop(div_7);
158
156
  }
159
157
 
160
- _$_.head('c2i5xr', (__anchor) => {
158
+ _$_.head('xxkmhn', (__anchor) => {
161
159
  _$_.render(() => {
162
160
  _$_.document.title = _$_.get(showPrefix) ? 'App - ' + _$_.get(title) : _$_.get(title);
163
161
  });
@@ -174,7 +172,7 @@ export function ConditionalTitle(__anchor, _, __block) {
174
172
  export function ComputedTitle(__anchor, _, __block) {
175
173
  _$_.push_component();
176
174
 
177
- let count = track(0, void 0, void 0, __block);
175
+ let count = _$_.track(0, void 0, void 0, __block);
178
176
  let prefix = 'Count: ';
179
177
  var div_8 = root_9();
180
178
 
@@ -188,7 +186,7 @@ export function ComputedTitle(__anchor, _, __block) {
188
186
  }
189
187
  }
190
188
 
191
- _$_.head('1h2z3z5', (__anchor) => {
189
+ _$_.head('1hj0can', (__anchor) => {
192
190
  _$_.render(() => {
193
191
  _$_.document.title = prefix + _$_.get(count);
194
192
  });
@@ -207,11 +205,11 @@ export function MultipleHeadBlocks(__anchor, _, __block) {
207
205
 
208
206
  var div_9 = root_10();
209
207
 
210
- _$_.head('14rv3le', (__anchor) => {
208
+ _$_.head('15ucmy3', (__anchor) => {
211
209
  _$_.document.title = 'First Head';
212
210
  });
213
211
 
214
- _$_.head('1eh1mn5', (__anchor) => {
212
+ _$_.head('1xolofp', (__anchor) => {
215
213
  var meta_2 = root_11();
216
214
 
217
215
  _$_.append(__anchor, meta_2);
@@ -226,7 +224,7 @@ export function HeadWithStyle(__anchor, _, __block) {
226
224
 
227
225
  var div_10 = root_12();
228
226
 
229
- _$_.head('1dxk6yg', (__anchor) => {
227
+ _$_.head('q5et2p', (__anchor) => {
230
228
  _$_.document.title = 'Styled Page';
231
229
  });
232
230
 
@@ -7,8 +7,6 @@ var root_1 = _$_.template(`<div class="content"><!></div>`, 0);
7
7
  var root_4 = _$_.template(`<!>`, 1, 1);
8
8
  var root_3 = _$_.template(`<!>`, 1, 1);
9
9
 
10
- import { track } from 'ripple';
11
-
12
10
  export function Layout(__anchor, __props, __block) {
13
11
  _$_.push_component();
14
12
 
@@ -33,7 +31,7 @@ export function Layout(__anchor, __props, __block) {
33
31
  export function Content(__anchor, _, __block) {
34
32
  _$_.push_component();
35
33
 
36
- let visible = track(true, void 0, void 0, __block);
34
+ let visible = _$_.track(true, void 0, void 0, __block);
37
35
  var div_2 = root_1();
38
36
 
39
37
  {