You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

69 lines
2.0 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = createPrefixer;
  6. var _prefixProperty = require('../utils/prefixProperty');
  7. var _prefixProperty2 = _interopRequireDefault(_prefixProperty);
  8. var _prefixValue = require('../utils/prefixValue');
  9. var _prefixValue2 = _interopRequireDefault(_prefixValue);
  10. var _addNewValuesOnly = require('../utils/addNewValuesOnly');
  11. var _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);
  12. var _isObject = require('../utils/isObject');
  13. var _isObject2 = _interopRequireDefault(_isObject);
  14. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  15. function createPrefixer(_ref) {
  16. var prefixMap = _ref.prefixMap,
  17. plugins = _ref.plugins;
  18. function prefixAll(style) {
  19. for (var property in style) {
  20. var value = style[property];
  21. // handle nested objects
  22. if ((0, _isObject2.default)(value)) {
  23. style[property] = prefixAll(value);
  24. // handle array values
  25. } else if (Array.isArray(value)) {
  26. var combinedValue = [];
  27. for (var i = 0, len = value.length; i < len; ++i) {
  28. var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);
  29. (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);
  30. }
  31. // only modify the value if it was touched
  32. // by any plugin to prevent unnecessary mutations
  33. if (combinedValue.length > 0) {
  34. style[property] = combinedValue;
  35. }
  36. } else {
  37. var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);
  38. // only modify the value if it was touched
  39. // by any plugin to prevent unnecessary mutations
  40. if (_processedValue) {
  41. style[property] = _processedValue;
  42. }
  43. (0, _prefixProperty2.default)(prefixMap, property, style);
  44. }
  45. }
  46. return style;
  47. }
  48. return prefixAll;
  49. }
  50. module.exports = exports['default'];