File tree 4 files changed +74
-8
lines changed
experimental/css-has-pseudo
4 files changed +74
-8
lines changed Original file line number Diff line number Diff line change 1
1
# Changes to CSS Has Pseudo
2
2
3
+ ### Unreleased
4
+
5
+ - Improved : selector specificity calculation
6
+
3
7
### 0.1.1 (January 5, 2022)
4
8
5
9
- Added : support for id and tag selector specificity.
Original file line number Diff line number Diff line change @@ -131,10 +131,39 @@ function selectorSpecificity(node) {
131
131
case ':has' :
132
132
case ':not' :
133
133
{
134
- const pseudoSpecificity = selectorSpecificity ( node . nodes [ 0 ] ) ;
135
- a += pseudoSpecificity . a ;
136
- b += pseudoSpecificity . b ;
137
- c += pseudoSpecificity . c ;
134
+ if ( node . nodes && node . nodes . length > 0 ) {
135
+ let mostSpecificListItem = {
136
+ a : 0 ,
137
+ b : 0 ,
138
+ c : 0 ,
139
+ } ;
140
+
141
+ node . nodes . forEach ( ( child ) => {
142
+ const itemSpecificity = selectorSpecificity ( child ) ;
143
+ if ( itemSpecificity . a > mostSpecificListItem . a ) {
144
+ mostSpecificListItem = itemSpecificity ;
145
+ return ;
146
+ } else if ( itemSpecificity . a < mostSpecificListItem . a ) {
147
+ return ;
148
+ }
149
+
150
+ if ( itemSpecificity . b > mostSpecificListItem . b ) {
151
+ mostSpecificListItem = itemSpecificity ;
152
+ return ;
153
+ } else if ( itemSpecificity . b < mostSpecificListItem . b ) {
154
+ return ;
155
+ }
156
+
157
+ if ( itemSpecificity . c > mostSpecificListItem . c ) {
158
+ mostSpecificListItem = itemSpecificity ;
159
+ return ;
160
+ }
161
+ } ) ;
162
+
163
+ a += mostSpecificListItem . a ;
164
+ b += mostSpecificListItem . b ;
165
+ c += mostSpecificListItem . c ;
166
+ }
138
167
break ;
139
168
}
140
169
Original file line number Diff line number Diff line change 1
1
# Changes to PostCSS Nesting
2
2
3
+ ### Unreleased
4
+
5
+ - Improved : selector specificity calculation
6
+
3
7
### 10.1.1 (January 2, 2022)
4
8
5
9
- Removed Sourcemaps from package tarball.
Original file line number Diff line number Diff line change @@ -66,10 +66,39 @@ export function selectorSpecificity(node) {
66
66
case ':has' :
67
67
case ':not' :
68
68
{
69
- const pseudoSpecificity = selectorSpecificity ( node . nodes [ 0 ] ) ;
70
- a += pseudoSpecificity . a ;
71
- b += pseudoSpecificity . b ;
72
- c += pseudoSpecificity . c ;
69
+ if ( node . nodes && node . nodes . length > 0 ) {
70
+ let mostSpecificListItem = {
71
+ a : 0 ,
72
+ b : 0 ,
73
+ c : 0 ,
74
+ } ;
75
+
76
+ node . nodes . forEach ( ( child ) => {
77
+ const itemSpecificity = selectorSpecificity ( child ) ;
78
+ if ( itemSpecificity . a > mostSpecificListItem . a ) {
79
+ mostSpecificListItem = itemSpecificity ;
80
+ return ;
81
+ } else if ( itemSpecificity . a < mostSpecificListItem . a ) {
82
+ return ;
83
+ }
84
+
85
+ if ( itemSpecificity . b > mostSpecificListItem . b ) {
86
+ mostSpecificListItem = itemSpecificity ;
87
+ return ;
88
+ } else if ( itemSpecificity . b < mostSpecificListItem . b ) {
89
+ return ;
90
+ }
91
+
92
+ if ( itemSpecificity . c > mostSpecificListItem . c ) {
93
+ mostSpecificListItem = itemSpecificity ;
94
+ return ;
95
+ }
96
+ } ) ;
97
+
98
+ a += mostSpecificListItem . a ;
99
+ b += mostSpecificListItem . b ;
100
+ c += mostSpecificListItem . c ;
101
+ }
73
102
break ;
74
103
}
75
104
You can’t perform that action at this time.
0 commit comments