@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
@@ -0,0 +1,22 @@
1
+ import { runSVGO } from "./svgo.js";
2
+
3
+ /**
4
+ * Reset origin to 0 0
5
+ */
6
+ function resetSVGOrigin(svg) {
7
+ const viewBox = svg.viewBox;
8
+ const left = viewBox.left ?? 0;
9
+ const top = viewBox.top ?? 0;
10
+ if (left || top) {
11
+ const content = `<svg width="${viewBox.width}" height="${viewBox.height}" viewBox="0 0 ${viewBox.width} ${viewBox.height}"><g transform="translate(${0 - left} ${0 - top})">${svg.getBody()}</g></svg>`;
12
+ svg.load(content);
13
+ runSVGO(svg, { plugins: [
14
+ "collapseGroups",
15
+ "convertTransform",
16
+ "convertPathData",
17
+ "sortAttrs"
18
+ ] });
19
+ }
20
+ }
21
+
22
+ export { resetSVGOrigin };
@@ -1,11 +1,6 @@
1
- import { SVG } from '../svg/index.js';
2
- import 'cheerio';
3
- import '@iconify/types';
4
- import '@iconify/utils/lib/customisations/defaults';
5
-
1
+ import { SVG } from "../svg/index.js";
6
2
  /**
7
3
  * Scale icon
8
4
  */
9
5
  declare function scaleSVG(svg: SVG, scale: number): void;
10
-
11
- export { scaleSVG };
6
+ export { scaleSVG };
@@ -0,0 +1,24 @@
1
+ import { runSVGO } from "./svgo.js";
2
+ import { resetSVGOrigin } from "./origin.js";
3
+
4
+ /**
5
+ * Scale icon
6
+ */
7
+ function scaleSVG(svg, scale) {
8
+ resetSVGOrigin(svg);
9
+ if (scale !== 1) {
10
+ const viewBox = svg.viewBox;
11
+ const width = viewBox.width * scale;
12
+ const height = viewBox.height * scale;
13
+ const content = `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}"><g transform="scale(${scale})">${svg.getBody()}</g></svg>`;
14
+ svg.load(content);
15
+ runSVGO(svg, { plugins: [
16
+ "collapseGroups",
17
+ "convertTransform",
18
+ "convertPathData",
19
+ "sortAttrs"
20
+ ] });
21
+ }
22
+ }
23
+
24
+ export { scaleSVG };
@@ -1,15 +1,11 @@
1
- import { PluginConfig } from 'svgo';
2
- import { SVG } from '../svg/index.js';
3
- import 'cheerio';
4
- import '@iconify/types';
5
- import '@iconify/utils/lib/customisations/defaults';
6
-
1
+ import { SVG } from "../svg/index.js";
2
+ import { PluginConfig } from "svgo";
7
3
  interface CleanupIDsOption {
8
- cleanupIDs?: string | ((id: string) => string) | false;
4
+ cleanupIDs?: string | ((id: string) => string) | false;
9
5
  }
10
6
  interface GetSVGOPluginOptions extends CleanupIDsOption {
11
- animated?: boolean;
12
- keepShapes?: boolean;
7
+ animated?: boolean;
8
+ keepShapes?: boolean;
13
9
  }
14
10
  /**
15
11
  * Get list of plugins
@@ -19,19 +15,18 @@ declare function getSVGOPlugins(options: GetSVGOPluginOptions): PluginConfig[];
19
15
  * Options
20
16
  */
21
17
  interface SVGOCommonOptions {
22
- multipass?: boolean;
18
+ multipass?: boolean;
23
19
  }
24
20
  interface SVGOOptionsWithPlugin extends SVGOCommonOptions {
25
- plugins: PluginConfig[];
21
+ plugins: PluginConfig[];
26
22
  }
27
23
  interface SVGOptionsWithoutPlugin extends SVGOCommonOptions, CleanupIDsOption {
28
- plugins?: undefined;
29
- keepShapes?: boolean;
24
+ plugins?: undefined;
25
+ keepShapes?: boolean;
30
26
  }
31
27
  type SVGOOptions = SVGOOptionsWithPlugin | SVGOptionsWithoutPlugin;
32
28
  /**
33
29
  * Run SVGO on icon
34
30
  */
35
31
  declare function runSVGO(svg: SVG, options?: SVGOOptions): void;
