@iconify/tools 4.2.0 → 5.0.0-beta.2

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 (534) 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 +6 -8
  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 +1 -2
  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 +26 -27
  110. package/lib/import/figma/types/api.js +1 -0
  111. package/lib/import/figma/types/nodes.d.ts +12 -21
  112. package/lib/import/figma/types/nodes.js +1 -0
  113. package/lib/import/figma/types/options.d.ts +23 -32
  114. package/lib/import/figma/types/options.js +1 -0
  115. package/lib/import/figma/types/result.d.ts +16 -24
  116. package/lib/import/figma/types/result.js +1 -0
  117. package/lib/index.d.ts +55 -80
  118. package/lib/index.js +56 -0
  119. package/lib/misc/bump-version.d.ts +1 -2
  120. package/lib/misc/bump-version.js +13 -0
  121. package/lib/misc/compare-dirs.d.ts +4 -5
  122. package/lib/misc/compare-dirs.js +65 -0
  123. package/lib/misc/exec.d.ts +4 -6
  124. package/lib/misc/exec.js +23 -0
  125. package/lib/misc/keyword.d.ts +1 -2
  126. package/lib/misc/keyword.js +12 -0
  127. package/lib/misc/scan.d.ts +2 -4
  128. package/lib/misc/scan.js +87 -0
  129. package/lib/misc/write-json.d.ts +1 -2
  130. package/lib/misc/write-json.js +10 -0
  131. package/lib/optimise/figma.d.ts +2 -7
  132. package/lib/optimise/figma.js +189 -0
  133. package/lib/optimise/flags.d.ts +2 -7
  134. package/lib/optimise/flags.js +231 -0
  135. package/lib/optimise/global-style.d.ts +2 -7
  136. package/lib/optimise/global-style.js +114 -0
  137. package/lib/optimise/mask.d.ts +9 -14
  138. package/lib/optimise/mask.js +83 -0
  139. package/lib/optimise/origin.d.ts +2 -7
  140. package/lib/optimise/origin.js +22 -0
  141. package/lib/optimise/scale.d.ts +2 -7
  142. package/lib/optimise/scale.js +24 -0
  143. package/lib/optimise/svgo.d.ts +10 -15
  144. package/lib/optimise/svgo.js +90 -0
  145. package/lib/optimise/unwrap.d.ts +2 -7
  146. package/lib/optimise/unwrap.js +25 -0
  147. package/lib/svg/analyse/error.d.ts +2 -7
  148. package/lib/svg/analyse/error.js +12 -0
  149. package/lib/svg/analyse/types.d.ts +31 -35
  150. package/lib/svg/analyse/types.js +1 -0
  151. package/lib/svg/analyse.d.ts +3 -10
  152. package/lib/svg/analyse.js +256 -0
  153. package/lib/svg/cleanup/attribs.d.ts +2 -7
  154. package/lib/svg/cleanup/attribs.js +37 -0
  155. package/lib/svg/cleanup/bad-tags.d.ts +3 -8
  156. package/lib/svg/cleanup/bad-tags.js +57 -0
  157. package/lib/svg/cleanup/inline-style.d.ts +2 -7
  158. package/lib/svg/cleanup/inline-style.js +80 -0
  159. package/lib/svg/cleanup/root-style.d.ts +4 -9
  160. package/lib/svg/cleanup/root-style.js +27 -0
  161. package/lib/svg/cleanup/root-svg.d.ts +2 -7
  162. package/lib/svg/cleanup/root-svg.js +73 -0
  163. package/lib/svg/cleanup/svgo-style.d.ts +2 -7
  164. package/lib/svg/cleanup/svgo-style.js +24 -0
  165. package/lib/svg/cleanup.d.ts +3 -8
  166. package/lib/svg/cleanup.js +20 -0
  167. package/lib/svg/data/attributes.d.ts +1 -2
  168. package/lib/svg/data/attributes.js +451 -0
  169. package/lib/svg/data/tags.d.ts +1 -2
  170. package/lib/svg/data/tags.js +182 -0
  171. package/lib/svg/index.d.ts +38 -47
  172. package/lib/svg/index.js +117 -0
  173. package/lib/svg/parse-style.d.ts +21 -28
  174. package/lib/svg/parse-style.js +199 -0
  175. package/lib/svg/parse.d.ts +8 -16
  176. package/lib/svg/parse.js +32 -0
  177. package/package.json +116 -222
  178. package/lib/colors/attribs.cjs +0 -33
  179. package/lib/colors/attribs.d.cts +0 -27
  180. package/lib/colors/attribs.d.mts +0 -27
  181. package/lib/colors/attribs.mjs +0 -26
  182. package/lib/colors/detect.cjs +0 -66
  183. package/lib/colors/detect.d.cts +0 -16
  184. package/lib/colors/detect.d.mts +0 -16
  185. package/lib/colors/detect.mjs +0 -64
  186. package/lib/colors/parse.cjs +0 -300
  187. package/lib/colors/parse.d.cts +0 -61
  188. package/lib/colors/parse.d.mts +0 -61
  189. package/lib/colors/parse.mjs +0 -297
  190. package/lib/colors/validate.cjs +0 -56
  191. package/lib/colors/validate.d.cts +0 -21
  192. package/lib/colors/validate.d.mts +0 -21
  193. package/lib/colors/validate.mjs +0 -54
  194. package/lib/css/parse.cjs +0 -24
  195. package/lib/css/parse.d.cts +0 -6
  196. package/lib/css/parse.d.mts +0 -6
  197. package/lib/css/parse.mjs +0 -22
  198. package/lib/css/parser/error.cjs +0 -23
  199. package/lib/css/parser/error.d.cts +0 -13
  200. package/lib/css/parser/error.d.mts +0 -13
  201. package/lib/css/parser/error.mjs +0 -21
  202. package/lib/css/parser/export.cjs +0 -37
  203. package/lib/css/parser/export.d.cts +0 -8
  204. package/lib/css/parser/export.d.mts +0 -8
  205. package/lib/css/parser/export.mjs +0 -35
  206. package/lib/css/parser/strings.cjs +0 -83
  207. package/lib/css/parser/strings.d.cts +0 -16
  208. package/lib/css/parser/strings.d.mts +0 -16
  209. package/lib/css/parser/strings.mjs +0 -80
  210. package/lib/css/parser/text.cjs +0 -114
  211. package/lib/css/parser/text.d.cts +0 -20
  212. package/lib/css/parser/text.d.mts +0 -20
  213. package/lib/css/parser/text.mjs +0 -109
  214. package/lib/css/parser/tokens.cjs +0 -206
  215. package/lib/css/parser/tokens.d.cts +0 -9
  216. package/lib/css/parser/tokens.d.mts +0 -9
  217. package/lib/css/parser/tokens.mjs +0 -204
  218. package/lib/css/parser/tree.cjs +0 -40
  219. package/lib/css/parser/tree.d.cts +0 -8
  220. package/lib/css/parser/tree.d.mts +0 -8
  221. package/lib/css/parser/tree.mjs +0 -38
  222. package/lib/css/parser/types.cjs +0 -2
  223. package/lib/css/parser/types.d.cts +0 -52
  224. package/lib/css/parser/types.d.mts +0 -52
  225. package/lib/css/parser/types.mjs +0 -1
  226. package/lib/download/api/cache.cjs +0 -91
  227. package/lib/download/api/cache.d.cts +0 -20
  228. package/lib/download/api/cache.d.mts +0 -20
  229. package/lib/download/api/cache.mjs +0 -86
  230. package/lib/download/api/config.cjs +0 -11
  231. package/lib/download/api/config.d.cts +0 -18
  232. package/lib/download/api/config.d.mts +0 -18
  233. package/lib/download/api/config.mjs +0 -8
  234. package/lib/download/api/download.cjs +0 -26
  235. package/lib/download/api/download.d.cts +0 -8
  236. package/lib/download/api/download.d.mts +0 -8
  237. package/lib/download/api/download.mjs +0 -24
  238. package/lib/download/api/fetch.cjs +0 -12
  239. package/lib/download/api/fetch.d.cts +0 -10
  240. package/lib/download/api/fetch.d.mts +0 -10
  241. package/lib/download/api/fetch.mjs +0 -9
  242. package/lib/download/api/index.cjs +0 -57
  243. package/lib/download/api/index.d.cts +0 -8
  244. package/lib/download/api/index.d.mts +0 -8
  245. package/lib/download/api/index.mjs +0 -55
  246. package/lib/download/api/queue.cjs +0 -104
  247. package/lib/download/api/queue.d.cts +0 -32
  248. package/lib/download/api/queue.d.mts +0 -32
  249. package/lib/download/api/queue.mjs +0 -101
  250. package/lib/download/api/types.cjs +0 -2
  251. package/lib/download/api/types.d.cts +0 -17
  252. package/lib/download/api/types.d.mts +0 -17
  253. package/lib/download/api/types.mjs +0 -1
  254. package/lib/download/git/branch.cjs +0 -19
  255. package/lib/download/git/branch.d.cts +0 -8
  256. package/lib/download/git/branch.d.mts +0 -8
  257. package/lib/download/git/branch.mjs +0 -17
  258. package/lib/download/git/hash.cjs +0 -14
  259. package/lib/download/git/hash.d.cts +0 -8
  260. package/lib/download/git/hash.d.mts +0 -8
  261. package/lib/download/git/hash.mjs +0 -12
  262. package/lib/download/git/index.cjs +0 -76
  263. package/lib/download/git/index.d.cts +0 -29
  264. package/lib/download/git/index.d.mts +0 -29
  265. package/lib/download/git/index.mjs +0 -74
  266. package/lib/download/git/reset.cjs +0 -36
  267. package/lib/download/git/reset.d.cts +0 -6
  268. package/lib/download/git/reset.d.mts +0 -6
  269. package/lib/download/git/reset.mjs +0 -34
  270. package/lib/download/github/hash.cjs +0 -31
  271. package/lib/download/github/hash.d.cts +0 -8
  272. package/lib/download/github/hash.d.mts +0 -8
  273. package/lib/download/github/hash.mjs +0 -29
  274. package/lib/download/github/index.cjs +0 -105
  275. package/lib/download/github/index.d.cts +0 -31
  276. package/lib/download/github/index.d.mts +0 -31
  277. package/lib/download/github/index.mjs +0 -103
  278. package/lib/download/github/types.cjs +0 -2
  279. package/lib/download/github/types.d.cts +0 -11
  280. package/lib/download/github/types.d.mts +0 -11
  281. package/lib/download/github/types.mjs +0 -1
  282. package/lib/download/gitlab/hash.cjs +0 -33
  283. package/lib/download/gitlab/hash.d.cts +0 -8
  284. package/lib/download/gitlab/hash.d.mts +0 -8
  285. package/lib/download/gitlab/hash.mjs +0 -31
  286. package/lib/download/gitlab/index.cjs +0 -105
  287. package/lib/download/gitlab/index.d.cts +0 -31
  288. package/lib/download/gitlab/index.d.mts +0 -31
  289. package/lib/download/gitlab/index.mjs +0 -103
  290. package/lib/download/gitlab/types.cjs +0 -5
  291. package/lib/download/gitlab/types.d.cts +0 -15
  292. package/lib/download/gitlab/types.d.mts +0 -15
  293. package/lib/download/gitlab/types.mjs +0 -3
  294. package/lib/download/helpers/untar.cjs +0 -12
  295. package/lib/download/helpers/untar.d.cts +0 -6
  296. package/lib/download/helpers/untar.d.mts +0 -6
  297. package/lib/download/helpers/untar.mjs +0 -10
  298. package/lib/download/helpers/unzip.cjs +0 -17
  299. package/lib/download/helpers/unzip.d.cts +0 -6
  300. package/lib/download/helpers/unzip.d.mts +0 -6
  301. package/lib/download/helpers/unzip.mjs +0 -11
  302. package/lib/download/index.cjs +0 -64
  303. package/lib/download/index.d.cts +0 -48
  304. package/lib/download/index.d.mts +0 -48
  305. package/lib/download/index.mjs +0 -62
  306. package/lib/download/npm/index.cjs +0 -85
  307. package/lib/download/npm/index.d.cts +0 -30
  308. package/lib/download/npm/index.d.mts +0 -30
  309. package/lib/download/npm/index.mjs +0 -83
  310. package/lib/download/npm/types.cjs +0 -2
  311. package/lib/download/npm/types.d.cts +0 -9
  312. package/lib/download/npm/types.d.mts +0 -9
  313. package/lib/download/npm/types.mjs +0 -1
  314. package/lib/download/npm/version.cjs +0 -29
  315. package/lib/download/npm/version.d.cts +0 -16
  316. package/lib/download/npm/version.d.mts +0 -16
  317. package/lib/download/npm/version.mjs +0 -26
  318. package/lib/download/types/modified.cjs +0 -2
  319. package/lib/download/types/modified.d.cts +0 -6
  320. package/lib/download/types/modified.d.mts +0 -6
  321. package/lib/download/types/modified.mjs +0 -1
  322. package/lib/download/types/sources.cjs +0 -2
  323. package/lib/download/types/sources.d.cts +0 -12
  324. package/lib/download/types/sources.d.mts +0 -12
  325. package/lib/download/types/sources.mjs +0 -1
  326. package/lib/export/directory.cjs +0 -43
  327. package/lib/export/directory.d.cts +0 -26
  328. package/lib/export/directory.d.mts +0 -26
  329. package/lib/export/directory.mjs +0 -41
  330. package/lib/export/helpers/custom-files.cjs +0 -26
  331. package/lib/export/helpers/custom-files.d.cts +0 -12
  332. package/lib/export/helpers/custom-files.d.mts +0 -12
  333. package/lib/export/helpers/custom-files.mjs +0 -24
  334. package/lib/export/helpers/prepare.cjs +0 -34
  335. package/lib/export/helpers/prepare.d.cts +0 -19
  336. package/lib/export/helpers/prepare.d.mts +0 -19
  337. package/lib/export/helpers/prepare.mjs +0 -31
  338. package/lib/export/helpers/types-version.cjs +0 -12
  339. package/lib/export/helpers/types-version.d.cts +0 -6
  340. package/lib/export/helpers/types-version.d.mts +0 -6
  341. package/lib/export/helpers/types-version.mjs +0 -10
  342. package/lib/export/icon-package.cjs +0 -56
  343. package/lib/export/icon-package.d.cts +0 -26
  344. package/lib/export/icon-package.d.mts +0 -26
  345. package/lib/export/icon-package.mjs +0 -54
  346. package/lib/export/json-package.cjs +0 -144
  347. package/lib/export/json-package.d.cts +0 -25
  348. package/lib/export/json-package.d.mts +0 -25
  349. package/lib/export/json-package.mjs +0 -142
  350. package/lib/icon-set/index.cjs +0 -720
  351. package/lib/icon-set/index.d.cts +0 -162
  352. package/lib/icon-set/index.d.mts +0 -162
  353. package/lib/icon-set/index.mjs +0 -716
  354. package/lib/icon-set/match.cjs +0 -56
  355. package/lib/icon-set/match.d.cts +0 -15
  356. package/lib/icon-set/match.d.mts +0 -15
  357. package/lib/icon-set/match.mjs +0 -54
  358. package/lib/icon-set/merge.cjs +0 -87
  359. package/lib/icon-set/merge.d.cts +0 -14
  360. package/lib/icon-set/merge.d.mts +0 -14
  361. package/lib/icon-set/merge.mjs +0 -85
  362. package/lib/icon-set/modified.cjs +0 -25
  363. package/lib/icon-set/modified.d.cts +0 -16
  364. package/lib/icon-set/modified.d.mts +0 -16
  365. package/lib/icon-set/modified.mjs +0 -23
  366. package/lib/icon-set/props.cjs +0 -16
  367. package/lib/icon-set/props.d.cts +0 -13
  368. package/lib/icon-set/props.d.mts +0 -13
  369. package/lib/icon-set/props.mjs +0 -13
  370. package/lib/icon-set/tags.cjs +0 -95
  371. package/lib/icon-set/tags.d.cts +0 -25
  372. package/lib/icon-set/tags.d.mts +0 -25
  373. package/lib/icon-set/tags.mjs +0 -91
  374. package/lib/icon-set/types.cjs +0 -2
  375. package/lib/icon-set/types.d.cts +0 -75
  376. package/lib/icon-set/types.d.mts +0 -75
  377. package/lib/icon-set/types.mjs +0 -1
  378. package/lib/import/directory.cjs +0 -169
  379. package/lib/import/directory.d.cts +0 -52
  380. package/lib/import/directory.d.mts +0 -52
  381. package/lib/import/directory.mjs +0 -166
  382. package/lib/import/figma/index.cjs +0 -115
  383. package/lib/import/figma/index.d.cts +0 -20
  384. package/lib/import/figma/index.d.mts +0 -20
  385. package/lib/import/figma/index.mjs +0 -113
  386. package/lib/import/figma/nodes.cjs +0 -90
  387. package/lib/import/figma/nodes.d.cts +0 -18
  388. package/lib/import/figma/nodes.d.mts +0 -18
  389. package/lib/import/figma/nodes.mjs +0 -88
  390. package/lib/import/figma/query.cjs +0 -260
  391. package/lib/import/figma/query.d.cts +0 -42
  392. package/lib/import/figma/query.d.mts +0 -42
  393. package/lib/import/figma/query.mjs +0 -256
  394. package/lib/import/figma/types/api.cjs +0 -2
  395. package/lib/import/figma/types/api.d.cts +0 -53
  396. package/lib/import/figma/types/api.d.mts +0 -53
  397. package/lib/import/figma/types/api.mjs +0 -1
  398. package/lib/import/figma/types/nodes.cjs +0 -2
  399. package/lib/import/figma/types/nodes.d.cts +0 -44
  400. package/lib/import/figma/types/nodes.d.mts +0 -44
  401. package/lib/import/figma/types/nodes.mjs +0 -1
  402. package/lib/import/figma/types/options.cjs +0 -2
  403. package/lib/import/figma/types/options.d.cts +0 -59
  404. package/lib/import/figma/types/options.d.mts +0 -59
  405. package/lib/import/figma/types/options.mjs +0 -1
  406. package/lib/import/figma/types/result.cjs +0 -2
  407. package/lib/import/figma/types/result.d.cts +0 -44
  408. package/lib/import/figma/types/result.d.mts +0 -44
  409. package/lib/import/figma/types/result.mjs +0 -1
  410. package/lib/index.cjs +0 -157
  411. package/lib/index.d.cts +0 -80
  412. package/lib/index.d.mts +0 -80
  413. package/lib/index.mjs +0 -91
  414. package/lib/misc/bump-version.cjs +0 -15
  415. package/lib/misc/bump-version.d.cts +0 -6
  416. package/lib/misc/bump-version.d.mts +0 -6
  417. package/lib/misc/bump-version.mjs +0 -13
  418. package/lib/misc/cheerio.cjs +0 -2
  419. package/lib/misc/cheerio.d.cts +0 -10
  420. package/lib/misc/cheerio.d.mts +0 -10
  421. package/lib/misc/cheerio.d.ts +0 -10
  422. package/lib/misc/cheerio.mjs +0 -1
  423. package/lib/misc/compare-dirs.cjs +0 -75
  424. package/lib/misc/compare-dirs.d.cts +0 -11
  425. package/lib/misc/compare-dirs.d.mts +0 -11
  426. package/lib/misc/compare-dirs.mjs +0 -73
  427. package/lib/misc/exec.cjs +0 -27
  428. package/lib/misc/exec.d.cts +0 -12
  429. package/lib/misc/exec.d.mts +0 -12
  430. package/lib/misc/exec.mjs +0 -25
  431. package/lib/misc/keyword.cjs +0 -20
  432. package/lib/misc/keyword.d.cts +0 -6
  433. package/lib/misc/keyword.d.mts +0 -6
  434. package/lib/misc/keyword.mjs +0 -18
  435. package/lib/misc/scan.cjs +0 -114
  436. package/lib/misc/scan.d.cts +0 -33
  437. package/lib/misc/scan.d.mts +0 -33
  438. package/lib/misc/scan.mjs +0 -111
  439. package/lib/misc/write-json.cjs +0 -9
  440. package/lib/misc/write-json.d.cts +0 -6
  441. package/lib/misc/write-json.d.mts +0 -6
  442. package/lib/misc/write-json.mjs +0 -7
  443. package/lib/optimise/figma.cjs +0 -232
  444. package/lib/optimise/figma.d.cts +0 -14
  445. package/lib/optimise/figma.d.mts +0 -14
  446. package/lib/optimise/figma.mjs +0 -230
  447. package/lib/optimise/flags.cjs +0 -256
  448. package/lib/optimise/flags.d.cts +0 -11
  449. package/lib/optimise/flags.d.mts +0 -11
  450. package/lib/optimise/flags.mjs +0 -254
  451. package/lib/optimise/global-style.cjs +0 -158
  452. package/lib/optimise/global-style.d.cts +0 -11
  453. package/lib/optimise/global-style.d.mts +0 -11
  454. package/lib/optimise/global-style.mjs +0 -156
  455. package/lib/optimise/mask.cjs +0 -110
  456. package/lib/optimise/mask.d.cts +0 -24
  457. package/lib/optimise/mask.d.mts +0 -24
  458. package/lib/optimise/mask.mjs +0 -108
  459. package/lib/optimise/origin.cjs +0 -23
  460. package/lib/optimise/origin.d.cts +0 -11
  461. package/lib/optimise/origin.d.mts +0 -11
  462. package/lib/optimise/origin.mjs +0 -21
  463. package/lib/optimise/scale.cjs +0 -27
  464. package/lib/optimise/scale.d.cts +0 -11
  465. package/lib/optimise/scale.d.mts +0 -11
  466. package/lib/optimise/scale.mjs +0 -25
  467. package/lib/optimise/svgo.cjs +0 -107
  468. package/lib/optimise/svgo.d.cts +0 -37
  469. package/lib/optimise/svgo.d.mts +0 -37
  470. package/lib/optimise/svgo.mjs +0 -104
  471. package/lib/optimise/unwrap.cjs +0 -31
  472. package/lib/optimise/unwrap.d.cts +0 -11
  473. package/lib/optimise/unwrap.d.mts +0 -11
  474. package/lib/optimise/unwrap.mjs +0 -29
  475. package/lib/svg/analyse/error.cjs +0 -16
  476. package/lib/svg/analyse/error.d.cts +0 -11
  477. package/lib/svg/analyse/error.d.mts +0 -11
  478. package/lib/svg/analyse/error.mjs +0 -14
  479. package/lib/svg/analyse/types.cjs +0 -2
  480. package/lib/svg/analyse/types.d.cts +0 -93
  481. package/lib/svg/analyse/types.d.mts +0 -93
  482. package/lib/svg/analyse/types.mjs +0 -1
  483. package/lib/svg/analyse.cjs +0 -303
  484. package/lib/svg/analyse.d.cts +0 -16
  485. package/lib/svg/analyse.d.mts +0 -16
  486. package/lib/svg/analyse.mjs +0 -301
  487. package/lib/svg/cleanup/attribs.cjs +0 -39
  488. package/lib/svg/cleanup/attribs.d.cts +0 -11
  489. package/lib/svg/cleanup/attribs.d.mts +0 -11
  490. package/lib/svg/cleanup/attribs.mjs +0 -37
  491. package/lib/svg/cleanup/bad-tags.cjs +0 -69
  492. package/lib/svg/cleanup/bad-tags.d.cts +0 -17
  493. package/lib/svg/cleanup/bad-tags.d.mts +0 -17
  494. package/lib/svg/cleanup/bad-tags.mjs +0 -67
  495. package/lib/svg/cleanup/inline-style.cjs +0 -97
  496. package/lib/svg/cleanup/inline-style.d.cts +0 -11
  497. package/lib/svg/cleanup/inline-style.d.mts +0 -11
  498. package/lib/svg/cleanup/inline-style.mjs +0 -95
  499. package/lib/svg/cleanup/root-style.cjs +0 -34
  500. package/lib/svg/cleanup/root-style.d.cts +0 -17
  501. package/lib/svg/cleanup/root-style.d.mts +0 -17
  502. package/lib/svg/cleanup/root-style.mjs +0 -32
  503. package/lib/svg/cleanup/root-svg.cjs +0 -84
  504. package/lib/svg/cleanup/root-svg.d.cts +0 -11
  505. package/lib/svg/cleanup/root-svg.d.mts +0 -11
  506. package/lib/svg/cleanup/root-svg.mjs +0 -82
  507. package/lib/svg/cleanup/svgo-style.cjs +0 -43
  508. package/lib/svg/cleanup/svgo-style.d.cts +0 -11
  509. package/lib/svg/cleanup/svgo-style.d.mts +0 -11
  510. package/lib/svg/cleanup/svgo-style.mjs +0 -41
  511. package/lib/svg/cleanup.cjs +0 -33
  512. package/lib/svg/cleanup.d.cts +0 -16
  513. package/lib/svg/cleanup.d.mts +0 -16
  514. package/lib/svg/cleanup.mjs +0 -31
  515. package/lib/svg/data/attributes.cjs +0 -373
  516. package/lib/svg/data/attributes.d.cts +0 -77
  517. package/lib/svg/data/attributes.d.mts +0 -77
  518. package/lib/svg/data/attributes.mjs +0 -346
  519. package/lib/svg/data/tags.cjs +0 -141
  520. package/lib/svg/data/tags.d.cts +0 -95
  521. package/lib/svg/data/tags.d.mts +0 -95
  522. package/lib/svg/data/tags.mjs +0 -117
  523. package/lib/svg/index.cjs +0 -178
  524. package/lib/svg/index.d.cts +0 -52
  525. package/lib/svg/index.d.mts +0 -52
  526. package/lib/svg/index.mjs +0 -162
  527. package/lib/svg/parse-style.cjs +0 -243
  528. package/lib/svg/parse-style.d.cts +0 -59
  529. package/lib/svg/parse-style.d.mts +0 -59
  530. package/lib/svg/parse-style.mjs +0 -241
  531. package/lib/svg/parse.cjs +0 -46
  532. package/lib/svg/parse.d.cts +0 -31
  533. package/lib/svg/parse.d.mts +0 -31
  534. package/lib/svg/parse.mjs +0 -44
