@iconify/tools 3.0.5 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/lib/colors/detect.cjs +1 -1
  2. package/lib/colors/detect.d.ts +1 -0
  3. package/lib/colors/detect.mjs +2 -2
  4. package/lib/colors/parse.cjs +131 -275
  5. package/lib/colors/parse.d.ts +8 -15
  6. package/lib/colors/parse.mjs +135 -278
  7. package/lib/colors/validate.cjs +2 -11
  8. package/lib/colors/validate.d.ts +5 -11
  9. package/lib/colors/validate.mjs +4 -12
  10. package/lib/export/directory.d.ts +1 -0
  11. package/lib/export/icon-package.d.ts +4 -1
  12. package/lib/export/json-package.cjs +1 -0
  13. package/lib/export/json-package.d.ts +2 -0
  14. package/lib/export/json-package.mjs +1 -0
  15. package/lib/icon-set/index.cjs +1 -1
  16. package/lib/icon-set/index.d.ts +2 -1
  17. package/lib/icon-set/index.mjs +1 -1
  18. package/lib/icon-set/match.d.ts +1 -0
  19. package/lib/icon-set/merge.d.ts +1 -0
  20. package/lib/icon-set/modified.d.ts +1 -0
  21. package/lib/icon-set/tags.d.ts +1 -0
  22. package/lib/import/directory.d.ts +1 -0
  23. package/lib/import/figma/index.d.ts +1 -0
  24. package/lib/import/figma/nodes.d.ts +1 -0
  25. package/lib/import/figma/query.d.ts +1 -0
  26. package/lib/import/figma/types/nodes.d.ts +1 -0
  27. package/lib/import/figma/types/options.d.ts +1 -0
  28. package/lib/import/figma/types/result.d.ts +1 -0
  29. package/lib/index.cjs +4 -6
  30. package/lib/index.d.ts +7 -5
  31. package/lib/index.mjs +6 -5
  32. package/lib/misc/cheerio.d.ts +4 -2
  33. package/lib/optimise/figma.cjs +175 -0
  34. package/lib/optimise/figma.d.ts +11 -0
  35. package/lib/optimise/figma.mjs +173 -0
  36. package/lib/optimise/flags.cjs +2 -2
  37. package/lib/optimise/flags.d.ts +2 -1
  38. package/lib/optimise/flags.mjs +2 -2
  39. package/lib/optimise/global-style.cjs +6 -6
  40. package/lib/optimise/global-style.d.ts +2 -1
  41. package/lib/optimise/global-style.mjs +6 -6
  42. package/lib/optimise/mask.cjs +110 -0
  43. package/lib/optimise/mask.d.ts +24 -0
  44. package/lib/optimise/mask.mjs +108 -0
  45. package/lib/optimise/origin.d.ts +1 -0
  46. package/lib/optimise/scale.d.ts +1 -0
  47. package/lib/optimise/svgo.d.ts +1 -0
  48. package/lib/svg/analyse/error.d.ts +2 -0
  49. package/lib/svg/analyse/types.d.ts +4 -1
  50. package/lib/svg/analyse.cjs +1 -1
  51. package/lib/svg/analyse.d.ts +2 -0
  52. package/lib/svg/analyse.mjs +3 -3
  53. package/lib/svg/cleanup/attribs.cjs +1 -1
  54. package/lib/svg/cleanup/attribs.d.ts +1 -0
  55. package/lib/svg/cleanup/attribs.mjs +2 -2
  56. package/lib/svg/cleanup/bad-tags.cjs +1 -1
  57. package/lib/svg/cleanup/bad-tags.d.ts +1 -0
  58. package/lib/svg/cleanup/bad-tags.mjs +2 -2
  59. package/lib/svg/cleanup/inline-style.cjs +1 -1
  60. package/lib/svg/cleanup/inline-style.d.ts +1 -0
  61. package/lib/svg/cleanup/inline-style.mjs +2 -2
  62. package/lib/svg/cleanup/root-style.cjs +1 -1
  63. package/lib/svg/cleanup/root-style.d.ts +1 -0
  64. package/lib/svg/cleanup/root-style.mjs +2 -2
  65. package/lib/svg/cleanup/root-svg.d.ts +1 -0
  66. package/lib/svg/cleanup/svgo-style.cjs +1 -1
  67. package/lib/svg/cleanup/svgo-style.d.ts +1 -0
  68. package/lib/svg/cleanup/svgo-style.mjs +2 -2
  69. package/lib/svg/cleanup.d.ts +1 -0
  70. package/lib/svg/index.cjs +13 -3
  71. package/lib/svg/index.d.ts +2 -1
  72. package/lib/svg/index.mjs +1 -1
  73. package/lib/svg/parse-style.cjs +178 -235
  74. package/lib/svg/parse-style.d.ts +4 -9
  75. package/lib/svg/parse-style.mjs +180 -236
  76. package/lib/svg/parse.cjs +26 -58
  77. package/lib/svg/parse.d.ts +4 -10
  78. package/lib/svg/parse.mjs +27 -58
  79. package/package.json +25 -13