36
-
37
- export { getSVGOPlugins, runSVGO };
32
+ export { getSVGOPlugins, runSVGO };
@@ -0,0 +1,90 @@
1
+ import { parseXMLContent, stringifyXMLContent } from "@cyberalien/svg-utils";
2
+ import { optimize } from "svgo";
3
+ import { changeSVGIDs } from "@cyberalien/svg-utils/lib/svg/ids/change.js";
4
+
5
+ /**
6
+ * Get list of plugins
7
+ */
8
+ function getSVGOPlugins(options) {
9
+ return [
10
+ "cleanupAttrs",
11
+ "mergeStyles",
12
+ "inlineStyles",
13
+ "removeComments",
14
+ "removeUselessDefs",
15
+ "removeEditorsNSData",
16
+ "removeEmptyAttrs",
17
+ "removeEmptyContainers",
18
+ "convertStyleToAttrs",
19
+ "convertColors",
20
+ "convertTransform",
21
+ "removeUnknownsAndDefaults",
22
+ "removeNonInheritableGroupAttrs",
23
+ "removeUnusedNS",
24
+ "cleanupNumericValues",
25
+ "cleanupListOfValues",
26
+ "moveElemsAttrsToGroup",
27
+ "moveGroupAttrsToElems",
28
+ "collapseGroups",
29
+ "sortDefsChildren",
30
+ "sortAttrs",
31
+ ...options.animated ? [] : ["removeUselessStrokeAndFill"],
32
+ ...options.animated || options.keepShapes ? [] : [
33
+ "removeHiddenElems",
34
+ "convertShapeToPath",
35
+ "convertEllipseToCircle",
36
+ {
37
+ name: "convertPathData",
38
+ params: { noSpaceAfterFlags: true }
39
+ },
40
+ {
41
+ name: "mergePaths",
42
+ params: { noSpaceAfterFlags: true }
43
+ },
44
+ "reusePaths"
45
+ ],
46
+ ...!options.animated && options.cleanupIDs !== false ? ["cleanupIds"] : []
47
+ ];
48
+ }
49
+ /**
50
+ * Run SVGO on icon
51
+ */
52
+ function runSVGO(svg, options = {}) {
53
+ const code = svg.toString();
54
+ const multipass = options.multipass !== false;
55
+ let plugins;
56
+ if (options.plugins) plugins = options.plugins;
57
+ else {
58
+ const animated = code.includes("<animate") || code.includes("<set");
59
+ plugins = getSVGOPlugins({
60
+ ...options,
61
+ animated
62
+ });
63
+ if (code.includes("filter=") && code.includes("transform=")) plugins = plugins.filter((item) => item !== "moveElemsAttrsToGroup");
64
+ }
65
+ const result = optimize(code, {
66
+ plugins,
67
+ multipass
68
+ });
69
+ if (typeof result.error === "string") throw new Error(result.error);
70
+ let content = result.data.replace(/<defs\/>/g, "");
71
+ if (!options.plugins) {
72
+ const prefix = options.cleanupIDs !== void 0 ? options.cleanupIDs : "svgID";
73
+ if (prefix !== false) {
74
+ let counter = 0;
75
+ const xml = parseXMLContent(content);
76
+ if (xml) {
77
+ changeSVGIDs(xml, () => prefix + (counter++).toString(36));
78
+ const newContent = stringifyXMLContent(xml);
79
+ if (newContent) content = newContent;
80
+ }
81
+ }
82
+ }
83
+ if (!options.plugins || options.plugins.find((item) => {
84
+ if (typeof item === "string") return item === "reusePaths";
85
+ return item.name === "reusePaths";
86
+ })) content = content.replace(" xmlns:xlink=\"http://www.w3.org/1999/xlink\"", "").replaceAll("xlink:href=", "href=");
87
+ svg.load(content);
88
+ }
89
+
90
+ export { getSVGOPlugins, runSVGO };
@@ -1,11 +1,6 @@
1
- import { SVG } from '../svg/index.js';
2
- import 'cheerio';
3
- import '@iconify/types';
4
- import '@iconify/utils/lib/customisations/defaults';
5
-
1
+ import { SVG } from "../svg/index.js";
6
2
  /**
7
3
  * Removes empty group from SVG root element
8
4
  */
9
5
  declare function unwrapEmptyGroup(svg: SVG): void;
