autoprefixer 9.8.7 → 10.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +999 -0
- package/README.md +0 -3
- package/bin/autoprefixer +11 -11
- package/data/prefixes.js +799 -545
- package/lib/at-rule.js +23 -50
- package/lib/autoprefixer.js +108 -97
- package/lib/brackets.js +31 -44
- package/lib/browsers.js +54 -71
- package/lib/declaration.js +122 -178
- package/lib/hacks/align-content.js +24 -54
- package/lib/hacks/align-items.js +23 -53
- package/lib/hacks/align-self.js +32 -60
- package/lib/hacks/animation.js +11 -29
- package/lib/hacks/appearance.js +19 -35
- package/lib/hacks/backdrop-filter.js +16 -31
- package/lib/hacks/background-clip.js +19 -36
- package/lib/hacks/background-size.js +16 -31
- package/lib/hacks/block-logical.js +28 -36
- package/lib/hacks/border-image.js +9 -27
- package/lib/hacks/border-radius.js +22 -44
- package/lib/hacks/break-props.js +38 -51
- package/lib/hacks/color-adjust.js +11 -30
- package/lib/hacks/cross-fade.js +29 -48
- package/lib/hacks/display-flex.js +32 -61
- package/lib/hacks/display-grid.js +12 -32
- package/lib/hacks/filter-value.js +8 -25
- package/lib/hacks/filter.js +13 -27
- package/lib/hacks/flex-basis.js +21 -54
- package/lib/hacks/flex-direction.js +41 -77
- package/lib/hacks/flex-flow.js +33 -61
- package/lib/hacks/flex-grow.js +16 -43
- package/lib/hacks/flex-shrink.js +21 -54
- package/lib/hacks/flex-spec.js +7 -10
- package/lib/hacks/flex-wrap.js +11 -32
- package/lib/hacks/flex.js +27 -58
- package/lib/hacks/fullscreen.js +10 -30
- package/lib/hacks/gradient.js +240 -330
- package/lib/hacks/grid-area.js +25 -43
- package/lib/hacks/grid-column-align.js +14 -34
- package/lib/hacks/grid-end.js +30 -45
- package/lib/hacks/grid-row-align.js +14 -34
- package/lib/hacks/grid-row-column.js +20 -39
- package/lib/hacks/grid-rows-columns.js +75 -99
- package/lib/hacks/grid-start.js +17 -39
- package/lib/hacks/grid-template-areas.js +59 -76
- package/lib/hacks/grid-template.js +40 -61
- package/lib/hacks/grid-utils.js +686 -716
- package/lib/hacks/image-rendering.js +24 -47
- package/lib/hacks/image-set.js +10 -30
- package/lib/hacks/inline-logical.js +26 -32
- package/lib/hacks/intrinsic.js +40 -53
- package/lib/hacks/justify-content.js +26 -57
- package/lib/hacks/mask-border.js +28 -36
- package/lib/hacks/mask-composite.js +41 -57
- package/lib/hacks/order.js +22 -52
- package/lib/hacks/overscroll-behavior.js +16 -37
- package/lib/hacks/pixelated.js +16 -40
- package/lib/hacks/place-self.js +18 -41
- package/lib/hacks/placeholder-shown.js +9 -28
- package/lib/hacks/placeholder.js +15 -38
- package/lib/hacks/text-decoration-skip-ink.js +14 -29
- package/lib/hacks/text-decoration.js +20 -31
- package/lib/hacks/text-emphasis-position.js +9 -28
- package/lib/hacks/transform-decl.js +43 -69
- package/lib/hacks/user-select.js +19 -27
- package/lib/hacks/writing-mode.js +19 -36
- package/lib/info.js +63 -93
- package/lib/old-selector.js +39 -60
- package/lib/old-value.js +17 -25
- package/lib/prefixer.js +83 -110
- package/lib/prefixes.js +233 -336
- package/lib/processor.js +420 -416
- package/lib/resolution.js +62 -98
- package/lib/selector.js +91 -139
- package/lib/supports.js +194 -246
- package/lib/transition.js +170 -265
- package/lib/utils.js +49 -72
- package/lib/value.js +77 -116
- package/lib/vendor.js +14 -0
- package/package.json +23 -12
package/lib/prefixer.js
CHANGED
|
@@ -1,167 +1,140 @@
|
|
|
1
|
-
|
|
1
|
+
let Browsers = require('./browsers')
|
|
2
|
+
let vendor = require('./vendor')
|
|
3
|
+
let utils = require('./utils')
|
|
2
4
|
|
|
3
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }
|
|
4
|
-
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
-
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
-
|
|
9
|
-
var vendor = require('postcss').vendor;
|
|
10
|
-
|
|
11
|
-
var Browsers = require('./browsers');
|
|
12
|
-
|
|
13
|
-
var utils = require('./utils');
|
|
14
5
|
/**
|
|
15
6
|
* Recursively clone objects
|
|
16
7
|
*/
|
|
8
|
+
function clone (obj, parent) {
|
|
9
|
+
let cloned = new obj.constructor()
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var cloned = new obj.constructor();
|
|
21
|
-
|
|
22
|
-
for (var _i = 0, _Object$keys = Object.keys(obj || {}); _i < _Object$keys.length; _i++) {
|
|
23
|
-
var i = _Object$keys[_i];
|
|
24
|
-
var value = obj[i];
|
|
25
|
-
|
|
11
|
+
for (let i of Object.keys(obj || {})) {
|
|
12
|
+
let value = obj[i]
|
|
26
13
|
if (i === 'parent' && typeof value === 'object') {
|
|
27
14
|
if (parent) {
|
|
28
|
-
cloned[i] = parent
|
|
15
|
+
cloned[i] = parent
|
|
29
16
|
}
|
|
30
17
|
} else if (i === 'source' || i === null) {
|
|
31
|
-
cloned[i] = value
|
|
18
|
+
cloned[i] = value
|
|
32
19
|
} else if (Array.isArray(value)) {
|
|
33
|
-
cloned[i] = value.map(
|
|
34
|
-
return _clone(x, cloned);
|
|
35
|
-
});
|
|
20
|
+
cloned[i] = value.map(x => clone(x, cloned))
|
|
36
21
|
} else if (i !== '_autoprefixerPrefix' && i !== '_autoprefixerValues') {
|
|
37
22
|
if (typeof value === 'object' && value !== null) {
|
|
38
|
-
value =
|
|
23
|
+
value = clone(value, cloned)
|
|
39
24
|
}
|
|
40
|
-
|
|
41
|
-
cloned[i] = value;
|
|
25
|
+
cloned[i] = value
|
|
42
26
|
}
|
|
43
27
|
}
|
|
44
28
|
|
|
45
|
-
return cloned
|
|
29
|
+
return cloned
|
|
46
30
|
}
|
|
47
31
|
|
|
48
|
-
|
|
32
|
+
class Prefixer {
|
|
49
33
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
var _this = this;
|
|
54
|
-
|
|
34
|
+
* Add hack to selected names
|
|
35
|
+
*/
|
|
36
|
+
static hack (klass) {
|
|
55
37
|
if (!this.hacks) {
|
|
56
|
-
this.hacks = {}
|
|
38
|
+
this.hacks = {}
|
|
57
39
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
});
|
|
40
|
+
return klass.names.map(name => {
|
|
41
|
+
this.hacks[name] = klass
|
|
42
|
+
return this.hacks[name]
|
|
43
|
+
})
|
|
63
44
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Load hacks for some names
|
|
66
|
-
*/
|
|
67
|
-
;
|
|
68
|
-
|
|
69
|
-
Prefixer.load = function load(name, prefixes, all) {
|
|
70
|
-
var Klass = this.hacks && this.hacks[name];
|
|
71
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Load hacks for some names
|
|
48
|
+
*/
|
|
49
|
+
static load (name, prefixes, all) {
|
|
50
|
+
let Klass = this.hacks && this.hacks[name]
|
|
72
51
|
if (Klass) {
|
|
73
|
-
return new Klass(name, prefixes, all)
|
|
52
|
+
return new Klass(name, prefixes, all)
|
|
74
53
|
} else {
|
|
75
|
-
return new this(name, prefixes, all)
|
|
54
|
+
return new this(name, prefixes, all)
|
|
76
55
|
}
|
|
77
56
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Clone node and clean autprefixer custom caches
|
|
80
|
-
*/
|
|
81
|
-
;
|
|
82
|
-
|
|
83
|
-
Prefixer.clone = function clone(node, overrides) {
|
|
84
|
-
var cloned = _clone(node);
|
|
85
57
|
|
|
86
|
-
|
|
87
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Clone node and clean autprefixer custom caches
|
|
60
|
+
*/
|
|
61
|
+
static clone (node, overrides) {
|
|
62
|
+
let cloned = clone(node)
|
|
63
|
+
for (let name in overrides) {
|
|
64
|
+
cloned[name] = overrides[name]
|
|
88
65
|
}
|
|
89
|
-
|
|
90
|
-
return cloned;
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
function Prefixer(name, prefixes, all) {
|
|
94
|
-
this.prefixes = prefixes;
|
|
95
|
-
this.name = name;
|
|
96
|
-
this.all = all;
|
|
66
|
+
return cloned
|
|
97
67
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Find prefix in node parents
|
|
100
|
-
*/
|
|
101
68
|
|
|
69
|
+
constructor (name, prefixes, all) {
|
|
70
|
+
this.prefixes = prefixes
|
|
71
|
+
this.name = name
|
|
72
|
+
this.all = all
|
|
73
|
+
}
|
|
102
74
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Find prefix in node parents
|
|
77
|
+
*/
|
|
78
|
+
parentPrefix (node) {
|
|
79
|
+
let prefix
|
|
107
80
|
|
|
108
81
|
if (typeof node._autoprefixerPrefix !== 'undefined') {
|
|
109
|
-
prefix = node._autoprefixerPrefix
|
|
82
|
+
prefix = node._autoprefixerPrefix
|
|
110
83
|
} else if (node.type === 'decl' && node.prop[0] === '-') {
|
|
111
|
-
prefix = vendor.prefix(node.prop)
|
|
84
|
+
prefix = vendor.prefix(node.prop)
|
|
112
85
|
} else if (node.type === 'root') {
|
|
113
|
-
prefix = false
|
|
114
|
-
} else if (
|
|
115
|
-
|
|
86
|
+
prefix = false
|
|
87
|
+
} else if (
|
|
88
|
+
node.type === 'rule' &&
|
|
89
|
+
node.selector.includes(':-') &&
|
|
90
|
+
/:(-\w+-)/.test(node.selector)
|
|
91
|
+
) {
|
|
92
|
+
prefix = node.selector.match(/:(-\w+-)/)[1]
|
|
116
93
|
} else if (node.type === 'atrule' && node.name[0] === '-') {
|
|
117
|
-
prefix = vendor.prefix(node.name)
|
|
94
|
+
prefix = vendor.prefix(node.name)
|
|
118
95
|
} else {
|
|
119
|
-
prefix = this.parentPrefix(node.parent)
|
|
96
|
+
prefix = this.parentPrefix(node.parent)
|
|
120
97
|
}
|
|
121
98
|
|
|
122
99
|
if (!Browsers.prefixes().includes(prefix)) {
|
|
123
|
-
prefix = false
|
|
100
|
+
prefix = false
|
|
124
101
|
}
|
|
125
102
|
|
|
126
|
-
node._autoprefixerPrefix = prefix
|
|
127
|
-
|
|
103
|
+
node._autoprefixerPrefix = prefix
|
|
104
|
+
|
|
105
|
+
return node._autoprefixerPrefix
|
|
128
106
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Clone node with prefixes
|
|
131
|
-
*/
|
|
132
|
-
;
|
|
133
107
|
|
|
134
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Clone node with prefixes
|
|
110
|
+
*/
|
|
111
|
+
process (node, result) {
|
|
135
112
|
if (!this.check(node)) {
|
|
136
|
-
return undefined
|
|
113
|
+
return undefined
|
|
137
114
|
}
|
|
138
115
|
|
|
139
|
-
|
|
140
|
-
var prefixes = this.prefixes.filter(function (prefix) {
|
|
141
|
-
return !parent || parent === utils.removeNote(prefix);
|
|
142
|
-
});
|
|
143
|
-
var added = [];
|
|
116
|
+
let parent = this.parentPrefix(node)
|
|
144
117
|
|
|
145
|
-
|
|
146
|
-
|
|
118
|
+
let prefixes = this.prefixes.filter(
|
|
119
|
+
prefix => !parent || parent === utils.removeNote(prefix)
|
|
120
|
+
)
|
|
147
121
|
|
|
122
|
+
let added = []
|
|
123
|
+
for (let prefix of prefixes) {
|
|
148
124
|
if (this.add(node, prefix, added.concat([prefix]), result)) {
|
|
149
|
-
added.push(prefix)
|
|
125
|
+
added.push(prefix)
|
|
150
126
|
}
|
|
151
127
|
}
|
|
152
128
|
|
|
153
|
-
return added
|
|
129
|
+
return added
|
|
154
130
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Shortcut for Prefixer.clone
|
|
157
|
-
*/
|
|
158
|
-
;
|
|
159
|
-
|
|
160
|
-
_proto.clone = function clone(node, overrides) {
|
|
161
|
-
return Prefixer.clone(node, overrides);
|
|
162
|
-
};
|
|
163
131
|
|
|
164
|
-
|
|
165
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Shortcut for Prefixer.clone
|
|
134
|
+
*/
|
|
135
|
+
clone (node, overrides) {
|
|
136
|
+
return Prefixer.clone(node, overrides)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
166
139
|
|
|
167
|
-
module.exports = Prefixer
|
|
140
|
+
module.exports = Prefixer
|