1
1
import selectorParser from 'postcss-selector-parser'
2
2
import escapeCommas from './escapeCommas'
3
3
import { withAlphaValue } from './withAlphaVariable'
4
- import isKeyframeRule from './isKeyframeRule'
5
4
import {
6
5
normalize ,
7
6
length ,
@@ -19,34 +18,10 @@ import {
19
18
} from './dataTypes'
20
19
import negateValue from './negateValue'
21
20
22
- export function applyStateToMarker ( selector , marker , state , join ) {
23
- let markerIdx = selector . search ( new RegExp ( `${ marker } [:[]` ) )
24
-
25
- if ( markerIdx === - 1 ) {
26
- return join ( marker + state , selector )
27
- }
28
-
29
- let markerSelector = selector . slice ( markerIdx , selector . indexOf ( ' ' , markerIdx ) )
30
-
31
- return join (
32
- marker + state + markerSelector . slice ( markerIdx + marker . length ) ,
33
- selector . replace ( markerSelector , '' )
34
- )
35
- }
36
-
37
21
export function updateAllClasses ( selectors , updateClass ) {
38
22
let parser = selectorParser ( ( selectors ) => {
39
23
selectors . walkClasses ( ( sel ) => {
40
- let updatedClass = updateClass ( sel . value , {
41
- withAttr ( className , attr ) {
42
- sel . parent . insertAfter ( sel , selectorParser . attribute ( { attribute : attr . slice ( 1 , - 1 ) } ) )
43
- return className
44
- } ,
45
- withPseudo ( className , pseudo ) {
46
- sel . parent . insertAfter ( sel , selectorParser . pseudo ( { value : pseudo } ) )
47
- return className
48
- } ,
49
- } )
24
+ let updatedClass = updateClass ( sel . value )
50
25
sel . value = updatedClass
51
26
if ( sel . raws && sel . raws . value ) {
52
27
sel . raws . value = escapeCommas ( sel . raws . value )
@@ -59,115 +34,6 @@ export function updateAllClasses(selectors, updateClass) {
59
34
return result
60
35
}
61
36
62
- export function updateLastClasses ( selectors , updateClass ) {
63
- let parser = selectorParser ( ( selectors ) => {
64
- selectors . each ( ( sel ) => {
65
- let lastClass = sel . filter ( ( { type } ) => type === 'class' ) . pop ( )
66
-
67
- if ( lastClass === undefined ) {
68
- return
69
- }
70
-
71
- let updatedClass = updateClass ( lastClass . value , {
72
- withPseudo ( className , pseudo ) {
73
- lastClass . parent . insertAfter ( lastClass , selectorParser . pseudo ( { value : `${ pseudo } ` } ) )
74
- return className
75
- } ,
76
- } )
77
- lastClass . value = updatedClass
78
- if ( lastClass . raws && lastClass . raws . value ) {
79
- lastClass . raws . value = escapeCommas ( lastClass . raws . value )
80
- }
81
- } )
82
- } )
83
- let result = parser . processSync ( selectors )
84
-
85
- return result
86
- }
87
-
88
- function splitByNotEscapedCommas ( str ) {
89
- let chunks = [ ]
90
- let currentChunk = ''
91
- for ( let i = 0 ; i < str . length ; i ++ ) {
92
- if ( str [ i ] === ',' && str [ i - 1 ] !== '\\' ) {
93
- chunks . push ( currentChunk )
94
- currentChunk = ''
95
- } else {
96
- currentChunk += str [ i ]
97
- }
98
- }
99
- chunks . push ( currentChunk )
100
- return chunks
101
- }
102
-
103
- export function transformAllSelectors ( transformSelector , { wrap, withRule } = { } ) {
104
- return ( { container } ) => {
105
- container . walkRules ( ( rule ) => {
106
- if ( isKeyframeRule ( rule ) ) {
107
- return rule
108
- }
109
- let transformed = splitByNotEscapedCommas ( rule . selector ) . map ( transformSelector ) . join ( ',' )
110
- rule . selector = transformed
111
- if ( withRule ) {
112
- withRule ( rule )
113
- }
114
- return rule
115
- } )
116
-
117
- if ( wrap ) {
118
- let wrapper = wrap ( )
119
- let nodes = container . nodes
120
- container . removeAll ( )
121
- wrapper . append ( nodes )
122
- container . append ( wrapper )
123
- }
124
- }
125
- }
126
-
127
- export function transformAllClasses ( transformClass , { wrap, withRule } = { } ) {
128
- return ( { container } ) => {
129
- container . walkRules ( ( rule ) => {
130
- let selector = rule . selector
131
- let variantSelector = updateAllClasses ( selector , transformClass )
132
- rule . selector = variantSelector
133
- if ( withRule ) {
134
- withRule ( rule )
135
- }
136
- return rule
137
- } )
138
-
139
- if ( wrap ) {
140
- let wrapper = wrap ( )
141
- let nodes = container . nodes
142
- container . removeAll ( )
143
- wrapper . append ( nodes )
144
- container . append ( wrapper )
145
- }
146
- }
147
- }
148
-
149
- export function transformLastClasses ( transformClass , { wrap, withRule } = { } ) {
150
- return ( { container } ) => {
151
- container . walkRules ( ( rule ) => {
152
- let selector = rule . selector
153
- let variantSelector = updateLastClasses ( selector , transformClass )
154
- rule . selector = variantSelector
155
- if ( withRule ) {
156
- withRule ( rule )
157
- }
158
- return rule
159
- } )
160
-
161
- if ( wrap ) {
162
- let wrapper = wrap ( )
163
- let nodes = container . nodes
164
- container . removeAll ( )
165
- wrapper . append ( nodes )
166
- container . append ( wrapper )
167
- }
168
- }
169
- }
170
-
171
37
function resolveArbitraryValue ( modifier , validate ) {
172
38
if ( ! isArbitraryValue ( modifier ) ) {
173
39
return undefined
0 commit comments