10
-
11
- export { unwrapEmptyGroup };
6
+ export { unwrapEmptyGroup };
@@ -0,0 +1,25 @@
1
+ import { stringifyXMLContent } from "@cyberalien/svg-utils";
2
+
3
+ /**
4
+ * Removes empty group from SVG root element
5
+ */
6
+ function unwrapEmptyGroup(svg) {
7
+ const root = svg.$svg;
8
+ if (root.children.length !== 1) return;
9
+ const groupNode = root.children[0];
10
+ if (groupNode.type !== "tag" || groupNode.tag !== "g" || !groupNode.children.length) return;
11
+ const html = stringifyXMLContent(groupNode.children);
12
+ for (const attr in groupNode.attribs) {
13
+ const value = groupNode.attribs[attr];
14
+ if (typeof value !== "string") continue;
15
+ switch (attr) {
16
+ case "id":
17
+ if (html?.includes(value)) return;
18
+ break;
19
+ default: return;
20
+ }
21
+ }
22
+ root.children = groupNode.children;
23
+ }
24
+
25
+ export { unwrapEmptyGroup };
@@ -1,11 +1,6 @@
1
- import { ExtendedTagElement } from './types.js';
2
- import '../../misc/cheerio.js';
3
- import 'domhandler';
4
- import 'cheerio';
5
-
1
+ import { ExtendedTagElement } from "./types.js";
6
2
  /**
7
3
  * Get tag for error message
8
4
  */
9
5
  declare function analyseTagError(element: ExtendedTagElement): string;
10
-
11
- export { analyseTagError };
6
+ export { analyseTagError };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Get tag for error message
3
+ */
4
+ function analyseTagError(element) {
5
+ let result = "<" + element.tag;
6
+ if (element._id) result += " id=\"" + element._id + "\"";
7
+ const value = element.attribs["d"];
8
+ if (typeof value === "string") result += " d=\"" + (value.length > 16 ? value.slice(0, 12) + "..." : value) + "\"";
9
+ return result + ">";
10
+ }
11
+
12
+ export { analyseTagError };
@@ -1,12 +1,9 @@
1
- import { CheerioElement } from '../../misc/cheerio.js';
2
- import 'domhandler';
3
- import 'cheerio';
4
-
1
+ import { ParsedXMLTagElement } from "@cyberalien/svg-utils";
5
2
  /**
6
3
  * Options
7
4
  */
8
5
  interface AnalyseSVGStructureOptions {
9
- fixErrors?: boolean;
6
+ fixErrors?: boolean;
10
7
  }
11
8
  /**
12
9
  * Extended properties for element
@@ -15,24 +12,24 @@ interface AnalyseSVGStructureOptions {
15
12
  * Link to element
16
13
  */
17
14
  interface LinkToElementWithID {
18
- id: string;
19
- usedAsMask: boolean;
20
- usedByIndex: number;
15
+ id: string;
16
+ usedAsMask: boolean;
17
+ usedByIndex: number;
21
18
  }
22
19
  /**
23
20
  * How element is used by parent elements
24
21
  */
25
22
  interface ExtendedTagElementUses {
26
- _usedAsMask: boolean;
27
- _usedAsPaint: boolean;
23
+ _usedAsMask: boolean;
24
+ _usedAsPaint: boolean;
28
25
  }
29
26
  /**
30
27
  * Definition: mask, clip path, symbol, etc...
31
28
  */
32
29
  interface ReusableElement {
33
- id: string;
34
- isMask: boolean;
35
- index: number;
30
+ id: string;
31
+ isMask: boolean;
32
+ index: number;
36
33
  }
37
34
  /**
38
35
  * Element with id
@@ -40,41 +37,41 @@ interface ReusableElement {
40
37
  * Similar to ReusableElement, but not necessary a definition - any element with id. Also contains list of child elements
41
38
  */
42
39
  interface ElementWithID {
43
- id: string;
44
- isMask: boolean;
45
- indexes: Set<number>;
40
+ id: string;
41
+ isMask: boolean;
42
+ indexes: Set<number>;
46
43
  }
47
44
  /**
48
45
  * Parent and child elements. Unlike standard tree, this tree is for elements that inherit attributes from parent element
49
46
  */
50
47
  interface ExtendedTagElementRelations {
51
- _parentElement?: number;
52
- _childElements?: number[];
48
+ _parentElement?: number;
49
+ _childElements?: number[];
53
50
  }
54
51
  /**
55
52
  * Extended tag
56
53
  */
