@iconify/tools 4.0.0-dev.1 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +15 -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 +14 -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 +3 -3
- package/lib/misc/write-json.d.cts +6 -0
- package/lib/misc/write-json.d.mts +6 -0
- package/lib/optimise/figma.cjs +55 -33
- package/lib/optimise/figma.d.cts +13 -0
- package/lib/optimise/figma.d.mts +13 -0
- package/lib/optimise/figma.d.ts +3 -1
- package/lib/optimise/figma.mjs +55 -33
- 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/optimise/unwrap.cjs +31 -0
- package/lib/optimise/unwrap.d.cts +11 -0
- package/lib/optimise/unwrap.d.mts +11 -0
- package/lib/optimise/unwrap.d.ts +11 -0
- package/lib/optimise/unwrap.mjs +29 -0
- 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 +34 -24
package/lib/optimise/svgo.cjs
CHANGED
|
@@ -60,7 +60,7 @@ function runSVGO(svg, options = {}) {
|
|
|
60
60
|
if (options.plugins) {
|
|
61
61
|
plugins = options.plugins;
|
|
62
62
|
} else {
|
|
63
|
-
const animated = code.
|
|
63
|
+
const animated = code.includes("<animate") || code.includes("<set");
|
|
64
64
|
plugins = getSVGOPlugins({
|
|
65
65
|
...options,
|
|
66
66
|
animated
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PluginConfig } from 'svgo';
|
|
2
|
+
import { SVG } from '../svg/index.cjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
|
|
7
|
+
interface CleanupIDsOption {
|
|
8
|
+
cleanupIDs?: string | ((id: string) => string) | false;
|
|
9
|
+
}
|
|
10
|
+
interface GetSVGOPluginOptions extends CleanupIDsOption {
|
|
11
|
+
animated?: boolean;
|
|
12
|
+
keepShapes?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get list of plugins
|
|
16
|
+
*/
|
|
17
|
+
declare function getSVGOPlugins(options: GetSVGOPluginOptions): PluginConfig[];
|
|
18
|
+
/**
|
|
19
|
+
* Options
|
|
20
|
+
*/
|
|
21
|
+
interface SVGOCommonOptions {
|
|
22
|
+
multipass?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface SVGOOptionsWithPlugin extends SVGOCommonOptions {
|
|
25
|
+
plugins: PluginConfig[];
|
|
26
|
+
}
|
|
27
|
+
interface SVGOptionsWithoutPlugin extends SVGOCommonOptions, CleanupIDsOption {
|
|
28
|
+
plugins?: undefined;
|
|
29
|
+
keepShapes?: boolean;
|
|
30
|
+
}
|
|
31
|
+
type SVGOOptions = SVGOOptionsWithPlugin | SVGOptionsWithoutPlugin;
|
|
32
|
+
/**
|
|
33
|
+
* Run SVGO on icon
|
|
34
|
+
*/
|
|
35
|
+
declare function runSVGO(svg: SVG, options?: SVGOOptions): void;
|
|
36
|
+
|
|
37
|
+
export { getSVGOPlugins, runSVGO };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PluginConfig } from 'svgo';
|
|
2
|
+
import { SVG } from '../svg/index.mjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
|
|
7
|
+
interface CleanupIDsOption {
|
|
8
|
+
cleanupIDs?: string | ((id: string) => string) | false;
|
|
9
|
+
}
|
|
10
|
+
interface GetSVGOPluginOptions extends CleanupIDsOption {
|
|
11
|
+
animated?: boolean;
|
|
12
|
+
keepShapes?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get list of plugins
|
|
16
|
+
*/
|
|
17
|
+
declare function getSVGOPlugins(options: GetSVGOPluginOptions): PluginConfig[];
|
|
18
|
+
/**
|
|
19
|
+
* Options
|
|
20
|
+
*/
|
|
21
|
+
interface SVGOCommonOptions {
|
|
22
|
+
multipass?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface SVGOOptionsWithPlugin extends SVGOCommonOptions {
|
|
25
|
+
plugins: PluginConfig[];
|
|
26
|
+
}
|
|
27
|
+
interface SVGOptionsWithoutPlugin extends SVGOCommonOptions, CleanupIDsOption {
|
|
28
|
+
plugins?: undefined;
|
|
29
|
+
keepShapes?: boolean;
|
|
30
|
+
}
|
|
31
|
+
type SVGOOptions = SVGOOptionsWithPlugin | SVGOptionsWithoutPlugin;
|
|
32
|
+
/**
|
|
33
|
+
* Run SVGO on icon
|
|
34
|
+
*/
|
|
35
|
+
declare function runSVGO(svg: SVG, options?: SVGOOptions): void;
|
|
36
|
+
|
|
37
|
+
export { getSVGOPlugins, runSVGO };
|
package/lib/optimise/svgo.mjs
CHANGED
|
@@ -58,7 +58,7 @@ function runSVGO(svg, options = {}) {
|
|
|
58
58
|
if (options.plugins) {
|
|
59
59
|
plugins = options.plugins;
|
|
60
60
|
} else {
|
|
61
|
-
const animated = code.
|
|
61
|
+
const animated = code.includes("<animate") || code.includes("<set");
|
|
62
62
|
plugins = getSVGOPlugins({
|
|
63
63
|
...options,
|
|
64
64
|
animated
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function unwrapEmptyGroup(svg) {
|
|
4
|
+
const cheerio = svg.$svg;
|
|
5
|
+
const $root = svg.$svg(":root");
|
|
6
|
+
const children = $root.children();
|
|
7
|
+
if (children.length !== 1 || children[0].tagName !== "g") {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const groupNode = children[0];
|
|
11
|
+
const html = cheerio(groupNode).html();
|
|
12
|
+
if (!html) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
for (const attr in groupNode.attribs) {
|
|
16
|
+
const value = groupNode.attribs[attr];
|
|
17
|
+
switch (attr) {
|
|
18
|
+
case "id": {
|
|
19
|
+
if (html?.includes(value)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
default:
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
$root.html(html);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.unwrapEmptyGroup = unwrapEmptyGroup;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../svg/index.cjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Removes empty group from SVG root element
|
|
8
|
+
*/
|
|
9
|
+
declare function unwrapEmptyGroup(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { unwrapEmptyGroup };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../svg/index.mjs';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Removes empty group from SVG root element
|
|
8
|
+
*/
|
|
9
|
+
declare function unwrapEmptyGroup(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { unwrapEmptyGroup };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVG } from '../svg/index.js';
|
|
2
|
+
import 'cheerio';
|
|
3
|
+
import '@iconify/types';
|
|
4
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Removes empty group from SVG root element
|
|
8
|
+
*/
|
|
9
|
+
declare function unwrapEmptyGroup(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { unwrapEmptyGroup };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function unwrapEmptyGroup(svg) {
|
|
2
|
+
const cheerio = svg.$svg;
|
|
3
|
+
const $root = svg.$svg(":root");
|
|
4
|
+
const children = $root.children();
|
|
5
|
+
if (children.length !== 1 || children[0].tagName !== "g") {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const groupNode = children[0];
|
|
9
|
+
const html = cheerio(groupNode).html();
|
|
10
|
+
if (!html) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
for (const attr in groupNode.attribs) {
|
|
14
|
+
const value = groupNode.attribs[attr];
|
|
15
|
+
switch (attr) {
|
|
16
|
+
case "id": {
|
|
17
|
+
if (html?.includes(value)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
default:
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
$root.html(html);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { unwrapEmptyGroup };
|
|
@@ -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;
|