@iconify/tools 4.0.0-dev.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/lib/colors/attribs.d.cts +27 -0
  2. package/lib/colors/attribs.d.mts +27 -0
  3. package/lib/colors/attribs.d.ts +1 -1
  4. package/lib/colors/detect.cjs +2 -2
  5. package/lib/colors/detect.d.cts +16 -0
  6. package/lib/colors/detect.d.mts +16 -0
  7. package/lib/colors/detect.mjs +3 -3
  8. package/lib/colors/parse.cjs +132 -276
  9. package/lib/colors/parse.d.cts +60 -0
  10. package/lib/colors/parse.d.mts +60 -0
  11. package/lib/colors/parse.d.ts +7 -15
  12. package/lib/colors/parse.mjs +136 -279
  13. package/lib/colors/validate.cjs +2 -11
  14. package/lib/colors/validate.d.cts +20 -0
  15. package/lib/colors/validate.d.mts +20 -0
  16. package/lib/colors/validate.d.ts +4 -11
  17. package/lib/colors/validate.mjs +4 -12
  18. package/lib/css/parse.d.cts +6 -0
  19. package/lib/css/parse.d.mts +6 -0
  20. package/lib/css/parser/error.d.cts +13 -0
  21. package/lib/css/parser/error.d.mts +13 -0
  22. package/lib/css/parser/error.d.ts +1 -1
  23. package/lib/css/parser/export.d.cts +8 -0
  24. package/lib/css/parser/export.d.mts +8 -0
  25. package/lib/css/parser/strings.d.cts +16 -0
  26. package/lib/css/parser/strings.d.mts +16 -0
  27. package/lib/css/parser/text.d.cts +20 -0
  28. package/lib/css/parser/text.d.mts +20 -0
  29. package/lib/css/parser/tokens.d.cts +9 -0
  30. package/lib/css/parser/tokens.d.mts +9 -0
  31. package/lib/css/parser/tree.d.cts +8 -0
  32. package/lib/css/parser/tree.d.mts +8 -0
  33. package/lib/css/parser/types.d.cts +52 -0
  34. package/lib/css/parser/types.d.mts +52 -0
  35. package/lib/css/parser/types.d.ts +1 -1
  36. package/lib/download/api/cache.d.cts +20 -0
  37. package/lib/download/api/cache.d.mts +20 -0
  38. package/lib/download/api/config.cjs +11 -0
  39. package/lib/download/api/config.d.cts +18 -0
  40. package/lib/download/api/config.d.mts +18 -0
  41. package/lib/download/api/config.d.ts +18 -0
  42. package/lib/download/api/config.mjs +8 -0
  43. package/lib/download/api/download.cjs +15 -7
  44. package/lib/download/api/download.d.cts +8 -0
  45. package/lib/download/api/download.d.mts +8 -0
  46. package/lib/download/api/download.mjs +11 -7
  47. package/lib/download/api/index.cjs +23 -7
  48. package/lib/download/api/index.d.cts +8 -0
  49. package/lib/download/api/index.d.mts +8 -0
  50. package/lib/download/api/index.mjs +19 -7
  51. package/lib/download/api/queue.cjs +104 -0
  52. package/lib/download/api/queue.d.cts +32 -0
  53. package/lib/download/api/queue.d.mts +32 -0
  54. package/lib/download/api/queue.d.ts +32 -0
  55. package/lib/download/api/queue.mjs +101 -0
  56. package/lib/download/api/types.d.cts +17 -0
  57. package/lib/download/api/types.d.mts +17 -0
  58. package/lib/download/api/types.d.ts +1 -1
  59. package/lib/download/git/branch.d.cts +8 -0
  60. package/lib/download/git/branch.d.mts +8 -0
  61. package/lib/download/git/hash.d.cts +8 -0
  62. package/lib/download/git/hash.d.mts +8 -0
  63. package/lib/download/git/index.cjs +2 -4
  64. package/lib/download/git/index.d.cts +29 -0
  65. package/lib/download/git/index.d.mts +29 -0
  66. package/lib/download/git/index.d.ts +1 -1
  67. package/lib/download/git/index.mjs +2 -4
  68. package/lib/download/git/reset.cjs +2 -4
  69. package/lib/download/git/reset.d.cts +6 -0
  70. package/lib/download/git/reset.d.mts +6 -0
  71. package/lib/download/git/reset.mjs +2 -4
  72. package/lib/download/github/hash.cjs +2 -0
  73. package/lib/download/github/hash.d.cts +8 -0
  74. package/lib/download/github/hash.d.mts +8 -0
  75. package/lib/download/github/hash.mjs +2 -0
  76. package/lib/download/github/index.cjs +2 -2
  77. package/lib/download/github/index.d.cts +31 -0
  78. package/lib/download/github/index.d.mts +31 -0
  79. package/lib/download/github/index.d.ts +1 -1
  80. package/lib/download/github/index.mjs +2 -2
  81. package/lib/download/github/types.d.cts +11 -0
  82. package/lib/download/github/types.d.mts +11 -0
  83. package/lib/download/github/types.d.ts +1 -1
  84. package/lib/download/gitlab/hash.cjs +2 -0
  85. package/lib/download/gitlab/hash.d.cts +8 -0
  86. package/lib/download/gitlab/hash.d.mts +8 -0
  87. package/lib/download/gitlab/hash.mjs +2 -0
  88. package/lib/download/gitlab/index.cjs +2 -2
  89. package/lib/download/gitlab/index.d.cts +31 -0
  90. package/lib/download/gitlab/index.d.mts +31 -0
  91. package/lib/download/gitlab/index.d.ts +1 -1
  92. package/lib/download/gitlab/index.mjs +2 -2
  93. package/lib/download/gitlab/types.d.cts +15 -0
  94. package/lib/download/gitlab/types.d.mts +15 -0
  95. package/lib/download/gitlab/types.d.ts +1 -1
  96. package/lib/download/helpers/untar.d.cts +6 -0
  97. package/lib/download/helpers/untar.d.mts +6 -0
  98. package/lib/download/helpers/unzip.d.cts +6 -0
  99. package/lib/download/helpers/unzip.d.mts +6 -0
  100. package/lib/download/index.cjs +2 -2
  101. package/lib/download/index.d.cts +48 -0
  102. package/lib/download/index.d.mts +48 -0
  103. package/lib/download/index.d.ts +1 -1
  104. package/lib/download/index.mjs +2 -2
  105. package/lib/download/npm/index.cjs +2 -2
  106. package/lib/download/npm/index.d.cts +30 -0
  107. package/lib/download/npm/index.d.mts +30 -0
  108. package/lib/download/npm/index.d.ts +1 -1
  109. package/lib/download/npm/index.mjs +2 -2
  110. package/lib/download/npm/types.d.cts +9 -0
  111. package/lib/download/npm/types.d.mts +9 -0
  112. package/lib/download/npm/types.d.ts +1 -1
  113. package/lib/download/npm/version.d.cts +16 -0
  114. package/lib/download/npm/version.d.mts +16 -0
  115. package/lib/download/npm/version.d.ts +1 -1
  116. package/lib/download/types/modified.d.cts +6 -0
  117. package/lib/download/types/modified.d.mts +6 -0
  118. package/lib/download/types/modified.d.ts +1 -1
  119. package/lib/download/types/sources.d.cts +12 -0
  120. package/lib/download/types/sources.d.mts +12 -0
  121. package/lib/download/types/sources.d.ts +1 -1
  122. package/lib/export/directory.d.cts +26 -0
  123. package/lib/export/directory.d.mts +26 -0
  124. package/lib/export/directory.d.ts +1 -1
  125. package/lib/export/helpers/custom-files.d.cts +12 -0
  126. package/lib/export/helpers/custom-files.d.mts +12 -0
  127. package/lib/export/helpers/custom-files.d.ts +1 -1
  128. package/lib/export/helpers/prepare.d.cts +19 -0
  129. package/lib/export/helpers/prepare.d.mts +19 -0
  130. package/lib/export/helpers/prepare.d.ts +1 -1
  131. package/lib/export/helpers/types-version.d.cts +6 -0
  132. package/lib/export/helpers/types-version.d.mts +6 -0
  133. package/lib/export/icon-package.d.cts +26 -0
  134. package/lib/export/icon-package.d.mts +26 -0
  135. package/lib/export/icon-package.d.ts +2 -2
  136. package/lib/export/json-package.cjs +1 -0
  137. package/lib/export/json-package.d.cts +25 -0
  138. package/lib/export/json-package.d.mts +25 -0
  139. package/lib/export/json-package.d.ts +2 -1
  140. package/lib/export/json-package.mjs +1 -0
  141. package/lib/icon-set/index.cjs +25 -4
  142. package/lib/icon-set/index.d.cts +162 -0
  143. package/lib/icon-set/index.d.mts +162 -0
  144. package/lib/icon-set/index.mjs +25 -4
  145. package/lib/icon-set/match.d.cts +15 -0
  146. package/lib/icon-set/match.d.mts +15 -0
  147. package/lib/icon-set/merge.d.cts +14 -0
  148. package/lib/icon-set/merge.d.mts +14 -0
  149. package/lib/icon-set/modified.d.cts +16 -0
  150. package/lib/icon-set/modified.d.mts +16 -0
  151. package/lib/icon-set/props.d.cts +13 -0
  152. package/lib/icon-set/props.d.mts +13 -0
  153. package/lib/icon-set/tags.d.cts +23 -0
  154. package/lib/icon-set/tags.d.mts +23 -0
  155. package/lib/icon-set/types.d.cts +75 -0
  156. package/lib/icon-set/types.d.mts +75 -0
  157. package/lib/icon-set/types.d.ts +1 -1
  158. package/lib/import/directory.d.cts +52 -0
  159. package/lib/import/directory.d.mts +52 -0
  160. package/lib/import/directory.d.ts +1 -1
  161. package/lib/import/figma/index.cjs +3 -0
  162. package/lib/import/figma/index.d.cts +20 -0
  163. package/lib/import/figma/index.d.mts +20 -0
  164. package/lib/import/figma/index.mjs +3 -0
  165. package/lib/import/figma/nodes.cjs +1 -1
  166. package/lib/import/figma/nodes.d.cts +18 -0
  167. package/lib/import/figma/nodes.d.mts +18 -0
  168. package/lib/import/figma/nodes.mjs +1 -1
  169. package/lib/import/figma/query.cjs +104 -76
  170. package/lib/import/figma/query.d.cts +42 -0
  171. package/lib/import/figma/query.d.mts +42 -0
  172. package/lib/import/figma/query.d.ts +15 -2
  173. package/lib/import/figma/query.mjs +106 -78
  174. package/lib/import/figma/types/api.d.cts +53 -0
  175. package/lib/import/figma/types/api.d.mts +53 -0
  176. package/lib/import/figma/types/api.d.ts +1 -1
  177. package/lib/import/figma/types/nodes.d.cts +44 -0
  178. package/lib/import/figma/types/nodes.d.mts +44 -0
  179. package/lib/import/figma/types/nodes.d.ts +1 -1
  180. package/lib/import/figma/types/options.d.cts +59 -0
  181. package/lib/import/figma/types/options.d.mts +59 -0
  182. package/lib/import/figma/types/options.d.ts +1 -1
  183. package/lib/import/figma/types/result.d.cts +44 -0
  184. package/lib/import/figma/types/result.d.mts +44 -0
  185. package/lib/import/figma/types/result.d.ts +1 -1
  186. package/lib/index.cjs +15 -13
  187. package/lib/index.d.cts +78 -0
  188. package/lib/index.d.mts +78 -0
  189. package/lib/index.d.ts +8 -5
  190. package/lib/index.mjs +14 -12
  191. package/lib/misc/bump-version.d.cts +6 -0
  192. package/lib/misc/bump-version.d.mts +6 -0
  193. package/lib/misc/cheerio.d.cts +9 -0
  194. package/lib/misc/cheerio.d.mts +9 -0
  195. package/lib/misc/cheerio.d.ts +1 -1
  196. package/lib/misc/compare-dirs.cjs +3 -3
  197. package/lib/misc/compare-dirs.d.cts +11 -0
  198. package/lib/misc/compare-dirs.d.mts +11 -0
  199. package/lib/misc/compare-dirs.d.ts +1 -1
  200. package/lib/misc/compare-dirs.mjs +3 -3
  201. package/lib/misc/exec.d.cts +12 -0
  202. package/lib/misc/exec.d.mts +12 -0
  203. package/lib/misc/exec.d.ts +1 -1
  204. package/lib/misc/keyword.d.cts +6 -0
  205. package/lib/misc/keyword.d.mts +6 -0
  206. package/lib/misc/scan.d.cts +33 -0
  207. package/lib/misc/scan.d.mts +33 -0
  208. package/lib/misc/scan.d.ts +3 -3
  209. package/lib/misc/write-json.d.cts +6 -0
  210. package/lib/misc/write-json.d.mts +6 -0
  211. package/lib/optimise/figma.cjs +55 -33
  212. package/lib/optimise/figma.d.cts +13 -0
  213. package/lib/optimise/figma.d.mts +13 -0
  214. package/lib/optimise/figma.d.ts +3 -1
  215. package/lib/optimise/figma.mjs +55 -33
  216. package/lib/optimise/flags.cjs +3 -3
  217. package/lib/optimise/flags.d.cts +11 -0
  218. package/lib/optimise/flags.d.mts +11 -0
  219. package/lib/optimise/flags.d.ts +1 -1
  220. package/lib/optimise/flags.mjs +3 -3
  221. package/lib/optimise/global-style.cjs +7 -7
  222. package/lib/optimise/global-style.d.cts +11 -0
  223. package/lib/optimise/global-style.d.mts +11 -0
  224. package/lib/optimise/global-style.d.ts +1 -1
  225. package/lib/optimise/global-style.mjs +7 -7
  226. package/lib/optimise/mask.cjs +1 -1
  227. package/lib/optimise/mask.d.cts +24 -0
  228. package/lib/optimise/mask.d.mts +24 -0
  229. package/lib/optimise/mask.mjs +2 -2
  230. package/lib/optimise/origin.d.cts +11 -0
  231. package/lib/optimise/origin.d.mts +11 -0
  232. package/lib/optimise/scale.d.cts +11 -0
  233. package/lib/optimise/scale.d.mts +11 -0
  234. package/lib/optimise/svgo.cjs +1 -1
  235. package/lib/optimise/svgo.d.cts +37 -0
  236. package/lib/optimise/svgo.d.mts +37 -0
  237. package/lib/optimise/svgo.mjs +1 -1
  238. package/lib/optimise/unwrap.cjs +31 -0
  239. package/lib/optimise/unwrap.d.cts +11 -0
  240. package/lib/optimise/unwrap.d.mts +11 -0
  241. package/lib/optimise/unwrap.d.ts +11 -0
  242. package/lib/optimise/unwrap.mjs +29 -0
  243. package/lib/svg/analyse/error.d.cts +10 -0
  244. package/lib/svg/analyse/error.d.mts +10 -0
  245. package/lib/svg/analyse/error.d.ts +1 -0
  246. package/lib/svg/analyse/types.d.cts +92 -0
  247. package/lib/svg/analyse/types.d.mts +92 -0
  248. package/lib/svg/analyse/types.d.ts +4 -3
  249. package/lib/svg/analyse.cjs +2 -2
  250. package/lib/svg/analyse.d.cts +15 -0
  251. package/lib/svg/analyse.d.mts +15 -0
  252. package/lib/svg/analyse.d.ts +1 -0
  253. package/lib/svg/analyse.mjs +4 -4
  254. package/lib/svg/cleanup/attribs.cjs +1 -1
  255. package/lib/svg/cleanup/attribs.d.cts +11 -0
  256. package/lib/svg/cleanup/attribs.d.mts +11 -0
  257. package/lib/svg/cleanup/attribs.mjs +2 -2
  258. package/lib/svg/cleanup/bad-tags.cjs +1 -1
  259. package/lib/svg/cleanup/bad-tags.d.cts +17 -0
  260. package/lib/svg/cleanup/bad-tags.d.mts +17 -0
  261. package/lib/svg/cleanup/bad-tags.d.ts +1 -1
  262. package/lib/svg/cleanup/bad-tags.mjs +2 -2
  263. package/lib/svg/cleanup/inline-style.cjs +1 -1
  264. package/lib/svg/cleanup/inline-style.d.cts +11 -0
  265. package/lib/svg/cleanup/inline-style.d.mts +11 -0
  266. package/lib/svg/cleanup/inline-style.mjs +2 -2
  267. package/lib/svg/cleanup/root-style.cjs +1 -1
  268. package/lib/svg/cleanup/root-style.d.cts +17 -0
  269. package/lib/svg/cleanup/root-style.d.mts +17 -0
  270. package/lib/svg/cleanup/root-style.mjs +2 -2
  271. package/lib/svg/cleanup/root-svg.cjs +3 -3
  272. package/lib/svg/cleanup/root-svg.d.cts +11 -0
  273. package/lib/svg/cleanup/root-svg.d.mts +11 -0
  274. package/lib/svg/cleanup/root-svg.mjs +3 -3
  275. package/lib/svg/cleanup/svgo-style.cjs +2 -2
  276. package/lib/svg/cleanup/svgo-style.d.cts +11 -0
  277. package/lib/svg/cleanup/svgo-style.d.mts +11 -0
  278. package/lib/svg/cleanup/svgo-style.mjs +3 -3
  279. package/lib/svg/cleanup.d.cts +16 -0
  280. package/lib/svg/cleanup.d.mts +16 -0
  281. package/lib/svg/cleanup.d.ts +1 -1
  282. package/lib/svg/data/attributes.d.cts +77 -0
  283. package/lib/svg/data/attributes.d.mts +77 -0
  284. package/lib/svg/data/tags.d.cts +95 -0
  285. package/lib/svg/data/tags.d.mts +95 -0
  286. package/lib/svg/index.cjs +18 -1
  287. package/lib/svg/index.d.cts +52 -0
  288. package/lib/svg/index.d.mts +52 -0
  289. package/lib/svg/index.d.ts +5 -1
  290. package/lib/svg/index.mjs +19 -2
  291. package/lib/svg/parse-style.cjs +178 -235
  292. package/lib/svg/parse-style.d.cts +58 -0
  293. package/lib/svg/parse-style.d.mts +58 -0
  294. package/lib/svg/parse-style.d.ts +3 -9
  295. package/lib/svg/parse-style.mjs +180 -236
  296. package/lib/svg/parse.cjs +27 -59
  297. package/lib/svg/parse.d.cts +30 -0
  298. package/lib/svg/parse.d.mts +30 -0
  299. package/lib/svg/parse.d.ts +3 -10
  300. package/lib/svg/parse.mjs +28 -59
  301. package/package.json +34 -24
