units.mjs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import uniteSets from '../utils/uniteSets.mjs';
  2. /** @type {ReadonlySet<string>} */
  3. export const lengthUnits = new Set([
  4. // Font-relative length units
  5. 'cap',
  6. 'ch',
  7. 'em',
  8. 'ex',
  9. 'ic',
  10. 'lh',
  11. 'rcap',
  12. 'rch',
  13. 'rem',
  14. 'rex',
  15. 'ric',
  16. 'rlh',
  17. // Viewport-percentage lengths
  18. 'dvb',
  19. 'dvh',
  20. 'dvi',
  21. 'dvmax',
  22. 'dvmin',
  23. 'dvw',
  24. 'lvb',
  25. 'lvh',
  26. 'lvi',
  27. 'lvmax',
  28. 'lvmin',
  29. 'lvw',
  30. 'svb',
  31. 'svh',
  32. 'svi',
  33. 'svmax',
  34. 'svmin',
  35. 'svw',
  36. 'vb',
  37. 'vh',
  38. 'vi',
  39. 'vw',
  40. 'vmin',
  41. 'vmax',
  42. 'vm',
  43. // Absolute length units
  44. 'px',
  45. 'mm',
  46. 'cm',
  47. 'in',
  48. 'pt',
  49. 'pc',
  50. 'q',
  51. 'mozmm',
  52. // Flexible length units
  53. 'fr',
  54. // Container query units
  55. 'cqw',
  56. 'cqh',
  57. 'cqi',
  58. 'cqb',
  59. 'cqmin',
  60. 'cqmax',
  61. ]);
  62. /** @type {ReadonlySet<string>} */
  63. export const resolutionUnits = new Set(['dpi', 'dpcm', 'dppx', 'x']);
  64. /** @type {ReadonlySet<string>} */
  65. export const units = uniteSets(lengthUnits, resolutionUnits, [
  66. // Relative length units
  67. '%',
  68. // Time length units
  69. 's',
  70. 'ms',
  71. // Angle
  72. 'deg',
  73. 'grad',
  74. 'turn',
  75. 'rad',
  76. // Frequency
  77. 'Hz',
  78. 'kHz',
  79. ]);