@iconify/tools 4.0.0-dev.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/lib/colors/attribs.d.cts +27 -0
  2. package/lib/colors/attribs.d.mts +27 -0
  3. package/lib/colors/attribs.d.ts +1 -1
  4. package/lib/colors/detect.cjs +2 -2
  5. package/lib/colors/detect.d.cts +16 -0
  6. package/lib/colors/detect.d.mts +16 -0
  7. package/lib/colors/detect.mjs +3 -3
  8. package/lib/colors/parse.cjs +132 -276
  9. package/lib/colors/parse.d.cts +60 -0
  10. package/lib/colors/parse.d.mts +60 -0
  11. package/lib/colors/parse.d.ts +7 -15
  12. package/lib/colors/parse.mjs +136 -279
  13. package/lib/colors/validate.cjs +2 -11
  14. package/lib/colors/validate.d.cts +20 -0
  15. package/lib/colors/validate.d.mts +20 -0
  16. package/lib/colors/validate.d.ts +4 -11
  17. package/lib/colors/validate.mjs +4 -12
  18. package/lib/css/parse.d.cts +6 -0
  19. package/lib/css/parse.d.mts +6 -0
  20. package/lib/css/parser/error.d.cts +13 -0
  21. package/lib/css/parser/error.d.mts +13 -0
  22. package/lib/css/parser/error.d.ts +1 -1
  23. package/lib/css/parser/export.d.cts +8 -0
  24. package/lib/css/parser/export.d.mts +8 -0
  25. package/lib/css/parser/strings.d.cts +16 -0
  26. package/lib/css/parser/strings.d.mts +16 -0
  27. package/lib/css/parser/text.d.cts +20 -0
  28. package/lib/css/parser/text.d.mts +20 -0
  29. package/lib/css/parser/tokens.d.cts +9 -0
  30. package/lib/css/parser/tokens.d.mts +9 -0
  31. package/lib/css/parser/tree.d.cts +8 -0
  32. package/lib/css/parser/tree.d.mts +8 -0
  33. package/lib/css/parser/types.d.cts +52 -0
  34. package/lib/css/parser/types.d.mts +52 -0
  35. package/lib/css/parser/types.d.ts +1 -1
  36. package/lib/download/api/cache.d.cts +20 -0
  37. package/lib/download/api/cache.d.mts +20 -0
  38. package/lib/download/api/config.cjs +11 -0
  39. package/lib/download/api/config.d.cts +18 -0
  40. package/lib/download/api/config.d.mts +18 -0
  41. package/lib/download/api/config.d.ts +18 -0
  42. package/lib/download/api/config.mjs +8 -0
  43. package/lib/download/api/download.cjs +15 -7
  44. package/lib/download/api/download.d.cts +8 -0
  45. package/lib/download/api/download.d.mts +8 -0
  46. package/lib/download/api/download.mjs +11 -7
  47. package/lib/download/api/index.cjs +23 -7
  48. package/lib/download/api/index.d.cts +8 -0
  49. package/lib/download/api/index.d.mts +8 -0
  50. package/lib/download/api/index.mjs +19 -7
  51. package/lib/download/api/queue.cjs +104 -0
  52. package/lib/download/api/queue.d.cts +32 -0
  53. package/lib/download/api/queue.d.mts +32 -0
  54. package/lib/download/api/queue.d.ts +32 -0
  55. package/lib/download/api/queue.mjs +101 -0
  56. package/lib/download/api/types.d.cts +17 -0
  57. package/lib/download/api/types.d.mts +17 -0
  58. package/lib/download/api/types.d.ts +1 -1
  59. package/lib/download/git/branch.d.cts +8 -0
  60. package/lib/download/git/branch.d.mts +8 -0
  61. package/lib/download/git/hash.d.cts +8 -0
  62. package/lib/download/git/hash.d.mts +8 -0
  63. package/lib/download/git/index.cjs +2 -4
  64. package/lib/download/git/index.d.cts +29 -0
  65. package/lib/download/git/index.d.mts +29 -0
  66. package/lib/download/git/index.d.ts +1 -1
  67. package/lib/download/git/index.mjs +2 -4
  68. package/lib/download/git/reset.cjs +2 -4
  69. package/lib/download/git/reset.d.cts +6 -0
  70. package/lib/download/git/reset.d.mts +6 -0
  71. package/lib/download/git/reset.mjs +2 -4
  72. package/lib/download/github/hash.cjs +2 -0
  73. package/lib/download/github/hash.d.cts +8 -0
  74. package/lib/download/github/hash.d.mts +8 -0
  75. package/lib/download/github/hash.mjs +2 -0
  76. package/lib/download/github/index.cjs +2 -2
  77. package/lib/download/github/index.d.cts +31 -0
  78. package/lib/download/github/index.d.mts +31 -0
  79. package/lib/download/github/index.d.ts +1 -1
  80. package/lib/download/github/index.mjs +2 -2
  81. package/lib/download/github/types.d.cts +11 -0
  82. package/lib/download/github/types.d.mts +11 -0
  83. package/lib/download/github/types.d.ts +1 -1
  84. package/lib/download/gitlab/hash.cjs +2 -0
  85. package/lib/download/gitlab/hash.d.cts +8 -0
  86. package/lib/download/gitlab/hash.d.mts +8 -0
  87. package/lib/download/gitlab/hash.mjs +2 -0
  88. package/lib/download/gitlab/index.cjs +2 -2
  89. package/lib/download/gitlab/index.d.cts +31 -0
  90. package/lib/download/gitlab/index.d.mts +31 -0
  91. package/lib/download/gitlab/index.d.ts +1 -1
  92. package/lib/download/gitlab/index.mjs +2 -2
  93. package/lib/download/gitlab/types.d.cts +15 -0
  94. package/lib/download/gitlab/types.d.mts +15 -0
  95. package/lib/download/gitlab/types.d.ts +1 -1
  96. package/lib/download/helpers/untar.d.cts +6 -0
  97. package/lib/download/helpers/untar.d.mts +6 -0
  98. package/lib/download/helpers/unzip.d.cts +6 -0
  99. package/lib/download/helpers/unzip.d.mts +6 -0
  100. package/lib/download/index.cjs +2 -2
  101. package/lib/download/index.d.cts +48 -0
  102. package/lib/download/index.d.mts +48 -0
  103. package/lib/download/index.d.ts +1 -1
  104. package/lib/download/index.mjs +2 -2
  105. package/lib/download/npm/index.cjs +2 -2
  106. package/lib/download/npm/index.d.cts +30 -0
  107. package/lib/download/npm/index.d.mts +30 -0
  108. package/lib/download/npm/index.d.ts +1 -1
  109. package/lib/download/npm/index.mjs +2 -2
  110. package/lib/download/npm/types.d.cts +9 -0
  111. package/lib/download/npm/types.d.mts +9 -0
  112. package/lib/download/npm/types.d.ts +1 -1
  113. package/lib/download/npm/version.d.cts +16 -0
  114. package/lib/download/npm/version.d.mts +16 -0
  115. package/lib/download/npm/version.d.ts +1 -1
  116. package/lib/download/types/modified.d.cts +6 -0
  117. package/lib/download/types/modified.d.mts +6 -0
  118. package/lib/download/types/modified.d.ts +1 -1
  119. package/lib/download/types/sources.d.cts +12 -0
  120. package/lib/download/types/sources.d.mts +12 -0
  121. package/lib/download/types/sources.d.ts +1 -1
  122. package/lib/export/directory.d.cts +26 -0
  123. package/lib/export/directory.d.mts +26 -0
  124. package/lib/export/directory.d.ts +1 -1
  125. package/lib/export/helpers/custom-files.d.cts +12 -0
  126. package/lib/export/helpers/custom-files.d.mts +12 -0
  127. package/lib/export/helpers/custom-files.d.ts +1 -1
  128. package/lib/export/helpers/prepare.d.cts +19 -0
  129. package/lib/export/helpers/prepare.d.mts +19 -0
  130. package/lib/export/helpers/prepare.d.ts +1 -1
  131. package/lib/export/helpers/types-version.d.cts +6 -0
  132. package/lib/export/helpers/types-version.d.mts +6 -0
  133. package/lib/export/icon-package.d.cts +26 -0
  134. package/lib/export/icon-package.d.mts +26 -0
  135. package/lib/export/icon-package.d.ts +2 -2
  136. package/lib/export/json-package.cjs +1 -0
  137. package/lib/export/json-package.d.cts +25 -0
  138. package/lib/export/json-package.d.mts +25 -0
  139. package/lib/export/json-package.d.ts +2 -1
  140. package/lib/export/json-package.mjs +1 -0
  141. package/lib/icon-set/index.cjs +25 -4
  142. package/lib/icon-set/index.d.cts +162 -0
  143. package/lib/icon-set/index.d.mts +162 -0
  144. package/lib/icon-set/index.mjs +25 -4
  145. package/lib/icon-set/match.d.cts +15 -0
  146. package/lib/icon-set/match.d.mts +15 -0
  147. package/lib/icon-set/merge.d.cts +14 -0
  148. package/lib/icon-set/merge.d.mts +14 -0
  149. package/lib/icon-set/modified.d.cts +16 -0
  150. package/lib/icon-set/modified.d.mts +16 -0
  151. package/lib/icon-set/props.d.cts +13 -0
  152. package/lib/icon-set/props.d.mts +13 -0
  153. package/lib/icon-set/tags.d.cts +23 -0
  154. package/lib/icon-set/tags.d.mts +23 -0
  155. package/lib/icon-set/types.d.cts +75 -0
  156. package/lib/icon-set/types.d.mts +75 -0
  157. package/lib/icon-set/types.d.ts +1 -1
  158. package/lib/import/directory.d.cts +52 -0
  159. package/lib/import/directory.d.mts +52 -0
  160. package/lib/import/directory.d.ts +1 -1
  161. package/lib/import/figma/index.cjs +3 -0
  162. package/lib/import/figma/index.d.cts +20 -0
  163. package/lib/import/figma/index.d.mts +20 -0
  164. package/lib/import/figma/index.mjs +3 -0
  165. package/lib/import/figma/nodes.cjs +1 -1
  166. package/lib/import/figma/nodes.d.cts +18 -0
  167. package/lib/import/figma/nodes.d.mts +18 -0
  168. package/lib/import/figma/nodes.mjs +1 -1
  169. package/lib/import/figma/query.cjs +104 -76
  170. package/lib/import/figma/query.d.cts +42 -0
  171. package/lib/import/figma/query.d.mts +42 -0
  172. package/lib/import/figma/query.d.ts +15 -2
  173. package/lib/import/figma/query.mjs +106 -78
  174. package/lib/import/figma/types/api.d.cts +53 -0
  175. package/lib/import/figma/types/api.d.mts +53 -0
  176. package/lib/import/figma/types/api.d.ts +1 -1
  177. package/lib/import/figma/types/nodes.d.cts +44 -0
  178. package/lib/import/figma/types/nodes.d.mts +44 -0
  179. package/lib/import/figma/types/nodes.d.ts +1 -1
  180. package/lib/import/figma/types/options.d.cts +59 -0
  181. package/lib/import/figma/types/options.d.mts +59 -0
  182. package/lib/import/figma/types/options.d.ts +1 -1
  183. package/lib/import/figma/types/result.d.cts +44 -0
  184. package/lib/import/figma/types/result.d.mts +44 -0
  185. package/lib/import/figma/types/result.d.ts +1 -1
  186. package/lib/index.cjs +15 -13
  187. package/lib/index.d.cts +78 -0
  188. package/lib/index.d.mts +78 -0
  189. package/lib/index.d.ts +8 -5
  190. package/lib/index.mjs +14 -12
  191. package/lib/misc/bump-version.d.cts +6 -0
  192. package/lib/misc/bump-version.d.mts +6 -0
  193. package/lib/misc/cheerio.d.cts +9 -0
  194. package/lib/misc/cheerio.d.mts +9 -0
  195. package/lib/misc/cheerio.d.ts +1 -1
  196. package/lib/misc/compare-dirs.cjs +3 -3
  197. package/lib/misc/compare-dirs.d.cts +11 -0
  198. package/lib/misc/compare-dirs.d.mts +11 -0
  199. package/lib/misc/compare-dirs.d.ts +1 -1
  200. package/lib/misc/compare-dirs.mjs +3 -3
  201. package/lib/misc/exec.d.cts +12 -0
  202. package/lib/misc/exec.d.mts +12 -0
  203. package/lib/misc/exec.d.ts +1 -1
  204. package/lib/misc/keyword.d.cts +6 -0
  205. package/lib/misc/keyword.d.mts +6 -0
  206. package/lib/misc/scan.d.cts +33 -0
  207. package/lib/misc/scan.d.mts +33 -0
  208. package/lib/misc/scan.d.ts +3 -3
  209. package/lib/misc/write-json.d.cts +6 -0
  210. package/lib/misc/write-json.d.mts +6 -0
  211. package/lib/optimise/figma.cjs +55 -33
  212. package/lib/optimise/figma.d.cts +13 -0
  213. package/lib/optimise/figma.d.mts +13 -0
  214. package/lib/optimise/figma.d.ts +3 -1
  215. package/lib/optimise/figma.mjs +55 -33
  216. package/lib/optimise/flags.cjs +3 -3
  217. package/lib/optimise/flags.d.cts +11 -0
  218. package/lib/optimise/flags.d.mts +11 -0
  219. package/lib/optimise/flags.d.ts +1 -1
  220. package/lib/optimise/flags.mjs +3 -3
  221. package/lib/optimise/global-style.cjs +7 -7
  222. package/lib/optimise/global-style.d.cts +11 -0
  223. package/lib/optimise/global-style.d.mts +11 -0
  224. package/lib/optimise/global-style.d.ts +1 -1
  225. package/lib/optimise/global-style.mjs +7 -7
  226. package/lib/optimise/mask.cjs +1 -1
  227. package/lib/optimise/mask.d.cts +24 -0
  228. package/lib/optimise/mask.d.mts +24 -0
  229. package/lib/optimise/mask.mjs +2 -2
  230. package/lib/optimise/origin.d.cts +11 -0
  231. package/lib/optimise/origin.d.mts +11 -0
  232. package/lib/optimise/scale.d.cts +11 -0
  233. package/lib/optimise/scale.d.mts +11 -0
  234. package/lib/optimise/svgo.cjs +1 -1
  235. package/lib/optimise/svgo.d.cts +37 -0
  236. package/lib/optimise/svgo.d.mts +37 -0
  237. package/lib/optimise/svgo.mjs +1 -1
  238. package/lib/optimise/unwrap.cjs +31 -0
  239. package/lib/optimise/unwrap.d.cts +11 -0
  240. package/lib/optimise/unwrap.d.mts +11 -0
  241. package/lib/optimise/unwrap.d.ts +11 -0
  242. package/lib/optimise/unwrap.mjs +29 -0
  243. package/lib/svg/analyse/error.d.cts +10 -0
  244. package/lib/svg/analyse/error.d.mts +10 -0
  245. package/lib/svg/analyse/error.d.ts +1 -0
  246. package/lib/svg/analyse/types.d.cts +92 -0
  247. package/lib/svg/analyse/types.d.mts +92 -0
  248. package/lib/svg/analyse/types.d.ts +4 -3
  249. package/lib/svg/analyse.cjs +2 -2
  250. package/lib/svg/analyse.d.cts +15 -0
  251. package/lib/svg/analyse.d.mts +15 -0
  252. package/lib/svg/analyse.d.ts +1 -0
  253. package/lib/svg/analyse.mjs +4 -4
  254. package/lib/svg/cleanup/attribs.cjs +1 -1
  255. package/lib/svg/cleanup/attribs.d.cts +11 -0
  256. package/lib/svg/cleanup/attribs.d.mts +11 -0
  257. package/lib/svg/cleanup/attribs.mjs +2 -2
  258. package/lib/svg/cleanup/bad-tags.cjs +1 -1
  259. package/lib/svg/cleanup/bad-tags.d.cts +17 -0
  260. package/lib/svg/cleanup/bad-tags.d.mts +17 -0
  261. package/lib/svg/cleanup/bad-tags.d.ts +1 -1
  262. package/lib/svg/cleanup/bad-tags.mjs +2 -2
  263. package/lib/svg/cleanup/inline-style.cjs +1 -1
  264. package/lib/svg/cleanup/inline-style.d.cts +11 -0
  265. package/lib/svg/cleanup/inline-style.d.mts +11 -0
  266. package/lib/svg/cleanup/inline-style.mjs +2 -2
  267. package/lib/svg/cleanup/root-style.cjs +1 -1
  268. package/lib/svg/cleanup/root-style.d.cts +17 -0
  269. package/lib/svg/cleanup/root-style.d.mts +17 -0
  270. package/lib/svg/cleanup/root-style.mjs +2 -2
  271. package/lib/svg/cleanup/root-svg.cjs +3 -3
  272. package/lib/svg/cleanup/root-svg.d.cts +11 -0
  273. package/lib/svg/cleanup/root-svg.d.mts +11 -0
  274. package/lib/svg/cleanup/root-svg.mjs +3 -3
  275. package/lib/svg/cleanup/svgo-style.cjs +2 -2
  276. package/lib/svg/cleanup/svgo-style.d.cts +11 -0
  277. package/lib/svg/cleanup/svgo-style.d.mts +11 -0
  278. package/lib/svg/cleanup/svgo-style.mjs +3 -3
  279. package/lib/svg/cleanup.d.cts +16 -0
  280. package/lib/svg/cleanup.d.mts +16 -0
  281. package/lib/svg/cleanup.d.ts +1 -1
  282. package/lib/svg/data/attributes.d.cts +77 -0
  283. package/lib/svg/data/attributes.d.mts +77 -0
  284. package/lib/svg/data/tags.d.cts +95 -0
  285. package/lib/svg/data/tags.d.mts +95 -0
  286. package/lib/svg/index.cjs +18 -1
  287. package/lib/svg/index.d.cts +52 -0
  288. package/lib/svg/index.d.mts +52 -0
  289. package/lib/svg/index.d.ts +5 -1
  290. package/lib/svg/index.mjs +19 -2
  291. package/lib/svg/parse-style.cjs +178 -235
  292. package/lib/svg/parse-style.d.cts +58 -0
  293. package/lib/svg/parse-style.d.mts +58 -0
  294. package/lib/svg/parse-style.d.ts +3 -9
  295. package/lib/svg/parse-style.mjs +180 -236
  296. package/lib/svg/parse.cjs +27 -59
  297. package/lib/svg/parse.d.cts +30 -0
  298. package/lib/svg/parse.d.mts +30 -0
  299. package/lib/svg/parse.d.ts +3 -10
  300. package/lib/svg/parse.mjs +28 -59
  301. package/package.json +34 -24
