Skip to content
This repository was archived by the owner on Dec 5, 2018. It is now read-only.

Commit f41f304

Browse files
committed
Make prefixAll not put camelCased properties in the strings it generates.
Summary: Sometimes, `.prefixAll` generated styles that looked like `{marginLeft: "-webkit-calc(50% - (608px / 2));marginLeft:-moz-calc(50% - (608px / 2));marginLeft:calc(50% - (608px / 2))" }`. (I observed this locally on a bibliotron page). This is pretty clearly wrong, where the styles inside the string haven't been dash-cased, so only the `-webkit-calc()` version would end up being parsed correctly. This fixes that by dash-casing properties before putting them in strings. Test Plan: - `npm run test` Auditors: jlfwong
1 parent 7c40331 commit f41f304

File tree

14 files changed

+158
-35
lines changed

14 files changed

+158
-35
lines changed

dist/prefixer.js

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ var Prefixer = (function () {
137137
exports['default'] = Prefixer;
138138
module.exports = exports['default'];
139139
},{"./Plugins":1,"./caniuseData":3,"./utils/assign":12,"./utils/capitalizeString":14,"./utils/getBrowserInformation":15}],3:[function(require,module,exports){
140-
module.exports = {"transform":0,"transformOrigin":0,"transformOriginX":0,"transformOriginY":0,"backfaceVisibility":0,"perspective":0,"perspectiveOrigin":0,"transformStyle":0,"transformOriginZ":0,"animation":0,"animationDelay":0,"animationDirection":0,"animationFillMode":0,"animationDuration":0,"animationIterationCount":0,"animationName":0,"animationPlayState":0,"animationTimingFunction":0,"appearance":0,"userSelect":0,"fontKerning":0,"textEmphasisPosition":0,"textEmphasis":0,"textEmphasisStyle":0,"textEmphasisColor":0,"boxDecorationBreak":0,"clipPath":0,"maskImage":0,"maskMode":0,"maskRepeat":0,"maskPosition":0,"maskClip":0,"maskOrigin":0,"maskSize":0,"maskComposite":0,"mask":0,"maskBorderSource":0,"maskBorderMode":0,"maskBorderSlice":0,"maskBorderWidth":0,"maskBorderOutset":0,"maskBorderRepeat":0,"maskBorder":0,"maskType":0,"textDecorationStyle":0,"textDecorationSkip":0,"textDecorationLine":0,"textDecorationColor":0,"filter":0,"fontFeatureSettings":0,"breakAfter":0,"breakBefore":0,"breakInside":0,"columnCount":0,"columnFill":0,"columnGap":0,"columnRule":0,"columnRuleColor":0,"columnRuleStyle":0,"columnRuleWidth":0,"columns":0,"columnSpan":0,"columnWidth":0,"flex":0,"flexBasis":0,"flexDirection":0,"flexGrow":0,"flexFlow":0,"flexShrink":0,"flexWrap":0,"alignContent":0,"alignItems":0,"alignSelf":0,"justifyContent":0,"order":0,"transition":0,"transitionDelay":0,"transitionDuration":0,"transitionProperty":0,"transitionTimingFunction":0,"backdropFilter":0,"scrollSnapType":0,"scrollSnapPointsX":0,"scrollSnapPointsY":0,"scrollSnapDestination":0,"scrollSnapCoordinate":0,"shapeImageThreshold":0,"shapeImageMargin":0,"shapeImageOutside":0,"hyphens":0,"flowInto":0,"flowFrom":0,"regionFragment":0,"boxSizing":0,"textAlignLast":0,"tabSize":0,"gridGap":0,"gridAutoColumns":0,"gridRowGap":0,"gridTemplateRows":0,"gridTemplateAreas":0,"gridAutoRows":0,"gridRowStart":0,"wrapFlow":0,"gridAutoFlow":0,"gridColumnGap":0,"gridColumn":0,"gridTemplate":0,"gridColumnStart":0,"wrapThrough":0,"gridColumnEnd":0,"touchAction":0,"wrapMargin":0,"gridArea":0,"grid":0,"gridTemplateColumns":0,"gridRow":0,"gridRowEnd":0,"textSizeAdjust":0,"borderImage":0,"borderImageOutset":0,"borderImageRepeat":0,"borderImageSlice":0,"borderImageSource":0,"borderImageWidth":0,"objectFit":0,"objectPosition":0};
140+
module.exports = {"transform":0,"transformOrigin":0,"transformOriginX":0,"transformOriginY":0,"backfaceVisibility":0,"perspective":0,"perspectiveOrigin":0,"transformStyle":0,"transformOriginZ":0,"animation":0,"animationDelay":0,"animationDirection":0,"animationFillMode":0,"animationDuration":0,"animationIterationCount":0,"animationName":0,"animationPlayState":0,"animationTimingFunction":0,"appearance":0,"userSelect":0,"fontKerning":0,"textEmphasisPosition":0,"textEmphasis":0,"textEmphasisStyle":0,"textEmphasisColor":0,"boxDecorationBreak":0,"clipPath":0,"maskImage":0,"maskMode":0,"maskRepeat":0,"maskPosition":0,"maskClip":0,"maskOrigin":0,"maskSize":0,"maskComposite":0,"mask":0,"maskBorderSource":0,"maskBorderMode":0,"maskBorderSlice":0,"maskBorderWidth":0,"maskBorderOutset":0,"maskBorderRepeat":0,"maskBorder":0,"maskType":0,"textDecorationStyle":0,"textDecorationSkip":0,"textDecorationLine":0,"textDecorationColor":0,"filter":0,"fontFeatureSettings":0,"breakAfter":0,"breakBefore":0,"breakInside":0,"columnCount":0,"columnFill":0,"columnGap":0,"columnRule":0,"columnRuleColor":0,"columnRuleStyle":0,"columnRuleWidth":0,"columns":0,"columnSpan":0,"columnWidth":0,"flex":0,"flexBasis":0,"flexDirection":0,"flexGrow":0,"flexFlow":0,"flexShrink":0,"flexWrap":0,"alignContent":0,"alignItems":0,"alignSelf":0,"justifyContent":0,"order":0,"transition":0,"transitionDelay":0,"transitionDuration":0,"transitionProperty":0,"transitionTimingFunction":0,"backdropFilter":0,"scrollSnapType":0,"scrollSnapPointsX":0,"scrollSnapPointsY":0,"scrollSnapDestination":0,"scrollSnapCoordinate":0,"shapeImageThreshold":0,"shapeImageMargin":0,"shapeImageOutside":0,"hyphens":0,"flowInto":0,"flowFrom":0,"regionFragment":0,"boxSizing":0,"textAlignLast":0,"tabSize":0,"grid":0,"gridColumnStart":0,"gridRow":0,"gridTemplateColumns":0,"gridRowStart":0,"gridRowEnd":0,"gridTemplateRows":0,"gridAutoRows":0,"wrapThrough":0,"wrapFlow":0,"gridColumnGap":0,"touchAction":0,"gridRowGap":0,"gridAutoFlow":0,"gridColumn":0,"gridGap":0,"gridTemplateAreas":0,"gridTemplate":0,"gridArea":0,"wrapMargin":0,"gridAutoColumns":0,"gridColumnEnd":0,"textSizeAdjust":0,"borderImage":0,"borderImageOutset":0,"borderImageRepeat":0,"borderImageSlice":0,"borderImageSource":0,"borderImageWidth":0,"objectFit":0,"objectPosition":0};
141141
},{}],4:[function(require,module,exports){
142142
'use strict';
143143

@@ -146,24 +146,32 @@ Object.defineProperty(exports, '__esModule', {
146146
});
147147
exports['default'] = calc;
148148

149+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
150+
149151
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
150152

153+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
154+
155+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
156+
151157
function calc(pluginInterface) {
152158
var property = pluginInterface.property;
153159
var value = pluginInterface.value;
154160
var prefix = pluginInterface.prefix;
155161
var keepUnprefixed = pluginInterface.keepUnprefixed;
156162

157163
if (typeof value === 'string' && value.indexOf('calc(') > -1) {
164+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
165+
158166
var newValue = ['-webkit-', '-moz-'].map(function (prefix) {
159167
return value.replace(/calc\(/g, prefix + 'calc(');
160-
}).join(';' + property + ':');
161-
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : ''));
168+
}).join(';' + dashCaseProperty + ':');
169+
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
162170
}
163171
}
164172

