@iconify/tools 4.1.5 → 5.0.0-beta.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 (526) hide show
  1. package/lib/colors/attribs.d.ts +2 -4
  2. package/lib/colors/attribs.js +33 -0
  3. package/lib/colors/detect.d.ts +2 -10
  4. package/lib/colors/detect.js +36 -0
  5. package/lib/colors/parse.d.ts +12 -19
  6. package/lib/colors/parse.js +241 -0
  7. package/lib/colors/validate.d.ts +3 -13
  8. package/lib/colors/validate.js +31 -0
  9. package/lib/css/parse.d.ts +1 -2
  10. package/lib/css/parse.js +18 -0
  11. package/lib/css/parser/error.d.ts +6 -7
  12. package/lib/css/parser/error.js +24 -0
  13. package/lib/css/parser/export.d.ts +2 -4
  14. package/lib/css/parser/export.js +34 -0
  15. package/lib/css/parser/strings.d.ts +2 -4
  16. package/lib/css/parser/strings.js +66 -0
  17. package/lib/css/parser/text.d.ts +2 -4
  18. package/lib/css/parser/text.js +103 -0
  19. package/lib/css/parser/tokens.d.ts +3 -5
  20. package/lib/css/parser/tokens.js +169 -0
  21. package/lib/css/parser/tree.d.ts +2 -4
  22. package/lib/css/parser/tree.js +35 -0
  23. package/lib/css/parser/types.d.ts +21 -22
  24. package/lib/css/parser/types.js +1 -0
  25. package/lib/download/api/cache.d.ts +2 -4
  26. package/lib/download/api/cache.js +84 -0
  27. package/lib/download/api/config.d.ts +7 -9
  28. package/lib/download/api/config.js +10 -0
  29. package/lib/download/api/download.d.ts +2 -4
  30. package/lib/download/api/download.js +26 -0
  31. package/lib/download/api/fetch.d.ts +9 -0
  32. package/lib/download/api/fetch.js +15 -0
  33. package/lib/download/api/index.d.ts +2 -4
  34. package/lib/download/api/index.js +50 -0
  35. package/lib/download/api/queue.d.ts +9 -10
  36. package/lib/download/api/queue.js +94 -0
  37. package/lib/download/api/types.d.ts +6 -7
  38. package/lib/download/api/types.js +1 -0
  39. package/lib/download/git/branch.d.ts +2 -4
  40. package/lib/download/git/branch.js +15 -0
  41. package/lib/download/git/hash.d.ts +2 -4
  42. package/lib/download/git/hash.js +10 -0
  43. package/lib/download/git/index.d.ts +10 -12
  44. package/lib/download/git/index.js +39 -0
  45. package/lib/download/git/reset.d.ts +1 -2
  46. package/lib/download/git/reset.js +12 -0
  47. package/lib/download/github/hash.d.ts +2 -4
  48. package/lib/download/github/hash.js +20 -0
  49. package/lib/download/github/index.d.ts +12 -14
  50. package/lib/download/github/index.js +66 -0
  51. package/lib/download/github/types.d.ts +5 -6
  52. package/lib/download/github/types.js +1 -0
  53. package/lib/download/gitlab/hash.d.ts +2 -4
  54. package/lib/download/gitlab/hash.js +19 -0
  55. package/lib/download/gitlab/index.d.ts +12 -14
  56. package/lib/download/gitlab/index.js +64 -0
  57. package/lib/download/gitlab/types.d.ts +5 -6
  58. package/lib/download/gitlab/types.js +6 -0
  59. package/lib/download/helpers/untar.d.ts +1 -2
  60. package/lib/download/helpers/untar.js +13 -0
  61. package/lib/download/helpers/unzip.d.ts +1 -2
  62. package/lib/download/helpers/unzip.js +39 -0
  63. package/lib/download/index.d.ts +15 -20
  64. package/lib/download/index.js +19 -0
  65. package/lib/download/npm/index.d.ts +11 -13
  66. package/lib/download/npm/index.js +51 -0
  67. package/lib/download/npm/types.d.ts +3 -4
  68. package/lib/download/npm/types.js +1 -0
  69. package/lib/download/npm/version.d.ts +4 -6
  70. package/lib/download/npm/version.js +23 -0
  71. package/lib/download/types/modified.d.ts +1 -2
  72. package/lib/download/types/modified.js +1 -0
  73. package/lib/download/types/sources.d.ts +2 -3
  74. package/lib/download/types/sources.js +1 -0
  75. package/lib/export/directory.d.ts +7 -15
  76. package/lib/export/directory.js +37 -0
  77. package/lib/export/helpers/custom-files.d.ts +2 -3
  78. package/lib/export/helpers/custom-files.js +23 -0
  79. package/lib/export/helpers/prepare.d.ts +3 -4
  80. package/lib/export/helpers/prepare.js +31 -0
  81. package/lib/export/helpers/types-version.d.ts +1 -2
  82. package/lib/export/helpers/types-version.js +19 -0
  83. package/lib/export/icon-package.d.ts +8 -15
  84. package/lib/export/icon-package.js +55 -0
  85. package/lib/export/json-package.d.ts +7 -14
  86. package/lib/export/json-package.js +129 -0
  87. package/lib/icon-set/index.d.ts +144 -147
  88. package/lib/icon-set/index.js +595 -0
  89. package/lib/icon-set/match.d.ts +3 -11
  90. package/lib/icon-set/match.js +45 -0
  91. package/lib/icon-set/merge.d.ts +2 -10
  92. package/lib/icon-set/merge.js +68 -0
  93. package/lib/icon-set/modified.d.ts +2 -10
  94. package/lib/icon-set/modified.js +20 -0
  95. package/lib/icon-set/props.d.ts +2 -5
  96. package/lib/icon-set/props.js +19 -0
  97. package/lib/icon-set/tags.d.ts +7 -15
  98. package/lib/icon-set/tags.js +53 -0
  99. package/lib/icon-set/types.d.ts +16 -21
  100. package/lib/icon-set/types.js +1 -0
  101. package/lib/import/directory.d.ts +11 -20
  102. package/lib/import/directory.js +101 -0
  103. package/lib/import/figma/index.d.ts +4 -15
  104. package/lib/import/figma/index.js +61 -0
  105. package/lib/import/figma/nodes.d.ts +4 -14
  106. package/lib/import/figma/nodes.js +80 -0
  107. package/lib/import/figma/query.d.ts +9 -19
  108. package/lib/import/figma/query.js +183 -0
  109. package/lib/import/figma/types/api.d.ts +23 -35
  110. package/lib/import/figma/types/nodes.d.ts +12 -21
  111. package/lib/import/figma/types/options.d.ts +23 -32
  112. package/lib/import/figma/types/result.d.ts +16 -24
  113. package/lib/index.d.ts +55 -79
  114. package/lib/index.js +56 -0
  115. package/lib/misc/bump-version.d.ts +1 -2
  116. package/lib/misc/bump-version.js +13 -0
  117. package/lib/misc/compare-dirs.d.ts +4 -5
  118. package/lib/misc/compare-dirs.js +65 -0
  119. package/lib/misc/exec.d.ts +4 -6
  120. package/lib/misc/exec.js +23 -0
  121. package/lib/misc/keyword.d.ts +1 -2
  122. package/lib/misc/keyword.js +12 -0
  123. package/lib/misc/scan.d.ts +4 -6
  124. package/lib/misc/scan.js +87 -0
  125. package/lib/misc/write-json.d.ts +1 -2
  126. package/lib/misc/write-json.js +10 -0
  127. package/lib/optimise/figma.d.ts +2 -7
  128. package/lib/optimise/figma.js +189 -0
  129. package/lib/optimise/flags.d.ts +2 -7
  130. package/lib/optimise/flags.js +231 -0
  131. package/lib/optimise/global-style.d.ts +2 -7
  132. package/lib/optimise/global-style.js +114 -0
  133. package/lib/optimise/mask.d.ts +9 -14
  134. package/lib/optimise/mask.js +83 -0
  135. package/lib/optimise/origin.d.ts +2 -7
  136. package/lib/optimise/origin.js +22 -0
  137. package/lib/optimise/scale.d.ts +2 -7
  138. package/lib/optimise/scale.js +24 -0
  139. package/lib/optimise/svgo.d.ts +10 -15
  140. package/lib/optimise/svgo.js +90 -0
  141. package/lib/optimise/unwrap.d.ts +2 -7
  142. package/lib/optimise/unwrap.js +25 -0
  143. package/lib/svg/analyse/error.d.ts +2 -7
  144. package/lib/svg/analyse/error.js +12 -0
  145. package/lib/svg/analyse/types.d.ts +31 -35
  146. package/lib/svg/analyse/types.js +1 -0
  147. package/lib/svg/analyse.d.ts +3 -10
  148. package/lib/svg/analyse.js +256 -0
  149. package/lib/svg/cleanup/attribs.d.ts +2 -7
  150. package/lib/svg/cleanup/attribs.js +37 -0
  151. package/lib/svg/cleanup/bad-tags.d.ts +3 -8
  152. package/lib/svg/cleanup/bad-tags.js +57 -0
  153. package/lib/svg/cleanup/inline-style.d.ts +2 -7
  154. package/lib/svg/cleanup/inline-style.js +80 -0
  155. package/lib/svg/cleanup/root-style.d.ts +4 -9
  156. package/lib/svg/cleanup/root-style.js +27 -0
  157. package/lib/svg/cleanup/root-svg.d.ts +2 -7
  158. package/lib/svg/cleanup/root-svg.js +73 -0
  159. package/lib/svg/cleanup/svgo-style.d.ts +2 -7
  160. package/lib/svg/cleanup/svgo-style.js +24 -0
  161. package/lib/svg/cleanup.d.ts +3 -8
  162. package/lib/svg/cleanup.js +20 -0
  163. package/lib/svg/data/attributes.d.ts +1 -2
  164. package/lib/svg/data/attributes.js +451 -0
  165. package/lib/svg/data/tags.d.ts +1 -2
  166. package/lib/svg/data/tags.js +182 -0
  167. package/lib/svg/index.d.ts +38 -47
  168. package/lib/svg/index.js +117 -0
  169. package/lib/svg/parse-style.d.ts +21 -28
  170. package/lib/svg/parse-style.js +199 -0
  171. package/lib/svg/parse.d.ts +8 -16
  172. package/lib/svg/parse.js +32 -0
  173. package/package.json +126 -227
  174. package/lib/colors/attribs.cjs +0 -33
  175. package/lib/colors/attribs.d.cts +0 -27
  176. package/lib/colors/attribs.d.mts +0 -27
  177. package/lib/colors/attribs.mjs +0 -26
  178. package/lib/colors/detect.cjs +0 -66
  179. package/lib/colors/detect.d.cts +0 -16
  180. package/lib/colors/detect.d.mts +0 -16
  181. package/lib/colors/detect.mjs +0 -64
  182. package/lib/colors/parse.cjs +0 -300
  183. package/lib/colors/parse.d.cts +0 -61
  184. package/lib/colors/parse.d.mts +0 -61
  185. package/lib/colors/parse.mjs +0 -297
  186. package/lib/colors/validate.cjs +0 -56
  187. package/lib/colors/validate.d.cts +0 -21
  188. package/lib/colors/validate.d.mts +0 -21
  189. package/lib/colors/validate.mjs +0 -54
  190. package/lib/css/parse.cjs +0 -24
  191. package/lib/css/parse.d.cts +0 -6
  192. package/lib/css/parse.d.mts +0 -6
  193. package/lib/css/parse.mjs +0 -22
  194. package/lib/css/parser/error.cjs +0 -23
  195. package/lib/css/parser/error.d.cts +0 -13
  196. package/lib/css/parser/error.d.mts +0 -13
  197. package/lib/css/parser/error.mjs +0 -21
  198. package/lib/css/parser/export.cjs +0 -37
  199. package/lib/css/parser/export.d.cts +0 -8
  200. package/lib/css/parser/export.d.mts +0 -8
  201. package/lib/css/parser/export.mjs +0 -35
  202. package/lib/css/parser/strings.cjs +0 -83
  203. package/lib/css/parser/strings.d.cts +0 -16
  204. package/lib/css/parser/strings.d.mts +0 -16
  205. package/lib/css/parser/strings.mjs +0 -80
  206. package/lib/css/parser/text.cjs +0 -114
  207. package/lib/css/parser/text.d.cts +0 -20
  208. package/lib/css/parser/text.d.mts +0 -20
  209. package/lib/css/parser/text.mjs +0 -109
  210. package/lib/css/parser/tokens.cjs +0 -206
  211. package/lib/css/parser/tokens.d.cts +0 -9
  212. package/lib/css/parser/tokens.d.mts +0 -9
  213. package/lib/css/parser/tokens.mjs +0 -204
  214. package/lib/css/parser/tree.cjs +0 -40
  215. package/lib/css/parser/tree.d.cts +0 -8
  216. package/lib/css/parser/tree.d.mts +0 -8
  217. package/lib/css/parser/tree.mjs +0 -38
  218. package/lib/css/parser/types.cjs +0 -2
  219. package/lib/css/parser/types.d.cts +0 -52
  220. package/lib/css/parser/types.d.mts +0 -52
  221. package/lib/css/parser/types.mjs +0 -1
  222. package/lib/download/api/cache.cjs +0 -91
  223. package/lib/download/api/cache.d.cts +0 -20
  224. package/lib/download/api/cache.d.mts +0 -20
  225. package/lib/download/api/cache.mjs +0 -86
  226. package/lib/download/api/config.cjs +0 -11
  227. package/lib/download/api/config.d.cts +0 -18
  228. package/lib/download/api/config.d.mts +0 -18
  229. package/lib/download/api/config.mjs +0 -8
  230. package/lib/download/api/download.cjs +0 -30
  231. package/lib/download/api/download.d.cts +0 -8
  232. package/lib/download/api/download.d.mts +0 -8
  233. package/lib/download/api/download.mjs +0 -24
  234. package/lib/download/api/index.cjs +0 -60
  235. package/lib/download/api/index.d.cts +0 -8
  236. package/lib/download/api/index.d.mts +0 -8
  237. package/lib/download/api/index.mjs +0 -54
  238. package/lib/download/api/queue.cjs +0 -104
  239. package/lib/download/api/queue.d.cts +0 -32
  240. package/lib/download/api/queue.d.mts +0 -32
  241. package/lib/download/api/queue.mjs +0 -101
  242. package/lib/download/api/types.cjs +0 -2
  243. package/lib/download/api/types.d.cts +0 -17
  244. package/lib/download/api/types.d.mts +0 -17
  245. package/lib/download/api/types.mjs +0 -1
  246. package/lib/download/git/branch.cjs +0 -19
  247. package/lib/download/git/branch.d.cts +0 -8
  248. package/lib/download/git/branch.d.mts +0 -8
  249. package/lib/download/git/branch.mjs +0 -17
  250. package/lib/download/git/hash.cjs +0 -14
  251. package/lib/download/git/hash.d.cts +0 -8
  252. package/lib/download/git/hash.d.mts +0 -8
  253. package/lib/download/git/hash.mjs +0 -12
  254. package/lib/download/git/index.cjs +0 -77
  255. package/lib/download/git/index.d.cts +0 -29
  256. package/lib/download/git/index.d.mts +0 -29
  257. package/lib/download/git/index.mjs +0 -75
  258. package/lib/download/git/reset.cjs +0 -37
  259. package/lib/download/git/reset.d.cts +0 -6
  260. package/lib/download/git/reset.d.mts +0 -6
  261. package/lib/download/git/reset.mjs +0 -35
  262. package/lib/download/github/hash.cjs +0 -31
  263. package/lib/download/github/hash.d.cts +0 -8
  264. package/lib/download/github/hash.d.mts +0 -8
  265. package/lib/download/github/hash.mjs +0 -29
  266. package/lib/download/github/index.cjs +0 -105
  267. package/lib/download/github/index.d.cts +0 -31
  268. package/lib/download/github/index.d.mts +0 -31
  269. package/lib/download/github/index.mjs +0 -103
  270. package/lib/download/github/types.cjs +0 -2
  271. package/lib/download/github/types.d.cts +0 -11
  272. package/lib/download/github/types.d.mts +0 -11
  273. package/lib/download/github/types.mjs +0 -1
  274. package/lib/download/gitlab/hash.cjs +0 -33
  275. package/lib/download/gitlab/hash.d.cts +0 -8
  276. package/lib/download/gitlab/hash.d.mts +0 -8
  277. package/lib/download/gitlab/hash.mjs +0 -31
  278. package/lib/download/gitlab/index.cjs +0 -105
  279. package/lib/download/gitlab/index.d.cts +0 -31
  280. package/lib/download/gitlab/index.d.mts +0 -31
  281. package/lib/download/gitlab/index.mjs +0 -103
  282. package/lib/download/gitlab/types.cjs +0 -5
  283. package/lib/download/gitlab/types.d.cts +0 -15
  284. package/lib/download/gitlab/types.d.mts +0 -15
  285. package/lib/download/gitlab/types.mjs +0 -3
  286. package/lib/download/helpers/untar.cjs +0 -12
  287. package/lib/download/helpers/untar.d.cts +0 -6
  288. package/lib/download/helpers/untar.d.mts +0 -6
  289. package/lib/download/helpers/untar.mjs +0 -10
  290. package/lib/download/helpers/unzip.cjs +0 -17
  291. package/lib/download/helpers/unzip.d.cts +0 -6
  292. package/lib/download/helpers/unzip.d.mts +0 -6
  293. package/lib/download/helpers/unzip.mjs +0 -11
  294. package/lib/download/index.cjs +0 -64
  295. package/lib/download/index.d.cts +0 -48
  296. package/lib/download/index.d.mts +0 -48
  297. package/lib/download/index.mjs +0 -62
  298. package/lib/download/npm/index.cjs +0 -85
  299. package/lib/download/npm/index.d.cts +0 -30
  300. package/lib/download/npm/index.d.mts +0 -30
  301. package/lib/download/npm/index.mjs +0 -83
  302. package/lib/download/npm/types.cjs +0 -2
  303. package/lib/download/npm/types.d.cts +0 -9
  304. package/lib/download/npm/types.d.mts +0 -9
  305. package/lib/download/npm/types.mjs +0 -1
  306. package/lib/download/npm/version.cjs +0 -29
  307. package/lib/download/npm/version.d.cts +0 -16
  308. package/lib/download/npm/version.d.mts +0 -16
  309. package/lib/download/npm/version.mjs +0 -26
  310. package/lib/download/types/modified.cjs +0 -2
  311. package/lib/download/types/modified.d.cts +0 -6
  312. package/lib/download/types/modified.d.mts +0 -6
  313. package/lib/download/types/modified.mjs +0 -1
  314. package/lib/download/types/sources.cjs +0 -2
  315. package/lib/download/types/sources.d.cts +0 -12
  316. package/lib/download/types/sources.d.mts +0 -12
  317. package/lib/download/types/sources.mjs +0 -1
  318. package/lib/export/directory.cjs +0 -43
  319. package/lib/export/directory.d.cts +0 -26
  320. package/lib/export/directory.d.mts +0 -26
  321. package/lib/export/directory.mjs +0 -41
  322. package/lib/export/helpers/custom-files.cjs +0 -26
  323. package/lib/export/helpers/custom-files.d.cts +0 -12
  324. package/lib/export/helpers/custom-files.d.mts +0 -12
  325. package/lib/export/helpers/custom-files.mjs +0 -24
  326. package/lib/export/helpers/prepare.cjs +0 -34
  327. package/lib/export/helpers/prepare.d.cts +0 -19
  328. package/lib/export/helpers/prepare.d.mts +0 -19
  329. package/lib/export/helpers/prepare.mjs +0 -31
  330. package/lib/export/helpers/types-version.cjs +0 -12
  331. package/lib/export/helpers/types-version.d.cts +0 -6
  332. package/lib/export/helpers/types-version.d.mts +0 -6
  333. package/lib/export/helpers/types-version.mjs +0 -10
  334. package/lib/export/icon-package.cjs +0 -56
  335. package/lib/export/icon-package.d.cts +0 -26
  336. package/lib/export/icon-package.d.mts +0 -26
  337. package/lib/export/icon-package.mjs +0 -54
  338. package/lib/export/json-package.cjs +0 -144
  339. package/lib/export/json-package.d.cts +0 -25
  340. package/lib/export/json-package.d.mts +0 -25
  341. package/lib/export/json-package.mjs +0 -142
  342. package/lib/icon-set/index.cjs +0 -720
  343. package/lib/icon-set/index.d.cts +0 -162
  344. package/lib/icon-set/index.d.mts +0 -162
  345. package/lib/icon-set/index.mjs +0 -716
  346. package/lib/icon-set/match.cjs +0 -56
  347. package/lib/icon-set/match.d.cts +0 -15
  348. package/lib/icon-set/match.d.mts +0 -15
  349. package/lib/icon-set/match.mjs +0 -54
  350. package/lib/icon-set/merge.cjs +0 -87
  351. package/lib/icon-set/merge.d.cts +0 -14
  352. package/lib/icon-set/merge.d.mts +0 -14
  353. package/lib/icon-set/merge.mjs +0 -85
  354. package/lib/icon-set/modified.cjs +0 -25
  355. package/lib/icon-set/modified.d.cts +0 -16
  356. package/lib/icon-set/modified.d.mts +0 -16
  357. package/lib/icon-set/modified.mjs +0 -23
  358. package/lib/icon-set/props.cjs +0 -16
  359. package/lib/icon-set/props.d.cts +0 -13
  360. package/lib/icon-set/props.d.mts +0 -13
  361. package/lib/icon-set/props.mjs +0 -13
  362. package/lib/icon-set/tags.cjs +0 -95
  363. package/lib/icon-set/tags.d.cts +0 -25
  364. package/lib/icon-set/tags.d.mts +0 -25
  365. package/lib/icon-set/tags.mjs +0 -91
  366. package/lib/icon-set/types.cjs +0 -2
  367. package/lib/icon-set/types.d.cts +0 -75
  368. package/lib/icon-set/types.d.mts +0 -75
  369. package/lib/icon-set/types.mjs +0 -1
  370. package/lib/import/directory.cjs +0 -169
  371. package/lib/import/directory.d.cts +0 -52
  372. package/lib/import/directory.d.mts +0 -52
  373. package/lib/import/directory.mjs +0 -166
  374. package/lib/import/figma/index.cjs +0 -115
  375. package/lib/import/figma/index.d.cts +0 -20
  376. package/lib/import/figma/index.d.mts +0 -20
  377. package/lib/import/figma/index.mjs +0 -113
  378. package/lib/import/figma/nodes.cjs +0 -90
  379. package/lib/import/figma/nodes.d.cts +0 -18
  380. package/lib/import/figma/nodes.d.mts +0 -18
  381. package/lib/import/figma/nodes.mjs +0 -88
  382. package/lib/import/figma/query.cjs +0 -260
  383. package/lib/import/figma/query.d.cts +0 -42
  384. package/lib/import/figma/query.d.mts +0 -42
  385. package/lib/import/figma/query.mjs +0 -256
  386. package/lib/import/figma/types/api.cjs +0 -2
  387. package/lib/import/figma/types/api.d.cts +0 -53
  388. package/lib/import/figma/types/api.d.mts +0 -53
  389. package/lib/import/figma/types/api.mjs +0 -1
  390. package/lib/import/figma/types/nodes.cjs +0 -2
  391. package/lib/import/figma/types/nodes.d.cts +0 -44
  392. package/lib/import/figma/types/nodes.d.mts +0 -44
  393. package/lib/import/figma/types/nodes.mjs +0 -1
  394. package/lib/import/figma/types/options.cjs +0 -2
  395. package/lib/import/figma/types/options.d.cts +0 -59
  396. package/lib/import/figma/types/options.d.mts +0 -59
  397. package/lib/import/figma/types/options.mjs +0 -1
  398. package/lib/import/figma/types/result.cjs +0 -2
  399. package/lib/import/figma/types/result.d.cts +0 -44
  400. package/lib/import/figma/types/result.d.mts +0 -44
  401. package/lib/import/figma/types/result.mjs +0 -1
  402. package/lib/index.cjs +0 -156
  403. package/lib/index.d.cts +0 -79
  404. package/lib/index.d.mts +0 -79
  405. package/lib/index.mjs +0 -91
  406. package/lib/misc/bump-version.cjs +0 -15
  407. package/lib/misc/bump-version.d.cts +0 -6
  408. package/lib/misc/bump-version.d.mts +0 -6
  409. package/lib/misc/bump-version.mjs +0 -13
  410. package/lib/misc/cheerio.cjs +0 -2
  411. package/lib/misc/cheerio.d.cts +0 -10
  412. package/lib/misc/cheerio.d.mts +0 -10
  413. package/lib/misc/cheerio.d.ts +0 -10
  414. package/lib/misc/cheerio.mjs +0 -1
  415. package/lib/misc/compare-dirs.cjs +0 -75
  416. package/lib/misc/compare-dirs.d.cts +0 -11
  417. package/lib/misc/compare-dirs.d.mts +0 -11
  418. package/lib/misc/compare-dirs.mjs +0 -73
  419. package/lib/misc/exec.cjs +0 -27
  420. package/lib/misc/exec.d.cts +0 -12
  421. package/lib/misc/exec.d.mts +0 -12
  422. package/lib/misc/exec.mjs +0 -25
  423. package/lib/misc/keyword.cjs +0 -20
  424. package/lib/misc/keyword.d.cts +0 -6
  425. package/lib/misc/keyword.d.mts +0 -6
  426. package/lib/misc/keyword.mjs +0 -18
  427. package/lib/misc/scan.cjs +0 -114
  428. package/lib/misc/scan.d.cts +0 -33
  429. package/lib/misc/scan.d.mts +0 -33
  430. package/lib/misc/scan.mjs +0 -111
  431. package/lib/misc/write-json.cjs +0 -9
  432. package/lib/misc/write-json.d.cts +0 -6
  433. package/lib/misc/write-json.d.mts +0 -6
  434. package/lib/misc/write-json.mjs +0 -7
  435. package/lib/optimise/figma.cjs +0 -232
  436. package/lib/optimise/figma.d.cts +0 -14
  437. package/lib/optimise/figma.d.mts +0 -14
  438. package/lib/optimise/figma.mjs +0 -230
  439. package/lib/optimise/flags.cjs +0 -256
  440. package/lib/optimise/flags.d.cts +0 -11
  441. package/lib/optimise/flags.d.mts +0 -11
  442. package/lib/optimise/flags.mjs +0 -254
  443. package/lib/optimise/global-style.cjs +0 -158
  444. package/lib/optimise/global-style.d.cts +0 -11
  445. package/lib/optimise/global-style.d.mts +0 -11
  446. package/lib/optimise/global-style.mjs +0 -156
  447. package/lib/optimise/mask.cjs +0 -110
  448. package/lib/optimise/mask.d.cts +0 -24
  449. package/lib/optimise/mask.d.mts +0 -24
  450. package/lib/optimise/mask.mjs +0 -108
  451. package/lib/optimise/origin.cjs +0 -23
  452. package/lib/optimise/origin.d.cts +0 -11
  453. package/lib/optimise/origin.d.mts +0 -11
  454. package/lib/optimise/origin.mjs +0 -21
  455. package/lib/optimise/scale.cjs +0 -27
  456. package/lib/optimise/scale.d.cts +0 -11
  457. package/lib/optimise/scale.d.mts +0 -11
  458. package/lib/optimise/scale.mjs +0 -25
  459. package/lib/optimise/svgo.cjs +0 -107
  460. package/lib/optimise/svgo.d.cts +0 -37
  461. package/lib/optimise/svgo.d.mts +0 -37
  462. package/lib/optimise/svgo.mjs +0 -104
  463. package/lib/optimise/unwrap.cjs +0 -31
  464. package/lib/optimise/unwrap.d.cts +0 -11
  465. package/lib/optimise/unwrap.d.mts +0 -11
  466. package/lib/optimise/unwrap.mjs +0 -29
  467. package/lib/svg/analyse/error.cjs +0 -16
  468. package/lib/svg/analyse/error.d.cts +0 -11
  469. package/lib/svg/analyse/error.d.mts +0 -11
  470. package/lib/svg/analyse/error.mjs +0 -14
  471. package/lib/svg/analyse/types.cjs +0 -2
  472. package/lib/svg/analyse/types.d.cts +0 -93
  473. package/lib/svg/analyse/types.d.mts +0 -93
  474. package/lib/svg/analyse/types.mjs +0 -1
  475. package/lib/svg/analyse.cjs +0 -303
  476. package/lib/svg/analyse.d.cts +0 -16
  477. package/lib/svg/analyse.d.mts +0 -16
  478. package/lib/svg/analyse.mjs +0 -301
  479. package/lib/svg/cleanup/attribs.cjs +0 -39
  480. package/lib/svg/cleanup/attribs.d.cts +0 -11
  481. package/lib/svg/cleanup/attribs.d.mts +0 -11
  482. package/lib/svg/cleanup/attribs.mjs +0 -37
  483. package/lib/svg/cleanup/bad-tags.cjs +0 -69
  484. package/lib/svg/cleanup/bad-tags.d.cts +0 -17
  485. package/lib/svg/cleanup/bad-tags.d.mts +0 -17
  486. package/lib/svg/cleanup/bad-tags.mjs +0 -67
  487. package/lib/svg/cleanup/inline-style.cjs +0 -97
  488. package/lib/svg/cleanup/inline-style.d.cts +0 -11
  489. package/lib/svg/cleanup/inline-style.d.mts +0 -11
  490. package/lib/svg/cleanup/inline-style.mjs +0 -95
  491. package/lib/svg/cleanup/root-style.cjs +0 -34
  492. package/lib/svg/cleanup/root-style.d.cts +0 -17
  493. package/lib/svg/cleanup/root-style.d.mts +0 -17
  494. package/lib/svg/cleanup/root-style.mjs +0 -32
  495. package/lib/svg/cleanup/root-svg.cjs +0 -84
  496. package/lib/svg/cleanup/root-svg.d.cts +0 -11
  497. package/lib/svg/cleanup/root-svg.d.mts +0 -11
  498. package/lib/svg/cleanup/root-svg.mjs +0 -82
  499. package/lib/svg/cleanup/svgo-style.cjs +0 -43
  500. package/lib/svg/cleanup/svgo-style.d.cts +0 -11
  501. package/lib/svg/cleanup/svgo-style.d.mts +0 -11
  502. package/lib/svg/cleanup/svgo-style.mjs +0 -41
  503. package/lib/svg/cleanup.cjs +0 -33
  504. package/lib/svg/cleanup.d.cts +0 -16
  505. package/lib/svg/cleanup.d.mts +0 -16
  506. package/lib/svg/cleanup.mjs +0 -31
  507. package/lib/svg/data/attributes.cjs +0 -373
  508. package/lib/svg/data/attributes.d.cts +0 -77
  509. package/lib/svg/data/attributes.d.mts +0 -77
  510. package/lib/svg/data/attributes.mjs +0 -346
  511. package/lib/svg/data/tags.cjs +0 -141
  512. package/lib/svg/data/tags.d.cts +0 -95
  513. package/lib/svg/data/tags.d.mts +0 -95
  514. package/lib/svg/data/tags.mjs +0 -117
  515. package/lib/svg/index.cjs +0 -178
  516. package/lib/svg/index.d.cts +0 -52
  517. package/lib/svg/index.d.mts +0 -52
  518. package/lib/svg/index.mjs +0 -162
  519. package/lib/svg/parse-style.cjs +0 -243
  520. package/lib/svg/parse-style.d.cts +0 -59
  521. package/lib/svg/parse-style.d.mts +0 -59
  522. package/lib/svg/parse-style.mjs +0 -241
  523. package/lib/svg/parse.cjs +0 -46
  524. package/lib/svg/parse.d.cts +0 -31
  525. package/lib/svg/parse.d.mts +0 -31
  526. package/lib/svg/parse.mjs +0 -44