@@ -0,0 +1,58 @@
1
+ import { SVG } from './index.cjs';
2
+ import { CSSRuleToken, CSSToken, CSSAtRuleToken } from '../css/parser/types.cjs';
3
+ import { ParseSVGCallbackItem } from './parse.cjs';
4
+ import 'cheerio';
5
+ import '@iconify/types';
6
+ import '@iconify/utils/lib/customisations/defaults';
7
+ import '../misc/cheerio.cjs';
8
+
9
+ /**
10
+ * Item in callback
11
+ */
12
+ interface ParseSVGStyleCallbackItemCommon {
13
+ prop: string;
14
+ value: string;
15
+ }
16
+ interface ParseSVGStyleCallbackItemInline extends ParseSVGStyleCallbackItemCommon {
17
+ type: 'inline';
18
+ item: ParseSVGCallbackItem;
19
+ }
20
+ interface ParseSVGStyleCallbackItemGlobal extends ParseSVGStyleCallbackItemCommon {
21
+ type: 'global';
22
+ token: CSSRuleToken;
23
+ selectors: string[];
24
+ selectorTokens: CSSToken[];
25
+ prevTokens: (CSSToken | null)[];
26
+ nextTokens: CSSToken[];
27
+ }
28
+ interface ParseSVGStyleCallbackItemGlobalAtRule extends ParseSVGStyleCallbackItemCommon {
29
+ token: CSSAtRuleToken;
30
+ childTokens: CSSToken[];
31
+ prevTokens: (CSSToken | null)[];
32
+ nextTokens: CSSToken[];
33
+ }
34
+ interface ParseSVGStyleCallbackItemGlobalGenericAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
35
+ type: 'at-rule';
36
+ }
37
+ interface ParseSVGStyleCallbackItemGlobalKeyframesAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
38
+ type: 'keyframes';
39
+ from: Record<string, string>;
40
+ }
41
+ type ParseSVGStyleCallbackItem = ParseSVGStyleCallbackItemInline | ParseSVGStyleCallbackItemGlobal | ParseSVGStyleCallbackItemGlobalGenericAtRule | ParseSVGStyleCallbackItemGlobalKeyframesAtRule;
42
+ /**
43
+ * Result: undefined to remove item, string to change/keep item
44
+ */
45
+ type ParseSVGStyleCallbackResult = string | undefined;
46
+ /**
47
+ * Callback function
48
+ */
49
+ type ParseSVGStyleCallback = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleCallbackResult;
50
+ /**
51
+ * Parse styles in SVG
52
+ *
53
+ * This function finds CSS in SVG, parses it, calls callback for each rule.
54
+ * Callback should return new value (string) or undefined to remove rule.
55
+ */
56
+ declare function parseSVGStyle(svg: SVG, callback: ParseSVGStyleCallback): void;
57
+
58
+ export { type ParseSVGStyleCallback, type ParseSVGStyleCallbackItem, type ParseSVGStyleCallbackResult, parseSVGStyle };
@@ -0,0 +1,58 @@
1
+ import { SVG } from './index.mjs';
2
+ import { CSSRuleToken, CSSToken, CSSAtRuleToken } from '../css/parser/types.mjs';
3
+ import { ParseSVGCallbackItem } from './parse.mjs';
4
+ import 'cheerio';
5
+ import '@iconify/types';
6
+ import '@iconify/utils/lib/customisations/defaults';
7
+ import '../misc/cheerio.mjs';
8
+
9
+ /**
10
+ * Item in callback
11
+ */
12
+ interface ParseSVGStyleCallbackItemCommon {
13
+ prop: string;
14
+ value: string;
15
+ }
16
+ interface ParseSVGStyleCallbackItemInline extends ParseSVGStyleCallbackItemCommon {
17
+ type: 'inline';
18
+ item: ParseSVGCallbackItem;
19
+ }
20
+ interface ParseSVGStyleCallbackItemGlobal extends ParseSVGStyleCallbackItemCommon {
21
+ type: 'global';
22
+ token: CSSRuleToken;
23
+ selectors: string[];
24
+ selectorTokens: CSSToken[];
25
+ prevTokens: (CSSToken | null)[];
26
+ nextTokens: CSSToken[];
27
+ }
28
+ interface ParseSVGStyleCallbackItemGlobalAtRule extends ParseSVGStyleCallbackItemCommon {
29
+ token: CSSAtRuleToken;
30
+ childTokens: CSSToken[];
31
+ prevTokens: (CSSToken | null)[];
32
+ nextTokens: CSSToken[];
33
+ }
34
+ interface ParseSVGStyleCallbackItemGlobalGenericAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
35
+ type: 'at-rule';
36
+ }
37
+ interface ParseSVGStyleCallbackItemGlobalKeyframesAtRule extends ParseSVGStyleCallbackItemGlobalAtRule {
38
+ type: 'keyframes';
39
+ from: Record<string, string>;
40
+ }
41
+ type ParseSVGStyleCallbackItem = ParseSVGStyleCallbackItemInline | ParseSVGStyleCallbackItemGlobal | ParseSVGStyleCallbackItemGlobalGenericAtRule | ParseSVGStyleCallbackItemGlobalKeyframesAtRule;
42
+ /**
43
+ * Result: undefined to remove item, string to change/keep item
44
+ */
45
+ type ParseSVGStyleCallbackResult = string | undefined;
46
+ /**
47
+ * Callback function
48
+ */
49
+ type ParseSVGStyleCallback = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleCallbackResult;
50
+ /**
51
+ * Parse styles in SVG
52
+ *
53
+ * This function finds CSS in SVG, parses it, calls callback for each rule.
54
+ * Callback should return new value (string) or undefined to remove rule.
55
+ */
56
+ declare function parseSVGStyle(svg: SVG, callback: ParseSVGStyleCallback): void;
57
+
58
+ export { type ParseSVGStyleCallback, type ParseSVGStyleCallbackItem, type ParseSVGStyleCallbackResult, parseSVGStyle };
@@ -46,19 +46,13 @@ type ParseSVGStyleCallbackResult = string | undefined;
46
46
  /**
47
47
  * Callback function
48
48
  */
