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.
- package/CHANGELOG.md +116 -0
- package/package.json +3 -3
- package/src/jsx-runtime.d.ts +4 -10
- package/src/runtime/dynamic-client.js +33 -0
- package/src/runtime/dynamic-server.js +80 -0
- package/src/runtime/index-client.js +5 -13
- package/src/runtime/index-server.js +2 -0
- package/src/runtime/internal/client/blocks.js +6 -27
- package/src/runtime/internal/client/composite.js +11 -6
- package/src/runtime/internal/client/for.js +80 -5
- package/src/runtime/internal/client/index.js +0 -2
- package/src/runtime/internal/client/render.js +5 -2
- package/src/runtime/internal/client/types.d.ts +0 -10
- package/src/runtime/internal/server/index.js +8 -1
- package/tests/client/__snapshots__/computed-properties.test.tsrx.snap +8 -0
- package/tests/client/__snapshots__/for.test.tsrx.snap +22 -0
- package/tests/client/__snapshots__/html.test.tsrx.snap +4 -0
- package/tests/client/array/array.copy-within.test.tsrx +19 -19
- package/tests/client/array/array.derived.test.tsrx +97 -109
- package/tests/client/array/array.iteration.test.tsrx +28 -28
- package/tests/client/array/array.mutations.test.tsrx +68 -68
- package/tests/client/array/array.static.test.tsrx +82 -92
- package/tests/client/array/array.to-methods.test.tsrx +15 -15
- package/tests/client/async-suspend.test.tsrx +180 -179
- package/tests/client/basic/__snapshots__/basic.attributes.test.tsrx.snap +2 -0
- package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +4 -0
- package/tests/client/basic/basic.attributes.test.tsrx +273 -317
- package/tests/client/basic/basic.collections.test.tsrx +55 -61
- package/tests/client/basic/basic.components.test.tsrx +198 -220
- package/tests/client/basic/basic.errors.test.tsrx +70 -76
- package/tests/client/basic/basic.events.test.tsrx +80 -85
- package/tests/client/basic/basic.get-set.test.tsrx +54 -64
- package/tests/client/basic/basic.hmr.test.tsrx +15 -19
- package/tests/client/basic/basic.reactivity.test.tsrx +121 -135
- package/tests/client/basic/basic.rendering.test.tsrx +273 -178
- package/tests/client/basic/basic.styling.test.tsrx +16 -14
- package/tests/client/basic/basic.utilities.test.tsrx +8 -10
- package/tests/client/boundaries.test.tsrx +18 -18
- package/tests/client/compiler/compiler.assignments.test.tsrx +77 -76
- package/tests/client/compiler/compiler.attributes.test.tsrx +18 -14
- package/tests/client/compiler/compiler.basic.test.tsrx +357 -288
- package/tests/client/compiler/compiler.regex.test.tsrx +40 -44
- package/tests/client/compiler/compiler.tracked-access.test.tsrx +57 -38
- package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
- package/tests/client/compiler/compiler.typescript.test.tsrx +4 -3
- package/tests/client/composite/composite.dynamic-components.test.tsrx +62 -47
- package/tests/client/composite/composite.generics.test.tsrx +165 -167
- package/tests/client/composite/composite.props.test.tsrx +66 -74
- package/tests/client/composite/composite.reactivity.test.tsrx +132 -166
- package/tests/client/composite/composite.render.test.tsrx +92 -101
- package/tests/client/computed-properties.test.tsrx +14 -18
- package/tests/client/context.test.tsrx +14 -18
- package/tests/client/css/global-additional-cases.test.tsrx +493 -439
- package/tests/client/css/global-advanced-selectors.test.tsrx +169 -153
- package/tests/client/css/global-at-rules.test.tsrx +71 -66
- package/tests/client/css/global-basic.test.tsrx +105 -98
- package/tests/client/css/global-classes-ids.test.tsrx +128 -114
- package/tests/client/css/global-combinators.test.tsrx +83 -78
- package/tests/client/css/global-complex-nesting.test.tsrx +134 -120
- package/tests/client/css/global-edge-cases.test.tsrx +138 -120
- package/tests/client/css/global-keyframes.test.tsrx +108 -96
- package/tests/client/css/global-nested.test.tsrx +88 -78
- package/tests/client/css/global-pseudo.test.tsrx +104 -98
- package/tests/client/css/global-scoping.test.tsrx +145 -125
- package/tests/client/css/style-identifier.test.tsrx +65 -72
- package/tests/client/date.test.tsrx +83 -83
- package/tests/client/dynamic-elements.test.tsrx +318 -299
- package/tests/client/events.test.tsrx +252 -266
- package/tests/client/for.test.tsrx +120 -127
- package/tests/client/head.test.tsrx +74 -48
- package/tests/client/html.test.tsrx +37 -49
- package/tests/client/input-value.test.tsrx +1125 -1354
- package/tests/client/lazy-array.test.tsrx +10 -16
- package/tests/client/lazy-destructuring.test.tsrx +169 -221
- package/tests/client/map.test.tsrx +39 -41
- package/tests/client/media-query.test.tsrx +15 -19
- package/tests/client/object.test.tsrx +46 -56
- package/tests/client/portal.test.tsrx +31 -37
- package/tests/client/ref.test.tsrx +173 -193
- package/tests/client/return.test.tsrx +62 -37
- package/tests/client/set.test.tsrx +33 -33
- package/tests/client/svg.test.tsrx +197 -216
- package/tests/client/switch.test.tsrx +201 -191
- package/tests/client/track-async-hydration.test.tsrx +14 -18
- package/tests/client/tracked-index-access.test.tsrx +18 -28
- package/tests/client/try.test.tsrx +494 -619
- package/tests/client/tsx.test.tsrx +286 -292
- package/tests/client/typescript-generics.test.tsrx +121 -129
- package/tests/client/url/url.derived.test.tsrx +21 -25
- package/tests/client/url/url.parsing.test.tsrx +35 -35
- package/tests/client/url/url.partial-removal.test.tsrx +32 -32
- package/tests/client/url/url.reactivity.test.tsrx +68 -72
- package/tests/client/url/url.serialization.test.tsrx +8 -8
- package/tests/client/url-search-params/url-search-params.derived.test.tsrx +21 -27
- package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +16 -16
- package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +37 -37
- package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +56 -60
- package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +32 -34
- package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +9 -9
- package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +10 -10
- package/tests/hydration/compiled/client/basic.js +390 -319
- package/tests/hydration/compiled/client/composite.js +52 -44
- package/tests/hydration/compiled/client/for.js +734 -604
- package/tests/hydration/compiled/client/head.js +183 -103
- package/tests/hydration/compiled/client/html.js +93 -86
- package/tests/hydration/compiled/client/if-children.js +95 -71
- package/tests/hydration/compiled/client/if.js +113 -89
- package/tests/hydration/compiled/client/mixed-control-flow.js +225 -209
- package/tests/hydration/compiled/client/nested-control-flow.js +94 -98
- package/tests/hydration/compiled/client/reactivity.js +26 -24
- package/tests/hydration/compiled/client/return.js +8 -42
- package/tests/hydration/compiled/client/switch.js +208 -173
- package/tests/hydration/compiled/client/track-async-serialization.js +176 -128
- package/tests/hydration/compiled/client/try.js +29 -21
- package/tests/hydration/compiled/server/basic.js +210 -221
- package/tests/hydration/compiled/server/composite.js +13 -14
- package/tests/hydration/compiled/server/for.js +427 -444
- package/tests/hydration/compiled/server/head.js +199 -189
- package/tests/hydration/compiled/server/html.js +33 -41
- package/tests/hydration/compiled/server/if-children.js +114 -117
- package/tests/hydration/compiled/server/if.js +77 -83
- package/tests/hydration/compiled/server/mixed-control-flow.js +145 -150
- package/tests/hydration/compiled/server/nested-control-flow.js +10 -0
- package/tests/hydration/compiled/server/reactivity.js +24 -22
- package/tests/hydration/compiled/server/return.js +6 -18
- package/tests/hydration/compiled/server/switch.js +179 -176
- package/tests/hydration/compiled/server/track-async-serialization.js +88 -70
- package/tests/hydration/compiled/server/try.js +31 -35
- package/tests/hydration/components/basic.tsrx +216 -258
- package/tests/hydration/components/composite.tsrx +32 -42
- package/tests/hydration/components/events.tsrx +81 -101
- package/tests/hydration/components/for.tsrx +270 -336
- package/tests/hydration/components/head.tsrx +43 -39
- package/tests/hydration/components/hmr.tsrx +16 -22
- package/tests/hydration/components/html-in-template.tsrx +15 -21
- package/tests/hydration/components/html.tsrx +442 -526
- package/tests/hydration/components/if-children.tsrx +107 -125
- package/tests/hydration/components/if.tsrx +68 -90
- package/tests/hydration/components/mixed-control-flow.tsrx +65 -72
- package/tests/hydration/components/nested-control-flow.tsrx +202 -216
- package/tests/hydration/components/portal.tsrx +33 -41
- package/tests/hydration/components/reactivity.tsrx +26 -34
- package/tests/hydration/components/return.tsrx +4 -6
- package/tests/hydration/components/switch.tsrx +73 -78
- package/tests/hydration/components/track-async-serialization.tsrx +83 -93
- package/tests/hydration/components/try.tsrx +37 -51
- package/tests/hydration/switch.test.js +8 -8
- package/tests/server/await.test.tsrx +3 -3
- package/tests/server/basic.attributes.test.tsrx +117 -162
- package/tests/server/basic.components.test.tsrx +164 -194
- package/tests/server/basic.test.tsrx +299 -199
- package/tests/server/compiler.test.tsrx +142 -72
- package/tests/server/composite.props.test.tsrx +54 -58
- package/tests/server/composite.test.tsrx +165 -167
- package/tests/server/context.test.tsrx +13 -17
- package/tests/server/dynamic-elements.test.tsrx +147 -148
- package/tests/server/for.test.tsrx +115 -84
- package/tests/server/head.test.tsrx +54 -31
- package/tests/server/html-nesting-validation.test.tsrx +16 -8
- package/tests/server/if.test.tsrx +49 -59
- package/tests/server/lazy-destructuring.test.tsrx +288 -366
- package/tests/server/return.test.tsrx +58 -36
- package/tests/server/streaming-ssr.test.tsrx +4 -4
- package/tests/server/style-identifier.test.tsrx +61 -69
- package/tests/server/switch.test.tsrx +89 -97
- package/tests/server/track-async-serialization.test.tsrx +85 -103
- package/tests/server/try.test.tsrx +275 -360
- package/tests/utils/ref-types.test.js +72 -0
- package/tests/utils/vite-plugin-config.test.js +41 -74
- package/types/index.d.ts +29 -4
- package/src/runtime/internal/client/compat.js +0 -40
- package/tests/utils/compiler-compat-config.test.js +0 -38
|
@@ -3,15 +3,16 @@ import { compile } from '@tsrx/ripple';
|
|
|
3
3
|
describe('CSS :global basic tests', () => {
|
|
4
4
|
it('applies global selector to all elements', () => {
|
|
5
5
|
const source = `
|
|
6
|
-
export function Test() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
export function Test() @{
|
|
7
|
+
<>
|
|
8
|
+
<div>{'content'}</div>
|
|
9
|
+
<style>
|
|
10
|
+
:global(div) {
|
|
11
|
+
color: red;
|
|
12
|
+
}
|
|
13
|
+
</style>
|
|
14
|
+
</>
|
|
15
|
+
}`;
|
|
15
16
|
const { css } = compile(source, 'test.tsrx');
|
|
16
17
|
|
|
17
18
|
expect(css).toContain('div {');
|
|
@@ -21,19 +22,20 @@ export function Test() { return <>
|
|
|
21
22
|
|
|
22
23
|
it('applies global selector with class', () => {
|
|
23
24
|
const source = `
|
|
24
|
-
export function Test() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
export function Test() @{
|
|
26
|
+
<>
|
|
27
|
+
<div class="foo">{'content'}</div>
|
|
28
|
+
<style>
|
|
29
|
+
:global(div.foo) {
|
|
30
|
+
color: pink;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:global(.foo) {
|
|
34
|
+
font-weight: bold;
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
37
|
+
</>
|
|
38
|
+
}`;
|
|
37
39
|
const { css } = compile(source, 'test.tsrx');
|
|
38
40
|
|
|
39
41
|
expect(css).toContain('div.foo {');
|
|
@@ -43,21 +45,22 @@ export function Test() { return <>
|
|
|
43
45
|
|
|
44
46
|
it('mixes global and local selectors', () => {
|
|
45
47
|
const source = `
|
|
46
|
-
export function Test() {
|
|
47
|
-
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
export function Test() @{
|
|
49
|
+
<>
|
|
50
|
+
<div>
|
|
51
|
+
<p class="foo">{'red/bold'}</p>
|
|
52
|
+
</div>
|
|
53
|
+
<style>
|
|
54
|
+
:global(div) .foo {
|
|
55
|
+
color: red;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:global(div) > .foo {
|
|
59
|
+
font-weight: bold;
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
62
|
+
</>
|
|
63
|
+
}`;
|
|
61
64
|
const { css } = compile(source, 'test.tsrx');
|
|
62
65
|
|
|
63
66
|
expect(css).toContain('div .foo');
|
|
@@ -67,21 +70,22 @@ export function Test() { return <>
|
|
|
67
70
|
|
|
68
71
|
it('handles global block syntax', () => {
|
|
69
72
|
const source = `
|
|
70
|
-
export function Test() {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
export function Test() @{
|
|
74
|
+
<>
|
|
75
|
+
<div>{'content'}</div>
|
|
76
|
+
<style>
|
|
77
|
+
:global {
|
|
78
|
+
.x {
|
|
79
|
+
color: green;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.a, .selector, .list {
|
|
83
|
+
color: green;
|
|
84
|
+
}
|
|
81
85
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
86
|
+
</style>
|
|
87
|
+
</>
|
|
88
|
+
}`;
|
|
85
89
|
const { css } = compile(source, 'test.tsrx');
|
|
86
90
|
|
|
87
91
|
expect(css).toContain('.x {');
|
|
@@ -91,19 +95,20 @@ export function Test() { return <>
|
|
|
91
95
|
|
|
92
96
|
it('handles global with pseudo-classes', () => {
|
|
93
97
|
const source = `
|
|
94
|
-
export function Test() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
98
|
+
export function Test() @{
|
|
99
|
+
<>
|
|
100
|
+
<button>{'click'}</button>
|
|
101
|
+
<style>
|
|
102
|
+
:global(button:hover) {
|
|
103
|
+
opacity: 0.8;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
:global(button):focus {
|
|
107
|
+
outline: none;
|
|
108
|
+
}
|
|
109
|
+
</style>
|
|
110
|
+
</>
|
|
111
|
+
}`;
|
|
107
112
|
const { css } = compile(source, 'test.tsrx');
|
|
108
113
|
|
|
109
114
|
expect(css).toContain('button:hover {');
|
|
@@ -113,17 +118,18 @@ export function Test() { return <>
|
|
|
113
118
|
|
|
114
119
|
it('handles multiple global selectors in selector list', () => {
|
|
115
120
|
const source = `
|
|
116
|
-
export function Test() {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
121
|
+
export function Test() @{
|
|
122
|
+
<>
|
|
123
|
+
<div>{'content'}</div>
|
|
124
|
+
<style>
|
|
125
|
+
:global(html),
|
|
126
|
+
:global(body) {
|
|
127
|
+
margin: 0;
|
|
128
|
+
padding: 0;
|
|
129
|
+
}
|
|
130
|
+
</style>
|
|
131
|
+
</>
|
|
132
|
+
}`;
|
|
127
133
|
const { css } = compile(source, 'test.tsrx');
|
|
128
134
|
|
|
129
135
|
expect(css).toContain('html,');
|
|
@@ -132,29 +138,30 @@ export function Test() { return <>
|
|
|
132
138
|
|
|
133
139
|
it('scopes local selectors while keeping globals unscoped', () => {
|
|
134
140
|
const source = `
|
|
135
|
-
export function Test() {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
</
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
141
|
+
export function Test() @{
|
|
142
|
+
<>
|
|
143
|
+
<div class="styled-container">
|
|
144
|
+
<h1>{'Styled heading'}</h1>
|
|
145
|
+
<p class="text">{'Styled paragraph'}</p>
|
|
146
|
+
</div>
|
|
147
|
+
<style>
|
|
148
|
+
.styled-container {
|
|
149
|
+
background-color: rgb(0, 0, 255);
|
|
150
|
+
padding: 16px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
:global(h1) {
|
|
154
|
+
color: rgb(255, 255, 255);
|
|
155
|
+
font-size: 32px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.text {
|
|
159
|
+
color: rgb(200, 200, 200);
|
|
160
|
+
font-size: 14px;
|
|
161
|
+
}
|
|
162
|
+
</style>
|
|
163
|
+
</>
|
|
164
|
+
}`;
|
|
158
165
|
const { css } = compile(source, 'test.tsrx');
|
|
159
166
|
|
|
160
167
|
expect(css).toMatch(/\.styled-container\.tsrx-[a-z0-9]+/);
|
|
@@ -3,15 +3,17 @@ import { compile } from '@tsrx/ripple';
|
|
|
3
3
|
describe('CSS :global with classes and IDs', () => {
|
|
4
4
|
it('handles :global with single class', () => {
|
|
5
5
|
const source = `
|
|
6
|
-
export function Test() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
export function Test() @{
|
|
7
|
+
<>
|
|
8
|
+
<div class="foo">{'content'}</div>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
:global(.foo) {
|
|
12
|
+
color: red;
|
|
13
|
+
}
|
|
14
|
+
</style>
|
|
15
|
+
</>
|
|
16
|
+
}`;
|
|
15
17
|
const { css } = compile(source, 'test.tsrx');
|
|
16
18
|
|
|
17
19
|
expect(css).toContain('.foo {');
|
|
@@ -20,23 +22,25 @@ export function Test() { return <>
|
|
|
20
22
|
|
|
21
23
|
it('handles :global with chained classes', () => {
|
|
22
24
|
const source = `
|
|
23
|
-
export function Test() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
export function Test() @{
|
|
26
|
+
<>
|
|
27
|
+
<div class="foo bar">{'content'}</div>
|
|
28
|
+
|
|
29
|
+
<style>
|
|
30
|
+
:global(.foo.bar) {
|
|
31
|
+
color: red;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:global(.foo).bar {
|
|
35
|
+
color: blue;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.foo:global(.bar) {
|
|
39
|
+
color: green;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
42
|
+
</>
|
|
43
|
+
}`;
|
|
40
44
|
const { css } = compile(source, 'test.tsrx');
|
|
41
45
|
|
|
42
46
|
expect(css).toContain('.foo.bar {');
|
|
@@ -46,21 +50,23 @@ export function Test() { return <>
|
|
|
46
50
|
|
|
47
51
|
it('handles local class inside :global selector', () => {
|
|
48
52
|
const source = `
|
|
49
|
-
export function Test() {
|
|
50
|
-
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
export function Test() @{
|
|
54
|
+
<>
|
|
55
|
+
<div class="outer">
|
|
56
|
+
<span class="inner">{'content'}</span>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<style>
|
|
60
|
+
:global(.outer) .inner {
|
|
61
|
+
color: red;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:global(div) .foo {
|
|
65
|
+
color: blue;
|
|
66
|
+
}
|
|
67
|
+
</style>
|
|
68
|
+
</>
|
|
69
|
+
}`;
|
|
64
70
|
const { css } = compile(source, 'test.tsrx');
|
|
65
71
|
|
|
66
72
|
expect(css).toMatch(/\.outer \.inner\.tsrx-[a-z0-9]+ {/);
|
|
@@ -69,25 +75,27 @@ export function Test() { return <>
|
|
|
69
75
|
|
|
70
76
|
it('handles :global with ID selectors', () => {
|
|
71
77
|
const source = `
|
|
72
|
-
export function Test() {
|
|
73
|
-
|
|
74
|
-
<div id="
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
export function Test() @{
|
|
79
|
+
<>
|
|
80
|
+
<div id="app">
|
|
81
|
+
<div id="content">{'text'}</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<style>
|
|
85
|
+
:global(#app) {
|
|
86
|
+
width: 100%;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:global(#app) #content {
|
|
90
|
+
padding: 20px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
div :global(#content) {
|
|
94
|
+
margin: 0;
|
|
95
|
+
}
|
|
96
|
+
</style>
|
|
97
|
+
</>
|
|
98
|
+
}`;
|
|
91
99
|
const { css } = compile(source, 'test.tsrx');
|
|
92
100
|
|
|
93
101
|
expect(css).toContain('#app {');
|
|
@@ -98,23 +106,25 @@ export function Test() { return <>
|
|
|
98
106
|
|
|
99
107
|
it('handles :global with class and ID combination', () => {
|
|
100
108
|
const source = `
|
|
101
|
-
export function Test() {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
export function Test() @{
|
|
110
|
+
<>
|
|
111
|
+
<div id="app" class="container">{'content'}</div>
|
|
112
|
+
|
|
113
|
+
<style>
|
|
114
|
+
:global(#app.container) {
|
|
115
|
+
color: red;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
:global(.container)#app {
|
|
119
|
+
color: blue;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
#app:global(.container) {
|
|
123
|
+
color: green;
|
|
124
|
+
}
|
|
125
|
+
</style>
|
|
126
|
+
</>
|
|
127
|
+
}`;
|
|
118
128
|
const { css } = compile(source, 'test.tsrx');
|
|
119
129
|
|
|
120
130
|
expect(css).toContain('#app.container {');
|
|
@@ -124,23 +134,25 @@ export function Test() { return <>
|
|
|
124
134
|
|
|
125
135
|
it('handles multiple classes with :global', () => {
|
|
126
136
|
const source = `
|
|
127
|
-
export function Test() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
export function Test() @{
|
|
138
|
+
<>
|
|
139
|
+
<div class="a b c">{'content'}</div>
|
|
140
|
+
|
|
141
|
+
<style>
|
|
142
|
+
:global(.a).b.c {
|
|
143
|
+
color: red;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.a:global(.b).c {
|
|
147
|
+
color: blue;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.a.b:global(.c) {
|
|
151
|
+
color: green;
|
|
152
|
+
}
|
|
153
|
+
</style>
|
|
154
|
+
</>
|
|
155
|
+
}`;
|
|
144
156
|
const { css } = compile(source, 'test.tsrx');
|
|
145
157
|
|
|
146
158
|
expect((css.match(/\.a\.b\.c\.tsrx-[a-z0-9]+ {/g) || []).length).toBe(2);
|
|
@@ -149,27 +161,29 @@ export function Test() { return <>
|
|
|
149
161
|
|
|
150
162
|
it('handles :global with class descendant selectors', () => {
|
|
151
163
|
const source = `
|
|
152
|
-
export function Test() {
|
|
153
|
-
|
|
154
|
-
<div class="
|
|
155
|
-
<div class="
|
|
164
|
+
export function Test() @{
|
|
165
|
+
<>
|
|
166
|
+
<div class="outer">
|
|
167
|
+
<div class="middle">
|
|
168
|
+
<div class="inner">{'content'}</div>
|
|
169
|
+
</div>
|
|
156
170
|
</div>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
|
|
172
|
+
<style>
|
|
173
|
+
:global(.outer) .middle .inner {
|
|
174
|
+
color: red;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.outer :global(.middle .inner) {
|
|
178
|
+
color: blue;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.outer .middle:global(.inner) {
|
|
182
|
+
color: green;
|
|
183
|
+
}
|
|
184
|
+
</style>
|
|
185
|
+
</>
|
|
186
|
+
}`;
|
|
173
187
|
const { css } = compile(source, 'test.tsrx');
|
|
174
188
|
|
|
175
189
|
expect(css).toMatch(/\.outer \.middle\.tsrx-[a-z0-9]+ \.inner:where\(\.tsrx-[a-z0-9]+\)/);
|