@@ -1,52 +1,43 @@
1
- import * as cheerio from 'cheerio';
2
- import { IconifyIcon } from '@iconify/types';
3
- export { IconifyIcon } from '@iconify/types';
4
- import { IconifyIconCustomisations } from '@iconify/utils/lib/customisations/defaults';
5
- export { IconifyIconCustomisations } from '@iconify/utils/lib/customisations/defaults';
6
-
7
- interface ViewBox {
8
- left: number;
9
- top: number;
10
- width: number;
11
- height: number;
12
- }
13
-
1
+ import { ParsedXMLTagElement } from "@cyberalien/svg-utils";
2
+ import { IconifyIcon } from "@iconify/types";
3
+ import { IconifyIconCustomisations } from "@iconify/utils/lib/customisations/defaults";
4
+ import { IconViewBox } from "@cyberalien/svg-utils/lib/svg/viewbox/types.js";
5
+ type ViewBox = IconViewBox;
14
6
  /**
15
7
  * SVG class, used to manipulate icon content.
16
8
  */
17
9
  declare class SVG {
18
- $svg: cheerio.CheerioAPI;
19
- viewBox: ViewBox;
20
- /**
21
- * Constructor
22
- */
23
- constructor(content: string);
24
- /**
25
- * Get SVG as string
26
- */
27
- toString(customisations?: IconifyIconCustomisations): string;
28
- /**
29
- * Get SVG as string without whitespaces
30
- */
31
- toMinifiedString(customisations?: IconifyIconCustomisations): string;
32
- /**
33
- * Get SVG as string with whitespaces
34
- */
35
- toPrettyString(customisations?: IconifyIconCustomisations): string;
36
- /**
37
- * Get body
38
- */
39
- getBody(): string;
40
- /**
41
- * Get icon as IconifyIcon
42
- */
43
- getIcon(): IconifyIcon;
44
- /**
45
- * Load SVG
46
- *
47
- * @param {string} content
48
- */
49
- load(content: string): void;
10
+ $svg: ParsedXMLTagElement;
11
+ viewBox: ViewBox;
12
+ /**
13
+ * Constructor
14
+ */
15
+ constructor(content: string);
16
+ /**
17
+ * Get SVG as string
18
+ */
19
+ toString(customisations?: IconifyIconCustomisations, prettyPrint?: boolean): string;
20
+ /**
21
+ * Get SVG as string without whitespaces
22
+ */
23
+ toMinifiedString(customisations?: IconifyIconCustomisations): string;
24
+ /**
25
+ * Get SVG as string with whitespaces
26
+ */
27
+ toPrettyString(customisations?: IconifyIconCustomisations): string;
28
+ /**
29
+ * Get body
30
+ */
31
+ getBody(): string;
32
+ /**
33
+ * Get icon as IconifyIcon
34
+ */
35
+ getIcon(): IconifyIcon;
36
+ /**
37
+ * Load SVG
38
+ *
39
+ * @param {string} content
40
+ */
41
+ load(content: string): void;
50
42
  }
