@iconify/tools 4.0.0-dev.1 → 4.0.0
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.
- package/lib/colors/attribs.d.cts +27 -0
- package/lib/colors/attribs.d.mts +27 -0
- package/lib/colors/attribs.d.ts +1 -1
- package/lib/colors/detect.cjs +2 -2
- package/lib/colors/detect.d.cts +16 -0
- package/lib/colors/detect.d.mts +16 -0
- package/lib/colors/detect.mjs +3 -3
- package/lib/colors/parse.cjs +132 -276
- package/lib/colors/parse.d.cts +60 -0
- package/lib/colors/parse.d.mts +60 -0
- package/lib/colors/parse.d.ts +7 -15
- package/lib/colors/parse.mjs +136 -279
- package/lib/colors/validate.cjs +2 -11
- package/lib/colors/validate.d.cts +20 -0
- package/lib/colors/validate.d.mts +20 -0
- package/lib/colors/validate.d.ts +4 -11
- package/lib/colors/validate.mjs +4 -12
- package/lib/css/parse.d.cts +6 -0
- package/lib/css/parse.d.mts +6 -0
- package/lib/css/parser/error.d.cts +13 -0
- package/lib/css/parser/error.d.mts +13 -0
- package/lib/css/parser/error.d.ts +1 -1
- package/lib/css/parser/export.d.cts +8 -0
- package/lib/css/parser/export.d.mts +8 -0
- package/lib/css/parser/strings.d.cts +16 -0
- package/lib/css/parser/strings.d.mts +16 -0
- package/lib/css/parser/text.d.cts +20 -0
- package/lib/css/parser/text.d.mts +20 -0
- package/lib/css/parser/tokens.d.cts +9 -0
- package/lib/css/parser/tokens.d.mts +9 -0
- package/lib/css/parser/tree.d.cts +8 -0
- package/lib/css/parser/tree.d.mts +8 -0
- package/lib/css/parser/types.d.cts +52 -0
- package/lib/css/parser/types.d.mts +52 -0
- package/lib/css/parser/types.d.ts +1 -1
- package/lib/download/api/cache.d.cts +20 -0
- package/lib/download/api/cache.d.mts +20 -0
- package/lib/download/api/config.cjs +11 -0
- package/lib/download/api/config.d.cts +18 -0
- package/lib/download/api/config.d.mts +18 -0
- package/lib/download/api/config.d.ts +18 -0
- package/lib/download/api/config.mjs +8 -0
- package/lib/download/api/download.cjs +15 -7
- package/lib/download/api/download.d.cts +8 -0
- package/lib/download/api/download.d.mts +8 -0
- package/lib/download/api/download.mjs +11 -7
- package/lib/download/api/index.cjs +23 -7
- package/lib/download/api/index.d.cts +8 -0
- package/lib/download/api/index.d.mts +8 -0
- package/lib/download/api/index.mjs +19 -7
- package/lib/download/api/queue.cjs +104 -0
- package/lib/download/api/queue.d.cts +32 -0
- package/lib/download/api/queue.d.mts +32 -0
- package/lib/download/api/queue.d.ts +32 -0
- package/lib/download/api/queue.mjs +101 -0
- package/lib/download/api/types.d.cts +17 -0
- package/lib/download/api/types.d.mts +17 -0
- package/lib/download/api/types.d.ts +1 -1
- package/lib/download/git/branch.d.cts +8 -0
- package/lib/download/git/branch.d.mts +8 -0
- package/lib/download/git/hash.d.cts +8 -0
- package/lib/download/git/hash.d.mts +8 -0
- package/lib/download/git/index.cjs +2 -4
- package/lib/download/git/index.d.cts +29 -0
- package/lib/download/git/index.d.mts +29 -0
- package/lib/download/git/index.d.ts +1 -1
- package/lib/download/git/index.mjs +2 -4
- package/lib/download/git/reset.cjs +2 -4
- package/lib/download/git/reset.d.cts +6 -0
- package/lib/download/git/reset.d.mts +6 -0
- package/lib/download/git/reset.mjs +2 -4
- package/lib/download/github/hash.cjs +2 -0
- package/lib/download/github/hash.d.cts +8 -0
- package/lib/download/github/hash.d.mts +8 -0
- package/lib/download/github/hash.mjs +2 -0
- package/lib/download/github/index.cjs +2 -2
- package/lib/download/github/index.d.cts +31 -0
- package/lib/download/github/index.d.mts +31 -0
- package/lib/download/github/index.d.ts +1 -1
- package/lib/download/github/index.mjs +2 -2
- package/lib/download/github/types.d.cts +11 -0
- package/lib/download/github/types.d.mts +11 -0
- package/lib/download/github/types.d.ts +1 -1
- package/lib/download/gitlab/hash.cjs +2 -0
- package/lib/download/gitlab/hash.d.cts +8 -0
- package/lib/download/gitlab/hash.d.mts +8 -0
- package/lib/download/gitlab/hash.mjs +2 -0
- package/lib/download/gitlab/index.cjs +2 -2
- package/lib/download/gitlab/index.d.cts +31 -0
- package/lib/download/gitlab/index.d.mts +31 -0
- package/lib/download/gitlab/index.d.ts +1 -1
- package/lib/download/gitlab/index.mjs +2 -2
- package/lib/download/gitlab/types.d.cts +15 -0
- package/lib/download/gitlab/types.d.mts +15 -0
- package/lib/download/gitlab/types.d.ts +1 -1
- package/lib/download/helpers/untar.d.cts +6 -0
- package/lib/download/helpers/untar.d.mts +6 -0
- package/lib/download/helpers/unzip.d.cts +6 -0
- package/lib/download/helpers/unzip.d.mts +6 -0
- package/lib/download/index.cjs +2 -2
- package/lib/download/index.d.cts +48 -0
- package/lib/download/index.d.mts +48 -0
- package/lib/download/index.d.ts +1 -1
- package/lib/download/index.mjs +2 -2
- package/lib/download/npm/index.cjs +2 -2
- package/lib/download/npm/index.d.cts +30 -0
- package/lib/download/npm/index.d.mts +30 -0
- package/lib/download/npm/index.d.ts +1 -1
- package/lib/download/npm/index.mjs +2 -2
- package/lib/download/npm/types.d.cts +9 -0
- package/lib/download/npm/types.d.mts +9 -0
- package/lib/download/npm/types.d.ts +1 -1
- package/lib/download/npm/version.d.cts +16 -0
- package/lib/download/npm/version.d.mts +16 -0
- package/lib/download/npm/version.d.ts +1 -1
- package/lib/download/types/modified.d.cts +6 -0
- package/lib/download/types/modified.d.mts +6 -0
- package/lib/download/types/modified.d.ts +1 -1
- package/lib/download/types/sources.d.cts +12 -0
- package/lib/download/types/sources.d.mts +12 -0
- package/lib/download/types/sources.d.ts +1 -1
- package/lib/export/directory.d.cts +26 -0
- package/lib/export/directory.d.mts +26 -0
- package/lib/export/directory.d.ts +1 -1
- package/lib/export/helpers/custom-files.d.cts +12 -0
- package/lib/export/helpers/custom-files.d.mts +12 -0
- package/lib/export/helpers/custom-files.d.ts +1 -1
- package/lib/export/helpers/prepare.d.cts +19 -0
- package/lib/export/helpers/prepare.d.mts +19 -0
- package/lib/export/helpers/prepare.d.ts +1 -1
- package/lib/export/helpers/types-version.d.cts +6 -0
- package/lib/export/helpers/types-version.d.mts +6 -0
- package/lib/export/icon-package.d.cts +26 -0
- package/lib/export/icon-package.d.mts +26 -0
- package/lib/export/icon-package.d.ts +2 -2
- package/lib/export/json-package.cjs +1 -0
- package/lib/export/json-package.d.cts +25 -0
- package/lib/export/json-package.d.mts +25 -0
- package/lib/export/json-package.d.ts +2 -1
- package/lib/export/json-package.mjs +1 -0
- package/lib/icon-set/index.cjs +25 -4
- package/lib/icon-set/index.d.cts +162 -0
- package/lib/icon-set/index.d.mts +162 -0
- package/lib/icon-set/index.mjs +25 -4
- package/lib/icon-set/match.d.cts +15 -0
- package/lib/icon-set/match.d.mts +15 -0
- package/lib/icon-set/merge.d.cts +14 -0
- package/lib/icon-set/merge.d.mts +14 -0
- package/lib/icon-set/modified.d.cts +16 -0
- package/lib/icon-set/modified.d.mts +16 -0
- package/lib/icon-set/props.d.cts +13 -0
- package/lib/icon-set/props.d.mts +13 -0
- package/lib/icon-set/tags.d.cts +23 -0
- package/lib/icon-set/tags.d.mts +23 -0
- package/lib/icon-set/types.d.cts +75 -0
- package/lib/icon-set/types.d.mts +75 -0
- package/lib/icon-set/types.d.ts +1 -1
- package/lib/import/directory.d.cts +52 -0
- package/lib/import/directory.d.mts +52 -0
- package/lib/import/directory.d.ts +1 -1
- package/lib/import/figma/index.cjs +3 -0
- package/lib/import/figma/index.d.cts +20 -0
- package/lib/import/figma/index.d.mts +20 -0
- package/lib/import/figma/index.mjs +3 -0
- package/lib/import/figma/nodes.cjs +1 -1
- package/lib/import/figma/nodes.d.cts +18 -0
- package/lib/import/figma/nodes.d.mts +18 -0
- package/lib/import/figma/nodes.mjs +1 -1
- package/lib/import/figma/query.cjs +104 -76
- package/lib/import/figma/query.d.cts +42 -0
- package/lib/import/figma/query.d.mts +42 -0
- package/lib/import/figma/query.d.ts +15 -2
- package/lib/import/figma/query.mjs +106 -78
- package/lib/import/figma/types/api.d.cts +53 -0
- package/lib/import/figma/types/api.d.mts +53 -0
- package/lib/import/figma/types/api.d.ts +1 -1
- package/lib/import/figma/types/nodes.d.cts +44 -0
- package/lib/import/figma/types/nodes.d.mts +44 -0
- package/lib/import/figma/types/nodes.d.ts +1 -1
- package/lib/import/figma/types/options.d.cts +59 -0
- package/lib/import/figma/types/options.d.mts +59 -0
- package/lib/import/figma/types/options.d.ts +1 -1
- package/lib/import/figma/types/result.d.cts +44 -0
- package/lib/import/figma/types/result.d.mts +44 -0
- package/lib/import/figma/types/result.d.ts +1 -1
- package/lib/index.cjs +14 -13
- package/lib/index.d.cts +78 -0
- package/lib/index.d.mts +78 -0
- package/lib/index.d.ts +8 -5
- package/lib/index.mjs +13 -12
- package/lib/misc/bump-version.d.cts +6 -0
- package/lib/misc/bump-version.d.mts +6 -0
- package/lib/misc/cheerio.d.cts +9 -0
- package/lib/misc/cheerio.d.mts +9 -0
- package/lib/misc/cheerio.d.ts +1 -1
- package/lib/misc/compare-dirs.cjs +3 -3
- package/lib/misc/compare-dirs.d.cts +11 -0
- package/lib/misc/compare-dirs.d.mts +11 -0
- package/lib/misc/compare-dirs.d.ts +1 -1
- package/lib/misc/compare-dirs.mjs +3 -3
- package/lib/misc/exec.d.cts +12 -0
- package/lib/misc/exec.d.mts +12 -0
- package/lib/misc/exec.d.ts +1 -1
- package/lib/misc/keyword.d.cts +6 -0
- package/lib/misc/keyword.d.mts +6 -0
- package/lib/misc/scan.d.cts +33 -0
- package/lib/misc/scan.d.mts +33 -0
- package/lib/misc/scan.d.ts +1 -1
- package/lib/misc/write-json.d.cts +6 -0
- package/lib/misc/write-json.d.mts +6 -0
- package/lib/optimise/figma.cjs +5 -5
- package/lib/optimise/figma.d.cts +11 -0
- package/lib/optimise/figma.d.mts +11 -0
- package/lib/optimise/figma.mjs +5 -5
- package/lib/optimise/flags.cjs +3 -3
- package/lib/optimise/flags.d.cts +11 -0
- package/lib/optimise/flags.d.mts +11 -0
- package/lib/optimise/flags.d.ts +1 -1
- package/lib/optimise/flags.mjs +3 -3
- package/lib/optimise/global-style.cjs +7 -7
- package/lib/optimise/global-style.d.cts +11 -0
- package/lib/optimise/global-style.d.mts +11 -0
- package/lib/optimise/global-style.d.ts +1 -1
- package/lib/optimise/global-style.mjs +7 -7
- package/lib/optimise/mask.cjs +1 -1
- package/lib/optimise/mask.d.cts +24 -0
- package/lib/optimise/mask.d.mts +24 -0
- package/lib/optimise/mask.mjs +2 -2
- package/lib/optimise/origin.d.cts +11 -0
- package/lib/optimise/origin.d.mts +11 -0
- package/lib/optimise/scale.d.cts +11 -0
- package/lib/optimise/scale.d.mts +11 -0
- package/lib/optimise/svgo.cjs +1 -1
- package/lib/optimise/svgo.d.cts +37 -0
- package/lib/optimise/svgo.d.mts +37 -0
- package/lib/optimise/svgo.mjs +1 -1
- package/lib/svg/analyse/error.d.cts +10 -0
- package/lib/svg/analyse/error.d.mts +10 -0
- package/lib/svg/analyse/error.d.ts +1 -0
- package/lib/svg/analyse/types.d.cts +92 -0
- package/lib/svg/analyse/types.d.mts +92 -0
- package/lib/svg/analyse/types.d.ts +4 -3
- package/lib/svg/analyse.cjs +2 -2
- package/lib/svg/analyse.d.cts +15 -0
- package/lib/svg/analyse.d.mts +15 -0
- package/lib/svg/analyse.d.ts +1 -0
- package/lib/svg/analyse.mjs +4 -4
- package/lib/svg/cleanup/attribs.cjs +1 -1
- package/lib/svg/cleanup/attribs.d.cts +11 -0
- package/lib/svg/cleanup/attribs.d.mts +11 -0
- package/lib/svg/cleanup/attribs.mjs +2 -2
- package/lib/svg/cleanup/bad-tags.cjs +1 -1
- package/lib/svg/cleanup/bad-tags.d.cts +17 -0
- package/lib/svg/cleanup/bad-tags.d.mts +17 -0
- package/lib/svg/cleanup/bad-tags.d.ts +1 -1
- package/lib/svg/cleanup/bad-tags.mjs +2 -2
- package/lib/svg/cleanup/inline-style.cjs +1 -1
- package/lib/svg/cleanup/inline-style.d.cts +11 -0
- package/lib/svg/cleanup/inline-style.d.mts +11 -0
- package/lib/svg/cleanup/inline-style.mjs +2 -2
- package/lib/svg/cleanup/root-style.cjs +1 -1
- package/lib/svg/cleanup/root-style.d.cts +17 -0
- package/lib/svg/cleanup/root-style.d.mts +17 -0
- package/lib/svg/cleanup/root-style.mjs +2 -2
- package/lib/svg/cleanup/root-svg.cjs +3 -3
- package/lib/svg/cleanup/root-svg.d.cts +11 -0
- package/lib/svg/cleanup/root-svg.d.mts +11 -0
- package/lib/svg/cleanup/root-svg.mjs +3 -3
- package/lib/svg/cleanup/svgo-style.cjs +2 -2
- package/lib/svg/cleanup/svgo-style.d.cts +11 -0
- package/lib/svg/cleanup/svgo-style.d.mts +11 -0
- package/lib/svg/cleanup/svgo-style.mjs +3 -3
- package/lib/svg/cleanup.d.cts +16 -0
- package/lib/svg/cleanup.d.mts +16 -0
- package/lib/svg/cleanup.d.ts +1 -1
- package/lib/svg/data/attributes.d.cts +77 -0
- package/lib/svg/data/attributes.d.mts +77 -0
- package/lib/svg/data/tags.d.cts +95 -0
- package/lib/svg/data/tags.d.mts +95 -0
- package/lib/svg/index.cjs +18 -1
- package/lib/svg/index.d.cts +52 -0
- package/lib/svg/index.d.mts +52 -0
- package/lib/svg/index.d.ts +5 -1
- package/lib/svg/index.mjs +19 -2
- package/lib/svg/parse-style.cjs +178 -235
- package/lib/svg/parse-style.d.cts +58 -0
- package/lib/svg/parse-style.d.mts +58 -0
- package/lib/svg/parse-style.d.ts +3 -9
- package/lib/svg/parse-style.mjs +180 -236
- package/lib/svg/parse.cjs +27 -59
- package/lib/svg/parse.d.cts +30 -0
- package/lib/svg/parse.d.mts +30 -0
- package/lib/svg/parse.d.ts +3 -10
- package/lib/svg/parse.mjs +28 -59
- package/package.json +26 -21
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { CheerioElement } from '../../misc/cheerio.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Options
|
|
6
|
+
*/
|
|
7
|
+
interface AnalyseSVGStructureOptions {
|
|
8
|
+
fixErrors?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extended properties for element
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Link to element
|
|
15
|
+
*/
|
|
16
|
+
interface LinkToElementWithID {
|
|
17
|
+
id: string;
|
|
18
|
+
usedAsMask: boolean;
|
|
19
|
+
usedByIndex: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* How element is used by parent elements
|
|
23
|
+
*/
|
|
24
|
+
interface ExtendedTagElementUses {
|
|
25
|
+
_usedAsMask: boolean;
|
|
26
|
+
_usedAsPaint: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Definition: mask, clip path, symbol, etc...
|
|
30
|
+
*/
|
|
31
|
+
interface ReusableElement {
|
|
32
|
+
id: string;
|
|
33
|
+
isMask: boolean;
|
|
34
|
+
index: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Element with id
|
|
38
|
+
*
|
|
39
|
+
* Similar to ReusableElement, but not necessary a definition - any element with id. Also contains list of child elements
|
|
40
|
+
*/
|
|
41
|
+
interface ElementWithID {
|
|
42
|
+
id: string;
|
|
43
|
+
isMask: boolean;
|
|
44
|
+
indexes: Set<number>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parent and child elements. Unlike standard tree, this tree is for elements that inherit attributes from parent element
|
|
48
|
+
*/
|
|
49
|
+
interface ExtendedTagElementRelations {
|
|
50
|
+
_parentElement?: number;
|
|
51
|
+
_childElements?: number[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extended tag
|
|
55
|
+
*/
|
|
56
|
+
interface ExtendedTagElement extends CheerioElement, ExtendedTagElementUses, ExtendedTagElementRelations {
|
|
57
|
+
_index: number;
|
|
58
|
+
_id?: string;
|
|
59
|
+
_belongsTo?: ElementWithID[];
|
|
60
|
+
_reusableElement?: ReusableElement;
|
|
61
|
+
_linksTo?: LinkToElementWithID[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Additional stuff for <svg>
|
|
65
|
+
*/
|
|
66
|
+
interface ExtendedRootTagElement extends ExtendedTagElement {
|
|
67
|
+
_parsed?: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Tree
|
|
71
|
+
*/
|
|
72
|
+
interface ElementsTreeItem {
|
|
73
|
+
index: number;
|
|
74
|
+
usedAsMask: boolean;
|
|
75
|
+
parent?: ElementsTreeItem;
|
|
76
|
+
children: ElementsTreeItem[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Elements map
|
|
80
|
+
*/
|
|
81
|
+
type ElementsMap = Map<number, ExtendedTagElement>;
|
|
82
|
+
/**
|
|
83
|
+
* Result
|
|
84
|
+
*/
|
|
85
|
+
interface AnalyseSVGStructureResult {
|
|
86
|
+
elements: ElementsMap;
|
|
87
|
+
ids: Record<string, number>;
|
|
88
|
+
links: LinkToElementWithID[];
|
|
89
|
+
tree: ElementsTreeItem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export type { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { CheerioElement } from '../../misc/cheerio.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Options
|
|
6
|
+
*/
|
|
7
|
+
interface AnalyseSVGStructureOptions {
|
|
8
|
+
fixErrors?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extended properties for element
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Link to element
|
|
15
|
+
*/
|
|
16
|
+
interface LinkToElementWithID {
|
|
17
|
+
id: string;
|
|
18
|
+
usedAsMask: boolean;
|
|
19
|
+
usedByIndex: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* How element is used by parent elements
|
|
23
|
+
*/
|
|
24
|
+
interface ExtendedTagElementUses {
|
|
25
|
+
_usedAsMask: boolean;
|
|
26
|
+
_usedAsPaint: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Definition: mask, clip path, symbol, etc...
|
|
30
|
+
*/
|
|
31
|
+
interface ReusableElement {
|
|
32
|
+
id: string;
|
|
33
|
+
isMask: boolean;
|
|
34
|
+
index: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Element with id
|
|
38
|
+
*
|
|
39
|
+
* Similar to ReusableElement, but not necessary a definition - any element with id. Also contains list of child elements
|
|
40
|
+
*/
|
|
41
|
+
interface ElementWithID {
|
|
42
|
+
id: string;
|
|
43
|
+
isMask: boolean;
|
|
44
|
+
indexes: Set<number>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parent and child elements. Unlike standard tree, this tree is for elements that inherit attributes from parent element
|
|
48
|
+
*/
|
|
49
|
+
interface ExtendedTagElementRelations {
|
|
50
|
+
_parentElement?: number;
|
|
51
|
+
_childElements?: number[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extended tag
|
|
55
|
+
*/
|
|
56
|
+
interface ExtendedTagElement extends CheerioElement, ExtendedTagElementUses, ExtendedTagElementRelations {
|
|
57
|
+
_index: number;
|
|
58
|
+
_id?: string;
|
|
59
|
+
_belongsTo?: ElementWithID[];
|
|
60
|
+
_reusableElement?: ReusableElement;
|
|
61
|
+
_linksTo?: LinkToElementWithID[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Additional stuff for <svg>
|
|
65
|
+
*/
|
|
66
|
+
interface ExtendedRootTagElement extends ExtendedTagElement {
|
|
67
|
+
_parsed?: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Tree
|
|
71
|
+
*/
|
|
72
|
+
interface ElementsTreeItem {
|
|
73
|
+
index: number;
|
|
74
|
+
usedAsMask: boolean;
|
|
75
|
+
parent?: ElementsTreeItem;
|
|
76
|
+
children: ElementsTreeItem[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Elements map
|
|
80
|
+
*/
|
|
81
|
+
type ElementsMap = Map<number, ExtendedTagElement>;
|
|
82
|
+
/**
|
|
83
|
+
* Result
|
|
84
|
+
*/
|
|
85
|
+
interface AnalyseSVGStructureResult {
|
|
86
|
+
elements: ElementsMap;
|
|
87
|
+
ids: Record<string, number>;
|
|
88
|
+
links: LinkToElementWithID[];
|
|
89
|
+
tree: ElementsTreeItem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export type { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { CheerioElement } from '../../misc/cheerio.js';
|
|
2
|
+
import 'cheerio';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Options
|
|
@@ -52,7 +53,7 @@ interface ExtendedTagElementRelations {
|
|
|
52
53
|
/**
|
|
53
54
|
* Extended tag
|
|
54
55
|
*/
|
|
55
|
-
interface ExtendedTagElement extends
|
|
56
|
+
interface ExtendedTagElement extends CheerioElement, ExtendedTagElementUses, ExtendedTagElementRelations {
|
|
56
57
|
_index: number;
|
|
57
58
|
_id?: string;
|
|
58
59
|
_belongsTo?: ElementWithID[];
|
|
@@ -88,4 +89,4 @@ interface AnalyseSVGStructureResult {
|
|
|
88
89
|
tree: ElementsTreeItem;
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
export { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
|
|
92
|
+
export type { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementWithID, ElementsMap, ElementsTreeItem, ExtendedRootTagElement, ExtendedTagElement, ExtendedTagElementUses, LinkToElementWithID };
|
package/lib/svg/analyse.cjs
CHANGED
|
@@ -83,7 +83,7 @@ function analyseSVGStructure(svg, options = {}) {
|
|
|
83
83
|
element._linksTo.push(link);
|
|
84
84
|
}
|
|
85
85
|
let index = 0;
|
|
86
|
-
svg_parse.
|
|
86
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
87
87
|
const { tagName, parents } = item;
|
|
88
88
|
if (svg_data_tags.styleTag.has(tagName)) {
|
|
89
89
|
item.testChildren = false;
|
|
@@ -263,7 +263,7 @@ function analyseSVGStructure(svg, options = {}) {
|
|
|
263
263
|
usedItems = usedItems.slice(0);
|
|
264
264
|
usedItems.push(element._index);
|
|
265
265
|
element._childElements?.forEach((childIndex) => {
|
|
266
|
-
if (usedItems.
|
|
266
|
+
if (usedItems.includes(childIndex)) {
|
|
267
267
|
throw new Error("Recursion");
|
|
268
268
|
}
|
|
269
269
|
const childItem = {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SVG } from './index.cjs';
|
|
2
|
+
import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult } from './analyse/types.cjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../misc/cheerio.cjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Find all IDs, links, which elements use palette, which items aren't used
|
|
10
|
+
*
|
|
11
|
+
* Before running this function run cleanup functions to change inline style to attributes and fix attributes
|
|
12
|
+
*/
|
|
13
|
+
declare function analyseSVGStructure(svg: SVG, options?: AnalyseSVGStructureOptions): AnalyseSVGStructureResult;
|
|
14
|
+
|
|
15
|
+
export { analyseSVGStructure };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SVG } from './index.mjs';
|
|
2
|
+
import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult } from './analyse/types.mjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../misc/cheerio.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Find all IDs, links, which elements use palette, which items aren't used
|
|
10
|
+
*
|
|
11
|
+
* Before running this function run cleanup functions to change inline style to attributes and fix attributes
|
|
12
|
+
*/
|
|
13
|
+
declare function analyseSVGStructure(svg: SVG, options?: AnalyseSVGStructureOptions): AnalyseSVGStructureResult;
|
|
14
|
+
|
|
15
|
+
export { analyseSVGStructure };
|
package/lib/svg/analyse.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult } from './analyse
|
|
|
3
3
|
import 'cheerio';
|
|
4
4
|
import '@iconify/types';
|
|
5
5
|
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../misc/cheerio.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Find all IDs, links, which elements use palette, which items aren't used
|
package/lib/svg/analyse.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseSVG } from './parse.mjs';
|
|
2
2
|
import { tagSpecificNonPresentationalAttributes, urlPresentationalAttributes, commonColorPresentationalAttributes, markerAttributes } from './data/attributes.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { styleTag, maskTags, reusableElementsWithPalette, defsTag, useTag } from './data/tags.mjs';
|
|
4
4
|
import { analyseTagError } from './analyse/error.mjs';
|
|
5
5
|
|
|
6
6
|
function analyseSVGStructure(svg, options = {}) {
|
|
@@ -81,7 +81,7 @@ function analyseSVGStructure(svg, options = {}) {
|
|
|
81
81
|
element._linksTo.push(link);
|
|
82
82
|
}
|
|
83
83
|
let index = 0;
|
|
84
|
-
|
|
84
|
+
parseSVG(svg, (item) => {
|
|
85
85
|
const { tagName, parents } = item;
|
|
86
86
|
if (styleTag.has(tagName)) {
|
|
87
87
|
item.testChildren = false;
|
|
@@ -261,7 +261,7 @@ function analyseSVGStructure(svg, options = {}) {
|
|
|
261
261
|
usedItems = usedItems.slice(0);
|
|
262
262
|
usedItems.push(element._index);
|
|
263
263
|
element._childElements?.forEach((childIndex) => {
|
|
264
|
-
if (usedItems.
|
|
264
|
+
if (usedItems.includes(childIndex)) {
|
|
265
265
|
throw new Error("Recursion");
|
|
266
266
|
}
|
|
267
267
|
const childItem = {
|
|
@@ -5,7 +5,7 @@ const svg_data_tags = require('../data/tags.cjs');
|
|
|
5
5
|
const svg_parse = require('../parse.cjs');
|
|
6
6
|
|
|
7
7
|
function removeBadAttributes(svg) {
|
|
8
|
-
svg_parse.
|
|
8
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
9
9
|
const tagName = item.tagName;
|
|
10
10
|
const attribs = item.element.attribs;
|
|
11
11
|
const $element = item.$element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Remove useless attributes
|
|
8
|
+
*/
|
|
9
|
+
declare function removeBadAttributes(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { removeBadAttributes };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Remove useless attributes
|
|
8
|
+
*/
|
|
9
|
+
declare function removeBadAttributes(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { removeBadAttributes };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { badAttributes, badSoftwareAttributes, badAttributePrefixes, tagSpecificPresentationalAttributes } from '../data/attributes.mjs';
|
|
2
2
|
import { defsTag } from '../data/tags.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSVG } from '../parse.mjs';
|
|
4
4
|
|
|
5
5
|
function removeBadAttributes(svg) {
|
|
6
|
-
|
|
6
|
+
parseSVG(svg, (item) => {
|
|
7
7
|
const tagName = item.tagName;
|
|
8
8
|
const attribs = item.element.attribs;
|
|
9
9
|
const $element = item.$element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SVG } from '../index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options
|
|
8
|
+
*/
|
|
9
|
+
interface CheckBadTagsOptions {
|
|
10
|
+
keepTitles?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Test for bag tags
|
|
14
|
+
*/
|
|
15
|
+
declare function checkBadTags(svg: SVG, options?: CheckBadTagsOptions): void;
|
|
16
|
+
|
|
17
|
+
export { type CheckBadTagsOptions, checkBadTags };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SVG } from '../index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options
|
|
8
|
+
*/
|
|
9
|
+
interface CheckBadTagsOptions {
|
|
10
|
+
keepTitles?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Test for bag tags
|
|
14
|
+
*/
|
|
15
|
+
declare function checkBadTags(svg: SVG, options?: CheckBadTagsOptions): void;
|
|
16
|
+
|
|
17
|
+
export { type CheckBadTagsOptions, checkBadTags };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseSVG } from '../parse.mjs';
|
|
2
2
|
import { feComponentTransferChildTag, feMergeChildTags, feLightningTags, feLightningChildTags, filterTag, filterChildTags, gradientTags, gradientChildTags, animateMotionChildTags, unsupportedTags, badTags, allValidTags } from '../data/tags.mjs';
|
|
3
3
|
|
|
4
4
|
const requiredParentTags = /* @__PURE__ */ new Map();
|
|
@@ -19,7 +19,7 @@ function checkBadTags(svg, options) {
|
|
|
19
19
|
...defaultOptions,
|
|
20
20
|
...options
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
parseSVG(svg, (item) => {
|
|
23
23
|
const tagName = item.tagName;
|
|
24
24
|
const $element = item.$element;
|
|
25
25
|
if (tagName === "svg") {
|
|
@@ -32,7 +32,7 @@ const knownIgnoredRules = /* @__PURE__ */ new Set([
|
|
|
32
32
|
"stop-opacity"
|
|
33
33
|
]);
|
|
34
34
|
function cleanupInlineStyle(svg) {
|
|
35
|
-
svg_parse.
|
|
35
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
36
36
|
const $element = item.$element;
|
|
37
37
|
const attribs = item.element.attribs;
|
|
38
38
|
const tagName = item.tagName;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Expand inline style
|
|
8
|
+
*/
|
|
9
|
+
declare function cleanupInlineStyle(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { cleanupInlineStyle };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Expand inline style
|
|
8
|
+
*/
|
|
9
|
+
declare function cleanupInlineStyle(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { cleanupInlineStyle };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseInlineStyle } from '../../css/parse.mjs';
|
|
2
2
|
import { badAttributes, tagSpecificNonPresentationalAttributes, tagSpecificAnimatedAttributes, tagSpecificPresentationalAttributes, tagSpecificInlineStyles, insideClipPathAttributes, badSoftwareAttributes, badAttributePrefixes } from '../data/attributes.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSVG } from '../parse.mjs';
|
|
4
4
|
import '../../css/parser/tokens.mjs';
|
|
5
5
|
import '../../css/parser/error.mjs';
|
|
6
6
|
import '../../css/parser/strings.mjs';
|
|
@@ -30,7 +30,7 @@ const knownIgnoredRules = /* @__PURE__ */ new Set([
|
|
|
30
30
|
"stop-opacity"
|
|
31
31
|
]);
|
|
32
32
|
function cleanupInlineStyle(svg) {
|
|
33
|
-
|
|
33
|
+
parseSVG(svg, (item) => {
|
|
34
34
|
const $element = item.$element;
|
|
35
35
|
const attribs = item.element.attribs;
|
|
36
36
|
const tagName = item.tagName;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SVG } from '../index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
interface CleanupRootStyleResult {
|
|
7
|
+
animations?: Set<string>;
|
|
8
|
+
removedAtRules?: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Clean up root style
|
|
12
|
+
*
|
|
13
|
+
* This function removes all at-rule tokens, such as `@font-face`, `@media`
|
|
14
|
+
*/
|
|
15
|
+
declare function cleanupRootStyle(svg: SVG): CleanupRootStyleResult;
|
|
16
|
+
|
|
17
|
+
export { cleanupRootStyle };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SVG } from '../index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
interface CleanupRootStyleResult {
|
|
7
|
+
animations?: Set<string>;
|
|
8
|
+
removedAtRules?: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Clean up root style
|
|
12
|
+
*
|
|
13
|
+
* This function removes all at-rule tokens, such as `@font-face`, `@media`
|
|
14
|
+
*/
|
|
15
|
+
declare function cleanupRootStyle(svg: SVG): CleanupRootStyleResult;
|
|
16
|
+
|
|
17
|
+
export { cleanupRootStyle };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseSVGStyle } from '../parse-style.mjs';
|
|
2
2
|
import '../../css/parse.mjs';
|
|
3
3
|
import '../../css/parser/tokens.mjs';
|
|
4
4
|
import '../../css/parser/error.mjs';
|
|
@@ -10,7 +10,7 @@ import '../parse.mjs';
|
|
|
10
10
|
|
|
11
11
|
function cleanupRootStyle(svg) {
|
|
12
12
|
const result = {};
|
|
13
|
-
|
|
13
|
+
parseSVGStyle(svg, (item) => {
|
|
14
14
|
switch (item.type) {
|
|
15
15
|
case "inline":
|
|
16
16
|
return item.value;
|
|
@@ -4,7 +4,7 @@ const svg_data_attributes = require('../data/attributes.cjs');
|
|
|
4
4
|
const svg_data_tags = require('../data/tags.cjs');
|
|
5
5
|
|
|
6
6
|
function cleanupSVGRoot(svg) {
|
|
7
|
-
const
|
|
7
|
+
const cheerio = svg.$svg;
|
|
8
8
|
const $root = svg.$svg(":root");
|
|
9
9
|
const root = $root.get(0);
|
|
10
10
|
const tagName = "svg";
|
|
@@ -61,12 +61,12 @@ function cleanupSVGRoot(svg) {
|
|
|
61
61
|
$root.removeAttr(attr);
|
|
62
62
|
});
|
|
63
63
|
if (Object.keys(moveToChildren).length) {
|
|
64
|
-
const $wrapper =
|
|
64
|
+
const $wrapper = cheerio("<g />");
|
|
65
65
|
for (const key in moveToChildren) {
|
|
66
66
|
$wrapper.attr(key, moveToChildren[key]);
|
|
67
67
|
}
|
|
68
68
|
$root.children().each((_index, child) => {
|
|
69
|
-
const $child =
|
|
69
|
+
const $child = cheerio(child);
|
|
70
70
|
if (child.type !== "tag") {
|
|
71
71
|
$child.appendTo($wrapper);
|
|
72
72
|
return;
|
|
@@ -2,7 +2,7 @@ import { commonAttributes, badAttributes, junkSVGAttributes, badSoftwareAttribut
|
|
|
2
2
|
import { reusableElementsWithPalette, maskTags } from '../data/tags.mjs';
|
|
3
3
|
|
|
4
4
|
function cleanupSVGRoot(svg) {
|
|
5
|
-
const
|
|
5
|
+
const cheerio = svg.$svg;
|
|
6
6
|
const $root = svg.$svg(":root");
|
|
7
7
|
const root = $root.get(0);
|
|
8
8
|
const tagName = "svg";
|
|
@@ -59,12 +59,12 @@ function cleanupSVGRoot(svg) {
|
|
|
59
59
|
$root.removeAttr(attr);
|
|
60
60
|
});
|
|
61
61
|
if (Object.keys(moveToChildren).length) {
|
|
62
|
-
const $wrapper =
|
|
62
|
+
const $wrapper = cheerio("<g />");
|
|
63
63
|
for (const key in moveToChildren) {
|
|
64
64
|
$wrapper.attr(key, moveToChildren[key]);
|
|
65
65
|
}
|
|
66
66
|
$root.children().each((_index, child) => {
|
|
67
|
-
const $child =
|
|
67
|
+
const $child = cheerio(child);
|
|
68
68
|
if (child.type !== "tag") {
|
|
69
69
|
$child.appendTo($wrapper);
|
|
70
70
|
return;
|
|
@@ -17,7 +17,7 @@ require('@iconify/utils/lib/svg/id');
|
|
|
17
17
|
|
|
18
18
|
function convertStyleToAttrs(svg) {
|
|
19
19
|
let hasStyle = false;
|
|
20
|
-
svg_parseStyle.
|
|
20
|
+
svg_parseStyle.parseSVGStyle(svg, (item) => {
|
|
21
21
|
if (item.type !== "inline" && item.type !== "global") {
|
|
22
22
|
return item.value;
|
|
23
23
|
}
|
|
@@ -26,7 +26,7 @@ function convertStyleToAttrs(svg) {
|
|
|
26
26
|
// Attributes / properties now allowed
|
|
27
27
|
svg_data_attributes.badAttributes.has(prop) || svg_data_attributes.badSoftwareAttributes.has(prop) || svg_data_attributes.badAttributePrefixes.has(prop.split("-").shift())
|
|
28
28
|
) {
|
|
29
|
-
return
|
|
29
|
+
return;
|
|
30
30
|
}
|
|
31
31
|
hasStyle = true;
|
|
32
32
|
return item.value;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Expand inline style
|
|
8
|
+
*/
|
|
9
|
+
declare function convertStyleToAttrs(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { convertStyleToAttrs };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Expand inline style
|
|
8
|
+
*/
|
|
9
|
+
declare function convertStyleToAttrs(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { convertStyleToAttrs };
|