index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _transform = _interopRequireDefault(require("./lib/transform"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. /**
  9. * @typedef {{precision?: number | false,
  10. * preserve?: boolean,
  11. * warnWhenCannotResolve?: boolean,
  12. * mediaQueries?: boolean,
  13. * selectors?: boolean}} PostCssCalcOptions
  14. *
  15. * @param {PostCssCalcOptions} opts
  16. */
  17. function pluginCreator(opts) {
  18. const options = Object.assign({
  19. precision: 5,
  20. preserve: false,
  21. warnWhenCannotResolve: false,
  22. mediaQueries: false,
  23. selectors: false
  24. }, opts);
  25. return {
  26. postcssPlugin: 'postcss-calc',
  27. /**
  28. * @param {import('postcss').Root} css
  29. * @param {{result: import('postcss').Result}} helpers
  30. */
  31. OnceExit(css, {
  32. result
  33. }) {
  34. css.walk(node => {
  35. const {
  36. type
  37. } = node;
  38. if (type === 'decl') {
  39. (0, _transform.default)(node, "value", options, result);
  40. }
  41. if (type === 'atrule' && options.mediaQueries) {
  42. (0, _transform.default)(node, "params", options, result);
  43. }
  44. if (type === 'rule' && options.selectors) {
  45. (0, _transform.default)(node, "selector", options, result);
  46. }
  47. });
  48. }
  49. };
  50. }
  51. pluginCreator.postcss = true;
  52. var _default = pluginCreator;
  53. exports.default = _default;
  54. module.exports = exports.default;