@iconify/tools 2.0.14 → 2.0.15

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 (309) hide show
  1. package/lib/colors/attribs.cjs +30 -0
  2. package/lib/colors/attribs.d.ts +13 -10
  3. package/lib/colors/attribs.mjs +7 -13
  4. package/lib/colors/parse.cjs +269 -0
  5. package/lib/colors/parse.d.ts +15 -11
  6. package/lib/colors/parse.mjs +27 -31
  7. package/lib/colors/validate.cjs +52 -0
  8. package/lib/colors/validate.d.ts +11 -4
  9. package/lib/colors/validate.mjs +19 -6
  10. package/lib/css/parse.cjs +26 -0
  11. package/lib/css/parse.d.ts +3 -1
  12. package/lib/css/parse.mjs +8 -6
  13. package/lib/css/parser/error.cjs +25 -0
  14. package/lib/css/parser/error.d.ts +4 -2
  15. package/lib/css/parser/error.mjs +2 -4
  16. package/lib/css/parser/export.cjs +48 -0
  17. package/lib/css/parser/export.d.ts +5 -2
  18. package/lib/css/parser/export.mjs +4 -6
  19. package/lib/css/parser/strings.cjs +77 -0
  20. package/lib/css/parser/strings.d.ts +6 -3
  21. package/lib/css/parser/strings.mjs +4 -6
  22. package/lib/css/parser/text.cjs +135 -0
  23. package/lib/css/parser/text.d.ts +8 -5
  24. package/lib/css/parser/text.mjs +3 -8
  25. package/lib/css/parser/tokens.cjs +184 -0
  26. package/lib/css/parser/tokens.d.ts +6 -3
  27. package/lib/css/parser/tokens.mjs +7 -13
  28. package/lib/css/parser/tree.cjs +42 -0
  29. package/lib/css/parser/tree.d.ts +5 -2
  30. package/lib/css/parser/tree.mjs +2 -4
  31. package/lib/css/parser/types.cjs +2 -0
  32. package/lib/css/parser/types.d.ts +13 -11
  33. package/lib/css/parser/types.mjs +1 -0
  34. package/lib/download/api/cache.cjs +86 -0
  35. package/lib/download/api/cache.d.ts +8 -5
  36. package/lib/download/api/cache.mjs +14 -19
  37. package/lib/download/api/download.cjs +28 -0
  38. package/lib/download/api/download.d.ts +5 -2
  39. package/lib/download/api/download.mjs +8 -9
  40. package/lib/download/api/index.cjs +51 -0
  41. package/lib/download/api/index.d.ts +5 -2
  42. package/lib/download/api/index.mjs +8 -6
  43. package/lib/download/api/types.cjs +2 -0
  44. package/lib/download/api/types.d.ts +4 -2
  45. package/lib/download/api/types.mjs +1 -0
  46. package/lib/download/git/branch.cjs +22 -0
  47. package/lib/download/git/branch.d.ts +5 -2
  48. package/lib/download/git/branch.mjs +5 -5
  49. package/lib/download/git/hash.cjs +15 -0
  50. package/lib/download/git/hash.d.ts +5 -2
  51. package/lib/download/git/hash.mjs +5 -5
  52. package/lib/download/git/index.cjs +76 -0
  53. package/lib/download/git/index.d.ts +10 -8
  54. package/lib/download/git/index.mjs +41 -26
  55. package/lib/download/git/reset.cjs +41 -0
  56. package/lib/download/git/reset.d.ts +3 -1
  57. package/lib/download/git/reset.mjs +29 -5
  58. package/lib/download/github/hash.cjs +32 -0
  59. package/lib/download/github/hash.d.ts +5 -2
  60. package/lib/download/github/hash.mjs +10 -7
  61. package/lib/download/github/index.cjs +98 -0
  62. package/lib/download/github/index.d.ts +11 -9
  63. package/lib/download/github/index.mjs +23 -17
  64. package/lib/download/github/types.cjs +2 -0
  65. package/lib/download/github/types.d.ts +3 -1
  66. package/lib/download/github/types.mjs +1 -0
  67. package/lib/download/gitlab/hash.cjs +32 -0
  68. package/lib/download/gitlab/hash.d.ts +5 -2
  69. package/lib/download/gitlab/hash.mjs +10 -6
  70. package/lib/download/gitlab/index.cjs +98 -0
  71. package/lib/download/gitlab/index.d.ts +11 -9
  72. package/lib/download/gitlab/index.mjs +24 -18
  73. package/lib/download/gitlab/types.cjs +7 -0
  74. package/lib/download/gitlab/types.d.ts +4 -2
  75. package/lib/download/gitlab/types.mjs +3 -5
  76. package/lib/download/helpers/untar.cjs +14 -0
  77. package/lib/download/helpers/untar.d.ts +3 -1
  78. package/lib/download/helpers/untar.mjs +4 -5
  79. package/lib/download/helpers/unzip.cjs +19 -0
  80. package/lib/download/helpers/unzip.d.ts +3 -1
  81. package/lib/download/helpers/unzip.mjs +6 -7
  82. package/lib/download/index.cjs +64 -0
  83. package/lib/download/index.d.ts +18 -13
  84. package/lib/download/index.mjs +46 -19
  85. package/lib/download/npm/index.cjs +82 -0
  86. package/lib/download/npm/index.d.ts +10 -8
  87. package/lib/download/npm/index.mjs +16 -13
  88. package/lib/download/npm/types.cjs +2 -0
  89. package/lib/download/npm/types.d.ts +3 -1
  90. package/lib/download/npm/types.mjs +1 -0
  91. package/lib/download/npm/version.cjs +23 -0
  92. package/lib/download/npm/version.d.ts +7 -4
  93. package/lib/download/npm/version.mjs +8 -10
  94. package/lib/download/types/modified.cjs +2 -0
  95. package/lib/download/types/modified.d.ts +3 -1
  96. package/lib/download/types/modified.mjs +1 -0
  97. package/lib/download/types/sources.cjs +2 -0
  98. package/lib/download/types/sources.d.ts +4 -2
  99. package/lib/download/types/sources.mjs +1 -0
  100. package/lib/export/directory.cjs +45 -0
  101. package/lib/export/directory.d.ts +11 -4
  102. package/lib/export/directory.mjs +8 -8
  103. package/lib/export/helpers/custom-files.cjs +28 -0
  104. package/lib/export/helpers/custom-files.d.ts +4 -2
  105. package/lib/export/helpers/custom-files.mjs +8 -9
  106. package/lib/export/helpers/prepare.cjs +36 -0
  107. package/lib/export/helpers/prepare.d.ts +5 -3
  108. package/lib/export/helpers/prepare.mjs +7 -9
  109. package/lib/export/helpers/types-version.cjs +22 -0
  110. package/lib/export/helpers/types-version.d.ts +3 -1
  111. package/lib/export/helpers/types-version.mjs +15 -37
  112. package/lib/export/icon-package.cjs +59 -0
  113. package/lib/export/icon-package.d.ts +12 -5
  114. package/lib/export/icon-package.mjs +15 -16
  115. package/lib/export/json-package.cjs +133 -0
  116. package/lib/export/json-package.d.ts +12 -5
  117. package/lib/export/json-package.mjs +20 -21
  118. package/lib/icon-set/index.cjs +589 -0
  119. package/lib/icon-set/index.d.ts +9 -6
  120. package/lib/icon-set/index.mjs +40 -53
  121. package/lib/icon-set/match.cjs +58 -0
  122. package/lib/icon-set/match.d.ts +10 -3
  123. package/lib/icon-set/match.mjs +5 -6
  124. package/lib/icon-set/merge.cjs +83 -0
  125. package/lib/icon-set/merge.d.ts +9 -2
  126. package/lib/icon-set/merge.mjs +15 -10
  127. package/lib/icon-set/props.cjs +28 -0
  128. package/lib/icon-set/props.d.ts +8 -4
  129. package/lib/icon-set/props.mjs +7 -10
  130. package/lib/icon-set/types.cjs +2 -0
  131. package/lib/icon-set/types.d.ts +19 -17
  132. package/lib/icon-set/types.mjs +1 -0
  133. package/lib/import/directory.cjs +76 -0
  134. package/lib/import/directory.d.ts +11 -5
  135. package/lib/import/directory.mjs +36 -11
  136. package/lib/import/figma/index.cjs +105 -0
  137. package/lib/import/figma/index.d.ts +15 -5
  138. package/lib/import/figma/index.mjs +40 -13
  139. package/lib/import/figma/nodes.cjs +86 -0
  140. package/lib/import/figma/nodes.d.ts +13 -4
  141. package/lib/import/figma/nodes.mjs +3 -11
  142. package/lib/import/figma/query.cjs +218 -0
  143. package/lib/import/figma/query.d.ts +18 -9
  144. package/lib/import/figma/query.mjs +9 -12
  145. package/lib/import/figma/types/api.cjs +2 -0
  146. package/lib/import/figma/types/api.d.ts +8 -7
  147. package/lib/import/figma/types/api.mjs +1 -0
  148. package/lib/import/figma/types/nodes.cjs +2 -0
  149. package/lib/import/figma/types/nodes.d.ts +16 -9
  150. package/lib/import/figma/types/nodes.mjs +1 -0
  151. package/lib/import/figma/types/options.cjs +2 -0
  152. package/lib/import/figma/types/options.d.ts +17 -10
  153. package/lib/import/figma/types/options.mjs +1 -0
  154. package/lib/import/figma/types/result.cjs +2 -0
  155. package/lib/import/figma/types/result.d.ts +12 -5
  156. package/lib/import/figma/types/result.mjs +1 -0
  157. package/lib/index.cjs +137 -0
  158. package/lib/index.d.ts +65 -44
  159. package/lib/index.mjs +83 -94
  160. package/lib/misc/bump-version.cjs +17 -0
  161. package/lib/misc/bump-version.d.ts +3 -1
  162. package/lib/misc/bump-version.mjs +2 -4
  163. package/lib/misc/compare-dirs.cjs +75 -0
  164. package/lib/misc/compare-dirs.d.ts +4 -2
  165. package/lib/misc/compare-dirs.mjs +12 -12
  166. package/lib/misc/exec.cjs +25 -0
  167. package/lib/misc/exec.d.ts +6 -4
  168. package/lib/misc/exec.mjs +4 -5
  169. package/lib/misc/keyword.cjs +19 -0
  170. package/lib/misc/keyword.d.ts +3 -1
  171. package/lib/misc/keyword.mjs +2 -4
  172. package/lib/misc/scan.cjs +51 -0
  173. package/lib/misc/scan.d.ts +7 -6
  174. package/lib/misc/scan.mjs +6 -7
  175. package/lib/misc/write-json.cjs +11 -0
  176. package/lib/misc/write-json.d.ts +3 -1
  177. package/lib/misc/write-json.mjs +5 -6
  178. package/lib/optimise/flags.cjs +252 -0
  179. package/lib/optimise/flags.d.ts +7 -2
  180. package/lib/optimise/flags.mjs +18 -19
  181. package/lib/optimise/global-style.cjs +154 -0
  182. package/lib/optimise/global-style.d.ts +7 -2
  183. package/lib/optimise/global-style.mjs +18 -15
  184. package/lib/optimise/scale.cjs +26 -0
  185. package/lib/optimise/scale.d.ts +7 -2
  186. package/lib/optimise/scale.mjs +5 -5
  187. package/lib/optimise/svgo.cjs +83 -0
  188. package/lib/optimise/svgo.d.ts +10 -6
  189. package/lib/optimise/svgo.mjs +6 -9
  190. package/lib/svg/analyse/error.cjs +18 -0
  191. package/lib/svg/analyse/error.d.ts +5 -2
  192. package/lib/svg/analyse/error.mjs +2 -4
  193. package/lib/svg/analyse/types.cjs +2 -0
  194. package/lib/svg/analyse/types.d.ts +11 -11
  195. package/lib/svg/analyse/types.mjs +1 -0
  196. package/lib/svg/analyse.cjs +291 -0
  197. package/lib/svg/analyse.d.ts +8 -3
  198. package/lib/svg/analyse.mjs +15 -30
  199. package/lib/svg/cleanup/attribs.cjs +41 -0
  200. package/lib/svg/cleanup/attribs.d.ts +7 -2
  201. package/lib/svg/cleanup/attribs.mjs +6 -12
  202. package/lib/svg/cleanup/bad-tags.cjs +51 -0
  203. package/lib/svg/cleanup/bad-tags.d.ts +7 -2
  204. package/lib/svg/cleanup/bad-tags.mjs +10 -25
  205. package/lib/svg/cleanup/inline-style.cjs +64 -0
  206. package/lib/svg/cleanup/inline-style.d.ts +7 -2
  207. package/lib/svg/cleanup/inline-style.mjs +14 -19
  208. package/lib/svg/cleanup/root-svg.cjs +81 -0
  209. package/lib/svg/cleanup/root-svg.d.ts +7 -2
  210. package/lib/svg/cleanup/root-svg.mjs +7 -18
  211. package/lib/svg/cleanup/svgo-style.cjs +38 -0
  212. package/lib/svg/cleanup/svgo-style.d.ts +7 -2
  213. package/lib/svg/cleanup/svgo-style.mjs +16 -11
  214. package/lib/svg/cleanup.cjs +32 -0
  215. package/lib/svg/cleanup.d.ts +7 -2
  216. package/lib/svg/cleanup.mjs +21 -9
  217. package/lib/svg/data/attributes.cjs +355 -0
  218. package/lib/svg/data/attributes.d.ts +27 -25
  219. package/lib/svg/data/attributes.mjs +90 -115
  220. package/lib/svg/data/tags.cjs +137 -0
  221. package/lib/svg/data/tags.d.ts +25 -23
  222. package/lib/svg/data/tags.mjs +25 -49
  223. package/lib/svg/index.cjs +130 -0
  224. package/lib/svg/index.d.ts +16 -5
  225. package/lib/svg/index.mjs +48 -14
  226. package/lib/svg/parse-style.cjs +134 -0
  227. package/lib/svg/parse-style.d.ts +12 -8
  228. package/lib/svg/parse-style.mjs +11 -9
  229. package/lib/svg/parse.cjs +42 -0
  230. package/lib/svg/parse.d.ts +11 -7
  231. package/lib/svg/parse.mjs +2 -4
  232. package/package.json +99 -94
  233. package/lib/colors/attribs.js +0 -26
  234. package/lib/colors/parse.js +0 -341
  235. package/lib/colors/validate.js +0 -48
  236. package/lib/css/parse.js +0 -23
  237. package/lib/css/parser/error.js +0 -27
  238. package/lib/css/parser/export.js +0 -69
  239. package/lib/css/parser/strings.js +0 -93
  240. package/lib/css/parser/text.js +0 -171
  241. package/lib/css/parser/tokens.js +0 -200
  242. package/lib/css/parser/tree.js +0 -44
  243. package/lib/css/parser/types.js +0 -2
  244. package/lib/download/api/cache.js +0 -108
  245. package/lib/download/api/download.js +0 -27
  246. package/lib/download/api/index.js +0 -52
  247. package/lib/download/api/types.js +0 -2
  248. package/lib/download/git/branch.js +0 -22
  249. package/lib/download/git/hash.js +0 -14
  250. package/lib/download/git/index.js +0 -75
  251. package/lib/download/git/reset.js +0 -16
  252. package/lib/download/github/hash.js +0 -28
  253. package/lib/download/github/index.js +0 -116
  254. package/lib/download/github/types.js +0 -2
  255. package/lib/download/gitlab/hash.js +0 -27
  256. package/lib/download/gitlab/index.js +0 -115
  257. package/lib/download/gitlab/types.js +0 -7
  258. package/lib/download/helpers/untar.js +0 -14
  259. package/lib/download/helpers/unzip.js +0 -18
  260. package/lib/download/index.js +0 -27
  261. package/lib/download/npm/index.js +0 -91
  262. package/lib/download/npm/types.js +0 -2
  263. package/lib/download/npm/version.js +0 -27
  264. package/lib/download/types/modified.js +0 -2
  265. package/lib/download/types/sources.js +0 -2
  266. package/lib/export/directory.js +0 -52
  267. package/lib/export/helpers/custom-files.js +0 -32
  268. package/lib/export/helpers/prepare.js +0 -49
  269. package/lib/export/helpers/types-version.js +0 -12
  270. package/lib/export/icon-package.js +0 -77
  271. package/lib/export/json-package.js +0 -156
  272. package/lib/icon-set/index.js +0 -749
  273. package/lib/icon-set/match.js +0 -66
  274. package/lib/icon-set/merge.js +0 -90
  275. package/lib/icon-set/props.js +0 -34
  276. package/lib/icon-set/types.js +0 -2
  277. package/lib/import/directory.js +0 -59
  278. package/lib/import/figma/index.js +0 -90
  279. package/lib/import/figma/nodes.js +0 -106
  280. package/lib/import/figma/query.js +0 -244
  281. package/lib/import/figma/types/api.js +0 -12
  282. package/lib/import/figma/types/nodes.js +0 -2
  283. package/lib/import/figma/types/options.js +0 -2
  284. package/lib/import/figma/types/result.js +0 -2
  285. package/lib/index.js +0 -103
  286. package/lib/misc/bump-version.js +0 -19
  287. package/lib/misc/compare-dirs.js +0 -84
  288. package/lib/misc/exec.js +0 -26
  289. package/lib/misc/keyword.js +0 -31
  290. package/lib/misc/scan.js +0 -55
  291. package/lib/misc/write-json.js +0 -11
  292. package/lib/optimise/flags.js +0 -312
  293. package/lib/optimise/global-style.js +0 -185
  294. package/lib/optimise/scale.js +0 -42
  295. package/lib/optimise/svgo.js +0 -99
  296. package/lib/svg/analyse/error.js +0 -22
  297. package/lib/svg/analyse/types.js +0 -2
  298. package/lib/svg/analyse.js +0 -352
  299. package/lib/svg/cleanup/attribs.js +0 -51
  300. package/lib/svg/cleanup/bad-tags.js +0 -65
  301. package/lib/svg/cleanup/inline-style.js +0 -77
  302. package/lib/svg/cleanup/root-svg.js +0 -107
  303. package/lib/svg/cleanup/svgo-style.js +0 -35
  304. package/lib/svg/cleanup.js +0 -24
  305. package/lib/svg/data/attributes.js +0 -403
  306. package/lib/svg/data/tags.js +0 -188
  307. package/lib/svg/index.js +0 -134
  308. package/lib/svg/parse-style.js +0 -151
  309. package/lib/svg/parse.js +0 -49
