break-props.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. let Declaration = require('../declaration')
  2. class BreakProps extends Declaration {
  3. /**
  4. * Don’t prefix some values
  5. */
  6. insert(decl, prefix, prefixes) {
  7. if (decl.prop !== 'break-inside') {
  8. return super.insert(decl, prefix, prefixes)
  9. }
  10. if (/region/i.test(decl.value) || /page/i.test(decl.value)) {
  11. return undefined
  12. }
  13. return super.insert(decl, prefix, prefixes)
  14. }
  15. /**
  16. * Return property name by final spec
  17. */
  18. normalize(prop) {
  19. if (prop.includes('inside')) {
  20. return 'break-inside'
  21. }
  22. if (prop.includes('before')) {
  23. return 'break-before'
  24. }
  25. return 'break-after'
  26. }
  27. /**
  28. * Change name for -webkit- and -moz- prefix
  29. */
  30. prefixed(prop, prefix) {
  31. return `${prefix}column-${prop}`
  32. }
  33. /**
  34. * Change prefixed value for avoid-column and avoid-page
  35. */
  36. set(decl, prefix) {
  37. if (
  38. (decl.prop === 'break-inside' && decl.value === 'avoid-column') ||
  39. decl.value === 'avoid-page'
  40. ) {
  41. decl.value = 'avoid'
  42. }
  43. return super.set(decl, prefix)
  44. }
  45. }
  46. BreakProps.names = [
  47. 'break-inside',
  48. 'page-break-inside',
  49. 'column-break-inside',
  50. 'break-before',
  51. 'page-break-before',
  52. 'column-break-before',
  53. 'break-after',
  54. 'page-break-after',
  55. 'column-break-after'
  56. ]
  57. module.exports = BreakProps