51
-
52
- export { SVG, type ViewBox };
43
+ export { type IconifyIcon, type IconifyIconCustomisations, SVG, type ViewBox };
@@ -0,0 +1,117 @@
1
+ import { iconToSVG, trimSVG } from "@iconify/utils";
2
+ import { parseXMLContent, stringifyXMLContent } from "@cyberalien/svg-utils";
3
+ import { parseViewBox } from "@cyberalien/svg-utils/lib/svg/viewbox/parse.js";
4
+
5
+ /**
6
+ * SVG class, used to manipulate icon content.
7
+ */
8
+ var SVG = class {
9
+ $svg;
10
+ viewBox;
11
+ /**
12
+ * Constructor
13
+ */
14
+ constructor(content) {
15
+ this.load(content);
16
+ }
17
+ /**
18
+ * Get SVG as string
19
+ */
20
+ toString(customisations, prettyPrint = false) {
21
+ if (customisations) {
22
+ const data = iconToSVG(this.getIcon(), customisations);
23
+ let svgAttributes = " xmlns=\"http://www.w3.org/2000/svg\"";
24
+ if (data.body.includes("xlink:")) svgAttributes += " xmlns:xlink=\"http://www.w3.org/1999/xlink\"";
25
+ for (const key in data.attributes) {
26
+ const value = data.attributes[key];
27
+ svgAttributes += " " + key + "=\"" + value + "\"";
28
+ }
29
+ return "<svg" + svgAttributes + ">" + data.body + "</svg>";
30
+ }
31
+ const $root = this.$svg;
32
+ const attribs = $root.attribs;
33
+ const box = this.viewBox;
34
+ if (!attribs["viewBox"]) attribs["viewBox"] = `${box.left} ${box.top} ${box.width} ${box.height}`;
35
+ for (const prop of ["width", "height"]) if (!attribs[prop]) attribs[prop] = box[prop];
36
+ return stringifyXMLContent([$root], { prettyPrint });
37
+ }
38
+ /**
39
+ * Get SVG as string without whitespaces
40
+ */
41
+ toMinifiedString(customisations) {
42
+ return trimSVG(this.toString(customisations, false));
43
+ }
44
+ /**
45
+ * Get SVG as string with whitespaces
46
+ */
47
+ toPrettyString(customisations) {
48
+ return this.toString(customisations, true);
49
+ }
50
+ /**
51
+ * Get body
52
+ */
53
+ getBody() {
54
+ const $root = this.$svg;
55
+ const attribs = $root.attribs;
56
+ for (const key in attribs) switch (key.split("-").shift()) {
57
+ case "fill":
58
+ case "stroke":
59
+ case "opacity": throw new Error(`Cannot use getBody() on icon that was not cleaned up with cleanupSVGRoot(). Icon has attribute ${key}="${attribs[key]}"`);
60
+ }
61
+ return stringifyXMLContent($root.children);
62
+ }
63
+ /**
64
+ * Get icon as IconifyIcon
65
+ */
66
+ getIcon() {
67
+ const props = this.viewBox;
68
+ const body = this.getBody();
69
+ return {
70
+ ...props,
71
+ body
72
+ };
73
+ }
74
+ /**
75
+ * Load SVG
76
+ *
77
+ * @param {string} content
78
+ */
79
+ load(content) {
80
+ function remove(str1, str2, append) {
81
+ let start = 0;
82
+ while ((start = content.indexOf(str1, start)) !== -1) {
83
+ const end = content.indexOf(str2, start + str1.length);
84
+ if (end === -1) return;
85
+ content = content.slice(0, start) + append + content.slice(end + str2.length);
86
+ start = start + append.length;
87
+ }
88
+ }
89
+ remove("<!--", "-->", "");
90
+ remove("<?xml", "?>", "");
91
+ remove("<!DOCTYPE svg", "<svg", "<svg");
92
+ remove("xmlns:x=\"&ns_extend;\" xmlns:i=\"&ns_ai;\" xmlns:graph=\"&ns_graphs;\"", "", "");
93
+ remove("xml:space=\"preserve\"", "", "");
94
+ content = content.replace(/<g>\s*<\/g>/g, "");
95
+ const root = parseXMLContent(content);
96
+ if (!root || root.length !== 1) throw new Error("Invalid SVG file");
97
+ const rootTag = root[0];
98
+ if (rootTag.type !== "tag" || rootTag.tag !== "svg") throw new Error("Invalid SVG file: missing <svg> root element");
99
+ this.$svg = rootTag;
100
+ const attribs = rootTag.attribs;
101
+ const viewBox = attribs["viewBox"];
102
+ if (typeof viewBox === "string") {
103
+ const parsed = parseViewBox(viewBox);
104
+ if (!parsed) throw new Error("Invalid SVG file: bad viewBox attribute");
105
+ this.viewBox = parsed;
106
+ } else {
107
+ const width = attribs["width"];
108
+ const height = attribs["height"];
109
+ if (!width || !height) throw new Error("Invalid SVG file: missing dimensions");
110
+ const parsed = parseViewBox(`0 0 ${width} ${height}`);
111
+ if (!parsed) throw new Error("Invalid SVG file: bad size attributes and no viewBox");
112
+ this.viewBox = parsed;
113
+ }
114
+ }
115
+ };
116
+
117
+ export { SVG };
@@ -1,43 +1,37 @@
1
- import { SVG } from './index.js';
2
- import { CSSRuleToken, CSSToken, CSSAtRuleToken } from '../css/parser/types.js';
3
- import { ParseSVGCallbackItem } from './parse.js';
4
- import 'cheerio';
5
- import '@iconify/types';
6
- import '@iconify/utils/lib/customisations/defaults';
7
- import '../misc/cheerio.js';
8
- import 'domhandler';
9
-
1
+ import { SVG } from "./index.js";
2
+ import { CSSAtRuleToken, CSSRuleToken, CSSToken } from "../css/parser/types.js";
3
+ import { ParseSVGCallbackItem } from "./parse.js";
10
4
  /**
11
5
  * Item in callback
12
6
  */
