autoprefixer 8.4.1 → 8.5.0
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/AUTHORS +12 -1
- package/CHANGELOG.md +5 -0
- package/README.md +3 -3
- package/lib/hacks/gradient.js +102 -50
- package/lib/hacks/grid-rows-columns.js +6 -3
- package/lib/hacks/grid-template-areas.js +64 -2
- package/lib/hacks/grid-template.js +20 -4
- package/lib/hacks/grid-utils.js +123 -28
- package/package.json +3 -3
package/AUTHORS
CHANGED
|
@@ -46,6 +46,7 @@ Darius
|
|
|
46
46
|
David Narbutovich <vamnemne@gmail.com>
|
|
47
47
|
David Pike <david@evolution7.com.au>
|
|
48
48
|
Denis Sokolov <denis@sokolov.cc>
|
|
49
|
+
Diablohu <https://github.com/Diablohu>
|
|
49
50
|
Dominik Porada <dominik@porada.co>
|
|
50
51
|
Dominik Schilling <dominikschilling+git@gmail.com>
|
|
51
52
|
dotch <ch.weiss@hotmail.de>
|
|
@@ -61,10 +62,13 @@ Forrest York <https://github.com/badisa>
|
|
|
61
62
|
Google Inc.
|
|
62
63
|
Gregory Eremin <magnolia_fan@me.com>
|
|
63
64
|
GU Yiling <justice360@gmail.com>
|
|
65
|
+
Gustavo Real <https://github.com/kotfire>
|
|
64
66
|
Hallvord R. M. Steen <hallvord@hallvord.com>
|
|
65
67
|
heady <https://github.com/heady>
|
|
68
|
+
Huáng Jùnliàng <https://github.com/JLHwung>
|
|
66
69
|
Iain Beeston <iain.beeston@gmail.com>
|
|
67
70
|
Igor Adamenko <https://github.com/igoradamenko>
|
|
71
|
+
Filipe W. Lima <fwl.ufpe@gmail.com>
|
|
68
72
|
Jack Moore <hello@jacklmoore.com>
|
|
69
73
|
Jason Kuhrt <jasonkuhrt@me.com>
|
|
70
74
|
Jeff Escalante <hello@jenius.me>
|
|
@@ -98,15 +102,19 @@ Morton Fox <github@qslw.com>
|
|
|
98
102
|
mvasilkov <mvasilkov@gmail.com>
|
|
99
103
|
Nick Howes <nick@nickhowes.co.uk>
|
|
100
104
|
Nick Marchenko <n30n1ck@gmail.com>
|
|
105
|
+
Nic Nilov <https://github.com/nicnilov>
|
|
101
106
|
Nick Schonning <nschonni@gmail.com>
|
|
102
107
|
nickspielgist <dev@nickspiel.me>
|
|
103
108
|
Niels Dequeker <niels.dequeker@gmail.com>
|
|
104
109
|
Nikolay Burlov <kohgpat@gmail.com>
|
|
110
|
+
Oleh Aloshkin <olegaleshkin@gmail.com>
|
|
105
111
|
Oleksandr Sergiienko <sigerello@gmail.com>
|
|
106
112
|
Pavel Pustovalov <pustovalov.pavel@gmail.com>
|
|
113
|
+
Pavel Vostrikov <mail@vostrik.com>
|
|
107
114
|
Paul Statezny <Paulstatezny@gmail.com>
|
|
108
115
|
Peter van Westen <info@regularlabs.com>
|
|
109
116
|
Peter Zotov <whitequark@whitequark.org>
|
|
117
|
+
Phani Kandula <phani.kandula@gmail.com>
|
|
110
118
|
Phil Dokas <phil@jetless.org>
|
|
111
119
|
Rafael Silva <rafael@rafaelsilva.net>
|
|
112
120
|
Ray Lehnhoff <raymond.lehnhoff@gmail.com>
|
|
@@ -117,16 +125,18 @@ Richard Wang <richardwa@google.com>
|
|
|
117
125
|
Rob Howell <rob@robhowell.com>
|
|
118
126
|
Roland Warmerdam <rowno@webspirited.com>
|
|
119
127
|
Roman Dvornov <rdvornov@gmail.com>
|
|
120
|
-
Ryan Zimmerman
|
|
128
|
+
Ryan Zimmerman <https://github.com/RyanZim>
|
|
121
129
|
Sami Suo-Heikki <suoheikki.sami@gmail.com>
|
|
122
130
|
Sasha Koss <koss@nocorp.me>
|
|
123
131
|
Sean Anderson <Sean.Palmer.Anderson@gmail.com>
|
|
124
132
|
Sergey Belov <peimei@ya.ru>
|
|
125
133
|
Sergey Leschina <mail@putnik.ws>
|
|
134
|
+
Sergey Lysenko <soulwish.ls@gmail.com>
|
|
126
135
|
sethjgore <sethjgore@gmail.com>
|
|
127
136
|
Šime Vidas <sime.vidas@gmail.com>
|
|
128
137
|
Simon Lydell <simon.lydell@gmail.com>
|
|
129
138
|
Sindre Sorhus <sindresorhus@gmail.com>
|
|
139
|
+
Stanislav <botev.st@gmail.com>
|
|
130
140
|
Stephen Edgar <stephen@netweb.com.au>
|
|
131
141
|
Steve Mao <https://github.com/stevemao>
|
|
132
142
|
Stig Otnes Kolstad <stig@stigok.net>
|
|
@@ -141,6 +151,7 @@ Vishnu Ravi <vishnu@vishnu.io>
|
|
|
141
151
|
Vladimir Pouzanov <farcaller@gmail.com>
|
|
142
152
|
vladkens <vladkens@yandex.ru>
|
|
143
153
|
Yet Another Minion <yam@thinkalexandria.com>
|
|
154
|
+
Yuriy Alekseyev <dev.yuriy.a@gmail.com>
|
|
144
155
|
Даниил Пронин <mail@grawl.ru>
|
|
145
156
|
一丝 <jie.lijie@alibaba-inc.com>
|
|
146
157
|
刘祺 <gucong@gmail.com>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
|
4
|
+
## 8.5 “Muito Nobre e Sempre Leal”
|
|
5
|
+
* Add `grid-gap` support (by Evgeny Petukhov).
|
|
6
|
+
* Fix radial gradients direction fix.
|
|
7
|
+
* Fix docs (by Phani Kandula and Huáng Jùnliàng).
|
|
8
|
+
|
|
4
9
|
## 8.4.1
|
|
5
10
|
* Fix working in old PostCSS versions (by Diablohu).
|
|
6
11
|
|
package/README.md
CHANGED
|
@@ -502,7 +502,7 @@ You can use these plugin options to disable some of the Autoprefixer's features.
|
|
|
502
502
|
versions of specification.
|
|
503
503
|
* `remove: false` will disable cleaning outdated prefixes.
|
|
504
504
|
|
|
505
|
-
You
|
|
505
|
+
You should set them to the plugin:
|
|
506
506
|
|
|
507
507
|
```js
|
|
508
508
|
autoprefixer({ grid: true });
|
|
@@ -531,7 +531,7 @@ you can use control comments to disable Autoprefixer.
|
|
|
531
531
|
}
|
|
532
532
|
```
|
|
533
533
|
|
|
534
|
-
There
|
|
534
|
+
There are two types of control comments:
|
|
535
535
|
|
|
536
536
|
* `/* autoprefixer: off */` disable the whole block *before* and after comment.
|
|
537
537
|
* `/* autoprefixer: ignore next */` disable only next property
|
|
@@ -584,7 +584,7 @@ Available options are:
|
|
|
584
584
|
* `stats` (object): custom [usage statistics] for `> 10% in my stats`
|
|
585
585
|
browsers query.
|
|
586
586
|
* `browsers` (array): list of queries for target browsers. Try to not use it.
|
|
587
|
-
|
|
587
|
+
The best practice is to use `.browserslistrc` config
|
|
588
588
|
or `browserslist` key in `package.json` to share target browsers
|
|
589
589
|
with Babel, ESLint and Stylelint. See [Browserslist docs]
|
|
590
590
|
for available queries and default value.
|
package/lib/hacks/gradient.js
CHANGED
|
@@ -199,6 +199,42 @@ var Gradient = function (_Value) {
|
|
|
199
199
|
return params;
|
|
200
200
|
};
|
|
201
201
|
|
|
202
|
+
/**
|
|
203
|
+
* Look for at word
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
Gradient.prototype.isRadial = function isRadial(params) {
|
|
208
|
+
var state = 'before';
|
|
209
|
+
for (var _iterator2 = params, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
|
210
|
+
var _ref2;
|
|
211
|
+
|
|
212
|
+
if (_isArray2) {
|
|
213
|
+
if (_i2 >= _iterator2.length) break;
|
|
214
|
+
_ref2 = _iterator2[_i2++];
|
|
215
|
+
} else {
|
|
216
|
+
_i2 = _iterator2.next();
|
|
217
|
+
if (_i2.done) break;
|
|
218
|
+
_ref2 = _i2.value;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
var param = _ref2;
|
|
222
|
+
|
|
223
|
+
if (state === 'before' && param.type === 'space') {
|
|
224
|
+
state = 'at';
|
|
225
|
+
} else if (state === 'at' && param.value === 'at') {
|
|
226
|
+
state = 'after';
|
|
227
|
+
} else if (state === 'after' && param.type === 'space') {
|
|
228
|
+
return true;
|
|
229
|
+
} else if (param.type === 'div') {
|
|
230
|
+
break;
|
|
231
|
+
} else {
|
|
232
|
+
state = 'before';
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
};
|
|
237
|
+
|
|
202
238
|
/**
|
|
203
239
|
* Change new direction to old
|
|
204
240
|
*/
|
|
@@ -210,7 +246,7 @@ var Gradient = function (_Value) {
|
|
|
210
246
|
this.fixDirection(params);
|
|
211
247
|
} else if (params[0].value.indexOf('deg') !== -1) {
|
|
212
248
|
this.fixAngle(params);
|
|
213
|
-
} else if (params
|
|
249
|
+
} else if (this.isRadial(params)) {
|
|
214
250
|
this.fixRadial(params);
|
|
215
251
|
}
|
|
216
252
|
}
|
|
@@ -225,19 +261,19 @@ var Gradient = function (_Value) {
|
|
|
225
261
|
Gradient.prototype.fixDirection = function fixDirection(params) {
|
|
226
262
|
params.splice(0, 2);
|
|
227
263
|
|
|
228
|
-
for (var
|
|
229
|
-
var
|
|
264
|
+
for (var _iterator3 = params, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
|
265
|
+
var _ref3;
|
|
230
266
|
|
|
231
|
-
if (
|
|
232
|
-
if (
|
|
233
|
-
|
|
267
|
+
if (_isArray3) {
|
|
268
|
+
if (_i3 >= _iterator3.length) break;
|
|
269
|
+
_ref3 = _iterator3[_i3++];
|
|
234
270
|
} else {
|
|
235
|
-
|
|
236
|
-
if (
|
|
237
|
-
|
|
271
|
+
_i3 = _iterator3.next();
|
|
272
|
+
if (_i3.done) break;
|
|
273
|
+
_ref3 = _i3.value;
|
|
238
274
|
}
|
|
239
275
|
|
|
240
|
-
var param =
|
|
276
|
+
var param = _ref3;
|
|
241
277
|
|
|
242
278
|
if (param.type === 'div') {
|
|
243
279
|
break;
|
|
@@ -267,12 +303,28 @@ var Gradient = function (_Value) {
|
|
|
267
303
|
|
|
268
304
|
|
|
269
305
|
Gradient.prototype.fixRadial = function fixRadial(params) {
|
|
270
|
-
var first =
|
|
306
|
+
var first = [];
|
|
271
307
|
var second = [];
|
|
272
|
-
var
|
|
308
|
+
var a = void 0,
|
|
309
|
+
b = void 0,
|
|
310
|
+
c = void 0,
|
|
311
|
+
i = void 0,
|
|
312
|
+
next = void 0;
|
|
313
|
+
|
|
314
|
+
for (i = 0; i < params.length - 2; i++) {
|
|
315
|
+
a = params[i];
|
|
316
|
+
b = params[i + 1];
|
|
317
|
+
c = params[i + 2];
|
|
318
|
+
if (a.type === 'space' && b.value === 'at' && c.type === 'space') {
|
|
319
|
+
next = i + 3;
|
|
320
|
+
break;
|
|
321
|
+
} else {
|
|
322
|
+
first.push(a);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
273
325
|
|
|
274
326
|
var div = void 0;
|
|
275
|
-
for (i =
|
|
327
|
+
for (i = next; i < params.length; i++) {
|
|
276
328
|
if (params[i].type === 'div') {
|
|
277
329
|
div = params[i];
|
|
278
330
|
break;
|
|
@@ -281,7 +333,7 @@ var Gradient = function (_Value) {
|
|
|
281
333
|
}
|
|
282
334
|
}
|
|
283
335
|
|
|
284
|
-
params.splice.apply(params, [0, i].concat(second, [div, first
|
|
336
|
+
params.splice.apply(params, [0, i].concat(second, [div], first));
|
|
285
337
|
};
|
|
286
338
|
|
|
287
339
|
Gradient.prototype.revertDirection = function revertDirection(word) {
|
|
@@ -318,19 +370,19 @@ var Gradient = function (_Value) {
|
|
|
318
370
|
}
|
|
319
371
|
|
|
320
372
|
var params = [[]];
|
|
321
|
-
for (var
|
|
322
|
-
var
|
|
373
|
+
for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
|
374
|
+
var _ref4;
|
|
323
375
|
|
|
324
|
-
if (
|
|
325
|
-
if (
|
|
326
|
-
|
|
376
|
+
if (_isArray4) {
|
|
377
|
+
if (_i4 >= _iterator4.length) break;
|
|
378
|
+
_ref4 = _iterator4[_i4++];
|
|
327
379
|
} else {
|
|
328
|
-
|
|
329
|
-
if (
|
|
330
|
-
|
|
380
|
+
_i4 = _iterator4.next();
|
|
381
|
+
if (_i4.done) break;
|
|
382
|
+
_ref4 = _i4.value;
|
|
331
383
|
}
|
|
332
384
|
|
|
333
|
-
var i =
|
|
385
|
+
var i = _ref4;
|
|
334
386
|
|
|
335
387
|
params[params.length - 1].push(i);
|
|
336
388
|
if (i.type === 'div' && i.value === ',') {
|
|
@@ -342,19 +394,19 @@ var Gradient = function (_Value) {
|
|
|
342
394
|
this.colorStops(params);
|
|
343
395
|
|
|
344
396
|
node.nodes = [];
|
|
345
|
-
for (var
|
|
346
|
-
var
|
|
397
|
+
for (var _iterator5 = params, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
|
|
398
|
+
var _ref5;
|
|
347
399
|
|
|
348
|
-
if (
|
|
349
|
-
if (
|
|
350
|
-
|
|
400
|
+
if (_isArray5) {
|
|
401
|
+
if (_i5 >= _iterator5.length) break;
|
|
402
|
+
_ref5 = _iterator5[_i5++];
|
|
351
403
|
} else {
|
|
352
|
-
|
|
353
|
-
if (
|
|
354
|
-
|
|
404
|
+
_i5 = _iterator5.next();
|
|
405
|
+
if (_i5.done) break;
|
|
406
|
+
_ref5 = _i5.value;
|
|
355
407
|
}
|
|
356
408
|
|
|
357
|
-
var param =
|
|
409
|
+
var param = _ref5;
|
|
358
410
|
|
|
359
411
|
node.nodes = node.nodes.concat(param);
|
|
360
412
|
}
|
|
@@ -377,19 +429,19 @@ var Gradient = function (_Value) {
|
|
|
377
429
|
return params.unshift([{ type: 'word', value: this.oldDirections.bottom }, div]);
|
|
378
430
|
} else {
|
|
379
431
|
var _words = [];
|
|
380
|
-
for (var
|
|
381
|
-
var
|
|
432
|
+
for (var _iterator6 = params[0].slice(2), _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
|
|
433
|
+
var _ref6;
|
|
382
434
|
|
|
383
|
-
if (
|
|
384
|
-
if (
|
|
385
|
-
|
|
435
|
+
if (_isArray6) {
|
|
436
|
+
if (_i6 >= _iterator6.length) break;
|
|
437
|
+
_ref6 = _iterator6[_i6++];
|
|
386
438
|
} else {
|
|
387
|
-
|
|
388
|
-
if (
|
|
389
|
-
|
|
439
|
+
_i6 = _iterator6.next();
|
|
440
|
+
if (_i6.done) break;
|
|
441
|
+
_ref6 = _i6.value;
|
|
390
442
|
}
|
|
391
443
|
|
|
392
|
-
var node =
|
|
444
|
+
var node = _ref6;
|
|
393
445
|
|
|
394
446
|
if (node.type === 'word') {
|
|
395
447
|
_words.push(node.value.toLowerCase());
|
|
@@ -410,19 +462,19 @@ var Gradient = function (_Value) {
|
|
|
410
462
|
|
|
411
463
|
|
|
412
464
|
Gradient.prototype.cloneDiv = function cloneDiv(params) {
|
|
413
|
-
for (var
|
|
414
|
-
var
|
|
465
|
+
for (var _iterator7 = params, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
|
|
466
|
+
var _ref7;
|
|
415
467
|
|
|
416
|
-
if (
|
|
417
|
-
if (
|
|
418
|
-
|
|
468
|
+
if (_isArray7) {
|
|
469
|
+
if (_i7 >= _iterator7.length) break;
|
|
470
|
+
_ref7 = _iterator7[_i7++];
|
|
419
471
|
} else {
|
|
420
|
-
|
|
421
|
-
if (
|
|
422
|
-
|
|
472
|
+
_i7 = _iterator7.next();
|
|
473
|
+
if (_i7.done) break;
|
|
474
|
+
_ref7 = _i7.value;
|
|
423
475
|
}
|
|
424
476
|
|
|
425
|
-
var i =
|
|
477
|
+
var i = _ref7;
|
|
426
478
|
|
|
427
479
|
if (i.type === 'div' && i.value === ',') {
|
|
428
480
|
return i;
|
|
@@ -9,7 +9,10 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
|
|
|
9
9
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
|
10
10
|
|
|
11
11
|
var Declaration = require('../declaration');
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
var _require = require('./grid-utils'),
|
|
14
|
+
prefixTrackProp = _require.prefixTrackProp,
|
|
15
|
+
prefixTrackValue = _require.prefixTrackValue;
|
|
13
16
|
|
|
14
17
|
var GridRowsColumns = function (_Declaration) {
|
|
15
18
|
_inherits(GridRowsColumns, _Declaration);
|
|
@@ -25,7 +28,7 @@ var GridRowsColumns = function (_Declaration) {
|
|
|
25
28
|
*/
|
|
26
29
|
GridRowsColumns.prototype.prefixed = function prefixed(prop, prefix) {
|
|
27
30
|
if (prefix === '-ms-') {
|
|
28
|
-
return
|
|
31
|
+
return prefixTrackProp({ prop: prop, prefix: prefix });
|
|
29
32
|
} else {
|
|
30
33
|
return _Declaration.prototype.prefixed.call(this, prop, prefix);
|
|
31
34
|
}
|
|
@@ -47,7 +50,7 @@ var GridRowsColumns = function (_Declaration) {
|
|
|
47
50
|
|
|
48
51
|
GridRowsColumns.prototype.set = function set(decl, prefix) {
|
|
49
52
|
if (prefix === '-ms-' && decl.value.indexOf('repeat(') !== -1) {
|
|
50
|
-
decl.value =
|
|
53
|
+
decl.value = prefixTrackValue({ value: decl.value });
|
|
51
54
|
}
|
|
52
55
|
return _Declaration.prototype.set.call(this, decl, prefix);
|
|
53
56
|
};
|
|
@@ -12,7 +12,11 @@ var Declaration = require('../declaration');
|
|
|
12
12
|
|
|
13
13
|
var _require = require('./grid-utils'),
|
|
14
14
|
parseGridAreas = _require.parseGridAreas,
|
|
15
|
-
insertAreas = _require.insertAreas
|
|
15
|
+
insertAreas = _require.insertAreas,
|
|
16
|
+
prefixTrackProp = _require.prefixTrackProp,
|
|
17
|
+
prefixTrackValue = _require.prefixTrackValue,
|
|
18
|
+
getGridGap = _require.getGridGap,
|
|
19
|
+
warnGridGap = _require.warnGridGap;
|
|
16
20
|
|
|
17
21
|
function getGridRows(tpl) {
|
|
18
22
|
return tpl.trim().slice(1, -1).split(/['"]\s*['"]?/g);
|
|
@@ -33,7 +37,65 @@ var GridTemplateAreas = function (_Declaration) {
|
|
|
33
37
|
GridTemplateAreas.prototype.insert = function insert(decl, prefix, prefixes, result) {
|
|
34
38
|
if (prefix !== '-ms-') return _Declaration.prototype.insert.call(this, decl, prefix, prefixes);
|
|
35
39
|
|
|
36
|
-
var
|
|
40
|
+
var hasColumns = false;
|
|
41
|
+
var hasRows = false;
|
|
42
|
+
var parent = decl.parent;
|
|
43
|
+
var gap = getGridGap(decl);
|
|
44
|
+
|
|
45
|
+
// remove already prefixed rows and columns
|
|
46
|
+
// without gutter to prevent doubling prefixes
|
|
47
|
+
parent.walkDecls(/-ms-grid-(rows|columns)/, function (i) {
|
|
48
|
+
return i.remove();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// add empty tracks to rows and columns
|
|
52
|
+
parent.walkDecls(/grid-template-(rows|columns)/, function (trackDecl) {
|
|
53
|
+
if (trackDecl.prop === 'grid-template-rows') {
|
|
54
|
+
hasRows = true;
|
|
55
|
+
var prop = trackDecl.prop,
|
|
56
|
+
value = trackDecl.value;
|
|
57
|
+
|
|
58
|
+
trackDecl.cloneBefore({
|
|
59
|
+
prop: prefixTrackProp({ prop: prop, prefix: prefix }),
|
|
60
|
+
value: prefixTrackValue({ value: value, gap: gap.row })
|
|
61
|
+
});
|
|
62
|
+
} else {
|
|
63
|
+
hasColumns = true;
|
|
64
|
+
var _prop = trackDecl.prop,
|
|
65
|
+
_value = trackDecl.value;
|
|
66
|
+
|
|
67
|
+
trackDecl.cloneBefore({
|
|
68
|
+
prop: prefixTrackProp({ prop: _prop, prefix: prefix }),
|
|
69
|
+
value: prefixTrackValue({ value: _value, gap: gap.column })
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
var gridRows = getGridRows(decl.value);
|
|
75
|
+
|
|
76
|
+
if (hasColumns && !hasRows && gap.row && gridRows.length > 1) {
|
|
77
|
+
decl.cloneBefore({
|
|
78
|
+
prop: '-ms-grid-rows',
|
|
79
|
+
value: prefixTrackValue({
|
|
80
|
+
value: 'repeat(' + gridRows.length + ', auto)',
|
|
81
|
+
gap: gap.row
|
|
82
|
+
}),
|
|
83
|
+
raws: {}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// warnings
|
|
88
|
+
warnGridGap({
|
|
89
|
+
gap: gap,
|
|
90
|
+
hasColumns: hasColumns,
|
|
91
|
+
decl: decl,
|
|
92
|
+
result: result
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
var areas = parseGridAreas({
|
|
96
|
+
rows: gridRows,
|
|
97
|
+
gap: gap
|
|
98
|
+
});
|
|
37
99
|
|
|
38
100
|
insertAreas(areas, decl, result);
|
|
39
101
|
|
|
@@ -12,7 +12,9 @@ var Declaration = require('../declaration');
|
|
|
12
12
|
|
|
13
13
|
var _require = require('./grid-utils'),
|
|
14
14
|
parseTemplate = _require.parseTemplate,
|
|
15
|
-
insertAreas = _require.insertAreas
|
|
15
|
+
insertAreas = _require.insertAreas,
|
|
16
|
+
getGridGap = _require.getGridGap,
|
|
17
|
+
warnGridGap = _require.warnGridGap;
|
|
16
18
|
|
|
17
19
|
var GridTemplate = function (_Declaration) {
|
|
18
20
|
_inherits(GridTemplate, _Declaration);
|
|
@@ -35,14 +37,28 @@ var GridTemplate = function (_Declaration) {
|
|
|
35
37
|
return undefined;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
var
|
|
40
|
+
var gap = getGridGap(decl);
|
|
41
|
+
|
|
42
|
+
var _parseTemplate = parseTemplate({
|
|
43
|
+
decl: decl,
|
|
44
|
+
gap: gap
|
|
45
|
+
}),
|
|
39
46
|
rows = _parseTemplate.rows,
|
|
40
47
|
columns = _parseTemplate.columns,
|
|
41
48
|
areas = _parseTemplate.areas;
|
|
42
49
|
|
|
43
50
|
var hasAreas = Object.keys(areas).length > 0;
|
|
51
|
+
var hasRows = Boolean(rows);
|
|
52
|
+
var hasColumns = Boolean(columns);
|
|
53
|
+
|
|
54
|
+
warnGridGap({
|
|
55
|
+
gap: gap,
|
|
56
|
+
hasColumns: hasColumns,
|
|
57
|
+
decl: decl,
|
|
58
|
+
result: result
|
|
59
|
+
});
|
|
44
60
|
|
|
45
|
-
if (
|
|
61
|
+
if (hasRows && hasColumns || hasAreas) {
|
|
46
62
|
decl.cloneBefore({
|
|
47
63
|
prop: '-ms-grid-rows',
|
|
48
64
|
value: rows,
|
|
@@ -50,7 +66,7 @@ var GridTemplate = function (_Declaration) {
|
|
|
50
66
|
});
|
|
51
67
|
}
|
|
52
68
|
|
|
53
|
-
if (
|
|
69
|
+
if (hasColumns) {
|
|
54
70
|
decl.cloneBefore({
|
|
55
71
|
prop: '-ms-grid-columns',
|
|
56
72
|
value: columns,
|
package/lib/hacks/grid-utils.js
CHANGED
|
@@ -92,36 +92,71 @@ function insertDecl(decl, prop, value) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
//
|
|
95
|
+
// Track transforms
|
|
96
96
|
|
|
97
|
-
function
|
|
98
|
-
var
|
|
97
|
+
function prefixTrackProp(_ref2) {
|
|
98
|
+
var prop = _ref2.prop,
|
|
99
|
+
prefix = _ref2.prefix;
|
|
99
100
|
|
|
100
|
-
|
|
101
|
+
return prefix + prop.replace('template-', '');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function transformRepeat(_ref3, _ref4) {
|
|
105
|
+
var nodes = _ref3.nodes;
|
|
106
|
+
var gap = _ref4.gap;
|
|
107
|
+
|
|
108
|
+
var _nodes$reduce = nodes.reduce(function (result, node) {
|
|
101
109
|
if (node.type === 'div' && node.value === ',') {
|
|
102
|
-
result.key = '
|
|
110
|
+
result.key = 'size';
|
|
103
111
|
} else {
|
|
104
112
|
result[result.key].push(parser.stringify(node));
|
|
105
113
|
}
|
|
106
114
|
return result;
|
|
107
115
|
}, {
|
|
108
116
|
key: 'count',
|
|
109
|
-
|
|
117
|
+
size: [],
|
|
110
118
|
count: []
|
|
111
|
-
})
|
|
112
|
-
|
|
119
|
+
}),
|
|
120
|
+
count = _nodes$reduce.count,
|
|
121
|
+
size = _nodes$reduce.size;
|
|
122
|
+
|
|
123
|
+
if (gap) {
|
|
124
|
+
var val = [];
|
|
125
|
+
for (var i = 1; i <= count; i++) {
|
|
126
|
+
if (gap && i > 1) {
|
|
127
|
+
val.push(gap);
|
|
128
|
+
}
|
|
129
|
+
val.push(size.join());
|
|
130
|
+
}
|
|
131
|
+
return val.join(' ');
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return '(' + size.join('') + ')[' + count.join('') + ']';
|
|
113
135
|
}
|
|
114
136
|
|
|
115
|
-
function
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
|
|
137
|
+
function prefixTrackValue(_ref5) {
|
|
138
|
+
var value = _ref5.value,
|
|
139
|
+
gap = _ref5.gap;
|
|
140
|
+
|
|
141
|
+
var result = parser(value).nodes.reduce(function (nodes, node) {
|
|
142
|
+
if (node.type === 'function' && node.value === 'repeat') {
|
|
143
|
+
return nodes.concat({
|
|
119
144
|
type: 'word',
|
|
120
|
-
value: transformRepeat(
|
|
121
|
-
};
|
|
145
|
+
value: transformRepeat(node, { gap: gap })
|
|
146
|
+
});
|
|
122
147
|
}
|
|
123
|
-
|
|
124
|
-
|
|
148
|
+
if (gap && node.type === 'space') {
|
|
149
|
+
return nodes.concat({
|
|
150
|
+
type: 'space',
|
|
151
|
+
value: ' '
|
|
152
|
+
}, {
|
|
153
|
+
type: 'word',
|
|
154
|
+
value: gap
|
|
155
|
+
}, node);
|
|
156
|
+
}
|
|
157
|
+
return nodes.concat(node);
|
|
158
|
+
}, []);
|
|
159
|
+
|
|
125
160
|
return parser.stringify(result);
|
|
126
161
|
}
|
|
127
162
|
|
|
@@ -137,12 +172,24 @@ function getColumns(line) {
|
|
|
137
172
|
return line.trim().split(/\s+/g);
|
|
138
173
|
}
|
|
139
174
|
|
|
140
|
-
function parseGridAreas(
|
|
175
|
+
function parseGridAreas(_ref6) {
|
|
176
|
+
var rows = _ref6.rows,
|
|
177
|
+
gap = _ref6.gap;
|
|
178
|
+
|
|
141
179
|
return rows.reduce(function (areas, line, rowIndex) {
|
|
180
|
+
|
|
181
|
+
if (gap.row) rowIndex *= 2;
|
|
182
|
+
|
|
142
183
|
if (line.trim() === '') return areas;
|
|
184
|
+
|
|
143
185
|
getColumns(line).forEach(function (area, columnIndex) {
|
|
186
|
+
|
|
144
187
|
if (DOTS.test(area)) return;
|
|
188
|
+
|
|
189
|
+
if (gap.column) columnIndex *= 2;
|
|
190
|
+
|
|
145
191
|
if (typeof areas[area] === 'undefined') {
|
|
192
|
+
|
|
146
193
|
areas[area] = {
|
|
147
194
|
column: track(columnIndex + 1, columnIndex + 2),
|
|
148
195
|
row: track(rowIndex + 1, rowIndex + 2)
|
|
@@ -162,6 +209,7 @@ function parseGridAreas(rows) {
|
|
|
162
209
|
row.span = row.end - row.start;
|
|
163
210
|
}
|
|
164
211
|
});
|
|
212
|
+
|
|
165
213
|
return areas;
|
|
166
214
|
}, {});
|
|
167
215
|
}
|
|
@@ -172,7 +220,10 @@ function testTrack(node) {
|
|
|
172
220
|
return node.type === 'word' && /^\[.+\]$/.test(node.value);
|
|
173
221
|
}
|
|
174
222
|
|
|
175
|
-
function parseTemplate(
|
|
223
|
+
function parseTemplate(_ref7) {
|
|
224
|
+
var decl = _ref7.decl,
|
|
225
|
+
gap = _ref7.gap;
|
|
226
|
+
|
|
176
227
|
var gridTemplate = parser(decl.value).nodes.reduce(function (result, node) {
|
|
177
228
|
var type = node.type,
|
|
178
229
|
value = node.value;
|
|
@@ -187,11 +238,7 @@ function parseTemplate(decl) {
|
|
|
187
238
|
|
|
188
239
|
// values and function
|
|
189
240
|
if (type === 'word' || type === 'function') {
|
|
190
|
-
|
|
191
|
-
result[result.key].push(transformRepeat(node));
|
|
192
|
-
} else {
|
|
193
|
-
result[result.key].push(parser.stringify(node));
|
|
194
|
-
}
|
|
241
|
+
result[result.key].push(parser.stringify(node));
|
|
195
242
|
}
|
|
196
243
|
|
|
197
244
|
// devider(/)
|
|
@@ -206,10 +253,20 @@ function parseTemplate(decl) {
|
|
|
206
253
|
rows: [],
|
|
207
254
|
areas: []
|
|
208
255
|
});
|
|
256
|
+
|
|
209
257
|
return {
|
|
210
|
-
areas: parseGridAreas(
|
|
211
|
-
|
|
212
|
-
|
|
258
|
+
areas: parseGridAreas({
|
|
259
|
+
rows: gridTemplate.areas,
|
|
260
|
+
gap: gap
|
|
261
|
+
}),
|
|
262
|
+
columns: prefixTrackValue({
|
|
263
|
+
value: gridTemplate.columns.join(' '),
|
|
264
|
+
gap: gap.column
|
|
265
|
+
}),
|
|
266
|
+
rows: prefixTrackValue({
|
|
267
|
+
value: gridTemplate.rows.join(' '),
|
|
268
|
+
gap: gap.row
|
|
269
|
+
})
|
|
213
270
|
};
|
|
214
271
|
}
|
|
215
272
|
|
|
@@ -303,12 +360,50 @@ function insertAreas(areas, decl, result) {
|
|
|
303
360
|
}
|
|
304
361
|
}
|
|
305
362
|
|
|
363
|
+
// Gap utils
|
|
364
|
+
|
|
365
|
+
function getGridGap(decl) {
|
|
366
|
+
|
|
367
|
+
var gap = {};
|
|
368
|
+
|
|
369
|
+
// try to find gap
|
|
370
|
+
decl.parent.walkDecls(/grid(-(row|column))?-gap/, function (_ref8) {
|
|
371
|
+
var prop = _ref8.prop,
|
|
372
|
+
value = _ref8.value;
|
|
373
|
+
|
|
374
|
+
if (prop === 'grid-gap') {
|
|
375
|
+
gap.column = value;
|
|
376
|
+
gap.row = value;
|
|
377
|
+
}
|
|
378
|
+
if (prop === 'grid-row-gap') gap.row = value;
|
|
379
|
+
if (prop === 'grid-column-gap') gap.column = value;
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
return gap;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
function warnGridGap(_ref9) {
|
|
386
|
+
var gap = _ref9.gap,
|
|
387
|
+
hasColumns = _ref9.hasColumns,
|
|
388
|
+
decl = _ref9.decl,
|
|
389
|
+
result = _ref9.result;
|
|
390
|
+
|
|
391
|
+
var hasBothGaps = gap.row && gap.column;
|
|
392
|
+
if (!hasColumns && (hasBothGaps || gap.column && !gap.row)) {
|
|
393
|
+
delete gap.column;
|
|
394
|
+
decl.warn(result, 'Can not impliment grid-gap without grid-tamplate-columns');
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
306
398
|
module.exports = {
|
|
307
399
|
parse: parse,
|
|
308
400
|
translate: translate,
|
|
309
|
-
changeRepeat: changeRepeat,
|
|
310
401
|
parseTemplate: parseTemplate,
|
|
311
402
|
parseGridAreas: parseGridAreas,
|
|
312
403
|
insertAreas: insertAreas,
|
|
313
|
-
insertDecl: insertDecl
|
|
404
|
+
insertDecl: insertDecl,
|
|
405
|
+
prefixTrackProp: prefixTrackProp,
|
|
406
|
+
prefixTrackValue: prefixTrackValue,
|
|
407
|
+
getGridGap: getGridGap,
|
|
408
|
+
warnGridGap: warnGridGap
|
|
314
409
|
};
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autoprefixer",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
|
|
5
5
|
"keywords": ["autoprefixer", "css", "prefix", "postcss", "postcss-plugin"],
|
|
6
6
|
"author": "Andrey Sitnik <andrey@sitnik.ru>",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"repository": "postcss/autoprefixer",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"browserslist": "^3.2.
|
|
11
|
-
"caniuse-lite": "^1.0.
|
|
10
|
+
"browserslist": "^3.2.7",
|
|
11
|
+
"caniuse-lite": "^1.0.30000839",
|
|
12
12
|
"normalize-range": "^0.1.2",
|
|
13
13
|
"num2fraction": "^1.2.2",
|
|
14
14
|
"postcss": "^6.0.22",
|