57
- interface ExtendedTagElement extends CheerioElement, ExtendedTagElementUses, ExtendedTagElementRelations {
58
- _index: number;
59
- _id?: string;
60
- _belongsTo?: ElementWithID[];
61
- _reusableElement?: ReusableElement;
62
- _linksTo?: LinkToElementWithID[];
54
+ interface ExtendedTagElement extends ParsedXMLTagElement, ExtendedTagElementUses, ExtendedTagElementRelations {
55
+ _index: number;
56
+ _id?: string;
57
+ _belongsTo?: ElementWithID[];
58
+ _reusableElement?: ReusableElement;
59
+ _linksTo?: LinkToElementWithID[];
63
60
  }
64
61
  /**
65
62
  * Additional stuff for <svg>
66
63
  */
67
64
  interface ExtendedRootTagElement extends ExtendedTagElement {
68
- _parsed?: boolean;
65
+ _parsed?: boolean;
69
66
  }
70
67
  /**
71
68
  * Tree
72
69
  */
73
70
  interface ElementsTreeItem {
74
- index: number;
75
- usedAsMask: boolean;
76
- parent?: ElementsTreeItem;
77
- children: ElementsTreeItem[];
71
+ index: number;
72
+ usedAsMask: boolean;
73
+ parent?: ElementsTreeItem;
74
+ children: ElementsTreeItem[];
78
75
  }
79
76
  /**
80
77
  * Elements map
@@ -84,10 +81,9 @@ type ElementsMap = Map<number, ExtendedTagElement>;
84
81
  * Result
85
82
  */
86
83
  interface AnalyseSVGStructureResult {
87
- elements: ElementsMap;
88
- ids: Record<string, number>;
89
- links: LinkToElementWithID[];
90
- tree: ElementsTreeItem;
84
+ elements: ElementsMap;
85
+ ids: Record<string, number>;
86
+ links: LinkToElementWithID[];
87
+ tree: ElementsTreeItem;
91
88
  }
92
-
93
- export type { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
89
+ export { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
@@ -0,0 +1 @@
1
+ export { };
@@ -1,16 +1,9 @@
1
- import { SVG } from './index.js';
2
- import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult } from './analyse/types.js';
3
- import 'cheerio';
4
- import '@iconify/types';
5
- import '@iconify/utils/lib/customisations/defaults';
6
- import '../misc/cheerio.js';
7
- import 'domhandler';
8
-
1
+ import { SVG } from "./index.js";
2
+ import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult } from "./analyse/types.js";
9
3
  /**
10
4
  * Find all IDs, links, which elements use palette, which items aren't used
11
5
  *
12
6
  * Before running this function run cleanup functions to change inline style to attributes and fix attributes
13
7
  */
14
8
  declare function analyseSVGStructure(svg: SVG, options?: AnalyseSVGStructureOptions): AnalyseSVGStructureResult;
15
-
16
- export { analyseSVGStructure };
9
+ export { analyseSVGStructure };
@@ -0,0 +1,256 @@
1
+ import { parseSVG } from "./parse.js";
2
+ import { defsTag, maskTags, reusableElementsWithPalette, styleTag, useTag } from "./data/tags.js";
3
+ import { commonColorPresentationalAttributes, markerAttributes, tagSpecificNonPresentationalAttributes, urlPresentationalAttributes } from "./data/attributes.js";
4
+ import { analyseTagError } from "./analyse/error.js";
5
+
6
+ /**
7
+ * Find all IDs, links, which elements use palette, which items aren't used
8
+ *
9
+ * Before running this function run cleanup functions to change inline style to attributes and fix attributes
10
+ */
11
+ function analyseSVGStructure(svg, options = {}) {
12
+ const fixErrors = options.fixErrors;
13
+ let root = svg.$svg;
14
+ if (root._parsed) {
15
+ svg.load(svg.toString());
16
+ root = svg.$svg;
17
+ }
18
+ root._parsed = true;
19
+ const elements = /* @__PURE__ */ new Map();
20
+ const ids = Object.create(null);
21
+ let links = [];
22
+ /**
23
+ * Found element with id
24
+ */
25
+ function addID(element, id) {
26
+ if (ids[id]) throw new Error(`Duplicate id "${id}"`);
27
+ element._id = id;
28
+ ids[id] = element._index;
29
+ return true;
30
+ }
31
+ /**
32
+ * Add _belongsTo
33
+ */
34
+ function gotElementWithID(element, id, isMask) {
35
+ addID(element, id);
36
+ if (!element._belongsTo) element._belongsTo = [];
37
+ element._belongsTo.push({
38
+ id,
39
+ isMask,
40
+ indexes: new Set([element._index])
41
+ });
42
+ }
43
+ /**
44
+ * Mark element as reusable, set properties
45
+ */
46
+ function gotReusableElement(item, isMask) {
47
+ const element = item.node;
48
+ const attribs = element.attribs;
49
+ const index$1 = element._index;
50
+ const id = attribs["id"];
51
+ if (typeof id !== "string") {
52
+ const message = `Definition element ${analyseTagError(element)} does not have id`;
53
+ if (fixErrors) {
54
+ item.removeNode = true;
55
+ item.testChildren = false;
56
+ console.warn(message);
57
+ return false;
58
+ }
59
+ throw new Error(message);
60
+ }
61
+ if (ids[id] && fixErrors) {
62
+ console.warn(`Duplicate id "${id}"`);
63
+ item.removeNode = true;
64
+ item.testChildren = false;
65
+ return false;
66
+ }
67
+ element._reusableElement = {
68
+ id,
69
+ isMask,
70
+ index: index$1
71
+ };
72
+ gotElementWithID(element, id, isMask);
73
+ return true;
74
+ }
75
+ /**
76
+ * Found element that uses another element
77
+ */
78
+ function gotElementReference(item, id, usedAsMask) {
79
+ const element = item.node;
80
+ const link = {
81
+ id,
82
+ usedByIndex: element._index,
83
+ usedAsMask
84
+ };
85
+ links.push(link);
86
+ if (!element._linksTo) element._linksTo = [];
87
+ element._linksTo.push(link);
88
+ }
89
+ let index = 0;
90
+ parseSVG(svg, (item) => {
91
+ const parents = item.parents;
92
+ const element = item.node;
93
+ const tagName = element.tag;
94
+ if (styleTag.has(tagName)) {
95
+ item.testChildren = false;
96
+ return;
97
+ }
98
+ const attribs = element.attribs;
99
+ index++;
100
+ element._index = index;
101
+ elements.set(index, element);
102
+ if (!parents.length) {
103
+ element._usedAsMask = false;
104
+ element._usedAsPaint = true;
105
+ return;
106
+ }
107
+ element._usedAsMask = false;
108
+ element._usedAsPaint = false;
109
+ const parentItem = parents[0];
110
+ const parentElement = parentItem.node;
111
+ if (maskTags.has(tagName)) {
112
+ if (!gotReusableElement(item, true)) return;
113
+ } else if (reusableElementsWithPalette.has(tagName)) {
114
+ if (!gotReusableElement(item, false)) return;
115
+ } else if (defsTag.has(parentItem.node.tag)) {
116
+ if (!gotReusableElement(item, false)) return;
117
+ } else if (!defsTag.has(tagName)) {
118
+ element._usedAsMask = parentElement._usedAsMask;
119
+ element._usedAsPaint = parentElement._usedAsPaint;
120
+ element._parentElement = parentElement._index;
121
+ if (!parentElement._childElements) parentElement._childElements = [];
122
+ parentElement._childElements.push(index);
123
+ const parentReusableElement = parentElement._reusableElement;
124
+ if (parentReusableElement) {
125
+ if (element._reusableElement) throw new Error(`Reusable element ${analyseTagError(element)} is inside another reusable element id="${parentReusableElement.id}"`);
126
+ element._reusableElement = parentReusableElement;
127
+ }
128
+ const parentBelongsTo = parentElement._belongsTo;
129
+ if (parentBelongsTo) {
130
+ const list = element._belongsTo || (element._belongsTo = []);
131
+ parentBelongsTo.forEach((item$1) => {
132
+ item$1.indexes.add(index);
133
+ list.push(item$1);
134
+ });
135
+ }
136
+ if (element._id === void 0) {
137
+ const id = attribs["id"];
138
+ if (typeof id === "string") if (ids[id] && fixErrors) {
139
+ console.warn(`Duplicate id "${id}"`);
140
+ delete attribs["id"];
141
+ } else gotElementWithID(element, id, false);
142
+ }
143
+ }
144
+ if (tagSpecificNonPresentationalAttributes[tagName]?.has("href")) {
145
+ const href = attribs["href"] || attribs["xlink:href"];
146
+ if (typeof href === "string") {
147
+ if (href.slice(0, 1) !== "#") throw new Error(`Invalid link in ${analyseTagError(element)}`);
148
+ gotElementReference(item, href.slice(1), false);
149
+ }
150
+ }
151
+ Object.keys(attribs).forEach((attr) => {
152
+ let value = attribs[attr];
153
+ if (typeof value !== "string") return;
154
+ if (value.slice(0, 5).toLowerCase() !== "url(#") return;
155
+ value = value.slice(5);
156
+ if (value.slice(-1) !== ")") return;
157
+ const id = value.slice(0, value.length - 1).trim();
158
+ if (urlPresentationalAttributes.has(attr)) {
159
+ gotElementReference(item, id, attr !== "filter");
160
+ return;
161
+ }
162
+ if (commonColorPresentationalAttributes.has(attr) || markerAttributes.has(attr)) {
163
+ gotElementReference(item, id, false);
164
+ return;
165
+ }
166
+ });
167
+ });
168
+ links = links.filter((item) => {
169
+ const id = item.id;
170
+ if (ids[id]) return true;
171
+ function fix() {
172
+ const index$1 = item.usedByIndex;
173
+ const element = elements.get(index$1);
174
+ const tagName = element.tag;
175
+ function remove() {
176
+ const parentIndex = element._parentElement;
177
+ const parent = typeof parentIndex === "number" ? elements.get(parentIndex) : null;
178
+ if (parent) {
179
+ if (parent._childElements) parent._childElements = parent._childElements.filter((num) => num !== index$1);
180
+ parent._belongsTo?.forEach((list) => {
181
+ list.indexes.delete(index$1);
182
+ });
183
+ parent.children = parent.children.filter((node) => node !== element);
184
+ }
185
+ }
186
+ if (element._linksTo) element._linksTo = element._linksTo.filter((item$1) => item$1.id !== id);
187
+ if (!element.children.length) {
188
+ if (useTag.has(tagName)) {
189
+ remove();
190
+ return;
191
+ }
192
+ }
193
+ const matches = new Set(["#" + id, "url(#" + id + ")"]);
194
+ const attribs = element.attribs;
195
+ for (const attr in attribs) if (matches.has(attribs[attr])) delete attribs[attr];
196
+ }
197
+ const message = `Missing element with id="${id}"`;
198
+ if (fixErrors) {
199
+ fix();
200
+ console.warn(message);
201
+ } else throw new Error(message);
202
+ return false;
203
+ });
204
+ function hasChildItem(tree$1, child, canThrow) {
205
+ const item = tree$1.children.find((item$1) => item$1.index === child.index && item$1.usedAsMask === child.usedAsMask);
206
+ if (item && canThrow) throw new Error("Recursion");
207
+ return !!item;
208
+ }
209
+ const tree = {
210
+ index: 1,
211
+ usedAsMask: false,
212
+ children: []
213
+ };
214
+ function parseTreeItem(tree$1, usedItems, inMask) {
215
+ const element = elements.get(tree$1.index);
216
+ if (tree$1.usedAsMask || inMask) {
217
+ element._usedAsMask = true;
218
+ inMask = true;
219
+ } else element._usedAsPaint = true;
220
+ usedItems = usedItems.slice(0);
221
+ usedItems.push(element._index);
222
+ element._childElements?.forEach((childIndex) => {
223
+ if (usedItems.includes(childIndex)) throw new Error("Recursion");
224
+ const childItem = {
225
+ index: childIndex,
226
+ usedAsMask: false,
227
+ children: [],
228
+ parent: tree$1
229
+ };
230
+ tree$1.children.push(childItem);
231
+ parseTreeItem(childItem, usedItems, inMask);
232
+ });
233
+ element._linksTo?.forEach((link) => {
234
+ const linkIndex = ids[link.id];
235
+ const usedAsMask = link.usedAsMask;
236
+ const childItem = {
237
+ index: linkIndex,
238
+ usedAsMask,
239
+ children: [],
240
+ parent: tree$1
241
+ };
242
+ if (hasChildItem(tree$1, childItem, false)) return;
243
+ tree$1.children.push(childItem);
244
+ parseTreeItem(childItem, usedItems, inMask || usedAsMask);
245
+ });
246
+ }
247
+ parseTreeItem(tree, [0], false);
248
+ return {
249
+ elements,
250
+ ids,
251
+ links,
252
+ tree
253
+ };
254
+ }
255
+
256
+ export { analyseSVGStructure };
@@ -1,11 +1,6 @@
1
- import { SVG } from '../index.js';
2
- import 'cheerio';
3
- import '@iconify/types';
4
- import '@iconify/utils/lib/customisations/defaults';
5
-
1
+ import { SVG } from "../index.js";
6
2
  /**
7
3
  * Remove useless attributes
8
4
  */
9
5
  declare function removeBadAttributes(svg: SVG): void;
10
-
11
- export { removeBadAttributes };
6
+ export { removeBadAttributes };