* Cache prefixes data to fast CSS processing
(selected)
| 233 | * Cache prefixes data to fast CSS processing |
| 234 | */ |
| 235 | preprocess(selected) { |
| 236 | let add = { |
| 237 | '@supports': new Supports(Prefixes, this), |
| 238 | 'selectors': [] |
| 239 | } |
| 240 | for (let name in selected.add) { |
| 241 | let prefixes = selected.add[name] |
| 242 | if (name === '@keyframes' || name === '@viewport') { |
| 243 | add[name] = new AtRule(name, prefixes, this) |
| 244 | } else if (name === '@resolution') { |
| 245 | add[name] = new Resolution(name, prefixes, this) |
| 246 | } else if (this.data[name].selector) { |
| 247 | add.selectors.push(Selector.load(name, prefixes, this)) |
| 248 | } else { |
| 249 | let props = this.data[name].props |
| 250 | |
| 251 | if (props) { |
| 252 | let value = Value.load(name, prefixes, this) |
| 253 | for (let prop of props) { |
| 254 | if (!add[prop]) { |
| 255 | add[prop] = { values: [] } |
| 256 | } |
| 257 | add[prop].values.push(value) |
| 258 | } |
| 259 | } else { |
| 260 | let values = (add[name] && add[name].values) || [] |
| 261 | add[name] = Declaration.load(name, prefixes, this) |
| 262 | add[name].values = values |
| 263 | } |
| 264 | } |
| 265 | } |
| 266 | |
| 267 | let remove = { selectors: [] } |
| 268 | for (let name in selected.remove) { |
| 269 | let prefixes = selected.remove[name] |
| 270 | if (this.data[name].selector) { |
| 271 | let selector = Selector.load(name, prefixes) |
| 272 | for (let prefix of prefixes) { |
| 273 | remove.selectors.push(selector.old(prefix)) |
| 274 | } |
| 275 | } else if (name === '@keyframes' || name === '@viewport') { |
| 276 | for (let prefix of prefixes) { |
| 277 | let prefixed = `@${prefix}${name.slice(1)}` |
| 278 | remove[prefixed] = { remove: true } |
| 279 | } |
| 280 | } else if (name === '@resolution') { |
| 281 | remove[name] = new Resolution(name, prefixes, this) |
| 282 | } else { |
| 283 | let props = this.data[name].props |
| 284 | if (props) { |
| 285 | let value = Value.load(name, [], this) |
| 286 | for (let prefix of prefixes) { |
| 287 | let old = value.old(prefix) |
| 288 | if (old) { |
| 289 | for (let prop of props) { |
| 290 | if (!remove[prop]) { |
| 291 | remove[prop] = {} |
| 292 | } |
no test coverage detected