@@ -1,19 +1,8 @@
1
- // src/svg/analyse.ts
2
- import { parseSVG } from "./parse.mjs";
3
- import {
4
- commonColorPresentationalAttributes,
5
- markerAttributes,
6
- tagSpecificNonPresentationalAttributes,
7
- urlPresentationalAttributes
8
- } from "./data/attributes.mjs";
9
- import {
10
- defsTag,
11
- maskTags,
12
- reusableElementsWithPalette,
13
- styleTag,
14
- useTag
15
- } from "./data/tags.mjs";
16
- import { analyseTagError } from "./analyse/error.mjs";
1
+ import { parseSVG } from './parse.mjs';
2
+ import { tagSpecificNonPresentationalAttributes, urlPresentationalAttributes, commonColorPresentationalAttributes, markerAttributes } from './data/attributes.mjs';
3
+ import { styleTag, maskTags, reusableElementsWithPalette, defsTag, useTag } from './data/tags.mjs';
4
+ import { analyseTagError } from './analyse/error.mjs';
5
+
17
6
  async function analyseSVGStructure(svg, options = {}) {
18
7
  const fixErrors = options.fixErrors;
19
8
  let root = svg.$svg(":root").get(0);
@@ -23,8 +12,8 @@ async function analyseSVGStructure(svg, options = {}) {
23
12
  }
24
13
  root._parsed = true;
25
14
  const cheerio = svg.$svg;
26
- const elements = new Map();
27
- const ids = Object.create(null);
15
+ const elements = /* @__PURE__ */ new Map();
16
+ const ids = /* @__PURE__ */ Object.create(null);
28
17
  let links = [];
29
18
  function addID(element, id) {
30
19
  if (ids[id]) {
@@ -42,7 +31,7 @@ async function analyseSVGStructure(svg, options = {}) {
42
31
  element._belongsTo.push({
43
32
  id,
44
33
  isMask,
45
- indexes: new Set([element._index])
34
+ indexes: /* @__PURE__ */ new Set([element._index])
46
35
  });
47
36
  return;
48
37
  }
@@ -91,7 +80,6 @@ async function analyseSVGStructure(svg, options = {}) {
91
80
  }
92
81
  let index = 0;
93
82
  await parseSVG(svg, (item) => {
94
- var _a;
95
83
  const { tagName, parents } = item;
96
84
  if (styleTag.has(tagName)) {
97
85
  item.testChildren = false;
@@ -158,7 +146,7 @@ async function analyseSVGStructure(svg, options = {}) {
158
146
  }
159
147
  }
160
148
  }
161
- if ((_a = tagSpecificNonPresentationalAttributes[tagName]) == null ? void 0 : _a.has("href")) {
149
+ if (tagSpecificNonPresentationalAttributes[tagName]?.has("href")) {
162
150
  const href = attribs["href"] || attribs["xlink:href"];
163
151
  if (typeof href === "string") {
164
152
  if (href.slice(0, 1) !== "#") {
@@ -198,14 +186,13 @@ async function analyseSVGStructure(svg, options = {}) {
198
186
  const element = elements.get(index2);
199
187
  const tagName = element.tagName;
200
188
  function remove() {
201
- var _a;
202
189
  const $element = cheerio(element);
203
190
  const parent = element.parent;
204
191
  if (parent) {
205
192
  if (parent._childElements) {
206
193
  parent._childElements = parent._childElements.filter((num) => num !== index2);
207
194
  }
208
- (_a = parent._belongsTo) == null ? void 0 : _a.forEach((list) => {
195
+ parent._belongsTo?.forEach((list) => {
209
196
  list.indexes.delete(index2);
210
197
  });
211
198
  }
@@ -220,7 +207,7 @@ async function analyseSVGStructure(svg, options = {}) {
220
207
  return;
221
208
  }
222
209
  }
223
- const matches = new Set(["#" + id, "url(#" + id + ")"]);
210
+ const matches = /* @__PURE__ */ new Set(["#" + id, "url(#" + id + ")"]);
224
211
  const attribs = element.attribs;
225
212
  for (const attr in attribs) {
226
213
  if (matches.has(attribs[attr])) {
@@ -250,7 +237,6 @@ async function analyseSVGStructure(svg, options = {}) {
250
237
  children: []
251
238
  };
252
239
  function parseTreeItem(tree2, usedItems, inMask) {
253
- var _a, _b;
254
240
  const element = elements.get(tree2.index);
255
241
  if (tree2.usedAsMask || inMask) {
256
242
  element._usedAsMask = true;
@@ -260,7 +246,7 @@ async function analyseSVGStructure(svg, options = {}) {
260
246
  }
261
247
  usedItems = usedItems.slice(0);
262
248
  usedItems.push(element._index);
263
- (_a = element._childElements) == null ? void 0 : _a.forEach((childIndex) => {
249
+ element._childElements?.forEach((childIndex) => {
264
250
  if (usedItems.indexOf(childIndex) !== -1) {
265
251
  throw new Error("Recursion");
266
252
  }
@@ -273,7 +259,7 @@ async function analyseSVGStructure(svg, options = {}) {
273
259
  tree2.children.push(childItem);
274
260
  parseTreeItem(childItem, usedItems, inMask);
275
261
  });
276
- (_b = element._linksTo) == null ? void 0 : _b.forEach((link) => {
262
+ element._linksTo?.forEach((link) => {
277
263
  const linkIndex = ids[link.id];
278
264
  const usedAsMask = link.usedAsMask;
279
265
  const childItem = {
@@ -297,6 +283,5 @@ async function analyseSVGStructure(svg, options = {}) {
297
283
  tree
298
284
  };
299
285
  }
300
- export {
301
- analyseSVGStructure
302
- };
286
+
287
+ export { analyseSVGStructure };
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const svg_data_attributes = require('../data/attributes.cjs');
6
+ const svg_data_tags = require('../data/tags.cjs');
7
+ const svg_parse = require('../parse.cjs');
8
+
9
+ async function removeBadAttributes(svg) {
10
+ await svg_parse.parseSVG(svg, (item) => {
11
+ const tagName = item.tagName;
12
+ const attribs = item.element.attribs;
13
+ const $element = item.$element;
14
+ Object.keys(attribs).forEach((attr) => {
15
+ if (attr.slice(0, 2) === "on" || svg_data_attributes.badAttributes.has(attr) || svg_data_attributes.badSoftwareAttributes.has(attr) || svg_data_attributes.badAttributePrefixes.has(attr.split("-").shift())) {
16
+ $element.removeAttr(attr);
17
+ return;
18
+ }
19
+ if (svg_data_tags.defsTag.has(tagName) && !svg_data_attributes.tagSpecificPresentationalAttributes[tagName].has(attr)) {
20
+ $element.removeAttr(attr);
21
+ return;
22
+ }
23
+ const nsParts = attr.split(":");
24
+ if (nsParts.length > 1) {
25
+ const namespace = nsParts.shift();
26
+ const newAttr = nsParts.join(":");
27
+ switch (namespace) {
28
+ case "xlink": {
29
+ if (attribs[newAttr] === void 0) {
30
+ $element.attr(newAttr, attribs[attr]);
31
+ }
32
+ break;
33
+ }
34
+ }
35
+ $element.removeAttr(attr);
36
+ }
37
+ });
38
+ });
39
+ }
40
+
41
+ exports.removeBadAttributes = removeBadAttributes;
@@ -1,5 +1,10 @@
1
- import type { SVG } from '../../svg';
1
+ import { SVG } from '../index.js';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations';
4
+
2
5
  /**
3
6
  * Remove useless attributes
4
7
  */
5
- export declare function removeBadAttributes(svg: SVG): Promise<void>;
8
+ declare function removeBadAttributes(svg: SVG): Promise<void>;
9
+
10
+ export { removeBadAttributes };
@@ -1,12 +1,7 @@
1
- // src/svg/cleanup/attribs.ts
2
- import {
3
- badAttributes,
4
- badAttributePrefixes,
5
- badSoftwareAttributes,
6
- tagSpecificPresentationalAttributes
7
- } from "../data/attributes.mjs";
8
- import { defsTag } from "../data/tags.mjs";
9
- import { parseSVG } from "../parse.mjs";
1
+ import { badAttributes, badSoftwareAttributes, badAttributePrefixes, tagSpecificPresentationalAttributes } from '../data/attributes.mjs';
2
+ import { defsTag } from '../data/tags.mjs';
3
+ import { parseSVG } from '../parse.mjs';
4
+
10
5
  async function removeBadAttributes(svg) {
11
6
  await parseSVG(svg, (item) => {
12
7
  const tagName = item.tagName;
@@ -38,6 +33,5 @@ async function removeBadAttributes(svg) {
38
33
  });
39
34
  });
40
35
  }
41
- export {
42
- removeBadAttributes
43
- };
36
+
37
+ export { removeBadAttributes };
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const svg_parse = require('../parse.cjs');
6
+ const svg_data_tags = require('../data/tags.cjs');
7
+
8
+ const requiredParentTags = /* @__PURE__ */ new Map();
9
+ requiredParentTags.set(/* @__PURE__ */ new Set(["feComponentTransfer"]), svg_data_tags.feComponentTransferChildTag);
10
+ requiredParentTags.set(/* @__PURE__ */ new Set(["feMerge"]), svg_data_tags.feMergeChildTags);
11
+ requiredParentTags.set(svg_data_tags.feLightningTags, svg_data_tags.feLightningChildTags);
12
+ requiredParentTags.set(svg_data_tags.filterTag, svg_data_tags.filterChildTags);
13
+ requiredParentTags.set(svg_data_tags.gradientTags, svg_data_tags.gradientChildTags);
14
+ requiredParentTags.set(/* @__PURE__ */ new Set(["animateMotion"]), svg_data_tags.animateMotionChildTags);
15
+ async function checkBadTags(svg) {
16
+ await svg_parse.parseSVG(svg, (item) => {
17
+ const tagName = item.tagName;
18
+ const $element = item.$element;
19
+ if (tagName === "svg") {
20
+ if (item.parents.length) {
21
+ throw new Error(`Unexpected element: <${tagName}>`);
22
+ }
23
+ return;
24
+ }
25
+ if (svg_data_tags.unsupportedTags.has(tagName)) {
26
+ $element.remove();
27
+ item.testChildren = false;
28
+ return;
29
+ }
30
+ if (svg_data_tags.badTags.has(tagName) || !svg_data_tags.allValidTags.has(tagName)) {
31
+ const parts = tagName.split(":");
32
+ if (parts.length > 1) {
33
+ $element.remove();
34
+ item.testChildren = false;
35
+ return;
36
+ }
37
+ throw new Error(`Unexpected element: <${tagName}>`);
38
+ }
39
+ const parentTagName = item.parents[0]?.tagName;
40
+ for (const [parents, children] of requiredParentTags) {
41
+ if (children.has(tagName)) {
42
+ if (!parents.has(parentTagName)) {
43
+ throw new Error(`Element <${tagName}> has wrong parent element`);
44
+ }
45
+ return;
46
+ }
47
+ }
48
+ });
49
+ }
50
+
51
+ exports.checkBadTags = checkBadTags;
@@ -1,5 +1,10 @@
1
- import type { SVG } from '../../svg';
1
+ import { SVG } from '../index.js';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations';
4
+
2
5
  /**
3
6
  * Test for bag tags
4
7
  */
5
- export declare function checkBadTags(svg: SVG): Promise<void>;
8
+ declare function checkBadTags(svg: SVG): Promise<void>;
9
+
10
+ export { checkBadTags };
@@ -1,29 +1,15 @@
1
- // src/svg/cleanup/bad-tags.ts
2
- import { parseSVG } from "../parse.mjs";
3
- import {
4
- allValidTags,
5
- animateMotionChildTags,
6
- badTags,
7
- feComponentTransferChildTag,
8
- feLightningChildTags,
9
- feLightningTags,
10
- feMergeChildTags,
11
- filterChildTags,
12
- filterTag,
13
- gradientChildTags,
14
- gradientTags,
15
- unsupportedTags
16
- } from "../data/tags.mjs";
17
- var requiredParentTags = new Map();
18
- requiredParentTags.set(new Set(["feComponentTransfer"]), feComponentTransferChildTag);
19
- requiredParentTags.set(new Set(["feMerge"]), feMergeChildTags);
1
+ import { parseSVG } from '../parse.mjs';
2
+ import { feComponentTransferChildTag, feMergeChildTags, feLightningTags, feLightningChildTags, filterTag, filterChildTags, gradientTags, gradientChildTags, animateMotionChildTags, unsupportedTags, badTags, allValidTags } from '../data/tags.mjs';
3
+
4
+ const requiredParentTags = /* @__PURE__ */ new Map();
5
+ requiredParentTags.set(/* @__PURE__ */ new Set(["feComponentTransfer"]), feComponentTransferChildTag);
6
+ requiredParentTags.set(/* @__PURE__ */ new Set(["feMerge"]), feMergeChildTags);
20
7
  requiredParentTags.set(feLightningTags, feLightningChildTags);
21
8
  requiredParentTags.set(filterTag, filterChildTags);
22
9
  requiredParentTags.set(gradientTags, gradientChildTags);
23
- requiredParentTags.set(new Set(["animateMotion"]), animateMotionChildTags);
10
+ requiredParentTags.set(/* @__PURE__ */ new Set(["animateMotion"]), animateMotionChildTags);
24
11
  async function checkBadTags(svg) {
25
12
  await parseSVG(svg, (item) => {
26
- var _a;
27
13
  const tagName = item.tagName;
28
14
  const $element = item.$element;
29
15
  if (tagName === "svg") {
@@ -46,7 +32,7 @@ async function checkBadTags(svg) {
46
32
  }
47
33
  throw new Error(`Unexpected element: <${tagName}>`);
48
34
  }
49
- const parentTagName = (_a = item.parents[0]) == null ? void 0 : _a.tagName;
35
+ const parentTagName = item.parents[0]?.tagName;
50
36
  for (const [parents, children] of requiredParentTags) {
51
37
  if (children.has(tagName)) {
52
38
  if (!parents.has(parentTagName)) {
@@ -57,6 +43,5 @@ async function checkBadTags(svg) {
57
43
  }
58
44
  });
59
45
  }
60
- export {
61
- checkBadTags
62
- };
46
+
47
+ export { checkBadTags };
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const css_parse = require('../../css/parse.cjs');
6
+ const svg_data_attributes = require('../data/attributes.cjs');
7
+ const svg_parse = require('../parse.cjs');
8
+ require('../../css/parser/tokens.cjs');
9
+ require('../../css/parser/error.cjs');
10
+ require('../../css/parser/strings.cjs');
11
+ require('../../css/parser/text.cjs');
12
+ require('../data/tags.cjs');
13
+
14
+ async function cleanupInlineStyle(svg) {
15
+ await svg_parse.parseSVG(svg, (item) => {
16
+ const $element = item.$element;
17
+ const attribs = item.element.attribs;
18
+ const tagName = item.tagName;
19
+ if (attribs.style) {
20
+ const parsedStyle = css_parse.parseInlineStyle(attribs.style);
21
+ if (parsedStyle === null) {
22
+ $element.removeAttr("style");
23
+ } else {
24
+ const newStyle = /* @__PURE__ */ Object.create(null);
25
+ const checkRule = (prop, value) => {
26
+ function warn() {
27
+ console.warn(`Removing unexpected style on "${tagName}": ${prop}`);
28
+ }
29
+ if (svg_data_attributes.badAttributes.has(prop) || svg_data_attributes.tagSpecificNonPresentationalAttributes[tagName]?.has(prop)) {
30
+ return;
31
+ }
32
+ if (svg_data_attributes.tagSpecificAnimatedAttributes[tagName]?.has(prop) || svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(prop)) {
33
+ $element.attr(prop, value);
34
+ return;
35
+ }
36
+ if (svg_data_attributes.insideClipPathAttributes.has(prop)) {
37
+ if (item.parents.find((item2) => item2.tagName === "clipPath")) {
38
+ $element.attr(prop, value);
39
+ }
40
+ return;
41
+ }
42
+ if (svg_data_attributes.badSoftwareAttributes.has(prop) || svg_data_attributes.badAttributePrefixes.has(prop.split("-").shift())) {
43
+ return;
44
+ }
45
+ if (prop.slice(0, 1) === "-") {
46
+ return;
47
+ }
48
+ warn();
49
+ };
50
+ for (const prop in parsedStyle) {
51
+ checkRule(prop, parsedStyle[prop]);
52
+ }
53
+ const newStyleStr = Object.keys(newStyle).map((key) => key + ":" + newStyle[key] + ";").join("");
54
+ if (newStyleStr.length) {
55
+ $element.attr("style", newStyleStr);
56
+ } else {
57
+ $element.removeAttr("style");
58
+ }
59
+ }
60
+ }
61
+ });
62
+ }
63
+
64
+ exports.cleanupInlineStyle = cleanupInlineStyle;
@@ -1,5 +1,10 @@
1
- import type { SVG } from '../../svg';
1
+ import { SVG } from '../index.js';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations';
4
+
2
5
  /**
3
6
  * Expand inline style
4
7
  */
5
- export declare function cleanupInlineStyle(svg: SVG): Promise<void>;
8
+ declare function cleanupInlineStyle(svg: SVG): Promise<void>;
9
+
10
+ export { cleanupInlineStyle };
@@ -1,15 +1,12 @@
1
- // src/svg/cleanup/inline-style.ts
2
- import { parseInlineStyle } from "../../css/parse.mjs";
3
- import {
4
- badAttributes,
5
- badAttributePrefixes,
6
- badSoftwareAttributes,
7
- insideClipPathAttributes,
8
- tagSpecificAnimatedAttributes,
9
- tagSpecificNonPresentationalAttributes,
10
- tagSpecificPresentationalAttributes
11
- } from "../data/attributes.mjs";
12
- import { parseSVG } from "../parse.mjs";
1
+ import { parseInlineStyle } from '../../css/parse.mjs';
2
+ import { badAttributes, tagSpecificNonPresentationalAttributes, tagSpecificAnimatedAttributes, tagSpecificPresentationalAttributes, insideClipPathAttributes, badSoftwareAttributes, badAttributePrefixes } from '../data/attributes.mjs';
3
+ import { parseSVG } from '../parse.mjs';
4
+ import '../../css/parser/tokens.mjs';
5
+ import '../../css/parser/error.mjs';
6
+ import '../../css/parser/strings.mjs';
7
+ import '../../css/parser/text.mjs';
8
+ import '../data/tags.mjs';
9
+
13
10
  async function cleanupInlineStyle(svg) {
14
11
  await parseSVG(svg, (item) => {
15
12
  const $element = item.$element;
@@ -20,16 +17,15 @@ async function cleanupInlineStyle(svg) {
20
17
  if (parsedStyle === null) {
21
18
  $element.removeAttr("style");
22
19
  } else {
23
- const newStyle = Object.create(null);
20
+ const newStyle = /* @__PURE__ */ Object.create(null);
24
21
  const checkRule = (prop, value) => {
25
- var _a, _b, _c;
26
22
  function warn() {
27
23
  console.warn(`Removing unexpected style on "${tagName}": ${prop}`);
28
24
  }
29
- if (badAttributes.has(prop) || ((_a = tagSpecificNonPresentationalAttributes[tagName]) == null ? void 0 : _a.has(prop))) {
25
+ if (badAttributes.has(prop) || tagSpecificNonPresentationalAttributes[tagName]?.has(prop)) {
30
26
  return;
31
27
  }
32
- if (((_b = tagSpecificAnimatedAttributes[tagName]) == null ? void 0 : _b.has(prop)) || ((_c = tagSpecificPresentationalAttributes[tagName]) == null ? void 0 : _c.has(prop))) {
28
+ if (tagSpecificAnimatedAttributes[tagName]?.has(prop) || tagSpecificPresentationalAttributes[tagName]?.has(prop)) {
33
29
  $element.attr(prop, value);
34
30
  return;
35
31
  }
@@ -60,6 +56,5 @@ async function cleanupInlineStyle(svg) {
60
56
  }
61
57
  });
62
58
  }
63
- export {
64
- cleanupInlineStyle
65
- };
59
+
60
+ export { cleanupInlineStyle };
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const svg_data_attributes = require('../data/attributes.cjs');
6
+ const svg_data_tags = require('../data/tags.cjs');
7
+
8
+ async function cleanupSVGRoot(svg) {
9
+ const cheerio = svg.$svg;
10
+ const $root = svg.$svg(":root");
11
+ const root = $root.get(0);
12
+ const tagName = "svg";
13
+ if (root.tagName !== tagName) {
14
+ throw new Error(`Unexpected root tag <${root.tagName}>`);
15
+ }
16
+ const attribs = root.attribs;
17
+ const moveToChildren = {};
18
+ Object.keys(attribs).forEach((attr) => {
19
+ const value = attribs[attr];
20
+ if (svg_data_attributes.commonAttributes.has(attr) || svg_data_attributes.badAttributes.has(attr) || svg_data_attributes.junkSVGAttributes.has(attr) || svg_data_attributes.badSoftwareAttributes.has(attr) || svg_data_attributes.badAttributePrefixes.has(attr.split("-").shift()) || attr.split(":").length > 1) {
21
+ $root.removeAttr(attr);
22
+ return;
23
+ }
24
+ switch (attr) {
25
+ case "width":
26
+ case "height":
27
+ if (value.slice(-2) === "px") {
28
+ const num = value.replace("px", "");
29
+ if (parseFloat(num) + "" === num) {
30
+ $root.attr(attr, num);
31
+ }
32
+ }
33
+ return;
34
+ }
35
+ if (svg_data_attributes.tagSpecificNonPresentationalAttributes[tagName]?.has(attr)) {
36
+ return;
37
+ }
38
+ if (svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(attr) && svg_data_attributes.tagSpecificPresentationalAttributes.g.has(attr)) {
39
+ moveToChildren[attr] = value;
40
+ $root.removeAttr(attr);
41
+ return;
42
+ }
43
+ if (svg_data_attributes.stylingAttributes.has(attr)) {
44
+ switch (attr) {
45
+ case "style":
46
+ return;
47
+ case "class":
48
+ $root.removeAttr(attr);
49
+ return;
50
+ }
51
+ throw new Error(`Unexpected attribute "${attr}" on <${tagName}>`);
52
+ }
53
+ if (attr.slice(0, 2) === "on" || attr.slice(0, 5) === "aria-" || attr.slice(0, 6) === "xmlns:") {
54
+ $root.removeAttr(attr);
55
+ return;
56
+ }
57
+ console.warn(`Removing unexpected attribute on SVG: ${attr}`);
58
+ $root.removeAttr(attr);
59
+ });
60
+ if (Object.keys(moveToChildren).length) {
61
+ const $wrapper = cheerio("<g />");
62
+ for (const key in moveToChildren) {
63
+ $wrapper.attr(key, moveToChildren[key]);
64
+ }
65
+ $root.children().each((_index, child) => {
66
+ const $child = cheerio(child);
67
+ if (child.type !== "tag") {
68
+ $child.appendTo($wrapper);
69
+ return;
70
+ }
71
+ const tagName2 = child.tagName;
72
+ if (tagName2 === "style" || svg_data_tags.reusableElementsWithPalette.has(tagName2) || svg_data_tags.maskTags.has(tagName2)) {
73
+ return;
74
+ }
75
+ $child.appendTo($wrapper);
76
+ });
77
+ $wrapper.appendTo($root);
78
+ }
79
+ }
80
+
81
+ exports.cleanupSVGRoot = cleanupSVGRoot;
@@ -1,5 +1,10 @@
1
- import type { SVG } from '../../svg';
1
+ import { SVG } from '../index.js';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations';
4
+
2
5
  /**
3
6
  * Clean up SVG
4
7
  */
5
- export declare function cleanupSVGRoot(svg: SVG): Promise<void>;
8
+ declare function cleanupSVGRoot(svg: SVG): Promise<void>;
9
+
10
+ export { cleanupSVGRoot };
@@ -1,15 +1,6 @@
1
- // src/svg/cleanup/root-svg.ts
2
- import {
3
- badAttributes,
4
- badAttributePrefixes,
5
- badSoftwareAttributes,
6
- commonAttributes,
7
- junkSVGAttributes,
8
- stylingAttributes,
9
- tagSpecificNonPresentationalAttributes,
10
- tagSpecificPresentationalAttributes
11
- } from "../data/attributes.mjs";
12
- import { maskTags, reusableElementsWithPalette } from "../data/tags.mjs";
1
+ import { commonAttributes, badAttributes, junkSVGAttributes, badSoftwareAttributes, badAttributePrefixes, tagSpecificNonPresentationalAttributes, tagSpecificPresentationalAttributes, stylingAttributes } from '../data/attributes.mjs';
2
+ import { reusableElementsWithPalette, maskTags } from '../data/tags.mjs';
3
+
13
4
  async function cleanupSVGRoot(svg) {
14
5
  const cheerio = svg.$svg;
15
6
  const $root = svg.$svg(":root");
@@ -21,7 +12,6 @@ async function cleanupSVGRoot(svg) {
21
12
  const attribs = root.attribs;
22
13
  const moveToChildren = {};
23
14
  Object.keys(attribs).forEach((attr) => {
24
- var _a, _b;
25
15
  const value = attribs[attr];
26
16
  if (commonAttributes.has(attr) || badAttributes.has(attr) || junkSVGAttributes.has(attr) || badSoftwareAttributes.has(attr) || badAttributePrefixes.has(attr.split("-").shift()) || attr.split(":").length > 1) {
27
17
  $root.removeAttr(attr);
@@ -38,10 +28,10 @@ async function cleanupSVGRoot(svg) {
38
28
  }
39
29
  return;
40
30
  }
41
- if ((_a = tagSpecificNonPresentationalAttributes[tagName]) == null ? void 0 : _a.has(attr)) {
31
+ if (tagSpecificNonPresentationalAttributes[tagName]?.has(attr)) {
42
32
  return;
43
33
  }
44
- if (((_b = tagSpecificPresentationalAttributes[tagName]) == null ? void 0 : _b.has(attr)) && tagSpecificPresentationalAttributes.g.has(attr)) {
34
+ if (tagSpecificPresentationalAttributes[tagName]?.has(attr) && tagSpecificPresentationalAttributes.g.has(attr)) {
45
35
  moveToChildren[attr] = value;
46
36
  $root.removeAttr(attr);
47
37
  return;
@@ -83,6 +73,5 @@ async function cleanupSVGRoot(svg) {
83
73
  $wrapper.appendTo($root);
84
74
  }
85
75
  }
86
- export {
87
- cleanupSVGRoot
88
- };
76
+
77
+ export { cleanupSVGRoot };
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const svg_data_attributes = require('../data/attributes.cjs');
6
+ const svg_parseStyle = require('../parse-style.cjs');
7
+ const optimise_svgo = require('../../optimise/svgo.cjs');
8
+ require('../data/tags.cjs');
9
+ require('../../css/parse.cjs');
10
+ require('../../css/parser/tokens.cjs');
11
+ require('../../css/parser/error.cjs');
12
+ require('../../css/parser/strings.cjs');
13
+ require('../../css/parser/text.cjs');
14
+ require('../../css/parser/export.cjs');
15
+ require('../../css/parser/tree.cjs');
16
+ require('../parse.cjs');
17
+ require('svgo');
18
+
19
+ async function convertStyleToAttrs(svg) {
20
+ let hasStyle = false;
21
+ await svg_parseStyle.parseSVGStyle(svg, (item) => {
22
+ const prop = item.prop;
23
+ if (svg_data_attributes.badAttributes.has(prop) || svg_data_attributes.badSoftwareAttributes.has(prop) || svg_data_attributes.badAttributePrefixes.has(prop.split("-").shift())) {
24
+ return void 0;
25
+ }
26
+ hasStyle = true;
27
+ return item.value;
28
+ });
29
+ if (!hasStyle) {
30
+ return;
31
+ }
32
+ await optimise_svgo.runSVGO(svg, {
33
+ plugins: ["convertStyleToAttrs", "inlineStyles"],
34
+ multipass: true
35
+ });
36
+ }
37
+
38
+ exports.convertStyleToAttrs = convertStyleToAttrs;
@@ -1,5 +1,10 @@
1
- import type { SVG } from '../../svg';
1
+ import { SVG } from '../index.js';
2
+ import '@iconify/types';
3
+ import '@iconify/utils/lib/customisations';
4
+
2
5
  /**
3
6
  * Expand inline style
4
7
  */
5
- export declare function convertStyleToAttrs(svg: SVG): Promise<void>;
8
+ declare function convertStyleToAttrs(svg: SVG): Promise<void>;
9
+
10
+ export { convertStyleToAttrs };