minify.cjs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 'use strict';
  2. const icon_defaults = require('../icon/defaults.cjs');
  3. function minifyIconSet(data) {
  4. const icons = Object.keys(data.icons);
  5. Object.keys(
  6. icon_defaults.defaultIconDimensions
  7. ).forEach((prop) => {
  8. if (data[prop] === icon_defaults.defaultIconDimensions[prop]) {
  9. delete data[prop];
  10. }
  11. const defaultValue = icon_defaults.defaultIconDimensions[prop];
  12. const propType = typeof defaultValue;
  13. const hasMinifiedDefault = typeof data[prop] === propType && data[prop] !== defaultValue;
  14. let maxCount = 0;
  15. let maxValue = null;
  16. const counters = /* @__PURE__ */ new Map();
  17. for (let i = 0; i < icons.length; i++) {
  18. const item = data.icons[icons[i]];
  19. let value;
  20. if (typeof item[prop] === propType) {
  21. value = item[prop];
  22. } else if (hasMinifiedDefault) {
  23. value = data[prop];
  24. } else {
  25. value = icon_defaults.defaultIconDimensions[prop];
  26. }
  27. if (i === 0) {
  28. maxCount = 1;
  29. maxValue = value;
  30. counters.set(value, 1);
  31. continue;
  32. }
  33. if (!counters.has(value)) {
  34. counters.set(value, 1);
  35. continue;
  36. }
  37. const count = counters.get(value) + 1;
  38. counters.set(value, count);
  39. if (count > maxCount) {
  40. maxCount = count;
  41. maxValue = value;
  42. }
  43. }
  44. const canMinify = maxValue !== null && maxCount > 1;
  45. const oldDefault = hasMinifiedDefault ? data[prop] : null;
  46. const newDefault = canMinify ? maxValue : oldDefault;
  47. if (newDefault === defaultValue) {
  48. delete data[prop];
  49. } else if (canMinify) {
  50. data[prop] = newDefault;
  51. }
  52. icons.forEach((key) => {
  53. const item = data.icons[key];
  54. const value = prop in item ? item[prop] : hasMinifiedDefault ? oldDefault : defaultValue;
  55. if (value === newDefault || newDefault === null && value === defaultValue) {
  56. delete item[prop];
  57. return;
  58. }
  59. if (canMinify && !(prop in item)) {
  60. item[prop] = value;
  61. }
  62. });
  63. });
  64. }
  65. exports.minifyIconSet = minifyIconSet;