115 lines
3.4 KiB
JavaScript
115 lines
3.4 KiB
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
Object.defineProperty(exports, "__esModule", {
|
||
|
|
value: true
|
||
|
|
});
|
||
|
|
exports.default = prefixAll;
|
||
|
|
|
||
|
|
var _prefixProps = require('./prefixProps');
|
||
|
|
|
||
|
|
var _prefixProps2 = _interopRequireDefault(_prefixProps);
|
||
|
|
|
||
|
|
var _capitalizeString = require('../utils/capitalizeString');
|
||
|
|
|
||
|
|
var _capitalizeString2 = _interopRequireDefault(_capitalizeString);
|
||
|
|
|
||
|
|
var _sortPrefixedStyle = require('../utils/sortPrefixedStyle');
|
||
|
|
|
||
|
|
var _sortPrefixedStyle2 = _interopRequireDefault(_sortPrefixedStyle);
|
||
|
|
|
||
|
|
var _position = require('./plugins/position');
|
||
|
|
|
||
|
|
var _position2 = _interopRequireDefault(_position);
|
||
|
|
|
||
|
|
var _calc = require('./plugins/calc');
|
||
|
|
|
||
|
|
var _calc2 = _interopRequireDefault(_calc);
|
||
|
|
|
||
|
|
var _cursor = require('./plugins/cursor');
|
||
|
|
|
||
|
|
var _cursor2 = _interopRequireDefault(_cursor);
|
||
|
|
|
||
|
|
var _flex = require('./plugins/flex');
|
||
|
|
|
||
|
|
var _flex2 = _interopRequireDefault(_flex);
|
||
|
|
|
||
|
|
var _sizing = require('./plugins/sizing');
|
||
|
|
|
||
|
|
var _sizing2 = _interopRequireDefault(_sizing);
|
||
|
|
|
||
|
|
var _gradient = require('./plugins/gradient');
|
||
|
|
|
||
|
|
var _gradient2 = _interopRequireDefault(_gradient);
|
||
|
|
|
||
|
|
var _transition = require('./plugins/transition');
|
||
|
|
|
||
|
|
var _transition2 = _interopRequireDefault(_transition);
|
||
|
|
|
||
|
|
var _flexboxIE = require('./plugins/flexboxIE');
|
||
|
|
|
||
|
|
var _flexboxIE2 = _interopRequireDefault(_flexboxIE);
|
||
|
|
|
||
|
|
var _flexboxOld = require('./plugins/flexboxOld');
|
||
|
|
|
||
|
|
var _flexboxOld2 = _interopRequireDefault(_flexboxOld);
|
||
|
|
|
||
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
|
||
|
|
// special flexbox specifications
|
||
|
|
|
||
|
|
|
||
|
|
var plugins = [_position2.default, _calc2.default, _cursor2.default, _sizing2.default, _gradient2.default, _transition2.default, _flexboxIE2.default, _flexboxOld2.default, _flex2.default];
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns a prefixed version of the style object using all vendor prefixes
|
||
|
|
* @param {Object} styles - Style object that gets prefixed properties added
|
||
|
|
* @returns {Object} - Style object with prefixed properties and values
|
||
|
|
*/
|
||
|
|
function prefixAll(styles) {
|
||
|
|
Object.keys(styles).forEach(function (property) {
|
||
|
|
var value = styles[property];
|
||
|
|
if (value instanceof Object && !Array.isArray(value)) {
|
||
|
|
// recurse through nested style objects
|
||
|
|
styles[property] = prefixAll(value);
|
||
|
|
} else {
|
||
|
|
Object.keys(_prefixProps2.default).forEach(function (prefix) {
|
||
|
|
var properties = _prefixProps2.default[prefix];
|
||
|
|
// add prefixes if needed
|
||
|
|
if (properties[property]) {
|
||
|
|
styles[prefix + (0, _capitalizeString2.default)(property)] = value;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
Object.keys(styles).forEach(function (property) {
|
||
|
|
[].concat(styles[property]).forEach(function (value, index) {
|
||
|
|
// resolve every special plugins
|
||
|
|
plugins.forEach(function (plugin) {
|
||
|
|
return assignStyles(styles, plugin(property, value));
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
return (0, _sortPrefixedStyle2.default)(styles);
|
||
|
|
}
|
||
|
|
|
||
|
|
function assignStyles(base) {
|
||
|
|
var extend = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
||
|
|
|
||
|
|
Object.keys(extend).forEach(function (property) {
|
||
|
|
var baseValue = base[property];
|
||
|
|
if (Array.isArray(baseValue)) {
|
||
|
|
[].concat(extend[property]).forEach(function (value) {
|
||
|
|
var valueIndex = baseValue.indexOf(value);
|
||
|
|
if (valueIndex > -1) {
|
||
|
|
base[property].splice(valueIndex, 1);
|
||
|
|
}
|
||
|
|
base[property].push(value);
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
base[property] = extend[property];
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
module.exports = exports['default'];
|