|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- '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 };
- }
|