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.

index.js 1.6 KiB

3 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports['default'] = jssVendorPrefixer;
  6. var _cssVendor = require('css-vendor');
  7. var vendor = _interopRequireWildcard(_cssVendor);
  8. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
  9. /**
  10. * Add vendor prefix to a property name when needed.
  11. *
  12. * @param {Rule} rule
  13. * @api public
  14. */
  15. function jssVendorPrefixer() {
  16. function onProcessRule(rule) {
  17. if (rule.type === 'keyframes') {
  18. rule.key = '@' + vendor.prefix.css + rule.key.substr(1);
  19. }
  20. }
  21. function onProcessStyle(style, rule) {
  22. if (rule.type !== 'style') return style;
  23. for (var prop in style) {
  24. var value = style[prop];
  25. var changeProp = false;
  26. var supportedProp = vendor.supportedProperty(prop);
  27. if (supportedProp && supportedProp !== prop) changeProp = true;
  28. var changeValue = false;
  29. var supportedValue = vendor.supportedValue(supportedProp, value);
  30. if (supportedValue && supportedValue !== value) changeValue = true;
  31. if (changeProp || changeValue) {
  32. if (changeProp) delete style[prop];
  33. style[supportedProp || prop] = supportedValue || value;
  34. }
  35. }
  36. return style;
  37. }
  38. function onChangeValue(value, prop) {
  39. return vendor.supportedValue(prop, value);
  40. }
  41. return { onProcessRule: onProcessRule, onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };
  42. }