13
7
  interface ParseSVGStyleCallbackItemCommon {
14
- prop: string;
15
- value: string;
8
+ prop: string;
9
+ value: string;
16
10
  }
17
11
  interface ParseSVGStyleCallbackItemInline extends ParseSVGStyleCallbackItemCommon {
18
- type: 'inline';
19
- item: ParseSVGCallbackItem;
12
+ type: 'inline';
13
+ item: ParseSVGCallbackItem;
20
14
  }
21
15
  interface ParseSVGStyleCallbackItemGlobal extends ParseSVGStyleCallbackItemCommon {
22
- type: 'global';
23
- token: CSSRuleToken;
24
- selectors: string[];
25
- selectorTokens: CSSToken[];
26
- prevTokens: (CSSToken | null)[];
27
- nextTokens: CSSToken[];
16
+ type: 'global';
17
+ token: CSSRuleToken;
18
+ selectors: string[];
19
+ selectorTokens: CSSToken[];
20
+ prevTokens: (CSSToken | null)[];
21
+ nextTokens: CSSToken[];
28
22
  }
29
23
  interface ParseSVGStyleCallbackItemGlobalAtRule extends ParseSVGStyleCallbackItemCommon {
30
- token: CSSAtRuleToken;
31
- childTokens: CSSToken[];
32
- prevTokens: (CSSToken | null)[];
33
- nextTokens: CSSToken[];
24
+ token: CSSAtRuleToken;
25
+ childTokens: CSSToken[];
26
+ prevTokens: (CSSToken | null)[];
27
+ nextTokens: CSSToken[];
34
28
  }