165173
module.exports = exports['default'];
166-
},{}],5:[function(require,module,exports){
174+
},{"../utils/camelToDashCase":13}],5:[function(require,module,exports){
167175
'use strict';
168176

169177
Object.defineProperty(exports, '__esModule', {
@@ -229,8 +237,14 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
229237

230238
exports['default'] = flexboxIE;
231239

240+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
241+
232242
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
233243

244+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
245+
246+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
247+
234248
var alternativeValues = {
235249
'space-around': 'distribute',
236250
'space-between': 'justify',
@@ -262,6 +276,8 @@ function flexboxIE(pluginInterface) {
262276
var keepUnprefixed = pluginInterface.keepUnprefixed;
263277

264278
if (properties[property]) {
279+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
280+
265281
if (!keepUnprefixed) {
266282
delete styles[property];
267283
}
@@ -270,13 +286,13 @@ function flexboxIE(pluginInterface) {
270286
return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value);
271287
}
272288
if (alternativeValues[value]) {
273-
return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : ''));
289+
return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
274290
}
275291
}
276292
}
277293

278294
module.exports = exports['default'];
279-
},{}],8:[function(require,module,exports){
295+
},{"../utils/camelToDashCase":13}],8:[function(require,module,exports){
280296
'use strict';
281297

282298
Object.defineProperty(exports, '__esModule', {
@@ -287,8 +303,14 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
287303

288304
exports['default'] = flexboxOld;
289305

306+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
307+
290308
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
291309

310+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
311+
312+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
313+
292314
var alternativeValues = {
293315
'space-around': 'justify',
294316
'space-between': 'justify',
@@ -318,6 +340,8 @@ function flexboxOld(pluginInterface) {
318340
var keepUnprefixed = pluginInterface.keepUnprefixed;
319341

320342
if (properties[property]) {
343+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
344+
321345
if (!keepUnprefixed) {
322346
delete styles[property];
323347
}
@@ -329,29 +353,35 @@ function flexboxOld(pluginInterface) {
329353
}
330354
if (property === 'display' && alternativeValues[value]) {
331355
return {
332-
display: prefix.css + alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : '')
356+
display: prefix.css + alternativeValues[value] + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : '')
333357
};
334358
}
335359
if (alternativeProps[property]) {
336360
return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value);
337361
}
338362
if (alternativeValues[value]) {
339-
return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : ''));
363+
return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
340364
}
341365
}
342366
}
343367

