source: node_modules/autoprefixer/lib/hacks/mask-composite.js@ 2058e5c

Last change on this file since 2058e5c was 2058e5c, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Working / before login

  • Property mode set to 100644
File size: 2.1 KB
Line 
1let Declaration = require('../declaration')
2
3class MaskComposite extends Declaration {
4 /**
5 * Prefix mask-composite for webkit
6 */
7 insert(decl, prefix, prefixes) {
8 let isCompositeProp = decl.prop === 'mask-composite'
9
10 let compositeValues
11
12 if (isCompositeProp) {
13 compositeValues = decl.value.split(',')
14 } else {
15 compositeValues = decl.value.match(MaskComposite.regexp) || []
16 }
17
18 compositeValues = compositeValues.map(el => el.trim()).filter(el => el)
19 let hasCompositeValues = compositeValues.length
20
21 let compositeDecl
22
23 if (hasCompositeValues) {
24 compositeDecl = this.clone(decl)
25 compositeDecl.value = compositeValues
26 .map(value => MaskComposite.oldValues[value] || value)
27 .join(', ')
28
29 if (compositeValues.includes('intersect')) {
30 compositeDecl.value += ', xor'
31 }
32
33 compositeDecl.prop = prefix + 'mask-composite'
34 }
35
36 if (isCompositeProp) {
37 if (!hasCompositeValues) {
38 return undefined
39 }
40
41 if (this.needCascade(decl)) {
42 compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix)
43 }
44
45 return decl.parent.insertBefore(decl, compositeDecl)
46 }
47
48 let cloned = this.clone(decl)
49 cloned.prop = prefix + cloned.prop
50
51 if (hasCompositeValues) {
52 cloned.value = cloned.value.replace(MaskComposite.regexp, '')
53 }
54
55 if (this.needCascade(decl)) {
56 cloned.raws.before = this.calcBefore(prefixes, decl, prefix)
57 }
58
59 decl.parent.insertBefore(decl, cloned)
60
61 if (!hasCompositeValues) {
62 return decl
63 }
64
65 if (this.needCascade(decl)) {
66 compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix)
67 }
68 return decl.parent.insertBefore(decl, compositeDecl)
69 }
70}
71
72MaskComposite.names = ['mask', 'mask-composite']
73
74MaskComposite.oldValues = {
75 add: 'source-over',
76 exclude: 'xor',
77 intersect: 'source-in',
78 subtract: 'source-out'
79}
80
81MaskComposite.regexp = new RegExp(
82 `\\s+(${Object.keys(MaskComposite.oldValues).join(
83 '|'
84 )})\\b(?!\\))\\s*(?=[,])`,
85 'ig'
86)
87
88module.exports = MaskComposite
Note: See TracBrowser for help on using the repository browser.