35
29
  interface ParseSVGStyleCallbackItemGlobalGenericAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
36
- type: 'at-rule';
30
+ type: 'at-rule';
37
31
  }
38
32
  interface ParseSVGStyleCallbackItemGlobalKeyframesAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
39
- type: 'keyframes';
40
- from: Record<string, string>;
33
+ type: 'keyframes';
34
+ from: Record<string, string>;
41
35
  }
42
36
  type ParseSVGStyleCallbackItem = ParseSVGStyleCallbackItemInline | ParseSVGStyleCallbackItemGlobal | ParseSVGStyleCallbackItemGlobalGenericAtRule | ParseSVGStyleCallbackItemGlobalKeyframesAtRule;
43
37
  /**
@@ -55,5 +49,4 @@ type ParseSVGStyleCallback = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleC
55
49
  * Callback should return new value (string) or undefined to remove rule.
56
50
  */
57
51
  declare function parseSVGStyle(svg: SVG, callback: ParseSVGStyleCallback): void;
58
-
59
- export { type ParseSVGStyleCallback, type ParseSVGStyleCallbackItem, type ParseSVGStyleCallbackResult, parseSVGStyle };
52
+ export { ParseSVGStyleCallback, ParseSVGStyleCallbackItem, ParseSVGStyleCallbackResult, parseSVGStyle };
@@ -0,0 +1,199 @@
1
+ import { parseSVG } from "./parse.js";
2
+ import { getTokens } from "../css/parser/tokens.js";
3
+ import { parseInlineStyle } from "../css/parse.js";
4
+ import { tokensToString } from "../css/parser/export.js";
5
+ import { tokensTree } from "../css/parser/tree.js";
6
+ import { stringifyXMLContent } from "@cyberalien/svg-utils";
7
+
8
+ function assertNever(v) {}
9
+ /**
10
+ * Check callback result for Promise instance, which used to be supported in old version
11
+ */
12
+ function assertNotOldCode(value) {
13
+ if (value instanceof Promise) throw new Error("parseSVGStyle does not support async callbacks");
14
+ }
15
+ /**
16
+ * Parse styles in SVG
17
+ *
18
+ * This function finds CSS in SVG, parses it, calls callback for each rule.
19
+ * Callback should return new value (string) or undefined to remove rule.
20
+ */
21
+ function parseSVGStyle(svg, callback) {
22
+ parseSVG(svg, (item) => {
23
+ const node = item.node;
24
+ const tagName = node.tag;
25
+ function parseStyleItem() {
26
+ const content = stringifyXMLContent(node.children);
27
+ if (!content) {
28
+ item.removeNode = true;
29
+ return;
30
+ }
31
+ const tokens = getTokens(content);
32
+ if (!(tokens instanceof Array)) throw new Error("Error parsing style. This parser can handle only basic CSS");
33
+ let changed$1 = false;
34
+ const selectorStart = [];
35
+ let newTokens = [];
36
+ while (tokens.length) {
37
+ const token = tokens.shift();
38
+ if (!token) break;
39
+ switch (token.type) {
40
+ case "selector":
41
+ selectorStart.push(newTokens.length);
42
+ newTokens.push(token);
43
+ break;
44
+ case "close":
45
+ selectorStart.pop();
46
+ newTokens.push(token);
47
+ break;
48
+ case "at-rule": {
49
+ selectorStart.push(newTokens.length);
50
+ const prop = token.rule;
51
+ const value = token.value;
52
+ const isAnimation = prop === "keyframes" || prop.slice(0, 1) === "-" && prop.split("-").pop() === "keyframes";
53
+ const childTokens = [];
54
+ const animationRules = Object.create(null);
55
+ let depth = 1;
56
+ let index = 0;
57
+ let isFrom = false;
58
+ while (depth > 0) {
59
+ const childToken = tokens[index];
60
+ index++;
61
+ if (!childToken) throw new Error("Something went wrong parsing CSS");
62
+ childTokens.push(childToken);
63
+ switch (childToken.type) {
64
+ case "close":
65
+ depth--;
66
+ isFrom = false;
67
+ break;
68
+ case "selector":
69
+ depth++;
70
+ if (isAnimation) {
71
+ const rule = childToken.code;
72
+ if (rule === "from" || rule === "0%") isFrom = true;
73
+ }
74
+ break;
75
+ case "at-rule":
76
+ depth++;
77
+ if (isAnimation) throw new Error("Nested at-rule in keyframes ???");
78
+ break;
79
+ case "rule":
80
+ if (isAnimation && isFrom) animationRules[childToken.prop] = childToken.value;
81
+ break;
82
+ default: assertNever(childToken);
83
+ }
84
+ }
85
+ const skipCount = childTokens.length;
86
+ const result = callback(isAnimation ? {
87
+ type: "keyframes",
88
+ prop,
89
+ value,
90
+ token,
91
+ childTokens,
92
+ from: animationRules,
93
+ prevTokens: newTokens,
94
+ nextTokens: tokens.slice(0)
95
+ } : {
96
+ type: "at-rule",
97
+ prop,
98
+ value,
99
+ token,
100
+ childTokens,
101
+ prevTokens: newTokens,
102
+ nextTokens: tokens.slice(0)
103
+ });
104
+ if (result !== void 0) {
105
+ assertNotOldCode(result);
106
+ if (isAnimation) {
107
+ if (result !== value) {
108
+ changed$1 = true;
109
+ token.value = result;
110
+ }
111
+ newTokens.push(token);
112
+ for (let i = 0; i < skipCount; i++) tokens.shift();
113
+ newTokens = newTokens.concat(childTokens);
114
+ } else {
115
+ if (result !== value) throw new Error("Changing value for at-rule is not supported");
116
+ newTokens.push(token);
117
+ }
118
+ } else {
119
+ changed$1 = true;
120
+ for (let i = 0; i < skipCount; i++) tokens.shift();
121
+ }
122
+ break;
123
+ }
124
+ case "rule": {
125
+ const value = token.value;
126
+ const selectorTokens = selectorStart.map((index) => newTokens[index]).filter((item$1) => item$1 !== null);
127
+ const result = callback({
128
+ type: "global",
129
+ prop: token.prop,
130
+ value,
131
+ token,
132
+ selectorTokens,
133
+ selectors: selectorTokens.reduce((prev, current) => {
134
+ switch (current.type) {
135
+ case "selector": return prev.concat(current.selectors);
136
+ }
137
+ return prev;
138
+ }, []),
139
+ prevTokens: newTokens,
140
+ nextTokens: tokens.slice(0)
141
+ });
142
+ if (result !== void 0) {
143
+ assertNotOldCode(result);
144
+ if (result !== value) {
145
+ changed$1 = true;
146
+ token.value = result;
147
+ }
148
+ newTokens.push(token);
149
+ } else changed$1 = true;
150
+ break;
151
+ }
152
+ default: assertNever(token);
153
+ }
154
+ }
155
+ if (changed$1) {
156
+ const tree = tokensTree(newTokens.filter((token) => token !== null));
157
+ if (!tree.length) item.removeNode = true;
158
+ else node.children = [{
159
+ type: "text",
160
+ content: "\n" + tokensToString(tree)
161
+ }];
162
+ }
163
+ }
164
+ if (tagName === "style") {
165
+ parseStyleItem();
166
+ return;
167
+ }
168
+ const attribs = node.attribs;
169
+ if (!attribs.style || typeof attribs.style !== "string") return;
170
+ const parsedStyle = parseInlineStyle(attribs.style);
171
+ if (parsedStyle === null) {
172
+ delete attribs.style;
173
+ return;
174
+ }
175
+ let changed = false;
176
+ for (const prop in parsedStyle) {
177
+ const value = parsedStyle[prop];
178
+ const result = callback({
179
+ type: "inline",
180
+ prop,
181
+ value,
182
+ item
183
+ });
184
+ assertNotOldCode(result);
185
+ if (result !== value) {
186
+ changed = true;
187
+ if (result === void 0) delete parsedStyle[prop];
188
+ else parsedStyle[prop] = result;
189
+ }
190
+ }
191
+ if (changed) {
192
+ const newStyle = Object.keys(parsedStyle).map((key) => key + ":" + parsedStyle[key] + ";").join("");
193
+ if (!newStyle.length) delete attribs.style;
194
+ else attribs.style = newStyle;
195
+ }
196
+ });
197
+ }
198
+
199
+ export { parseSVGStyle };
@@ -1,21 +1,14 @@
1
- import { CheerioElement, WrappedCheerioElement } from '../misc/cheerio.js';
2
- import { SVG } from './index.js';
3
- import 'domhandler';
4
- import 'cheerio';
5
- import '@iconify/types';
6
- import '@iconify/utils/lib/customisations/defaults';
7
-
1
+ import { SVG } from "./index.js";
2
+ import { ParsedXMLTagElement } from "@cyberalien/svg-utils";
8
3
  /**
9
4
  * Item in callback
10
5
  */
