index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. module.exports = function(options) {
  2. return {
  3. postcssPlugin: 'postcss-page-break',
  4. Declaration(decl) {
  5. if (decl.prop.startsWith('break-') && /^break-(inside|before|after)/.test(decl.prop)) {
  6. // do not process column|region related properties
  7. if (decl.value.search(/column|region/) >= 0) {
  8. return;
  9. }
  10. let newValue;
  11. switch (decl.value) {
  12. case 'page':
  13. newValue = 'always';
  14. break;
  15. case 'avoid-page':
  16. newValue = 'avoid';
  17. break;
  18. default:
  19. newValue = decl.value;
  20. }
  21. const newProperty = 'page-' + decl.prop;
  22. if (decl.parent.every((sibling) => sibling.prop !== newProperty)) {
  23. decl.cloneBefore({
  24. prop: newProperty,
  25. value: newValue,
  26. });
  27. }
  28. }
  29. },
  30. };
  31. };
  32. module.exports.postcss = true;