344368
module.exports = exports['default'];
345-
},{}],9:[function(require,module,exports){
369+
},{"../utils/camelToDashCase":13}],9:[function(require,module,exports){
346370
'use strict';
347371

348372
Object.defineProperty(exports, '__esModule', {
349373
value: true
350374
});
351375
exports['default'] = gradient;
352376

377+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
378+
353379
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
354380

381+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
382+
383+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
384+
355385
var values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;
356386

357387
function gradient(pluginInterface) {
@@ -361,24 +391,32 @@ function gradient(pluginInterface) {
361391
var keepUnprefixed = pluginInterface.keepUnprefixed;
362392

363393
if (typeof value === 'string' && value.match(values) !== null) {
394+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
395+
364396
var newValue = ['-webkit-', '-moz-'].map(function (prefix) {
365397
return prefix + value;
366-
}).join(';' + property + ':');
367-
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : ''));
398+
}).join(';' + dashCaseProperty + ':');
399+
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
368400
}
369401
}
370402

371403
module.exports = exports['default'];
372-
},{}],10:[function(require,module,exports){
404+
},{"../utils/camelToDashCase":13}],10:[function(require,module,exports){
373405
'use strict';
374406

375407
Object.defineProperty(exports, '__esModule', {
376408
value: true
377409
});
378410
exports['default'] = sizing;
379411

412+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
413+
380414
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
381415

416+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
417+
418+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
419+
382420
var properties = {
383421
maxHeight: true,
384422
maxWidth: true,
@@ -405,15 +443,17 @@ function sizing(pluginInterface) {
405443
// This might change in the future
406444
// Keep an eye on it
407445
if (properties[property] && values[value]) {
446+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
447+
408448
var newValue = ['-webkit-', '-moz-'].map(function (prefix) {
409449
return prefix + value;
410-
}).join(';' + property + ':');
411-
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : ''));
450+
}).join(';' + dashCaseProperty + ':');
451+
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
412452
}
413453
}
414454

415455
module.exports = exports['default'];
416-
},{}],11:[function(require,module,exports){
456+
},{"../utils/camelToDashCase":13}],11:[function(require,module,exports){
417457
'use strict';
418458

419459
Object.defineProperty(exports, '__esModule', {

dist/prefixer.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/caniuseData.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/plugins/calc.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,27 @@ Object.defineProperty(exports, '__esModule', {
55
});
66
exports['default'] = calc;
77

8+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9+
810
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
911

12+
var _utilsCamelToDashCase = require('../utils/camelToDashCase');
13+
14+
var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase);
15+
1016
function calc(pluginInterface) {
1117
var property = pluginInterface.property;
1218
var value = pluginInterface.value;
1319
var prefix = pluginInterface.prefix;
1420
var keepUnprefixed = pluginInterface.keepUnprefixed;
1521

1622
if (typeof value === 'string' && value.indexOf('calc(') > -1) {
23+
var dashCaseProperty = (0, _utilsCamelToDashCase2['default'])(property);
24+
1725
var newValue = ['-webkit-', '-moz-'].map(function (prefix) {
1826
return value.replace(/calc\(/g, prefix + 'calc(');
19-
}).join(';' + property + ':');
20-
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : ''));
27+
}).join(';' + dashCaseProperty + ':');
28+
return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + dashCaseProperty + ':' + value : ''));
2129
}
2230
}
2331

0 commit comments

Comments
 (0)