@@ -29,7 +29,7 @@ function detectIconSetPalette(iconSet) {
29
29
  return;
30
30
  }
31
31
  let iconPalette;
32
- colors_parse.parseColorsSync(svg, {
32
+ colors_parse.parseColors(svg, {
33
33
  callback: (attr, colorStr, color) => {
34
34
  if (!color) {
35
35
  iconPalette = null;
@@ -3,6 +3,7 @@ import '@iconify/types';
3
3
  import '@iconify/utils/lib/customisations/defaults';
4
4
  import '../icon-set/types.js';
5
5
  import '../svg/index.js';
6
+ import 'cheerio';
6
7
  import '@iconify/utils/lib/icon-set/tree';
7
8
 
8
9
  /**
@@ -1,4 +1,4 @@
1
- import { parseColorsSync, isEmptyColor } from './parse.mjs';
1
+ import { parseColors, isEmptyColor } from './parse.mjs';
2
2
  import '@iconify/utils/lib/colors';
3
3
  import '../svg/data/tags.mjs';
4
4
  import '../svg/parse-style.mjs';
@@ -27,7 +27,7 @@ function detectIconSetPalette(iconSet) {
27
27
  return;
28
28
  }
29
29
  let iconPalette;
30
- parseColorsSync(svg, {
30
+ parseColors(svg, {
31
31
  callback: (attr, colorStr, color) => {
32
32
  if (!color) {
33
33
  iconPalette = null;
@@ -18,7 +18,7 @@ require('../svg/analyse/error.cjs');
18
18
 
19
19
  const propsToCheck = Object.keys(colors_attribs.defaultColorValues);
20
20
  const animatePropsToCheck = ["from", "to", "values"];
21
- function createContext(options, callback) {
21
+ function parseColors(svg, options = {}) {
22
22
  const result = {
23
23
  colors: [],
24
24
  hasUnsetColor: false,
@@ -49,12 +49,12 @@ function createContext(options, callback) {
49
49
  itemColors[prop] = addedColor === null ? color : addedColor;
50
50
  }
51
51
  }
52
- function getElementColor(prop, item, elements) {
52
+ function getElementColor(prop, item, elements2) {
53
53
  function find(prop2) {
54
54
  let currentItem = item;
55
55
  const allowDefaultColor = colors_attribs.allowDefaultColorValue[prop2];
56
56
  while (currentItem) {
57
- const element = elements.get(
57
+ const element = elements2.get(
58
58
  currentItem.index
59
59
  );
60
60
  const color = element._colors?.[prop2];
@@ -79,81 +79,69 @@ function createContext(options, callback) {
79
79
  }
80
80
  return propColor;
81
81
  }
82
- function checkColor(done, prop, value, item) {
82
+ function checkColor(prop, value, item) {
83
83
  switch (value.trim().toLowerCase()) {
84
84
  case "":
85
85
  case "inherit":
86
- return done();
86
+ return;
87
87
  }
88
88
  const parsedColor = colors.stringToColor(value);
89
89
  const defaultValue = parsedColor || value;
90
90
  if (parsedColor?.type === "function" && parsedColor.func === "url") {
91
91
  addColorToItem(prop, defaultValue, item, false);
92
- return done(value);
92
+ return value;
93
93
  }
94
- if (!callback) {
94
+ if (!options.callback) {
95
95
  addColorToItem(prop, defaultValue, item);
96
- return done(value);
96
+ return value;
97
97
  }
98
- callback(
99
- [prop, value, parsedColor, item?.tagName, item],
100
- (callbackResult) => {
101
- switch (callbackResult) {
102
- case "remove": {
103
- return done(item ? callbackResult : void 0);
104
- }
105
- case "unset":
106
- return done();
107
- }
108
- if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
109
- addColorToItem(prop, defaultValue, item);
110
- return done(value);
111
- }
112
- if (typeof callbackResult === "string") {
113
- const newColor = colors.stringToColor(callbackResult);
114
- addColorToItem(prop, newColor || callbackResult, item);
115
- return done(callbackResult);
116
- }
117
- const newValue = colors.colorToString(callbackResult);
118
- addColorToItem(prop, callbackResult, item);
119
- return done(newValue);
120
- }
98
+ const callbackResult = options.callback(
99
+ prop,
100
+ value,
101
+ parsedColor,
102
+ item?.tagName,
103
+ item
121
104
  );
105
+ if (callbackResult instanceof Promise) {
106
+ throw new Error("parseColors does not support async callbacks");
107
+ }
108
+ switch (callbackResult) {
109
+ case "remove": {
110
+ return item ? callbackResult : void 0;
111
+ }
112
+ case "unset":
113
+ return;
114
+ }
115
+ if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
116
+ addColorToItem(prop, defaultValue, item);
117
+ return value;
118
+ }
119
+ if (typeof callbackResult === "string") {
120
+ const newColor = colors.stringToColor(callbackResult);
121
+ addColorToItem(prop, newColor || callbackResult, item);
122
+ return callbackResult;
123
+ }
124
+ const newValue = colors.colorToString(callbackResult);
125
+ addColorToItem(prop, callbackResult, item);
126
+ return newValue;
122
127
  }
123
- function parseStyleItem(item, done) {
128
+ svg_parseStyle.parseSVGStyle(svg, (item) => {
124
129
  const prop = item.prop;
125
130
  const value = item.value;
126
131
  if (propsToCheck.indexOf(prop) === -1) {
127
- return done(value);
132
+ return value;
128
133
  }
129
134
  const attr = prop;
130
- checkColor(
131
- (newValue) => {
132
- if (newValue === void 0) {
133
- return done(newValue);
134
- }
135
- if (item.type === "global") {
136
- result.hasGlobalStyle = true;
137
- }
138
- return done(newValue);
139
- },
140
- attr,
141
- value
142
- );
143
- }
144
- return {
145
- result,
146
- defaultColor,
147
- rawOptions: options,
148
- findColor,
149
- addColorToItem,
150
- getElementColor,
151
- checkColor,
152
- parseStyleItem
153
- };
154
- }
155
- function analyseSVG(svg, context, done) {
156
- const iconData = svg_analyse.analyseSVGStructure(svg, context.rawOptions);
135
+ const newValue = checkColor(attr, value);
136
+ if (newValue === void 0) {
137
+ return newValue;
138
+ }
139
+ if (item.type === "global") {
140
+ result.hasGlobalStyle = true;
141
+ }
142
+ return newValue;
143
+ });
144
+ const iconData = svg_analyse.analyseSVGStructure(svg, options);
157
145
  const { elements, tree } = iconData;
158
146
  const cheerio = svg.$svg;
159
147
  const removedElements = /* @__PURE__ */ new Set();
@@ -178,15 +166,15 @@ function analyseSVG(svg, context, done) {
178
166
  removeChildren(element);
179
167
  cheerio(element).remove();
180
168
  }
181
- function parseTreeItem(item, done2) {
169
+ function parseTreeItem(item) {
182
170
  const index = item.index;
183
171
  if (removedElements.has(index) || parsedElements.has(index)) {
184
- return done2();
172
+ return;
185
173
  }
186
174
  parsedElements.add(index);
187
175
  const element = elements.get(index);
188
176
  if (element._removed) {
189
- return done2();
177
+ return;
190
178
  }
191
179
  const { tagName, attribs } = element;
192
180
  if (item.parent) {
@@ -200,239 +188,108 @@ function analyseSVG(svg, context, done) {
200
188
  };
201
189
  }
202
190
  }
203
- function parseCommonProps(done3) {
204
- const propsQueue = [];
205
- for (let i = 0; i < propsToCheck.length; i++) {
206
- const prop = propsToCheck[i];
207
- if (prop === "fill" && svg_data_tags.animateTags.has(tagName)) {
208
- continue;
209
- }
210
- const value = attribs[prop];
211
- if (value !== void 0) {
212
- propsQueue.push([prop, value]);
213
- }
191
+ for (let i = 0; i < propsToCheck.length; i++) {
192
+ const prop = propsToCheck[i];
193
+ if (prop === "fill" && svg_data_tags.animateTags.has(tagName)) {
194
+ continue;
214
195
  }
215
- const parsePropsQueue = () => {
216
- const queueItem = propsQueue.shift();
217
- if (!queueItem) {
218
- return done3();
219
- }
220
- const [prop, value] = queueItem;
221
- context.checkColor(
222
- (newValue) => {
223
- if (newValue !== value) {
224
- if (newValue === void 0) {
225
- cheerio(element).removeAttr(prop);
226
- if (element._colors) {
227
- delete element._colors[prop];
228
- }
229
- } else if (newValue === "remove") {
230
- removeElement(index, element);
231
- } else {
232
- cheerio(element).attr(prop, newValue);
233
- }
234
- }
235
- return parsePropsQueue();
236
- },
237
- prop,
238
- value,
239
- element
240
- );
241
- };
242
- parsePropsQueue();
243
- }
244
- function checkAnimations(done3) {
245
- const propsQueue = [];
246
- if (svg_data_tags.animateTags.has(tagName)) {
247
- const attr = attribs.attributeName;
248
- if (propsToCheck.indexOf(attr) !== -1) {
249
- for (let i = 0; i < animatePropsToCheck.length; i++) {
250
- const elementProp = animatePropsToCheck[i];
251
- const fullValue = attribs[elementProp];
252
- if (typeof fullValue !== "string") {
253
- continue;
196
+ const value = attribs[prop];
197
+ if (value !== void 0) {
198
+ const newValue = checkColor(prop, value, element);
199
+ if (newValue !== value) {
200
+ if (newValue === void 0) {
201
+ cheerio(element).removeAttr(prop);
202
+ if (element._colors) {
203
+ delete element._colors[prop];
254
204
  }
255
- propsQueue.push([elementProp, fullValue]);
205
+ } else if (newValue === "remove") {
206
+ removeElement(index, element);
207
+ return;
208
+ } else {
209
+ cheerio(element).attr(prop, newValue);
256
210
  }
257
211
  }
258
212
  }
259
- const parsePropsQueue = () => {
260
- const queueItem = propsQueue.shift();
261
- if (!queueItem) {
262
- return done3();
263
- }
264
- const [elementProp, fullValue] = queueItem;
265
- const splitValues = fullValue.split(";");
266
- let updatedValues = false;
267
- const parsedAllItems = () => {
213
+ }
214
+ if (svg_data_tags.animateTags.has(tagName)) {
215
+ const attr = attribs.attributeName;
216
+ if (propsToCheck.indexOf(attr) !== -1) {
217
+ for (let i = 0; i < animatePropsToCheck.length; i++) {
218
+ const elementProp = animatePropsToCheck[i];
219
+ const fullValue = attribs[elementProp];
220
+ if (typeof fullValue !== "string") {
221
+ continue;
222
+ }
223
+ const splitValues = fullValue.split(";");
224
+ let updatedValues = false;
225
+ for (let j = 0; j < splitValues.length; j++) {
226
+ const value = splitValues[j];
227
+ if (value !== void 0) {
228
+ const newValue = checkColor(
229
+ elementProp,
230
+ value
231
+ // Do not pass third parameter
232
+ );
233
+ if (newValue !== value) {
234
+ updatedValues = true;
235
+ splitValues[j] = typeof newValue === "string" ? newValue : "";
236
+ }
237
+ }
238
+ }
268
239
  if (updatedValues) {
269
240
  cheerio(element).attr(
270
241
  elementProp,
271
242
  splitValues.join(";")
272
243
  );
273
244
  }
274
- return parsePropsQueue();
275
- };
276
- const parseItem = (index2) => {
277
- if (index2 >= splitValues.length) {
278
- return parsedAllItems();
279
- }
280
- const value = splitValues[index2];
281
- if (value === void 0) {
282
- return parseItem(index2 + 1);
283
- }
284
- context.checkColor(
285
- (newValue) => {
286
- if (newValue !== value) {
287
- updatedValues = true;
288
- splitValues[index2] = typeof newValue === "string" ? newValue : "";
289
- }
290
- parseItem(index2 + 1);
291
- },
292
- elementProp,
293
- value
294
- // Do not pass third parameter
295
- );
296
- };
297
- parseItem(0);
298
- };
299
- parsePropsQueue();
245
+ }
246
+ }
300
247
  }
301
- parseCommonProps(() => {
302
- checkAnimations(() => {
303
- if (!context.result.hasGlobalStyle) {
304
- let requiredProps;
305
- if (svg_data_tags.shapeTags.has(tagName)) {
306
- requiredProps = colors_attribs.shapeColorAttributes;
307
- }
308
- colors_attribs.specialColorAttributes.forEach((attr) => {
309
- if (svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(
310
- attr
311
- )) {
312
- requiredProps = [attr];
313
- }
314
- });
315
- if (requiredProps) {
316
- const itemColors = element._colors || (element._colors = {});
317
- for (let i = 0; i < requiredProps.length; i++) {
318
- const prop = requiredProps[i];
319
- const color = context.getElementColor(
248
+ if (!result.hasGlobalStyle) {
249
+ let requiredProps;
250
+ if (svg_data_tags.shapeTags.has(tagName)) {
251
+ requiredProps = colors_attribs.shapeColorAttributes;
252
+ }
253
+ colors_attribs.specialColorAttributes.forEach((attr) => {
254
+ if (svg_data_attributes.tagSpecificPresentationalAttributes[tagName]?.has(attr)) {
255
+ requiredProps = [attr];
256
+ }
257
+ });
258
+ if (requiredProps) {
259
+ const itemColors = element._colors || (element._colors = {});
260
+ for (let i = 0; i < requiredProps.length; i++) {
261
+ const prop = requiredProps[i];
262
+ const color = getElementColor(prop, item, elements);
263
+ if (color === colors_attribs.defaultBlackColor) {
264
+ if (defaultColor) {
265
+ const defaultColorValue = typeof defaultColor === "function" ? defaultColor(
320
266
  prop,
267
+ element,
321
268
  item,
322
- elements
269
+ iconData
270
+ ) : defaultColor;
271
+ findColor(defaultColorValue, true);
272
+ cheerio(element).attr(
273
+ prop,
274
+ colors.colorToString(defaultColorValue)
323
275
  );
324
- if (color === colors_attribs.defaultBlackColor) {
325
- const defaultColor = context.defaultColor;
326
- if (defaultColor) {
327
- const defaultColorValue = typeof defaultColor === "function" ? defaultColor(
328
- prop,
329
- element,
330
- item,
331
- iconData
332
- ) : defaultColor;
333
- context.findColor(defaultColorValue, true);
334
- cheerio(element).attr(
335
- prop,
336
- colors.colorToString(defaultColorValue)
337
- );
338
- itemColors[prop] = defaultColorValue;
339
- } else {
340
- context.result.hasUnsetColor = true;
341
- }
342
- }
343
- }
344
- }
345
- }
346
- let index2 = 0;
347
- const parseChildItem = () => {
348
- if (index2 >= item.children.length) {
349
- return done2();
350
- }
351
- const childItem = item.children[index2];
352
- index2++;
353
- if (!childItem.usedAsMask) {
354
- parseTreeItem(childItem, parseChildItem);
355
- } else {
356
- parseChildItem();
357
- }
358
- };
359
- parseChildItem();
360
- });
361
- });
362
- }
363
- parseTreeItem(tree, done);
364
- }
365
- function parseColors(svg, options = {}) {
366
- const callback = options.callback;
367
- return new Promise((fulfill, reject) => {
368
- let context;
369
- try {
370
- context = createContext(
371
- options,
372
- callback ? (params, done) => {
373
- try {
374
- const result = callback(...params);
375
- if (result instanceof Promise) {
376
- result.then(done).catch(reject);
276
+ itemColors[prop] = defaultColorValue;
377
277
  } else {
378
- done(result);
278
+ result.hasUnsetColor = true;
379
279
  }
380
- } catch (err) {
381
- reject(err);
382
280
  }
383
- } : void 0
384
- );
385
- } catch (err) {
386
- reject(err);
387
- return;
388
- }
389
- svg_parseStyle.parseSVGStyle(svg, (item) => {
390
- return new Promise((fulfill2, reject2) => {
391
- try {
392
- context.parseStyleItem(item, fulfill2);
393
- } catch (err) {
394
- reject2(err);
395
281
  }
396
- });
397
- }).then(() => {
398
- try {
399
- analyseSVG(svg, context, () => {
400
- fulfill(context.result);
401
- });
402
- } catch (err) {
403
- reject(err);
404
282
  }
405
- }).catch(reject);
406
- });
407
- }
408
- function parseColorsSync(svg, options = {}) {
409
- const callback = options.callback;
410
- const context = createContext(
411
- options,
412
- callback ? (params, done) => {
413
- done(callback(...params));
414
- } : void 0
415
- );
416
- svg_parseStyle.parseSVGStyleSync(svg, (item) => {
417
- let isSync2 = true;
418
- let result;
419
- context.parseStyleItem(item, (value) => {
420
- if (!isSync2) {
421
- throw new Error("parseStyleItem callback supposed to be sync");
283
+ }
284
+ for (let i = 0; i < item.children.length; i++) {
285
+ const childItem = item.children[i];
286
+ if (!childItem.usedAsMask) {
287
+ parseTreeItem(childItem);
422
288
  }
423
- result = value;
424
- });
425
- isSync2 = false;
426
- return result;
427
- });
428
- let isSync = true;
429
- analyseSVG(svg, context, () => {
430
- if (!isSync) {
431
- throw new Error("analyseSVG callback supposed to be sync");
432
289
  }
433
- });
434
- isSync = false;
435
- return context.result;
290
+ }
291
+ parseTreeItem(tree);
292
+ return result;
436
293
  }
437
294
  function isEmptyColor(color) {
438
295
  const type = color.type;
@@ -441,4 +298,3 @@ function isEmptyColor(color) {
441
298
 
442
299
  exports.isEmptyColor = isEmptyColor;
443
300
  exports.parseColors = parseColors;
444
- exports.parseColorsSync = parseColorsSync;
@@ -1,9 +1,11 @@
1
1
  import { Color } from '@iconify/utils/lib/colors/types';
2
2
  import { SVG } from '../svg/index.js';
3
3
  import { ColorAttributes } from './attribs.js';
4
- import { ElementsTreeItem, AnalyseSVGStructureResult, ExtendedTagElement, AnalyseSVGStructureOptions } from '../svg/analyse/types.js';
4
+ import { ElementsTreeItem, AnalyseSVGStructureResult, AnalyseSVGStructureOptions, ExtendedTagElement } from '../svg/analyse/types.js';
5
+ import 'cheerio';
5
6
  import '@iconify/types';
6
7
  import '@iconify/utils/lib/customisations/defaults';
8
+ import '../misc/cheerio.js';
7
9
 
8
10
  /**
9
11
  * Result
@@ -23,7 +25,7 @@ interface FindColorsResult {
23
25
  * - 'remove' to remove shape or rule
24
26
  */
25
27
  type ParseColorsCallbackResult = Color | string | 'remove' | 'unset';
26
- type ParseColorsCallback<T> = (attr: ColorAttributes, colorString: string, parsedColor: Color | null, tagName?: string, item?: ExtendedTagElementWithColors) => T;
28
+ type ParseColorsCallback = (attr: ColorAttributes, colorString: string, parsedColor: Color | null, tagName?: string, item?: ExtendedTagElementWithColors) => ParseColorsCallbackResult;
27
29
  /**
28
30
  * Callback for default color
29
31
  */
@@ -31,12 +33,10 @@ type ParseColorOptionsDefaultColorCallback = (prop: string, item: ExtendedTagEle
31
33
  /**
32
34
  * Options
33
35
  */
34
- interface Options<T> extends AnalyseSVGStructureOptions {
35
- callback?: T;
36
+ interface ParseColorsOptions extends AnalyseSVGStructureOptions {
37
+ callback?: ParseColorsCallback;
36
38
  defaultColor?: Color | string | ParseColorOptionsDefaultColorCallback;
37
39
  }
38
- type ParseColorsOptions = Options<ParseColorsCallback<ParseColorsCallbackResult | Promise<ParseColorsCallbackResult>>>;
39
- type ParseColorsSyncOptions = Options<ParseColorsCallback<ParseColorsCallbackResult>>;
40
40
  /**
41
41
  * Extend properties for element
42
42
  */
@@ -51,17 +51,10 @@ interface ExtendedTagElementWithColors extends ExtendedTagElement {
51
51
  * Clean up icon before running this function to convert style to attributes using
52
52
  * cleanupInlineStyle() or cleanupSVG(), otherwise results might be inaccurate
53
53
  */
54
- declare function parseColors(svg: SVG, options?: ParseColorsOptions): Promise<FindColorsResult>;
55
- /**
56
- * Find colors in icon, synchronous version
57
- *
58
- * Clean up icon before running this function to convert style to attributes using
59
- * cleanupInlineStyle() or cleanupSVG(), otherwise results might be inaccurate
60
- */
61
- declare function parseColorsSync(svg: SVG, options?: ParseColorsSyncOptions): FindColorsResult;
54
+ declare function parseColors(svg: SVG, options?: ParseColorsOptions): FindColorsResult;
62
55
  /**
63
56
  * Check if color is empty, such as 'none' or 'transparent'
64
57
  */
65
58
  declare function isEmptyColor(color: Color): boolean;
66
59
 
67
- export { ExtendedTagElementWithColors, FindColorsResult, ParseColorOptionsDefaultColorCallback, ParseColorsOptions, ParseColorsSyncOptions, isEmptyColor, parseColors, parseColorsSync };
60
+ export { ExtendedTagElementWithColors, FindColorsResult, ParseColorOptionsDefaultColorCallback, ParseColorsOptions, isEmptyColor, parseColors };