Skip to content

Commit d53461f

Browse files
committed
feat(preset-mini, preset-wind4): optimize contain-intrinsic-size rule
close #5045
1 parent 126d15a commit d53461f

File tree

5 files changed

+38
-2
lines changed

5 files changed

+38
-2
lines changed

packages-presets/preset-mini/src/_rules/static.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,19 @@ export const whitespaces: Rule[] = [
7474
]
7575

7676
export const contentVisibility: Rule[] = [
77-
[/^intrinsic-size-(.+)$/, ([, d]) => ({ 'contain-intrinsic-size': h.bracket.cssvar.global.fraction.rem(d) }), { autocomplete: 'intrinsic-size-<num>' }],
77+
[/^intrinsic(?:-(block|inline|w|h))?(?:-size)?-(.+)$/, ([, d, s]) => {
78+
const sizeMap = {
79+
block: 'block-size',
80+
inline: 'inline-size',
81+
w: 'width',
82+
h: 'height',
83+
}
84+
return { [`contain-intrinsic-${sizeMap[d as keyof typeof sizeMap] ?? 'size'}`]: h.bracket.cssvar.global.fraction.rem(s) }
85+
}, { autocomplete: [
86+
'intrinsic-size-<num>',
87+
'intrinsic-<num>',
88+
'intrinsic-(block|inline|w|h)-<num>',
89+
] }],
7890
['content-visibility-visible', { 'content-visibility': 'visible' }],
7991
['content-visibility-hidden', { 'content-visibility': 'hidden' }],
8092
['content-visibility-auto', { 'content-visibility': 'auto' }],

packages-presets/preset-wind4/src/rules/static.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,19 @@ export const whitespaces: Rule<Theme>[] = [
8585
]
8686

8787
export const contentVisibility: Rule<Theme>[] = [
88-
[/^intrinsic-size-(.+)$/, ([, d]) => ({ 'contain-intrinsic-size': h.bracket.cssvar.global.fraction.rem(d) }), { autocomplete: 'intrinsic-size-<num>' }],
88+
[/^intrinsic(?:-(block|inline|w|h))?(?:-size)?-(.+)$/, ([, d, s]) => {
89+
const sizeMap = {
90+
block: 'block-size',
91+
inline: 'inline-size',
92+
w: 'width',
93+
h: 'height',
94+
}
95+
return { [`contain-intrinsic-${sizeMap[d as keyof typeof sizeMap] ?? 'size'}`]: h.bracket.cssvar.global.fraction.rem(s) }
96+
}, { autocomplete: [
97+
'intrinsic-size-<num>',
98+
'intrinsic-<num>',
99+
'intrinsic-(block|inline|w|h)-<num>',
100+
] }],
89101
['content-visibility-visible', { 'content-visibility': 'visible' }],
90102
['content-visibility-hidden', { 'content-visibility': 'hidden' }],
91103
['content-visibility-auto', { 'content-visibility': 'auto' }],

test/assets/output/preset-mini-targets.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,10 +1098,14 @@ unocss .scope-\[unocss\]\:block{display:block;}
10981098
.will-change-scroll{will-change:scroll-position;}
10991099
.will-change-transform{will-change:transform;}
11001100
.will-change-unset{will-change:unset;}
1101+
.intrinsic-block-unset{contain-intrinsic-block-size:unset;}
1102+
.intrinsic-h-size-1\/2{contain-intrinsic-height:50%;}
1103+
.intrinsic-inline-size-\[auto\ 300px\]{contain-intrinsic-inline-size:auto 300px;}
11011104
.intrinsic-size-1\/2{contain-intrinsic-size:50%;}
11021105
.intrinsic-size-200{contain-intrinsic-size:50rem;}
11031106
.intrinsic-size-200px{contain-intrinsic-size:200px;}
11041107
.intrinsic-size-unset{contain-intrinsic-size:unset;}
1108+
.intrinsic-w-200px{contain-intrinsic-width:200px;}
11051109
.content-visibility-visible{content-visibility:visible;}
11061110
.content-visibility-hidden{content-visibility:hidden;}
11071111
.content-visibility-auto{content-visibility:auto;}

test/assets/output/preset-wind4-targets.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,10 +1017,14 @@ unocss .scope-\[unocss\]\:block{display:block;}
10171017
.whitespace-unset{white-space:unset;}
10181018
.ws-nowrap{white-space:nowrap;}
10191019
.ws-revert{white-space:revert;}
1020+
.intrinsic-block-unset{contain-intrinsic-block-size:unset;}
1021+
.intrinsic-h-size-1\/2{contain-intrinsic-height:50%;}
1022+
.intrinsic-inline-size-\[auto\ 300px\]{contain-intrinsic-inline-size:auto 300px;}
10201023
.intrinsic-size-1\/2{contain-intrinsic-size:50%;}
10211024
.intrinsic-size-200{contain-intrinsic-size:50rem;}
10221025
.intrinsic-size-200px{contain-intrinsic-size:200px;}
10231026
.intrinsic-size-unset{contain-intrinsic-size:unset;}
1027+
.intrinsic-w-200px{contain-intrinsic-width:200px;}
10241028
.content-visibility-visible{content-visibility:visible;}
10251029
.content-visibility-hidden{content-visibility:hidden;}
10261030
.content-visibility-auto{content-visibility:auto;}

test/assets/preset-mini-targets.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,10 @@ export const presetMiniTargets: string[] = [
787787
'intrinsic-size-200px',
788788
'intrinsic-size-1/2',
789789
'intrinsic-size-unset',
790+
'intrinsic-w-200px',
791+
'intrinsic-h-size-1/2',
792+
'intrinsic-block-unset',
793+
'intrinsic-inline-size-[auto 300px]',
790794

791795
// svg
792796
'fill-none',

0 commit comments

Comments
 (0)