ripple 0.3.72 → 0.3.76

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 (172) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/package.json +3 -3
  3. package/src/jsx-runtime.d.ts +4 -10
  4. package/src/runtime/dynamic-client.js +33 -0
  5. package/src/runtime/dynamic-server.js +80 -0
  6. package/src/runtime/index-client.js +5 -13
  7. package/src/runtime/index-server.js +2 -0
  8. package/src/runtime/internal/client/blocks.js +6 -27
  9. package/src/runtime/internal/client/composite.js +11 -6
  10. package/src/runtime/internal/client/for.js +80 -5
  11. package/src/runtime/internal/client/index.js +0 -2
  12. package/src/runtime/internal/client/render.js +5 -2
  13. package/src/runtime/internal/client/types.d.ts +0 -10
  14. package/src/runtime/internal/server/index.js +8 -1
  15. package/tests/client/__snapshots__/computed-properties.test.tsrx.snap +8 -0
  16. package/tests/client/__snapshots__/for.test.tsrx.snap +22 -0
  17. package/tests/client/__snapshots__/html.test.tsrx.snap +4 -0
  18. package/tests/client/array/array.copy-within.test.tsrx +19 -19
  19. package/tests/client/array/array.derived.test.tsrx +97 -109
  20. package/tests/client/array/array.iteration.test.tsrx +28 -28
  21. package/tests/client/array/array.mutations.test.tsrx +68 -68
  22. package/tests/client/array/array.static.test.tsrx +82 -92
  23. package/tests/client/array/array.to-methods.test.tsrx +15 -15
  24. package/tests/client/async-suspend.test.tsrx +180 -179
  25. package/tests/client/basic/__snapshots__/basic.attributes.test.tsrx.snap +2 -0
  26. package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +4 -0
  27. package/tests/client/basic/basic.attributes.test.tsrx +273 -317
  28. package/tests/client/basic/basic.collections.test.tsrx +55 -61
  29. package/tests/client/basic/basic.components.test.tsrx +198 -220
  30. package/tests/client/basic/basic.errors.test.tsrx +70 -76
  31. package/tests/client/basic/basic.events.test.tsrx +80 -85
  32. package/tests/client/basic/basic.get-set.test.tsrx +54 -64
  33. package/tests/client/basic/basic.hmr.test.tsrx +15 -19
  34. package/tests/client/basic/basic.reactivity.test.tsrx +121 -135
  35. package/tests/client/basic/basic.rendering.test.tsrx +273 -178
  36. package/tests/client/basic/basic.styling.test.tsrx +16 -14
  37. package/tests/client/basic/basic.utilities.test.tsrx +8 -10
  38. package/tests/client/boundaries.test.tsrx +18 -18
  39. package/tests/client/compiler/compiler.assignments.test.tsrx +77 -76
  40. package/tests/client/compiler/compiler.attributes.test.tsrx +18 -14
  41. package/tests/client/compiler/compiler.basic.test.tsrx +357 -288
  42. package/tests/client/compiler/compiler.regex.test.tsrx +40 -44
  43. package/tests/client/compiler/compiler.tracked-access.test.tsrx +57 -38
  44. package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
  45. package/tests/client/compiler/compiler.typescript.test.tsrx +4 -3
  46. package/tests/client/composite/composite.dynamic-components.test.tsrx +62 -47
  47. package/tests/client/composite/composite.generics.test.tsrx +165 -167
  48. package/tests/client/composite/composite.props.test.tsrx +66 -74
  49. package/tests/client/composite/composite.reactivity.test.tsrx +132 -166
  50. package/tests/client/composite/composite.render.test.tsrx +92 -101
  51. package/tests/client/computed-properties.test.tsrx +14 -18
  52. package/tests/client/context.test.tsrx +14 -18
  53. package/tests/client/css/global-additional-cases.test.tsrx +493 -439
  54. package/tests/client/css/global-advanced-selectors.test.tsrx +169 -153
  55. package/tests/client/css/global-at-rules.test.tsrx +71 -66
  56. package/tests/client/css/global-basic.test.tsrx +105 -98
  57. package/tests/client/css/global-classes-ids.test.tsrx +128 -114
  58. package/tests/client/css/global-combinators.test.tsrx +83 -78
  59. package/tests/client/css/global-complex-nesting.test.tsrx +134 -120
  60. package/tests/client/css/global-edge-cases.test.tsrx +138 -120
  61. package/tests/client/css/global-keyframes.test.tsrx +108 -96
  62. package/tests/client/css/global-nested.test.tsrx +88 -78
  63. package/tests/client/css/global-pseudo.test.tsrx +104 -98
  64. package/tests/client/css/global-scoping.test.tsrx +145 -125
  65. package/tests/client/css/style-identifier.test.tsrx +65 -72
  66. package/tests/client/date.test.tsrx +83 -83
  67. package/tests/client/dynamic-elements.test.tsrx +318 -299
  68. package/tests/client/events.test.tsrx +252 -266
  69. package/tests/client/for.test.tsrx +120 -127
  70. package/tests/client/head.test.tsrx +74 -48
  71. package/tests/client/html.test.tsrx +37 -49
  72. package/tests/client/input-value.test.tsrx +1125 -1354
  73. package/tests/client/lazy-array.test.tsrx +10 -16
  74. package/tests/client/lazy-destructuring.test.tsrx +169 -221
  75. package/tests/client/map.test.tsrx +39 -41
  76. package/tests/client/media-query.test.tsrx +15 -19
  77. package/tests/client/object.test.tsrx +46 -56
  78. package/tests/client/portal.test.tsrx +31 -37
  79. package/tests/client/ref.test.tsrx +173 -193
  80. package/tests/client/return.test.tsrx +62 -37
  81. package/tests/client/set.test.tsrx +33 -33
  82. package/tests/client/svg.test.tsrx +197 -216
  83. package/tests/client/switch.test.tsrx +201 -191
  84. package/tests/client/track-async-hydration.test.tsrx +14 -18
  85. package/tests/client/tracked-index-access.test.tsrx +18 -28
  86. package/tests/client/try.test.tsrx +494 -619
  87. package/tests/client/tsx.test.tsrx +286 -292
  88. package/tests/client/typescript-generics.test.tsrx +121 -129
  89. package/tests/client/url/url.derived.test.tsrx +21 -25
  90. package/tests/client/url/url.parsing.test.tsrx +35 -35
  91. package/tests/client/url/url.partial-removal.test.tsrx +32 -32
  92. package/tests/client/url/url.reactivity.test.tsrx +68 -72
  93. package/tests/client/url/url.serialization.test.tsrx +8 -8
  94. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +21 -27
  95. package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +16 -16
  96. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +37 -37
  97. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +56 -60
  98. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +32 -34
  99. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +9 -9
  100. package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +10 -10
  101. package/tests/hydration/compiled/client/basic.js +390 -319
  102. package/tests/hydration/compiled/client/composite.js +52 -44
  103. package/tests/hydration/compiled/client/for.js +734 -604
  104. package/tests/hydration/compiled/client/head.js +183 -103
  105. package/tests/hydration/compiled/client/html.js +93 -86
  106. package/tests/hydration/compiled/client/if-children.js +95 -71
  107. package/tests/hydration/compiled/client/if.js +113 -89
  108. package/tests/hydration/compiled/client/mixed-control-flow.js +225 -209
  109. package/tests/hydration/compiled/client/nested-control-flow.js +94 -98
  110. package/tests/hydration/compiled/client/reactivity.js +26 -24
  111. package/tests/hydration/compiled/client/return.js +8 -42
  112. package/tests/hydration/compiled/client/switch.js +208 -173
  113. package/tests/hydration/compiled/client/track-async-serialization.js +176 -128
  114. package/tests/hydration/compiled/client/try.js +29 -21
  115. package/tests/hydration/compiled/server/basic.js +210 -221
  116. package/tests/hydration/compiled/server/composite.js +13 -14
  117. package/tests/hydration/compiled/server/for.js +427 -444
  118. package/tests/hydration/compiled/server/head.js +199 -189
  119. package/tests/hydration/compiled/server/html.js +33 -41
  120. package/tests/hydration/compiled/server/if-children.js +114 -117
  121. package/tests/hydration/compiled/server/if.js +77 -83
  122. package/tests/hydration/compiled/server/mixed-control-flow.js +145 -150
  123. package/tests/hydration/compiled/server/nested-control-flow.js +10 -0
  124. package/tests/hydration/compiled/server/reactivity.js +24 -22
  125. package/tests/hydration/compiled/server/return.js +6 -18
  126. package/tests/hydration/compiled/server/switch.js +179 -176
  127. package/tests/hydration/compiled/server/track-async-serialization.js +88 -70
  128. package/tests/hydration/compiled/server/try.js +31 -35
  129. package/tests/hydration/components/basic.tsrx +216 -258
  130. package/tests/hydration/components/composite.tsrx +32 -42
  131. package/tests/hydration/components/events.tsrx +81 -101
  132. package/tests/hydration/components/for.tsrx +270 -336
  133. package/tests/hydration/components/head.tsrx +43 -39
  134. package/tests/hydration/components/hmr.tsrx +16 -22
  135. package/tests/hydration/components/html-in-template.tsrx +15 -21
  136. package/tests/hydration/components/html.tsrx +442 -526
  137. package/tests/hydration/components/if-children.tsrx +107 -125
  138. package/tests/hydration/components/if.tsrx +68 -90
  139. package/tests/hydration/components/mixed-control-flow.tsrx +65 -72
  140. package/tests/hydration/components/nested-control-flow.tsrx +202 -216
  141. package/tests/hydration/components/portal.tsrx +33 -41
  142. package/tests/hydration/components/reactivity.tsrx +26 -34
  143. package/tests/hydration/components/return.tsrx +4 -6
  144. package/tests/hydration/components/switch.tsrx +73 -78
  145. package/tests/hydration/components/track-async-serialization.tsrx +83 -93
  146. package/tests/hydration/components/try.tsrx +37 -51
  147. package/tests/hydration/switch.test.js +8 -8
  148. package/tests/server/await.test.tsrx +3 -3
  149. package/tests/server/basic.attributes.test.tsrx +117 -162
  150. package/tests/server/basic.components.test.tsrx +164 -194
  151. package/tests/server/basic.test.tsrx +299 -199
  152. package/tests/server/compiler.test.tsrx +142 -72
  153. package/tests/server/composite.props.test.tsrx +54 -58
  154. package/tests/server/composite.test.tsrx +165 -167
  155. package/tests/server/context.test.tsrx +13 -17
  156. package/tests/server/dynamic-elements.test.tsrx +147 -148
  157. package/tests/server/for.test.tsrx +115 -84
  158. package/tests/server/head.test.tsrx +54 -31
  159. package/tests/server/html-nesting-validation.test.tsrx +16 -8
  160. package/tests/server/if.test.tsrx +49 -59
  161. package/tests/server/lazy-destructuring.test.tsrx +288 -366
  162. package/tests/server/return.test.tsrx +58 -36
  163. package/tests/server/streaming-ssr.test.tsrx +4 -4
  164. package/tests/server/style-identifier.test.tsrx +61 -69
  165. package/tests/server/switch.test.tsrx +89 -97
  166. package/tests/server/track-async-serialization.test.tsrx +85 -103
  167. package/tests/server/try.test.tsrx +275 -360
  168. package/tests/utils/ref-types.test.js +72 -0
  169. package/tests/utils/vite-plugin-config.test.js +41 -74
  170. package/types/index.d.ts +29 -4
  171. package/src/runtime/internal/client/compat.js +0 -40
  172. package/tests/utils/compiler-compat-config.test.js +0 -38