@@ -1,5 +1,4 @@
1
- import { Color } from '@iconify/utils/lib/colors/types';
2
-
1
+ import { Color } from "@iconify/utils/lib/colors/types";
3
2
  /**
4
3
  * Color attributes
5
4
  */
@@ -23,5 +22,4 @@ declare const defaultColorValues: Record<ColorAttributes, Color>;
23
22
  * Parent elements are not checked for these tags!
24
23
  */
25
24
  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 };
25
+ export { ColorAttributes, CommonColorAttributes, ShapeColorAttributes, SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
@@ -0,0 +1,33 @@
1
+ const commonColorAttributes = ["color"];
2
+ const shapeColorAttributes = ["fill", "stroke"];
3
+ const specialColorAttributes = ["stop-color", "flood-color"];
4
+ /**
5
+ * Default values
6
+ */
7
+ const defaultBlackColor = {
8
+ type: "rgb",
9
+ r: 0,
10
+ g: 0,
11
+ b: 0,
12
+ alpha: 1
13
+ };
14
+ const defaultColorValues = {
15
+ "color": { type: "current" },
16
+ "fill": defaultBlackColor,
17
+ "stroke": { type: "none" },
18
+ "stop-color": defaultBlackColor,
19
+ "flood-color": defaultBlackColor
20
+ };
21
+ /**
22
+ * Ignore default color for some tags:
23
+ * - If value is true, allow default color
24
+ * - If value is attribute name, allow default color if attribute is set
25
+ *
26
+ * Parent elements are not checked for these tags!
27
+ */
28
+ const allowDefaultColorValue = {
29
+ "stop-color": true,
30
+ "flood-color": "flood-opacity"
31
+ };
32
+
33
+ export { allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
@@ -1,16 +1,8 @@
1
- import { IconSet } from '../icon-set/index.js';
2
- import '@iconify/types';
3
- import '@iconify/utils/lib/customisations/defaults';
4
- import '../icon-set/types.js';
5
- import '../svg/index.js';
6
- import 'cheerio';
7
- import '@iconify/utils/lib/icon-set/tree';
8
-
1
+ import { IconSet } from "../icon-set/index.js";
9
2
  /**
10
3
  * Detect palette
11
4
  *
12
5
  * Returns null if icon set has mixed colors
13
6
  */
14
7
  declare function detectIconSetPalette(iconSet: IconSet): boolean | null;
15
-
16
- export { detectIconSetPalette };
8
+ export { detectIconSetPalette };
@@ -0,0 +1,36 @@
1
+ import { isEmptyColor, parseColors } from "./parse.js";
2
+
3
+ /**
4
+ * Detect palette
5
+ *
6
+ * Returns null if icon set has mixed colors
7
+ */
8
+ function detectIconSetPalette(iconSet) {
9
+ let palette;
10
+ iconSet.forEachSync((name) => {
11
+ if (palette === null) return;
12
+ const svg = iconSet.toSVG(name);
13
+ if (!svg) return;
14
+ let iconPalette;
15
+ parseColors(svg, { callback: (attr, colorStr, color) => {
16
+ if (!color) {
17
+ iconPalette = null;
18
+ return colorStr;
19
+ }
20
+ if (iconPalette === null || isEmptyColor(color)) return color;
21
+ const isColor = color.type !== "current";
22
+ if (iconPalette === void 0) {
23
+ iconPalette = isColor;
24
+ return color;
25
+ }
26
+ if (iconPalette !== isColor) iconPalette = null;
27
+ return color;
28
+ } });
29
+ if (iconPalette === void 0) iconPalette = null;
30
+ if (palette === void 0) palette = iconPalette;
31
+ else if (palette !== iconPalette) palette = null;
32
+ }, ["icon"]);
33
+ return palette ?? null;
34
+ }
35
+
36
+ export { detectIconSetPalette };
@@ -1,20 +1,14 @@
1
- import { Color } from '@iconify/utils/lib/colors/types';
2
- import { SVG } from '../svg/index.js';
3
- import { ColorAttributes } from './attribs.js';
4
- import { ElementsTreeItem, AnalyseSVGStructureResult, AnalyseSVGStructureOptions, ExtendedTagElement } from '../svg/analyse/types.js';
5
- import 'cheerio';
6
- import '@iconify/types';
7
- import '@iconify/utils/lib/customisations/defaults';
8
- import '../misc/cheerio.js';
9
- import 'domhandler';
10
-
1
+ import { ColorAttributes } from "./attribs.js";
2
+ import { SVG } from "../svg/index.js";
3
+ import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementsTreeItem, ExtendedTagElement } from "../svg/analyse/types.js";
4
+ import { Color } from "@iconify/utils/lib/colors/types";
11
5
  /**
12
6
  * Result
13
7
  */
14
8
  interface FindColorsResult {
15
- colors: (Color | string)[];
16
- hasUnsetColor: boolean;
17
- hasGlobalStyle: boolean;
9
+ colors: (Color | string)[];
10
+ hasUnsetColor: boolean;
11
+ hasGlobalStyle: boolean;
18
12
  }
19
13
  /**
20
14
  * Callback to call for each found color
@@ -35,16 +29,16 @@ type ParseColorOptionsDefaultColorCallback = (prop: string, item: ExtendedTagEle
35
29
  * Options
36
30
  */
37
31
  interface ParseColorsOptions extends AnalyseSVGStructureOptions {
38
- callback?: ParseColorsCallback;
39
- defaultColor?: Color | string | ParseColorOptionsDefaultColorCallback;
32
+ callback?: ParseColorsCallback;
33
+ defaultColor?: Color | string | ParseColorOptionsDefaultColorCallback;
40
34
  }
41
35
  /**
42
36
  * Extend properties for element
43
37
  */
44
38
  type ItemColors = Partial<Record<ColorAttributes, Color | string>>;
45
39
  interface ExtendedTagElementWithColors extends ExtendedTagElement {
46
- _colors?: ItemColors;
47
- _removed?: boolean;
40
+ _colors?: ItemColors;
41
+ _removed?: boolean;
48
42
  }
49
43
  /**
50
44
  * Find colors in icon
@@ -57,5 +51,4 @@ declare function parseColors(svg: SVG, options?: ParseColorsOptions): FindColors
57
51
  * Check if color is empty, such as 'none' or 'transparent'
58
52
  */
59
53
  declare function isEmptyColor(color: Color): boolean;
60
-
61
- export { type ExtendedTagElementWithColors, type FindColorsResult, type ParseColorOptionsDefaultColorCallback, type ParseColorsOptions, isEmptyColor, parseColors };
54
+ export { ExtendedTagElementWithColors, FindColorsResult, ParseColorOptionsDefaultColorCallback, ParseColorsOptions, isEmptyColor, parseColors };
@@ -0,0 +1,241 @@
1
+ import { parseSVGStyle } from "../svg/parse-style.js";
2
+ import { animateTags, shapeTags } from "../svg/data/tags.js";
3
+ import { tagSpecificPresentationalAttributes } from "../svg/data/attributes.js";
4
+ import { analyseSVGStructure } from "../svg/analyse.js";
5
+ import { allowDefaultColorValue, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes } from "./attribs.js";
6
+ import { colorToString, compareColors, stringToColor } from "@iconify/utils/lib/colors";
7
+
8
+ /**
9
+ * Properties to check
10
+ */
11
+ const propsToCheck = Object.keys(defaultColorValues);
12
+ const animatePropsToCheck = [
13
+ "from",
14
+ "to",
15
+ "values"
16
+ ];
17
+ /**
18
+ * Find colors in icon
19
+ *
20
+ * Clean up icon before running this function to convert style to attributes using
21
+ * cleanupInlineStyle() or cleanupSVG(), otherwise results might be inaccurate
22
+ */
23
+ function parseColors(svg, options = {}) {
24
+ const result = {
25
+ colors: [],
26
+ hasUnsetColor: false,
27
+ hasGlobalStyle: false
28
+ };
29
+ const defaultColor = typeof options.defaultColor === "string" ? stringToColor(options.defaultColor) : options.defaultColor;
30
+ /**
31
+ * Find matching color in results
32
+ */
33
+ function findColor(color, add = false) {
34
+ const isString = typeof color === "string";
35
+ for (let i = 0; i < result.colors.length; i++) {
36
+ const item = result.colors[i];
37
+ if (item === color) return item;
38
+ if (!isString && typeof item !== "string" && compareColors(item, color)) return item;
39
+ }
40
+ if (add) {
41
+ result.colors.push(color);
42
+ return color;
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Add color to item and to results
48
+ */
49
+ function addColorToItem(prop, color, item, add = true) {
50
+ const addedColor = findColor(color, add !== false);
51
+ if (item) {
52
+ const itemColors = item._colors || (item._colors = {});
53
+ itemColors[prop] = addedColor === null ? color : addedColor;
54
+ }
55
+ }
56
+ /**
57
+ * Get element color
58
+ */
59
+ function getElementColor(prop, item, elements$1) {
60
+ function find(prop$1) {
61
+ let currentItem = item;
62
+ const allowDefaultColor = allowDefaultColorValue[prop$1];
63
+ while (currentItem) {
64
+ const element = elements$1.get(currentItem.index);
65
+ const color = element._colors?.[prop$1];
66
+ if (color !== void 0) return color;
67
+ if (allowDefaultColor) {
68
+ if (allowDefaultColor === true || element.attribs[allowDefaultColor]) return null;
69
+ }
70
+ currentItem = currentItem.parent;
71
+ if (currentItem?.usedAsMask) return defaultColorValues[prop$1];
72
+ }
73
+ return defaultColorValues[prop$1];
74
+ }
75
+ let propColor = find(prop);
76
+ if (propColor !== null && typeof propColor === "object" && propColor.type === "current" && prop !== "color") propColor = find("color");
77
+ return propColor;
78
+ }
79
+ /**
80
+ * Change color
81
+ */
82
+ function checkColor(prop, value, item) {
83
+ switch (value.trim().toLowerCase()) {
84
+ case "":
85
+ case "inherit": return;
86
+ }
87
+ const parsedColor = stringToColor(value);
88
+ const defaultValue = parsedColor || value;
89
+ if (parsedColor?.type === "function" && parsedColor.func === "url") {
90
+ addColorToItem(prop, defaultValue, item, false);
91
+ return value;
92
+ }
93
+ if (!options.callback) {
94
+ addColorToItem(prop, defaultValue, item);
95
+ return value;
96
+ }
97
+ const callbackResult = options.callback(prop, value, parsedColor, item?.tag, item);
98
+ if (callbackResult instanceof Promise) throw new Error("parseColors does not support async callbacks");
99
+ switch (callbackResult) {
100
+ case "remove": return item ? callbackResult : void 0;
101
+ case "unset": return;
102
+ }
103
+ if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
104
+ addColorToItem(prop, defaultValue, item);
105
+ return value;
106
+ }
107
+ if (typeof callbackResult === "string") {
108
+ addColorToItem(prop, stringToColor(callbackResult) || callbackResult, item);
109
+ return callbackResult;
110
+ }
111
+ const newValue = colorToString(callbackResult);
112
+ addColorToItem(prop, callbackResult, item);
113
+ return newValue;
114
+ }
115
+ parseSVGStyle(svg, (item) => {
116
+ const prop = item.prop;
117
+ const value = item.value;
118
+ if (!propsToCheck.includes(prop)) return value;
119
+ const newValue = checkColor(prop, value);
120
+ if (newValue === void 0) return newValue;
121
+ if (item.type === "global") result.hasGlobalStyle = true;
122
+ return newValue;
123
+ });
124
+ const iconData = analyseSVGStructure(svg, options);
125
+ const { elements, tree } = iconData;
126
+ const removedElements = /* @__PURE__ */ new Set();
127
+ const parsedElements = /* @__PURE__ */ new Set();
128
+ function removeElement(index, element) {
129
+ function removeChildren(element$1) {
130
+ element$1.children.forEach((item) => {
131
+ if (item.type !== "tag") return;
132
+ const element$2 = item;
133
+ const index$1 = element$2._index;
134
+ if (index$1 && !removedElements.has(index$1)) {
135
+ element$2._removed = true;
136
+ removedElements.add(index$1);
137
+ removeChildren(element$2);
138
+ }
139
+ });
140
+ }
141
+ element._removed = true;
142
+ removedElements.add(index);
143
+ removeChildren(element);
144
+ }
145
+ function parseTreeItem(item) {
146
+ const index = item.index;
147
+ if (removedElements.has(index) || parsedElements.has(index)) return;
148
+ parsedElements.add(index);
149
+ const element = elements.get(index);
150
+ if (element._removed) return;
151
+ const { tag, attribs } = element;
152
+ if (item.parent) {
153
+ const parentIndex = item.parent.index;
154
+ const parentElement = elements.get(parentIndex);
155
+ if (parentElement._colors) element._colors = { ...parentElement._colors };
156
+ }
157
+ for (let i = 0; i < propsToCheck.length; i++) {
158
+ const prop = propsToCheck[i];
159
+ if (prop === "fill" && animateTags.has(tag)) continue;
160
+ const value = attribs[prop];
161
+ if (typeof value === "string") {
162
+ const newValue = checkColor(prop, value, element);
163
+ if (newValue !== value) if (newValue === void 0) {
164
+ delete attribs[prop];
165
+ if (element._colors) delete element._colors[prop];
166
+ } else if (newValue === "remove") {
167
+ removeElement(index, element);
168
+ return;
169
+ } else attribs[prop] = newValue;
170
+ }
171
+ }
172
+ if (animateTags.has(tag)) {
173
+ const attr = attribs.attributeName;
174
+ if (propsToCheck.includes(attr)) for (let i = 0; i < animatePropsToCheck.length; i++) {
175
+ const elementProp = animatePropsToCheck[i];
176
+ const fullValue = attribs[elementProp];
177
+ if (typeof fullValue !== "string") continue;
178
+ const splitValues = fullValue.split(";");
179
+ let updatedValues = false;
180
+ for (let j = 0; j < splitValues.length; j++) {
181
+ const value = splitValues[j];
182
+ if (value !== void 0) {
183
+ const newValue = checkColor(elementProp, value);
184
+ if (newValue !== value) {
185
+ updatedValues = true;
186
+ splitValues[j] = typeof newValue === "string" ? newValue : "";
187
+ }
188
+ }
189
+ }
190
+ if (updatedValues) attribs[elementProp] = splitValues.join(";");
191
+ }
192
+ }
193
+ if (!result.hasGlobalStyle) {
194
+ let requiredProps;
195
+ if (shapeTags.has(tag)) requiredProps = shapeColorAttributes;
196
+ specialColorAttributes.forEach((attr) => {
197
+ if (tagSpecificPresentationalAttributes[tag]?.has(attr)) requiredProps = [attr];
198
+ });
199
+ if (requiredProps) {
200
+ const itemColors = element._colors || (element._colors = {});
201
+ for (let i = 0; i < requiredProps.length; i++) {
202
+ const prop = requiredProps[i];
203
+ if (getElementColor(prop, item, elements) === defaultBlackColor) if (defaultColor) {
204
+ const defaultColorValue = typeof defaultColor === "function" ? defaultColor(prop, element, item, iconData) : defaultColor;
205
+ findColor(defaultColorValue, true);
206
+ attribs[prop] = colorToString(defaultColorValue);
207
+ itemColors[prop] = defaultColorValue;
208
+ } else result.hasUnsetColor = true;
209
+ }
210
+ }
211
+ }
212
+ for (let i = 0; i < item.children.length; i++) {
213
+ const childItem = item.children[i];
214
+ if (!childItem.usedAsMask) parseTreeItem(childItem);
215
+ }
216
+ }
217
+ parseTreeItem(tree);
218
+ function removeElements(node, parent) {
219
+ if (parent) {
220
+ const index = node.index;
221
+ if (removedElements.has(index) || elements.get(index)._removed) {
222
+ parent.children = parent.children.filter((item) => item.index !== index);
223
+ return;
224
+ }
225
+ }
226
+ node.children.forEach((child) => {
227
+ removeElements(child, node);
228
+ });
229
+ }
230
+ removeElements(tree);
231
+ return result;
232
+ }
233
+ /**
234
+ * Check if color is empty, such as 'none' or 'transparent'
235
+ */
236
+ function isEmptyColor(color) {
237
+ const type = color.type;
238
+ return type === "none" || type === "transparent";
239
+ }
240
+
241
+ export { isEmptyColor, parseColors };
@@ -1,14 +1,5 @@
1
- import { SVG } from '../svg/index.js';
2
- import { ParseColorsOptions, FindColorsResult } from './parse.js';
3
- import 'cheerio';
4
- import '@iconify/types';
5
- import '@iconify/utils/lib/customisations/defaults';
6
- import '@iconify/utils/lib/colors/types';
7
- import './attribs.js';
8
- import '../svg/analyse/types.js';
9
- import '../misc/cheerio.js';
10
- import 'domhandler';
11
-
1
+ import { SVG } from "../svg/index.js";
2
+ import { FindColorsResult, ParseColorsOptions } from "./parse.js";
12
3
  /**
13
4
  * Validate colors in icon
14
5
  *
@@ -17,5 +8,4 @@ import 'domhandler';
17
8
  * Throws exception on error
18
9
  */
19
10
  declare function validateColors(svg: SVG, expectMonotone: boolean, options?: ParseColorsOptions): FindColorsResult;
20
-
21
- export { validateColors };
11
+ export { validateColors };
@@ -0,0 +1,31 @@
1
+ import { parseColors } from "./parse.js";
2
+ import { colorToString } from "@iconify/utils/lib/colors";
3
+
4
+ /**
5
+ * Validate colors in icon
6
+ *
7
+ * If icon is monotone,
8
+ *
9
+ * Throws exception on error
10
+ */
11
+ function validateColors(svg, expectMonotone, options) {
12
+ const palette = parseColors(svg, options);
13
+ palette.colors.forEach((color) => {
14
+ if (typeof color === "string") throw new Error("Unexpected color: " + color);
15
+ switch (color.type) {
16
+ case "none":
17
+ case "transparent": return;
18
+ case "current":
19
+ if (!expectMonotone) throw new Error("Unexpected color: " + colorToString(color));
20
+ return;
21
+ case "rgb":
22
+ case "hsl":
23
+ if (expectMonotone) throw new Error("Unexpected color: " + colorToString(color));
24
+ return;
25
+ default: if (color.type !== "function" || color.func !== "url") throw new Error("Unexpected color: " + colorToString(color));
26
+ }
27
+ });
28
+ return palette;
29
+ }
30
+
31
+ export { validateColors };
@@ -2,5 +2,4 @@
2
2
  * Parse inline style
3
3
  */
4
4
  declare function parseInlineStyle(style: string): Record<string, string> | null;
5
-
6
- export { parseInlineStyle };
5
+ export { parseInlineStyle };
@@ -0,0 +1,18 @@
1
+ import { getTokens } from "./parser/tokens.js";
2
+
3
+ /**
4
+ * Parse inline style
5
+ */
6
+ function parseInlineStyle(style) {
7
+ const tokens = getTokens(style);
8
+ if (!(tokens instanceof Array)) return null;
9
+ const results = Object.create(null);
10
+ for (let i = 0; i < tokens.length; i++) {
11
+ const token = tokens[i];
12
+ if (token.type !== "rule") return null;
13
+ results[token.prop] = token.value;
14
+ }
15
+ return results;
16
+ }
17
+
18
+ export { parseInlineStyle };
@@ -1,13 +1,12 @@
1
1
  interface StyleParseError {
2
- type: 'style-parse-error';
3
- message: string;
4
- code: string;
5
- index?: number;
6
- fullMessage: string;
2
+ type: 'style-parse-error';
3
+ message: string;
4
+ code: string;
5
+ index?: number;
6
+ fullMessage: string;
7
7
  }
8
8
  /**
9
9
  * Create error message
10
10
  */
11
11
  declare function styleParseError(message: string, code: string, index?: number): StyleParseError;
12
-
13
- export { type StyleParseError, styleParseError };
12
+ export { StyleParseError, styleParseError };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Create error message
3
+ */
4
+ function styleParseError(message, code, index) {
5
+ let fullMessage = message;
6
+ if (typeof index === "number" && index !== -1) {
7
+ const start = index;
8
+ const remaining = code.slice(index) + "!";
9
+ const trimmed = remaining.trim();
10
+ const end = start + remaining.length - trimmed.length;
11
+ const code2 = code.slice(0, end);
12
+ const line = code2.length - code2.replace(/\n/g, "").length + 1;
13
+ fullMessage = message + " on line " + line.toString();
14
+ }
15
+ return {
16
+ type: "style-parse-error",
17
+ message,
18
+ code,
19
+ index,
20
+ fullMessage
21
+ };
22
+ }
23
+
24
+ export { styleParseError };
@@ -1,8 +1,6 @@
1
- import { CSSTreeToken } from './types.js';
2
-
1
+ import { CSSTreeToken } from "./types.js";
3
2
  /**
4
3
  * Convert tokens tree to string
5
4
  */
6
5
  declare function tokensToString(tree: CSSTreeToken[]): string;
7
-
8
- export { tokensToString };
6
+ export { tokensToString };
@@ -0,0 +1,34 @@
1
+ const tab = " ";
2
+ const nl = "\n";
3
+ /**
4
+ * Convert tokens tree to string
5
+ */
6
+ function tokensToString(tree) {
7
+ let compact = true;
8
+ for (let i = 0; i < tree.length; i++) if (tree[i].type !== "rule") {
9
+ compact = false;
10
+ break;
11
+ }
12
+ return tree.map((token) => {
13
+ return parseToken(token, compact, 0);
14
+ }).join("");
15
+ }
16
+ /**
17
+ * Old code
18
+ */
19
+ function parseToken(token, compact, depth) {
20
+ let content;
21
+ switch (token.type) {
22
+ case "rule": return (compact ? "" : tab.repeat(depth)) + token.prop + (compact ? ":" : ": ") + token.value + ";" + (compact ? "" : nl);
23
+ case "at-rule":
24
+ content = `@${token.rule} ${token.value}`.trim();
25
+ break;
26
+ case "selector": content = token.selectors.join(compact ? "," : ", ");
27
+ }
28
+ const children = token.children.map((item) => {
29
+ return parseToken(item, compact, depth + 1);
30
+ });
31
+ return (compact ? "" : tab.repeat(depth)) + content + (compact ? "{" : " {" + nl) + children.join("") + (compact ? "}" : tab.repeat(depth) + "}\n");
32
+ }
33
+
34
+ export { tokensToString };
@@ -1,5 +1,4 @@
1
- import { StyleParseError } from './error.js';
2
-
1
+ import { StyleParseError } from "./error.js";
3
2
  /**
4
3
  * Find end of quoted string
5
4
  *
@@ -12,5 +11,4 @@ declare function findEndOfQuotedString(code: string, quote: string, start: numbe
12
11
  * Returns index of character after end of URL
13
12
  */
14
13
  declare function findEndOfURL(code: string, start: number): number | StyleParseError;
15
-
16
- export { findEndOfQuotedString, findEndOfURL };
14
+ export { findEndOfQuotedString, findEndOfURL };
@@ -0,0 +1,66 @@
1
+ import { styleParseError } from "./error.js";
2
+
3
+ /**
4
+ * Find end of quoted string
5
+ *
6
+ * Returns index of character after quote
7
+ */
8
+ function findEndOfQuotedString(code, quote, start) {
9
+ let nextEscape = code.indexOf("\\", start + 1);
10
+ let end = code.indexOf(quote, start + 1);
11
+ if (end === -1) return null;
12
+ while (nextEscape !== -1 && nextEscape < end) {
13
+ if (end === nextEscape + 1) {
14
+ end = code.indexOf(quote, end + 1);
15
+ if (end === -1) return null;
16
+ }
17
+ nextEscape = code.indexOf("\\", nextEscape + 2);
18
+ }
19
+ return end + 1;
20
+ }
21
+ /**
22
+ * Find end of url
23
+ *
24
+ * Returns index of character after end of URL
25
+ */
26
+ function findEndOfURL(code, start) {
27
+ let index = (start || 0) + 4;
28
+ const length = code.length;
29
+ while (true) {
30
+ if (index >= length) return styleParseError("Cannot find end of URL", code, start);
31
+ let next = code.charAt(index);
32
+ switch (next) {
33
+ case "\"":
34
+ case "'": {
35
+ let end = findEndOfQuotedString(code, next, index);
36
+ if (end === null) return styleParseError("Incomplete string", code, index);
37
+ end = code.indexOf(")", end);
38
+ return end === -1 ? styleParseError("Cannot find end of URL", code, start) : end + 1;
39
+ }
40
+ case " ":
41
+ case " ":
42
+ case "\r":
43
+ case "\n":
44
+ index++;
45
+ break;
46
+ default: while (true) {
47
+ switch (next) {
48
+ case ")": return index + 1;
49
+ case "\"":
50
+ case "'":
51
+ case "(":
52
+ case " ":
53
+ case " ":
54
+ case "\r":
55
+ case "\n": return styleParseError("Invalid URL", code, start);
56
+ default: if (code.charCodeAt(index) < 32) return styleParseError("Invalid URL", code, start);
57
+ }
58
+ index++;
59
+ if (index >= length) return styleParseError("Cannot find end of URL", code, start);
60
+ next = code.charAt(index);
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ export { findEndOfQuotedString, findEndOfURL };
@@ -1,5 +1,4 @@
1
- import { TextToken, CSSRuleToken, CSSTokenWithSelector } from './types.js';
2
-
1
+ import { CSSRuleToken, CSSTokenWithSelector, TextToken } from "./types.js";
3
2
  /**
4
3
  * Merge text tokens to string
5
4
  */
@@ -16,5 +15,4 @@ declare function textTokensToRule(tokens: TextToken[]): CSSRuleToken | null;
16
15
  * Create at-rule or selector token from text tokens
17
16
  */
18
17
  declare function textTokensToSelector(tokens: TextToken[]): CSSTokenWithSelector | null;
19
-
20
- export { getSelectors, mergeTextTokens, textTokensToRule, textTokensToSelector };
18
+ export { getSelectors, mergeTextTokens, textTokensToRule, textTokensToSelector };