103 lines
2.7 KiB
JavaScript
103 lines
2.7 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
|
|
exports['default'] = defaultUnit;
|
|
|
|
var _defaultUnits = require('./defaultUnits');
|
|
|
|
var _defaultUnits2 = _interopRequireDefault(_defaultUnits);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
|
|
/**
|
|
* Clones the object and adds a camel cased property version.
|
|
*/
|
|
function addCamelCasedVersion(obj) {
|
|
var regExp = /(-[a-z])/g;
|
|
var replace = function replace(str) {
|
|
return str[1].toUpperCase();
|
|
};
|
|
var newObj = {};
|
|
for (var key in obj) {
|
|
newObj[key] = obj[key];
|
|
newObj[key.replace(regExp, replace)] = obj[key];
|
|
}
|
|
return newObj;
|
|
}
|
|
|
|
var units = addCamelCasedVersion(_defaultUnits2['default']);
|
|
|
|
/**
|
|
* Recursive deep style passing function
|
|
*
|
|
* @param {String} current property
|
|
* @param {(Object|Array|Number|String)} property value
|
|
* @param {Object} options
|
|
* @return {(Object|Array|Number|String)} resulting value
|
|
*/
|
|
function iterate(prop, value, options) {
|
|
if (!value) return value;
|
|
|
|
var convertedValue = value;
|
|
|
|
var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
|
|
if (type === 'object' && Array.isArray(value)) type = 'array';
|
|
|
|
switch (type) {
|
|
case 'object':
|
|
if (prop === 'fallbacks') {
|
|
for (var innerProp in value) {
|
|
value[innerProp] = iterate(innerProp, value[innerProp], options);
|
|
}
|
|
break;
|
|
}
|
|
for (var _innerProp in value) {
|
|
value[_innerProp] = iterate(prop + '-' + _innerProp, value[_innerProp], options);
|
|
}
|
|
break;
|
|
case 'array':
|
|
for (var i = 0; i < value.length; i++) {
|
|
value[i] = iterate(prop, value[i], options);
|
|
}
|
|
break;
|
|
case 'number':
|
|
if (value !== 0) {
|
|
convertedValue = value + (options[prop] || units[prop] || '');
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return convertedValue;
|
|
}
|
|
|
|
/**
|
|
* Add unit to numeric values.
|
|
*/
|
|
function defaultUnit() {
|
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
|
var camelCasedOptions = addCamelCasedVersion(options);
|
|
|
|
function onProcessStyle(style, rule) {
|
|
if (rule.type !== 'style') return style;
|
|
|
|
for (var prop in style) {
|
|
style[prop] = iterate(prop, style[prop], camelCasedOptions);
|
|
}
|
|
|
|
return style;
|
|
}
|
|
|
|
function onChangeValue(value, prop) {
|
|
return iterate(prop, value, camelCasedOptions);
|
|
}
|
|
|
|
return { onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };
|
|
} |