@@ -3,21 +3,23 @@ import { compile } from '@tsrx/ripple';
3
3
  describe('CSS :global with advanced selectors', () => {
4
4
  it('handles :global with ::slotted()', () => {
5
5
  const source = `
6
- export function Test() { return <>
7
- <div>
8
- <slot />
9
- </div>
10
-
11
- <style>
12
- :global(::slotted(*)) {
13
- color: red;
14
- }
15
-
16
- div :global(::slotted(span)) {
17
- color: blue;
18
- }
19
- </style>
20
- </>; }`;
6
+ export function Test() @{
7
+ <>
8
+ <div>
9
+ <slot />
10
+ </div>
11
+
12
+ <style>
13
+ :global(::slotted(*)) {
14
+ color: red;
15
+ }
16
+
17
+ div :global(::slotted(span)) {
18
+ color: blue;
19
+ }
20
+ </style>
21
+ </>
22
+ }`;
21
23
  const { css } = compile(source, 'test.tsrx');
22
24
 
23
25
  expect(css).toMatch(/div\.tsrx-[a-z0-9]+ ::slotted\(span\) {/);
@@ -26,19 +28,21 @@ export function Test() { return <>
26
28
 
27
29
  it('handles :global with ::part()', () => {
28
30
  const source = `
29
- export function Test() { return <>
30
- <div>{'content'}</div>
31
-
32
- <style>
33
- :global(::part(button)) {
34
- color: red;
35
- }
36
-
37
- div :global(::part(input)) {
38
- border: 1px solid blue;
39
- }
40
- </style>
41
- </>; }`;
31
+ export function Test() @{
32
+ <>
33
+ <div>{'content'}</div>
34
+
35
+ <style>
36
+ :global(::part(button)) {
37
+ color: red;
38
+ }
39
+
40
+ div :global(::part(input)) {
41
+ border: 1px solid blue;
42
+ }
43
+ </style>
44
+ </>
45
+ }`;
42
46
  const { css } = compile(source, 'test.tsrx');
43
47
 
44
48
  expect(css).toMatch(/div\.tsrx-[a-z0-9]+ ::part\(input\) {/);
@@ -47,23 +51,25 @@ export function Test() { return <>
47
51
 
48
52
  it('handles :global with :host and :host-context', () => {
49
53
  const source = `
50
- export function Test() { return <>
51
- <div>{'content'}</div>
52
-
53
- <style>
54
- :global(:host) {
55
- display: block;
56
- }
57
-
58
- :global(:host(.active)) {
59
- color: red;
60
- }
61
-
62
- :global(:host-context(.dark)) {
63
- background: black;
64
- }
65
- </style>
66
- </>; }`;
54
+ export function Test() @{
55
+ <>
56
+ <div>{'content'}</div>
57
+
58
+ <style>
59
+ :global(:host) {
60
+ display: block;
61
+ }
62
+
63
+ :global(:host(.active)) {
64
+ color: red;
65
+ }
66
+
67
+ :global(:host-context(.dark)) {
68
+ background: black;
69
+ }
70
+ </style>
71
+ </>
72
+ }`;
67
73
  const { css } = compile(source, 'test.tsrx');
68
74
 
69
75
  expect(css).toContain(':host {');
@@ -73,27 +79,29 @@ export function Test() { return <>
73
79
 
74
80
  it('handles :global with complex :nth-* selectors', () => {
75
81
  const source = `
76
- export function Test() { return <>
77
- <div>
78
- <span>{'one'}</span>
79
- <span>{'two'}</span>
80
- <span>{'three'}</span>
81
- </div>
82
-
83
- <style>
84
- :global(span:nth-child(odd)) {
85
- color: red;
86
- }
87
-
88
- :global(span:nth-last-child(2)) {
89
- color: blue;
90
- }
91
-
92
- :global(div:nth-of-type(3n+1)) {
93
- margin-top: 10px;
94
- }
95
- </style>
96
- </>; }`;
82
+ export function Test() @{
83
+ <>
84
+ <div>
85
+ <span>{'one'}</span>
86
+ <span>{'two'}</span>
87
+ <span>{'three'}</span>
88
+ </div>
89
+
90
+ <style>
91
+ :global(span:nth-child(odd)) {
92
+ color: red;
93
+ }
94
+
95
+ :global(span:nth-last-child(2)) {
96
+ color: blue;
97
+ }
98
+
99
+ :global(div:nth-of-type(3n+1)) {
100
+ margin-top: 10px;
101
+ }
102
+ </style>
103
+ </>
104
+ }`;
97
105
  const { css } = compile(source, 'test.tsrx');
98
106
 
99
107
  expect(css).toContain('span:nth-child(odd) {');
@@ -103,23 +111,25 @@ export function Test() { return <>
103
111
 
104
112
  it('handles :global with language and directional pseudo-classes', () => {
105
113
  const source = `
106
- export function Test() { return <>
107
- <div>{'content'}</div>
108
-
109
- <style>
110
- :global(:lang(en)) {
111
- quotes: '"' '"';
112
- }
113
-
114
- :global(:dir(rtl)) {
115
- direction: rtl;
116
- }
117
-
118
- :global(div:lang(fr)) {
119
- quotes: '«' '»';
120
- }
121
- </style>
122
- </>; }`;
114
+ export function Test() @{
115
+ <>
116
+ <div>{'content'}</div>
117
+
118
+ <style>
119
+ :global(:lang(en)) {
120
+ quotes: '"' '"';
121
+ }
122
+
123
+ :global(:dir(rtl)) {
124
+ direction: rtl;
125
+ }
126
+
127
+ :global(div:lang(fr)) {
128
+ quotes: '«' '»';
129
+ }
130
+ </style>
131
+ </>
132
+ }`;
123
133
  const { css } = compile(source, 'test.tsrx');
124
134
 
125
135
  expect(css).toContain(':lang(en) {');
@@ -129,21 +139,23 @@ export function Test() { return <>
129
139
 
130
140
  it('handles :global with :focus-within and :focus-visible', () => {
131
141
  const source = `
132
- export function Test() { return <>
133
- <div>
134
- <input type="text" />
135
- </div>
136
-
137
- <style>
138
- :global(div:focus-within) {
139
- border: 2px solid blue;
140
- }
141
-
142
- :global(input:focus-visible) {
143
- outline: 2px solid red;
144
- }
145
- </style>
146
- </>; }`;
142
+ export function Test() @{
143
+ <>
144
+ <div>
145
+ <input type="text" />
146
+ </div>
147
+
148
+ <style>
149
+ :global(div:focus-within) {
150
+ border: 2px solid blue;
151
+ }
152
+
153
+ :global(input:focus-visible) {
154
+ outline: 2px solid red;
155
+ }
156
+ </style>
157
+ </>
158
+ }`;
147
159
  const { css } = compile(source, 'test.tsrx');
148
160
 
149
161
  expect(css).toContain('div:focus-within {');
@@ -152,25 +164,27 @@ export function Test() { return <>
152
164
 
153
165
  it('handles :global with :any-link, :target, :scope', () => {
154
166
  const source = `
155
- export function Test() { return <>
156
- <div>
157
- <a href="#">{'link'}</a>
158
- </div>
159
-
160
- <style>
161
- :global(:any-link) {
162
- color: blue;
163
- }
164
-
165
- :global(:target) {
166
- background: yellow;
167
- }
168
-
169
- :global(:scope) {
170
- border: 1px solid black;
171
- }
172
- </style>
173
- </>; }`;
167
+ export function Test() @{
168
+ <>
169
+ <div>
170
+ <a href="#">{'link'}</a>
171
+ </div>
172
+
173
+ <style>
174
+ :global(:any-link) {
175
+ color: blue;
176
+ }
177
+
178
+ :global(:target) {
179
+ background: yellow;
180
+ }
181
+
182
+ :global(:scope) {
183
+ border: 1px solid black;
184
+ }
185
+ </style>
186
+ </>
187
+ }`;
174
188
  const { css } = compile(source, 'test.tsrx');
175
189
 
176
190
  expect(css).toContain(':any-link {');
@@ -180,42 +194,44 @@ export function Test() { return <>
180
194
 
181
195
  it('handles :global with form-related pseudo-classes', () => {
182
196
  const source = `
183
- export function Test() { return <>
184
- <form>
185
- <input type="text" required />
186
- <input type="checkbox" checked />
187
- </form>
188
-
189
- <style>
190
- :global(input:required) {
191
- border-color: red;
192
- }
193
-
194
- :global(input:optional) {
195
- border-color: gray;
196
- }
197
-
198
- :global(input:checked) {
199
- background: blue;
200
- }
201
-
202
- :global(input:disabled) {
203
- opacity: 0.5;
204
- }
205
-
206
- :global(input:read-only) {
207
- background: lightgray;
208
- }
209
-
210
- :global(input:valid) {
211
- border-color: green;
212
- }
213
-
214
- :global(input:invalid) {
215
- border-color: red;
216
- }
217
- </style>
218
- </>; }`;
197
+ export function Test() @{
198
+ <>
199
+ <form>
200
+ <input type="text" required />
201
+ <input type="checkbox" checked />
202
+ </form>
203
+
204
+ <style>
205
+ :global(input:required) {
206
+ border-color: red;
207
+ }
208
+
209
+ :global(input:optional) {
210
+ border-color: gray;
211
+ }
212
+
213
+ :global(input:checked) {
214
+ background: blue;
215
+ }
216
+
217
+ :global(input:disabled) {
218
+ opacity: 0.5;
219
+ }
220
+
221
+ :global(input:read-only) {
222
+ background: lightgray;
223
+ }
224
+
225
+ :global(input:valid) {
226
+ border-color: green;
227
+ }
228
+
229
+ :global(input:invalid) {
230
+ border-color: red;
231
+ }
232
+ </style>
233
+ </>
234
+ }`;
219
235
  const { css } = compile(source, 'test.tsrx');
220
236
 
221
237
  expect(css).toContain('input:required {');
@@ -3,21 +3,22 @@ import { compile } from '@tsrx/ripple';
3
3
  describe('CSS :global with @media and @supports', () => {
4
4
  it('handles :global inside @media queries', () => {
5
5
  const source = `
6
- export function Test() { return <>
7
- <div>{'content'}</div>
8
-
9
- <style>
10
- @media (min-width: 768px) {
11
- :global(div) {
12
- color: red;
13
- }
6
+ export function Test() @{
7
+ <>
8
+ <div>{'content'}</div>
9
+ <style>
10
+ @media (min-width: 768px) {
11
+ :global(div) {
12
+ color: red;
13
+ }
14
14
 
15
- div :global(span) {
16
- color: blue;
15
+ div :global(span) {
16
+ color: blue;
17
+ }
17
18
  }
18
- }
19
- </style>
20
- </>; }`;
19
+ </style>
20
+ </>
21
+ }`;
21
22
  const { css } = compile(source, 'test.tsrx');
22
23
 
23
24
  expect(css).toContain('@media (min-width: 768px) {');
@@ -27,21 +28,22 @@ export function Test() { return <>
27
28
 
28
29
  it('handles :global inside @supports queries', () => {
29
30
  const source = `
30
- export function Test() { return <>
31
- <div>{'content'}</div>
32
-
33
- <style>
34
- @supports (display: grid) {
35
- :global(.container) {
36
- display: grid;
37
- }
31
+ export function Test() @{
32
+ <>
33
+ <div>{'content'}</div>
34
+ <style>
35
+ @supports (display: grid) {
36
+ :global(.container) {
37
+ display: grid;
38
+ }
38
39
 
39
- div :global(.item) {
40
- grid-column: 1;
40
+ div :global(.item) {
41
+ grid-column: 1;
42
+ }
41
43
  }
42
- }
43
- </style>
44
- </>; }`;
44
+ </style>
45
+ </>
46
+ }`;
45
47
  const { css } = compile(source, 'test.tsrx');
46
48
 
47
49
  expect(css).toContain('@supports (display: grid) {');
@@ -51,25 +53,26 @@ export function Test() { return <>
51
53
 
52
54
  it('handles nested @media with :global', () => {
53
55
  const source = `
54
- export function Test() { return <>
55
- <div>{'content'}</div>
56
-
57
- <style>
58
- div {
59
- color: black;
60
-
61
- @media (min-width: 768px) {
62
- :global {
63
- .foo {
64
- color: red;
56
+ export function Test() @{
57
+ <>
58
+ <div>{'content'}</div>
59
+ <style>
60
+ div {
61
+ color: black;
62
+
63
+ @media (min-width: 768px) {
64
+ :global {
65
+ .foo {
66
+ color: red;
67
+ }
65
68
  }
66
- }
67
69
 
68
- color: blue;
70
+ color: blue;
71
+ }
69
72
  }
70
- }
71
- </style>
72
- </>; }`;
73
+ </style>
74
+ </>
75
+ }`;
73
76
  const { css } = compile(source, 'test.tsrx');
74
77
 
75
78
  expect(css).toContain('@media (min-width: 768px) {');
@@ -80,17 +83,18 @@ export function Test() { return <>
80
83
 
81
84
  it('handles :global in @container queries', () => {
82
85
  const source = `
83
- export function Test() { return <>
84
- <div>{'content'}</div>
85
-
86
- <style>
87
- @container (min-width: 400px) {
88
- :global(div) {
89
- color: red;
86
+ export function Test() @{
87
+ <>
88
+ <div>{'content'}</div>
89
+ <style>
90
+ @container (min-width: 400px) {
91
+ :global(div) {
92
+ color: red;
93
+ }
90
94
  }
91
- }
92
- </style>
93
- </>; }`;
95
+ </style>
96
+ </>
97
+ }`;
94
98
  const { css } = compile(source, 'test.tsrx');
95
99
 
96
100
  expect(css).toContain('@container (min-width: 400px) {');
@@ -99,23 +103,24 @@ export function Test() { return <>
99
103
 
100
104
  it('handles multiple at-rules with :global', () => {
101
105
  const source = `
102
- export function Test() { return <>
103
- <div>{'content'}</div>
104
-
105
- <style>
106
- @media screen {
107
- @supports (display: flex) {
108
- :global(.flex-container) {
109
- display: flex;
110
- }
106
+ export function Test() @{
107
+ <>
108
+ <div>{'content'}</div>
109
+ <style>
110
+ @media screen {
111
+ @supports (display: flex) {
112
+ :global(.flex-container) {
113
+ display: flex;
114
+ }
111
115
 
112
- div :global(.flex-item) {
113
- flex: 1;
116
+ div :global(.flex-item) {
117
+ flex: 1;
118
+ }
114
119
  }
115
120
  }
116
- }
117
- </style>
118
- </>; }`;
121
+ </style>
122
+ </>
123
+ }`;
119
124
  const { css } = compile(source, 'test.tsrx');
120
125
 
121
126
  expect(css).toContain('@media screen {');