@@ -0,0 +1,27 @@
1
+ import { Color } from '@iconify/utils/lib/colors/types';
2
+
3
+ /**
4
+ * Color attributes
5
+ */
6
+ type CommonColorAttributes = 'color';
7
+ declare const commonColorAttributes: CommonColorAttributes[];
8
+ type ShapeColorAttributes = 'fill' | 'stroke';
9
+ declare const shapeColorAttributes: ShapeColorAttributes[];
10
+ type SpecialColorAttributes = 'stop-color' | 'flood-color';
11
+ declare const specialColorAttributes: SpecialColorAttributes[];
12
+ type ColorAttributes = CommonColorAttributes | ShapeColorAttributes | SpecialColorAttributes;
13
+ /**
14
+ * Default values
15
+ */
16
+ declare const defaultBlackColor: Color;
17
+ declare const defaultColorValues: Record<ColorAttributes, Color>;
18
+ /**
19
+ * Ignore default color for some tags:
20
+ * - If value is true, allow default color
21
+ * - If value is attribute name, allow default color if attribute is set
22
+ *
23
+ * Parent elements are not checked for these tags!
24
+ */
25
+ declare const allowDefaultColorValue: Partial<Record<ColorAttributes, string | true>>;
26
+
27
+ export { type ColorAttributes, type CommonColorAttributes, type ShapeColorAttributes, type SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
@@ -0,0 +1,27 @@
1
+ import { Color } from '@iconify/utils/lib/colors/types';
2
+
3
+ /**
4
+ * Color attributes
5
+ */
6
+ type CommonColorAttributes = 'color';
7
+ declare const commonColorAttributes: CommonColorAttributes[];
8
+ type ShapeColorAttributes = 'fill' | 'stroke';
9
+ declare const shapeColorAttributes: ShapeColorAttributes[];
10
+ type SpecialColorAttributes = 'stop-color' | 'flood-color';
11
+ declare const specialColorAttributes: SpecialColorAttributes[];
12
+ type ColorAttributes = CommonColorAttributes | ShapeColorAttributes | SpecialColorAttributes;
13
+ /**
14
+ * Default values
15
+ */
16
+ declare const defaultBlackColor: Color;
17
+ declare const defaultColorValues: Record<ColorAttributes, Color>;
18
+ /**
19
+ * Ignore default color for some tags:
20
+ * - If value is true, allow default color
21
+ * - If value is attribute name, allow default color if attribute is set
22
+ *
23
+ * Parent elements are not checked for these tags!
24
+ */
25
+ declare const allowDefaultColorValue: Partial<Record<ColorAttributes, string | true>>;
26
+
27
+ export { type ColorAttributes, type CommonColorAttributes, type ShapeColorAttributes, type SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
@@ -24,4 +24,4 @@ declare const defaultColorValues: Record<ColorAttributes, Color>;
24
24
  */
25
25
  declare const allowDefaultColorValue: Partial<Record<ColorAttributes, string | true>>;
26
26
 
27
- export { ColorAttributes, CommonColorAttributes, ShapeColorAttributes, SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
27
+ export { type ColorAttributes, type CommonColorAttributes, type ShapeColorAttributes, type SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
@@ -29,7 +29,7 @@ function detectIconSetPalette(iconSet) {
29
29
  return;
30
30
  }
31
31
  let iconPalette;
32
- colors_parse.parseColorsSync(svg, {
32
+ colors_parse.parseColors(svg, {
33
33
  callback: (attr, colorStr, color) => {
34
34
  if (!color) {
35
35
  iconPalette = null;
@@ -60,7 +60,7 @@ function detectIconSetPalette(iconSet) {
60
60
  },
61
61
  ["icon"]
62
62
  );
63
- return palette === void 0 ? null : palette;
63
+ return palette ?? null;
64
64
  }
65
65
 
66
66
  exports.detectIconSetPalette = detectIconSetPalette;
@@ -0,0 +1,16 @@
1
+ import { IconSet } from '../icon-set/index.cjs';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations/defaults';
4
+ import '../icon-set/types.cjs';
5
+ import '../svg/index.cjs';
6
+ import 'cheerio';
7
+ import '@iconify/utils/lib/icon-set/tree';
8
+
9
+ /**
10
+ * Detect palette
11
+ *
12
+ * Returns null if icon set has mixed colors
13
+ */
14
+ declare function detectIconSetPalette(iconSet: IconSet): boolean | null;
15
+
16
+ export { detectIconSetPalette };
@@ -0,0 +1,16 @@
1
+ import { IconSet } from '../icon-set/index.mjs';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations/defaults';
4
+ import '../icon-set/types.mjs';
5
+ import '../svg/index.mjs';
6
+ import 'cheerio';
7
+ import '@iconify/utils/lib/icon-set/tree';
8
+
9
+ /**
10
+ * Detect palette
11
+ *
12
+ * Returns null if icon set has mixed colors
13
+ */
14
+ declare function detectIconSetPalette(iconSet: IconSet): boolean | null;
15
+
16
+ export { detectIconSetPalette };
@@ -1,4 +1,4 @@
1
- import { parseColorsSync, isEmptyColor } from './parse.mjs';
1
+ import { parseColors, isEmptyColor } from './parse.mjs';
2
2
  import '@iconify/utils/lib/colors';
3
3
  import '../svg/data/tags.mjs';
4
4
  import '../svg/parse-style.mjs';
@@ -27,7 +27,7 @@ function detectIconSetPalette(iconSet) {
27
27
  return;
28
28
  }
29
29
  let iconPalette;
30
- parseColorsSync(svg, {
30
+ parseColors(svg, {
31
31
  callback: (attr, colorStr, color) => {
32
32
  if (!color) {
33
33
  iconPalette = null;
@@ -58,7 +58,7 @@ function detectIconSetPalette(iconSet) {
58
58
  },
59
59
  ["icon"]
60
60
  );
61
- return palette === void 0 ? null : palette;
61
+ return palette ?? null;
62
62
  }
63
63
 
64
64
  export { detectIconSetPalette };
@@ -18,7 +18,7 @@ require('../svg/analyse/error.cjs');
18
18
 
19
19
  const propsToCheck = Object.keys(colors_attribs.defaultColorValues);
20
20
  const animatePropsToCheck = ["from", "to", "values"];
21
- function createContext(options, callback) {
21
+ function parseColors(svg, options = {}) {
22
22
  const result = {
23
23
  colors: [],
24
24
  hasUnsetColor: false,
@@ -49,12 +49,12 @@ function createContext(options, callback) {
49
49
  itemColors[prop] = addedColor === null ? color : addedColor;
50
50
  }
51
51
  }
52
- function getElementColor(prop, item, elements) {
52
+ function getElementColor(prop, item, elements2) {
53
53
  function find(prop2) {
54
54
  let currentItem = item;
55
55
  const allowDefaultColor = colors_attribs.allowDefaultColorValue[prop2];
56
56
  while (currentItem) {
57
- const element = elements.get(
57
+ const element = elements2.get(
58
58
  currentItem.index
59
59
  );
60
60
  const color = element._colors?.[prop2];
@@ -79,81 +79,69 @@ function createContext(options, callback) {
79
79
  }
80
80
  return propColor;
81
81
  }
82
- function checkColor(done, prop, value, item) {
82
+ function checkColor(prop, value, item) {
83
83
  switch (value.trim().toLowerCase()) {
84
84
  case "":
85
85
  case "inherit":
86
- return done();
86
+ return;
87
87
  }
88
88
  const parsedColor = colors.stringToColor(value);
89
89
  const defaultValue = parsedColor || value;
90
90
  if (parsedColor?.type === "function" && parsedColor.func === "url") {
91
91
  addColorToItem(prop, defaultValue, item, false);
92
- return done(value);
92
+ return value;
93
93
  }
94
- if (!callback) {
94
+ if (!options.callback) {
95
95
  addColorToItem(prop, defaultValue, item);
96
- return done(value);
96
+ return value;
97
97
  }
98
- callback(
99
- [prop, value, parsedColor, item?.tagName, item],
100
- (callbackResult) => {
101
- switch (callbackResult) {
102
- case "remove": {
103
- return done(item ? callbackResult : void 0);
104
- }
105
- case "unset":
106
- return done();
107
- }
108
- if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
109
- addColorToItem(prop, defaultValue, item);
110
- return done(value);
111
- }
112
- if (typeof callbackResult === "string") {
113
- const newColor = colors.stringToColor(callbackResult);
114
- addColorToItem(prop, newColor || callbackResult, item);
115
- return done(callbackResult);
116
- }
117
- const newValue = colors.colorToString(callbackResult);
118
- addColorToItem(prop, callbackResult, item);
119
- return done(newValue);
120
- }
98
+ const callbackResult = options.callback(
99
+ prop,
100
+ value,
101
+ parsedColor,
102
+ item?.tagName,
103
+ item
121
104
  );
105
+ if (callbackResult instanceof Promise) {
106
+ throw new Error("parseColors does not support async callbacks");
107
+ }
108
+ switch (callbackResult) {
109
+ case "remove": {
110
+ return item ? callbackResult : void 0;
111
+ }
112
+ case "unset":
113
+ return;
114
+ }
115
+ if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
116
+ addColorToItem(prop, defaultValue, item);
117
+ return value;
118
+ }
119
+ if (typeof callbackResult === "string") {
120
+ const newColor = colors.stringToColor(callbackResult);
121
+ addColorToItem(prop, newColor || callbackResult, item);
122
+ return callbackResult;
123
+ }
124
+ const newValue = colors.colorToString(callbackResult);
125
+ addColorToItem(prop, callbackResult, item);
126
+ return newValue;
122
127
  }
123
- function parseStyleItem(item, done) {
128
+ svg_parseStyle.parseSVGStyle(svg, (item) => {
124
129
  const prop = item.prop;
125
130
  const value = item.value;
126
- if (propsToCheck.indexOf(prop) === -1) {
127
- return done(value);
131
+ if (!propsToCheck.includes(prop)) {
132
+ return value;
128
133
  }
129
134
  const attr = prop;
130
- checkColor(
131
- (newValue) => {
132
- if (newValue === void 0) {
133
- return done(newValue);
134
- }
135
- if (item.type === "global") {
136
- result.hasGlobalStyle = true;
137
- }
138
- return done(newValue);
139
- },
140
- attr,
141
- value
142
- );
143
- }
144
- return {
145
- result,
146
- defaultColor,
147
- rawOptions: options,
148
- findColor,
149
- addColorToItem,
150
- getElementColor,
151
- checkColor,
152
- parseStyleItem
153
- };
154
- }
155
- function analyseSVG(svg, context, done) {
156
- const iconData = svg_analyse.analyseSVGStructure(svg, context.rawOptions);
135
+ const newValue = checkColor(attr, value);
136
+ if (newValue === void 0) {
137
+ return newValue;
138
+ }
139
+ if (item.type === "global") {
140
+ result.hasGlobalStyle = true;
141
+ }
142
+ return newValue;
143
+ });
144
+ const iconData = svg_analyse.analyseSVGStructure(svg, options);
157
145
  const { elements, tree } = iconData;
158
146
  const cheerio = svg.$svg;
159
147
  const removedElements = /* @__PURE__ */ new Set();
@@ -178,15 +166,15 @@ function analyseSVG(svg, context, done) {
178
166
  removeChildren(element);
179
167
  cheerio(element).remove();
180
168
  }
181
- function parseTreeItem(item, done2) {
169
+ function parseTreeItem(item) {
182
170
  const index = item.index;
183
171
  if (removedElements.has(index) || parsedElements.has(index)) {
184
- return done2();
172
+ return;
185
173
  }
186
174
  parsedElements.add(index);
187
175
  const element = elements.get(index);
188
176
  if (element._removed) {
189
- return done2();
177
+ return;
190
178
  }
191
179
  const { tagName, attribs } = element;
192
180
  if (item.parent) {
@@ -200,239 +188,108 @@ function analyseSVG(svg, context, done) {
200
188
  };
201
189
  }
202
190
  }
203
- function parseCommonProps(done3) {
204
- const propsQueue = [];
205
- for (let i = 0; i < propsToCheck.length; i++) {
206
- const prop = propsToCheck[i];
207
- if (prop === "fill" && svg_data_tags.animateTags.has(tagName)) {
208
- continue;
209
- }
210
- const value = attribs[prop];
211
- if (value !== void 0) {
212
- propsQueue.push([prop, value]);
213
- }
191
+ for (let i = 0; i < propsToCheck.length; i++) {
192
+ const prop = propsToCheck[i];
193
+ if (prop === "fill" && svg_data_tags.animateTags.has(tagName)) {
194
+ continue;
214
195
  }
215
- const parsePropsQueue = () => {
216
- const queueItem = propsQueue.shift();
217
- if (!queueItem) {
218
- return done3();
219
- }
220
- const [prop, value] = queueItem;
221
- context.checkColor(
222
- (newValue) => {
223
- if (newValue !== value) {
224
- if (newValue === void 0) {
225
- cheerio(element).removeAttr(prop);
226
- if (element._colors) {
227
- delete element._colors[prop];
228
- }
229
- } else if (newValue === "remove") {
230
- removeElement(index, element);
231
- } else {
232
- cheerio(element).attr(prop, newValue);
233
- }
234
- }
235
- return parsePropsQueue();
236
- },
237
- prop,
238
- value,
239
- element
240
- );
241
- };
242
- parsePropsQueue();
243
- }
244
- function checkAnimations(done3) {
245
- const propsQueue = [];
246
- if (svg_data_tags.animateTags.has(tagName)) {
247
- const attr = attribs.attributeName;
248
- if (propsToCheck.indexOf(attr) !== -1) {
249
- for (let i = 0; i < animatePropsToCheck.length; i++) {
250
- const elementProp = animatePropsToCheck[i];
251
- const fullValue = attribs[elementProp];
252
- if (typeof fullValue !== "string") {
253
- continue;
196
+ const value = attribs[prop];
197
+ if (value !== void 0) {
198
+ const newValue = checkColor(prop, value, element);
199
+ if (newValue !== value) {
200
+ if (newValue === void 0) {
201
+ cheerio(element).removeAttr(prop);
202
+ if (element._colors) {
203
+ delete element._colors[prop];
254
204
  }
255
- propsQueue.push([elementProp, fullValue]);
205
+ } else if (newValue === "remove") {
206
+ removeElement(index, element);
207
+ return;
208
+ } else {
209
+ cheerio(element).attr(prop, newValue);
256
210
  }
257
211
  }
258
212
  }
259
- const parsePropsQueue = () => {
260
- const queueItem = propsQueue.shift();
261
- if (!queueItem) {
262
- return done3();
263
- }
264
- const [elementProp, fullValue] = queueItem;
265
- const splitValues = fullValue.split(";");
266
- let updatedValues = false;
267
- const parsedAllItems = () => {
213
+ }
214
+ if (svg_data_tags.animateTags.has(tagName)) {
215
+ const attr = attribs.attributeName;
216
+ if (propsToCheck.includes(attr)) {
217
+ for (let i = 0; i < animatePropsToCheck.length; i++) {
218
+ const elementProp = animatePropsToCheck[i];
219
+ const fullValue = attribs[elementProp];
220
+ if (typeof fullValue !== "string") {
221
+ continue;
222
+ }
223
+ const splitValues = fullValue.split(";");
224
+ let updatedValues = false;
225
+ for (let j = 0; j < splitValues.length; j++) {
226
+ const value = splitValues[j];
227
+ if (value !== void 0) {
228
+ const newValue = checkColor(
229
+ elementProp,
230
+ value
231
+ // Do not pass third parameter
232
+ );
233
+ if (newValue !== value) {
234
+ updatedValues = true;
235
+ splitValues[j] = typeof newValue === "string" ? newValue : "";
236
+ }
237
+ }
238
+ }
268
239
  if (updatedValues) {
269
240
  cheerio(element).attr(
270
241
  elementProp,
271
242
  splitValues.join(";")
272
243
  );
273
244
  }
274
- return parsePropsQueue();
275
- };
276
- const parseItem = (index2) => {
277
- if (index2 >= splitValues.length) {
278
- return parsedAllItems();
279
- }
280
- const value = splitValues[index2];
281
- if (value === void 0) {
282
- return parseItem(index2 + 1);
283
- }
284
- context.checkColor(
285
- (newValue) => {
286
- if (newValue !== value) {
287
- updatedValues = true;
288
- splitValues[index2] = typeof newValue === "string" ? newValue : "";
289
- }
290
- parseItem(index2 + 1);
291
- },
292
- elementProp,
293
- value
294
- // Do not pass third parameter
295
- );
296
- };
297
- parseItem(0);
298
- };
299
- parsePropsQueue();
245
+ }
246
+ }
300
247
  }
301
- parseCommonProps(() => {
302
- checkAnimations(() => {
303
- if (!context.result.hasGlobalStyle) {
304
- let requiredProps;
305
- if (svg_data_tags.shapeTags.has(tagName)) {
306
- requiredProps = colors_attribs.shapeColorAttributes;
307
- }
308
- colors_attribs.specialColorAttributes.forEach((attr) => {
309
- if (svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(
310
- attr
311
- )) {
312
- requiredProps = [attr];
313
- }
314
- });
315
- if (requiredProps) {
316
- const itemColors = element._colors || (element._colors = {});
317
- for (let i = 0; i < requiredProps.length; i++) {
318
- const prop = requiredProps[i];
319
- const color = context.getElementColor(
248
+ if (!result.hasGlobalStyle) {
249
+ let requiredProps;
250
+ if (svg_data_tags.shapeTags.has(tagName)) {
251
+ requiredProps = colors_attribs.shapeColorAttributes;
252
+ }
253
+ colors_attribs.specialColorAttributes.forEach((attr) => {
254
+ if (svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(attr)) {
255
+ requiredProps = [attr];
256
+ }
257
+ });
258
+ if (requiredProps) {
259
+ const itemColors = element._colors || (element._colors = {});
260
+ for (let i = 0; i < requiredProps.length; i++) {
261
+ const prop = requiredProps[i];
262
+ const color = getElementColor(prop, item, elements);
263
+ if (color === colors_attribs.defaultBlackColor) {
264
+ if (defaultColor) {
265
+ const defaultColorValue = typeof defaultColor === "function" ? defaultColor(
320
266
  prop,
267
+ element,
321
268
  item,
322
- elements
269
+ iconData
270
+ ) : defaultColor;
271
+ findColor(defaultColorValue, true);
272
+ cheerio(element).attr(
273
+ prop,
274
+ colors.colorToString(defaultColorValue)
323
275
  );
324
- if (color === colors_attribs.defaultBlackColor) {
325
- const defaultColor = context.defaultColor;
326
- if (defaultColor) {
327
- const defaultColorValue = typeof defaultColor === "function" ? defaultColor(
328
- prop,
329
- element,
330
- item,
331
- iconData
332
- ) : defaultColor;
333
- context.findColor(defaultColorValue, true);
334
- cheerio(element).attr(
335
- prop,
336
- colors.colorToString(defaultColorValue)
337
- );
338
- itemColors[prop] = defaultColorValue;
339
- } else {
340
- context.result.hasUnsetColor = true;
341
- }
342
- }
343
- }
344
- }
345
- }
346
- let index2 = 0;
347
- const parseChildItem = () => {
348
- if (index2 >= item.children.length) {
349
- return done2();
350
- }
351
- const childItem = item.children[index2];
352
- index2++;
353
- if (!childItem.usedAsMask) {
354
- parseTreeItem(childItem, parseChildItem);
355
- } else {
356
- parseChildItem();
357
- }
358
- };
359
- parseChildItem();
360
- });
361
- });
362
- }
363
- parseTreeItem(tree, done);
364
- }
365
- function parseColors(svg, options = {}) {
366
- const callback = options.callback;
367
- return new Promise((fulfill, reject) => {
368
- let context;
369
- try {
370
- context = createContext(
371
- options,
372
- callback ? (params, done) => {
373
- try {
374
- const result = callback(...params);
375
- if (result instanceof Promise) {
376
- result.then(done).catch(reject);
276
+ itemColors[prop] = defaultColorValue;
377
277
  } else {
378
- done(result);
278
+ result.hasUnsetColor = true;
379
279
  }
380
- } catch (err) {
381
- reject(err);
382
280
  }
383
- } : void 0
384
- );
385
- } catch (err) {
386
- reject(err);
387
- return;
388
- }
389
- svg_parseStyle.parseSVGStyle(svg, (item) => {
390
- return new Promise((fulfill2, reject2) => {
391
- try {
392
- context.parseStyleItem(item, fulfill2);
393
- } catch (err) {
394
- reject2(err);
395
281
  }
396
- });
397
- }).then(() => {
398
- try {
399
- analyseSVG(svg, context, () => {
400
- fulfill(context.result);
401
- });
402
- } catch (err) {
403
- reject(err);
404
282
  }
405
- }).catch(reject);
406
- });
407
- }
408
- function parseColorsSync(svg, options = {}) {
409
- const callback = options.callback;
410
- const context = createContext(
411
- options,
412
- callback ? (params, done) => {
413
- done(callback(...params));
414
- } : void 0
415
- );
416
- svg_parseStyle.parseSVGStyleSync(svg, (item) => {
417
- let isSync2 = true;
418
- let result;
419
- context.parseStyleItem(item, (value) => {
420
- if (!isSync2) {
421
- throw new Error("parseStyleItem callback supposed to be sync");
283
+ }
284
+ for (let i = 0; i < item.children.length; i++) {
285
+ const childItem = item.children[i];
286
+ if (!childItem.usedAsMask) {
287
+ parseTreeItem(childItem);
422
288
  }
423
- result = value;
424
- });
425
- isSync2 = false;
426
- return result;
427
- });
428
- let isSync = true;
429
- analyseSVG(svg, context, () => {
430
- if (!isSync) {
431
- throw new Error("analyseSVG callback supposed to be sync");
432
289
  }
433
- });
434
- isSync = false;
435
- return context.result;
290
+ }
291
+ parseTreeItem(tree);
292
+ return result;
436
293
  }
437
294
  function isEmptyColor(color) {
438
295
  const type = color.type;
@@ -441,4 +298,3 @@ function isEmptyColor(color) {
441
298
 
442
299
  exports.isEmptyColor = isEmptyColor;
443
300
  exports.parseColors = parseColors;
444
- exports.parseColorsSync = parseColorsSync;