Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

103 строки
2.7 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. 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; };
  6. exports['default'] = defaultUnit;
  7. var _defaultUnits = require('./defaultUnits');
  8. var _defaultUnits2 = _interopRequireDefault(_defaultUnits);
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  10. /**
  11. * Clones the object and adds a camel cased property version.
  12. */
  13. function addCamelCasedVersion(obj) {
  14. var regExp = /(-[a-z])/g;
  15. var replace = function replace(str) {
  16. return str[1].toUpperCase();
  17. };
  18. var newObj = {};
  19. for (var key in obj) {
  20. newObj[key] = obj[key];
  21. newObj[key.replace(regExp, replace)] = obj[key];
  22. }
  23. return newObj;
  24. }
  25. var units = addCamelCasedVersion(_defaultUnits2['default']);
  26. /**
  27. * Recursive deep style passing function
  28. *
  29. * @param {String} current property
  30. * @param {(Object|Array|Number|String)} property value
  31. * @param {Object} options
  32. * @return {(Object|Array|Number|String)} resulting value
  33. */
  34. function iterate(prop, value, options) {
  35. if (!value) return value;
  36. var convertedValue = value;
  37. var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
  38. if (type === 'object' && Array.isArray(value)) type = 'array';
  39. switch (type) {
  40. case 'object':
  41. if (prop === 'fallbacks') {
  42. for (var innerProp in value) {
  43. value[innerProp] = iterate(innerProp, value[innerProp], options);
  44. }
  45. break;
  46. }
  47. for (var _innerProp in value) {
  48. value[_innerProp] = iterate(prop + '-' + _innerProp, value[_innerProp], options);
  49. }
  50. break;
  51. case 'array':
  52. for (var i = 0; i < value.length; i++) {
  53. value[i] = iterate(prop, value[i], options);
  54. }
  55. break;
  56. case 'number':
  57. if (value !== 0) {
  58. convertedValue = value + (options[prop] || units[prop] || '');
  59. }
  60. break;
  61. default:
  62. break;
  63. }
  64. return convertedValue;
  65. }
  66. /**
  67. * Add unit to numeric values.
  68. */
  69. function defaultUnit() {
  70. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  71. var camelCasedOptions = addCamelCasedVersion(options);
  72. function onProcessStyle(style, rule) {
  73. if (rule.type !== 'style') return style;
  74. for (var prop in style) {
  75. style[prop] = iterate(prop, style[prop], camelCasedOptions);
  76. }
  77. return style;
  78. }
  79. function onChangeValue(value, prop) {
  80. return iterate(prop, value, camelCasedOptions);
  81. }
  82. return { onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };
  83. }