boxBase.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _stylehacks = require('stylehacks');
  4. var _genericMerge = require('../genericMerge');
  5. var _minifyTrbl = require('../minifyTrbl');
  6. var _minifyTrbl2 = _interopRequireDefault(_minifyTrbl);
  7. var _parseTrbl = require('../parseTrbl');
  8. var _parseTrbl2 = _interopRequireDefault(_parseTrbl);
  9. var _insertCloned = require('../insertCloned');
  10. var _insertCloned2 = _interopRequireDefault(_insertCloned);
  11. var _mergeValues = require('../mergeValues');
  12. var _mergeValues2 = _interopRequireDefault(_mergeValues);
  13. var _trbl = require('../trbl');
  14. var _trbl2 = _interopRequireDefault(_trbl);
  15. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16. exports.default = function (prop) {
  17. var properties = _trbl2.default.map(function (direction) {
  18. return prop + '-' + direction;
  19. });
  20. var processor = {
  21. explode: function explode(rule) {
  22. if (rule.nodes.some(_stylehacks.detect)) {
  23. return false;
  24. }
  25. rule.walkDecls(prop, function (decl) {
  26. if (~decl.value.indexOf('inherit')) {
  27. return;
  28. }
  29. var values = (0, _parseTrbl2.default)(decl.value);
  30. _trbl2.default.forEach(function (direction, index) {
  31. (0, _insertCloned2.default)(rule, decl, {
  32. prop: properties[index],
  33. value: values[index]
  34. });
  35. });
  36. decl.remove();
  37. });
  38. },
  39. merge: (0, _genericMerge.genericMergeFactory)({
  40. prop: prop,
  41. properties: properties,
  42. value: function value(rules) {
  43. return (0, _minifyTrbl2.default)(_mergeValues2.default.apply(undefined, rules));
  44. }
  45. })
  46. };
  47. return processor;
  48. };
  49. module.exports = exports['default'];