49
- type ParseSVGStyleCallback = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleCallbackResult | Promise<ParseSVGStyleCallbackResult>;
50
- type ParseSVGStyleCallbackSync = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleCallbackResult;
49
+ type ParseSVGStyleCallback = (item: ParseSVGStyleCallbackItem) => ParseSVGStyleCallbackResult;
51
50
  /**
52
51
  * Parse styles in SVG
53
52
  *
54
53
  * This function finds CSS in SVG, parses it, calls callback for each rule.
55
54
  * Callback should return new value (string) or undefined to remove rule.
56
- * Callback can be asynchronous.
57
55
  */
58
- declare function parseSVGStyle(svg: SVG, callback: ParseSVGStyleCallback): Promise<void>;
59
- /**
60
- * Synchronous version
61
- */
62
- declare function parseSVGStyleSync(svg: SVG, callback: ParseSVGStyleCallbackSync): void;
56
+ declare function parseSVGStyle(svg: SVG, callback: ParseSVGStyleCallback): void;
63
57
 
64
- export { ParseSVGStyleCallback, ParseSVGStyleCallbackItem, ParseSVGStyleCallbackResult, ParseSVGStyleCallbackSync, parseSVGStyle, parseSVGStyleSync };
58
+ export { type ParseSVGStyleCallback, type ParseSVGStyleCallbackItem, type ParseSVGStyleCallbackResult, parseSVGStyle };
@@ -2,161 +2,152 @@ import { parseInlineStyle } from '../css/parse.mjs';
2
2
  import { tokensToString } from '../css/parser/export.mjs';