11
6
  interface ParseSVGCallbackItem {
12
- tagName: string;
13
- element: CheerioElement;
14
- $element: WrappedCheerioElement;
15
- svg: SVG;
16
- parents: ParseSVGCallbackItem[];
17
- testChildren: boolean;
18
- removeNode: boolean;
7
+ node: ParsedXMLTagElement;
8
+ svg: SVG;
9
+ parents: ParseSVGCallbackItem[];
10
+ testChildren: boolean;
11
+ removeNode: boolean;
19
12
  }
20
13
  /**
21
14
  * Callback function
@@ -27,5 +20,4 @@ type ParseSVGCallback = (item: ParseSVGCallbackItem) => void;
27
20
  * This function finds all elements in SVG and calls callback for each element.
28
21
  */
29
22
  declare function parseSVG(svg: SVG, callback: ParseSVGCallback): void;
30
-
31
- export { type ParseSVGCallback, type ParseSVGCallbackItem, parseSVG };
23
+ export { ParseSVGCallback, ParseSVGCallbackItem, parseSVG };
@@ -0,0 +1,32 @@
1
+ import { iterateXMLContent } from "@cyberalien/svg-utils";
2
+
3
+ /**
4
+ * Parse SVG
5
+ *
6
+ * This function finds all elements in SVG and calls callback for each element.
7
+ */
8
+ function parseSVG(svg, callback) {
9
+ const map = /* @__PURE__ */ new Map();
10
+ iterateXMLContent([svg.$svg], (node, stack) => {
11
+ if (node.type !== "tag") return;
12
+ const parents = [];
13
+ for (const parent of stack) {
14
+ const parentItem = map.get(parent);
15
+ if (!parentItem.testChildren) return "skip";
16
+ parents.unshift(parentItem);
17
+ }
18
+ const item = {
19
+ svg,
20
+ node,
21
+ parents,
22
+ testChildren: true,
23
+ removeNode: false
24
+ };
25
+ map.set(node, item);
26
+ if (callback(item) instanceof Promise) throw new Error("parseSVG does not support async callbacks");
27
+ if (item.removeNode) return "remove";
28
+ if (!item.testChildren) return "skip";
29
+ });
30
+ }
31
+
32
+ export { parseSVG };