3
3
  import { getTokens } from '../css/parser/tokens.mjs';
4
4
  import { tokensTree } from '../css/parser/tree.mjs';
5
- import { parseSVG, parseSVGSync } from './parse.mjs';
5
+ import { parseSVG } from './parse.mjs';
6
6
  import '../css/parser/error.mjs';
7
7
  import '../css/parser/strings.mjs';
8
8
  import '../css/parser/text.mjs';
9
9
 
10
- function parseItem(item, callback, done) {
11
- const tagName = item.tagName;
12
- const $element = item.$element;
13
- function parseStyleItem(done2) {
14
- const content = $element.text();
15
- if (typeof content !== "string") {
16
- $element.remove();
17
- return done2();
18
- }
19
- const tokens = getTokens(content);
20
- if (!(tokens instanceof Array)) {
21
- throw new Error("Error parsing style");
22
- }
23
- let changed2 = false;
24
- const selectorStart = [];
25
- let newTokens = [];
26
- const parsedTokens = () => {
27
- if (changed2) {
28
- const tree = tokensTree(
29
- newTokens.filter((token) => token !== null)
30
- );
31
- if (!tree.length) {
32
- $element.remove();
33
- } else {
34
- const newContent = tokensToString(tree);
35
- item.$element.text("\n" + newContent);
36
- }
10
+ function assertNotOldCode(value) {
11
+ if (value instanceof Promise) {
12
+ throw new Error("parseSVGStyle does not support async callbacks");
13
+ }
14
+ }
15
+ function parseSVGStyle(svg, callback) {
16
+ parseSVG(svg, (item) => {
17
+ const tagName = item.tagName;
18
+ const $element = item.$element;
19
+ function parseStyleItem() {
20
+ const content = $element.text();
21
+ if (typeof content !== "string") {
22
+ $element.remove();
23
+ return;
37
24
  }
38
- done2();
39
- };
40
- const nextToken = () => {
41
- const token = tokens.shift();
42
- if (token === void 0) {
43
- return parsedTokens();
25
+ const tokens = getTokens(content);
26
+ if (!(tokens instanceof Array)) {
27
+ throw new Error("Error parsing style");
44
28
  }
45
- switch (token.type) {
46
- case "selector":
47
- selectorStart.push(newTokens.length);
48
- newTokens.push(token);
49
- return nextToken();
50
- case "close":
51
- selectorStart.pop();
52
- newTokens.push(token);
53
- return nextToken();
54
- case "at-rule": {
55
- selectorStart.push(newTokens.length);
56
- const prop = token.rule;
57
- const value = token.value;
58
- const isAnimation = prop === "keyframes" || prop.slice(0, 1) === "-" && prop.split("-").pop() === "keyframes";
59
- const childTokens = [];
60
- const animationRules = /* @__PURE__ */ Object.create(null);
61
- let depth = 1;
62
- let index = 0;
63
- let isFrom = false;
64
- while (depth > 0) {
65
- const childToken = tokens[index];
66
- index++;
67
- if (!childToken) {
68
- throw new Error("Something went wrong parsing CSS");
69
- }
70
- childTokens.push(childToken);
71
- switch (childToken.type) {
72
- case "close": {
73
- depth--;
74
- isFrom = false;
75
- break;
29
+ let changed2 = false;
30
+ const selectorStart = [];
31
+ let newTokens = [];
32
+ while (tokens.length) {
33
+ const token = tokens.shift();
34
+ if (!token) {
35
+ break;
36
+ }
37
+ switch (token.type) {
38
+ case "selector":
39
+ selectorStart.push(newTokens.length);
40
+ newTokens.push(token);
41
+ break;
42
+ case "close":
43
+ selectorStart.pop();
44
+ newTokens.push(token);
45
+ break;
46
+ case "at-rule": {
47
+ selectorStart.push(newTokens.length);
48
+ const prop = token.rule;
49
+ const value = token.value;
50
+ const isAnimation = prop === "keyframes" || prop.slice(0, 1) === "-" && prop.split("-").pop() === "keyframes";
51
+ const childTokens = [];
52
+ const animationRules = /* @__PURE__ */ Object.create(null);
53
+ let depth = 1;
54
+ let index = 0;
55
+ let isFrom = false;
56
+ while (depth > 0) {
57
+ const childToken = tokens[index];
58
+ index++;
59
+ if (!childToken) {
60
+ throw new Error(
61
+ "Something went wrong parsing CSS"
62
+ );
76
63
  }
77
- case "selector": {
78
- depth++;
79
- if (isAnimation) {
80
- const rule = childToken.code;
81
- if (rule === "from" || rule === "0%") {
82
- isFrom = true;
64
+ childTokens.push(childToken);
65
+ switch (childToken.type) {
66
+ case "close": {
67
+ depth--;
68
+ isFrom = false;
69
+ break;
70
+ }
71
+ case "selector": {
72
+ depth++;
73
+ if (isAnimation) {
74
+ const rule = childToken.code;
75
+ if (rule === "from" || rule === "0%") {
76
+ isFrom = true;
77
+ }
83
78
  }
79
+ break;
84
80
  }
85
- break;
86
- }
87
- case "at-rule": {
88
- depth++;
89
- if (isAnimation) {
90
- throw new Error(
91
- "Nested at-rule in keyframes ???"
92
- );
81
+ case "at-rule": {
82
+ depth++;
83
+ if (isAnimation) {
84
+ throw new Error(
85
+ "Nested at-rule in keyframes ???"
86
+ );
87
+ }
88
+ break;
93
89
  }
94
- break;
95
- }
96
- case "rule": {
97
- if (isAnimation && isFrom) {
98
- animationRules[childToken.prop] = childToken.value;
90
+ case "rule": {
91
+ if (isAnimation && isFrom) {
92
+ animationRules[childToken.prop] = childToken.value;
93
+ }
94
+ break;
99
95
  }
100
- break;
101
96
  }
102
97
  }
103
- }
104
- const skipCount = childTokens.length;
105
- callback(
106
- isAnimation ? {
107
- type: "keyframes",
108
- prop,
109
- value,
110
- token,
111
- childTokens,
112
- from: animationRules,
113
- prevTokens: newTokens,
114
- nextTokens: tokens.slice(0)
115
- } : {
116
- type: "at-rule",
117
- prop,
118
- value,
119
- token,
120
- childTokens,
121
- prevTokens: newTokens,
122
- nextTokens: tokens.slice(0)
123
- },
124
- (result) => {
125
- if (result !== void 0) {
126
- if (isAnimation) {
127
- if (result !== value) {
128
- changed2 = true;
129
- token.value = result;
130
- }
131
- newTokens.push(token);
132
- for (let i = 0; i < skipCount; i++) {
133
- tokens.shift();
134
- }
135
- newTokens = newTokens.concat(childTokens);
136
- } else {
137
- if (result !== value) {
138
- throw new Error(
139
- "Changing value for at-rule is not supported"
140
- );
141
- }
142
- newTokens.push(token);
98
+ const skipCount = childTokens.length;
99
+ const result = callback(
100
+ isAnimation ? {
101
+ type: "keyframes",
102
+ prop,
103
+ value,
104
+ token,
105
+ childTokens,
106
+ from: animationRules,
107
+ prevTokens: newTokens,
108
+ nextTokens: tokens.slice(0)
109
+ } : {
110
+ type: "at-rule",
111
+ prop,
112
+ value,
113
+ token,
114
+ childTokens,
115
+ prevTokens: newTokens,
116
+ nextTokens: tokens.slice(0)
117
+ }
118
+ );
119
+ if (result !== void 0) {
120
+ assertNotOldCode(result);
121
+ if (isAnimation) {
122
+ if (result !== value) {
123
+ changed2 = true;
124
+ token.value = result;
143
125
  }
144
- } else {
145
- changed2 = true;
126
+ newTokens.push(token);
146
127
  for (let i = 0; i < skipCount; i++) {
147
128
  tokens.shift();
148
129
  }
130
+ newTokens = newTokens.concat(childTokens);
131
+ } else {
132
+ if (result !== value) {
133
+ throw new Error(
134
+ "Changing value for at-rule is not supported"
135
+ );
136
+ }
137
+ newTokens.push(token);
138
+ }
139
+ } else {
140
+ changed2 = true;
141
+ for (let i = 0; i < skipCount; i++) {
142
+ tokens.shift();
149
143
  }
150
- nextToken();
151
144
  }
152
- );
153
- return;
154
- }
155
- case "rule": {
156
- const value = token.value;
157
- const selectorTokens = selectorStart.map((index) => newTokens[index]).filter((item2) => item2 !== null);
158
- callback(
159
- {
145
+ break;
146
+ }
147
+ case "rule": {
148
+ const value = token.value;
149
+ const selectorTokens = selectorStart.map((index) => newTokens[index]).filter((item2) => item2 !== null);
150
+ const result = callback({
160
151
  type: "global",
161
152
  prop: token.prop,
162
153
  value,
@@ -177,121 +168,74 @@ function parseItem(item, callback, done) {
177
168
  ),
178
169
  prevTokens: newTokens,
179
170
  nextTokens: tokens.slice(0)
180
- },
181
- (result) => {
182
- if (result !== void 0) {
183
- if (result !== value) {
184
- changed2 = true;
185
- token.value = result;
186
- }
187
- newTokens.push(token);
188
- } else {
171
+ });
172
+ if (result !== void 0) {
173
+ assertNotOldCode(result);
174
+ if (result !== value) {
189
175
  changed2 = true;
176
+ token.value = result;
190
177
  }
191
- nextToken();
178
+ newTokens.push(token);
179
+ } else {
180
+ changed2 = true;
192
181
  }
193
- );
194
- return;
182
+ break;
183
+ }
195
184
  }
196
185
  }
197
- };
198
- nextToken();
199
- }
200
- if (tagName === "style") {
201
- return parseStyleItem(done);
202
- }
203
- const attribs = item.element.attribs;
204
- if (attribs.style === void 0) {
205
- return done();
206
- }
207
- const parsedStyle = parseInlineStyle(attribs.style);
208
- if (parsedStyle === null) {
209
- $element.removeAttr("style");
210
- return done();
211
- }
212
- const propsQueue = Object.keys(parsedStyle);
213
- let changed = false;
214
- const parsedProps = () => {
215
- if (changed) {
216
- const newStyle = Object.keys(parsedStyle).map((key) => key + ":" + parsedStyle[key] + ";").join("");
217
- if (!newStyle.length) {
218
- $element.removeAttr("style");
219
- } else {
220
- $element.attr("style", newStyle);
186
+ if (changed2) {
187
+ const tree = tokensTree(
188
+ newTokens.filter((token) => token !== null)
189
+ );
190
+ if (!tree.length) {
191
+ $element.remove();
192
+ } else {
193
+ const newContent = tokensToString(tree);
194
+ item.$element.text("\n" + newContent);
195
+ }
221
196
  }
222
197
  }
223
- done();
224
- };
225
- const nextProp = () => {
226
- const prop = propsQueue.shift();
227
- if (prop === void 0) {
228
- return parsedProps();
198
+ if (tagName === "style") {
199
+ parseStyleItem();
200
+ return;
201
+ }
202
+ const attribs = item.element.attribs;
203
+ if (attribs.style === void 0) {
204
+ return;
205
+ }
206
+ const parsedStyle = parseInlineStyle(attribs.style);
207
+ if (parsedStyle === null) {
208
+ $element.removeAttr("style");
209
+ return;
229
210
  }
230
- const value = parsedStyle[prop];
231
- callback(
232
- {
211
+ let changed = false;
212
+ for (const prop in parsedStyle) {
213
+ const value = parsedStyle[prop];
214
+ const result = callback({
233
215
  type: "inline",
234
216
  prop,
235
217
  value,
236
218
  item
237
- },
238
- (result) => {
239
- if (result !== value) {
240
- changed = true;
241
- if (result === void 0) {
242
- delete parsedStyle[prop];
243
- } else {
244
- parsedStyle[prop] = result;
245
- }
219
+ });
220
+ assertNotOldCode(result);
221
+ if (result !== value) {
222
+ changed = true;
223
+ if (result === void 0) {
224
+ delete parsedStyle[prop];
225
+ } else {
226
+ parsedStyle[prop] = result;
246
227
  }
247
- nextProp();
248
- }
249
- );
250
- };
251
- nextProp();
252
- }
253
- async function parseSVGStyle(svg, callback) {
254
- return parseSVG(svg, (item) => {
255
- return new Promise((fulfill, reject) => {
256
- try {
257
- parseItem(
258
- item,
259
- (styleItem, done) => {
260
- try {
261
- const result = callback(styleItem);
262
- if (result instanceof Promise) {
263
- result.then(done).catch(reject);
264
- } else {
265
- done(result);
266
- }
267
- } catch (err) {
268
- reject(err);
269
- }
270
- },
271
- fulfill
272
- );
273
- } catch (err) {
274
- reject(err);
275
228
  }
276
- });
277
- });
278
- }
279
- function parseSVGStyleSync(svg, callback) {
280
- let isSync = true;
281
- parseSVGSync(svg, (item) => {
282
- parseItem(
283
- item,
284
- (styleItem, done) => {
285
- done(callback(styleItem));
286
- },
287
- () => {
288
- if (!isSync) {
289
- throw new Error("parseSVGStyleSync callback was async");
290
- }
229
+ }
230
+ if (changed) {
231
+ const newStyle = Object.keys(parsedStyle).map((key) => key + ":" + parsedStyle[key] + ";").join("");
232
+ if (!newStyle.length) {
233
+ $element.removeAttr("style");
234
+ } else {
235
+ $element.attr("style", newStyle);
291
236
  }
292
- );
237
+ }
293
238
  });
294
- isSync = false;
295
239
  }
296
240
 
297
- export { parseSVGStyle, parseSVGStyleSync };
241
+ export { parseSVGStyle };