@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
package/lib/optimise/figma.cjs
CHANGED
|
@@ -75,7 +75,7 @@ function checkClipPathNode(clipNode, expectedWidth, expectedHeight) {
|
|
|
75
75
|
const urlStart = "url(#";
|
|
76
76
|
const urlEnd = ")";
|
|
77
77
|
function removeFigmaClipPathFromSVG(svg) {
|
|
78
|
-
const
|
|
78
|
+
const cheerio = svg.$svg;
|
|
79
79
|
const $root = svg.$svg(":root");
|
|
80
80
|
const children = $root.children();
|
|
81
81
|
const backup = svg.toString();
|
|
@@ -112,7 +112,7 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
112
112
|
svg.viewBox.width,
|
|
113
113
|
svg.viewBox.height
|
|
114
114
|
);
|
|
115
|
-
|
|
115
|
+
cheerio(node).remove();
|
|
116
116
|
return result;
|
|
117
117
|
};
|
|
118
118
|
const findClipPath = () => {
|
|
@@ -136,7 +136,7 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
136
136
|
}
|
|
137
137
|
);
|
|
138
138
|
if (!validChildren.length) {
|
|
139
|
-
|
|
139
|
+
cheerio(node).remove();
|
|
140
140
|
}
|
|
141
141
|
return result;
|
|
142
142
|
}
|
|
@@ -160,13 +160,13 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
160
160
|
const attribs = clipPath.attribs;
|
|
161
161
|
for (let i = 0; i < shapesToClip.length; i++) {
|
|
162
162
|
const node = shapesToClip[i];
|
|
163
|
-
|
|
163
|
+
cheerio(node).removeAttr("clip-path");
|
|
164
164
|
for (const attr in attribs) {
|
|
165
165
|
if (node.attribs[attr] !== void 0) {
|
|
166
166
|
svg.load(backup);
|
|
167
167
|
return false;
|
|
168
168
|
}
|
|
169
|
-
|
|
169
|
+
cheerio(node).attr(attr, attribs[attr]);
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
return true;
|
|
@@ -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 clip path from SVG, which Figma adds to icons that might have overflowing elements
|
|
8
|
+
*/
|
|
9
|
+
declare function removeFigmaClipPathFromSVG(svg: SVG): boolean;
|
|
10
|
+
|
|
11
|
+
export { removeFigmaClipPathFromSVG };
|
|
@@ -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 clip path from SVG, which Figma adds to icons that might have overflowing elements
|
|
8
|
+
*/
|
|
9
|
+
declare function removeFigmaClipPathFromSVG(svg: SVG): boolean;
|
|
10
|
+
|
|
11
|
+
export { removeFigmaClipPathFromSVG };
|
package/lib/optimise/figma.mjs
CHANGED
|
@@ -73,7 +73,7 @@ function checkClipPathNode(clipNode, expectedWidth, expectedHeight) {
|
|
|
73
73
|
const urlStart = "url(#";
|
|
74
74
|
const urlEnd = ")";
|
|
75
75
|
function removeFigmaClipPathFromSVG(svg) {
|
|
76
|
-
const
|
|
76
|
+
const cheerio = svg.$svg;
|
|
77
77
|
const $root = svg.$svg(":root");
|
|
78
78
|
const children = $root.children();
|
|
79
79
|
const backup = svg.toString();
|
|
@@ -110,7 +110,7 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
110
110
|
svg.viewBox.width,
|
|
111
111
|
svg.viewBox.height
|
|
112
112
|
);
|
|
113
|
-
|
|
113
|
+
cheerio(node).remove();
|
|
114
114
|
return result;
|
|
115
115
|
};
|
|
116
116
|
const findClipPath = () => {
|
|
@@ -134,7 +134,7 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
134
134
|
}
|
|
135
135
|
);
|
|
136
136
|
if (!validChildren.length) {
|
|
137
|
-
|
|
137
|
+
cheerio(node).remove();
|
|
138
138
|
}
|
|
139
139
|
return result;
|
|
140
140
|
}
|
|
@@ -158,13 +158,13 @@ function removeFigmaClipPathFromSVG(svg) {
|
|
|
158
158
|
const attribs = clipPath.attribs;
|
|
159
159
|
for (let i = 0; i < shapesToClip.length; i++) {
|
|
160
160
|
const node = shapesToClip[i];
|
|
161
|
-
|
|
161
|
+
cheerio(node).removeAttr("clip-path");
|
|
162
162
|
for (const attr in attribs) {
|
|
163
163
|
if (node.attribs[attr] !== void 0) {
|
|
164
164
|
svg.load(backup);
|
|
165
165
|
return false;
|
|
166
166
|
}
|
|
167
|
-
|
|
167
|
+
cheerio(node).attr(attr, attribs[attr]);
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
return true;
|
package/lib/optimise/flags.cjs
CHANGED
|
@@ -223,7 +223,7 @@ function cleanPath(path) {
|
|
|
223
223
|
if (index < 1) {
|
|
224
224
|
break;
|
|
225
225
|
}
|
|
226
|
-
if (item.params[index - 1].
|
|
226
|
+
if (item.params[index - 1].includes(".")) {
|
|
227
227
|
break;
|
|
228
228
|
}
|
|
229
229
|
default:
|
|
@@ -235,8 +235,8 @@ function cleanPath(path) {
|
|
|
235
235
|
});
|
|
236
236
|
return output;
|
|
237
237
|
}
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
function deOptimisePaths(svg) {
|
|
239
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
240
240
|
if (item.tagName !== "path") {
|
|
241
241
|
return;
|
|
242
242
|
}
|
|
@@ -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
|
+
* De-optimise paths. Compressed paths are still not supported by some software.
|
|
8
|
+
*/
|
|
9
|
+
declare function deOptimisePaths(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { deOptimisePaths };
|
|
@@ -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
|
+
* De-optimise paths. Compressed paths are still not supported by some software.
|
|
8
|
+
*/
|
|
9
|
+
declare function deOptimisePaths(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { deOptimisePaths };
|
package/lib/optimise/flags.d.ts
CHANGED
|
@@ -6,6 +6,6 @@ import '@iconify/utils/lib/customisations/defaults';
|
|
|
6
6
|
/**
|
|
7
7
|
* De-optimise paths. Compressed paths are still not supported by some software.
|
|
8
8
|
*/
|
|
9
|
-
declare function deOptimisePaths(svg: SVG):
|
|
9
|
+
declare function deOptimisePaths(svg: SVG): void;
|
|
10
10
|
|
|
11
11
|
export { deOptimisePaths };
|
package/lib/optimise/flags.mjs
CHANGED
|
@@ -221,7 +221,7 @@ function cleanPath(path) {
|
|
|
221
221
|
if (index < 1) {
|
|
222
222
|
break;
|
|
223
223
|
}
|
|
224
|
-
if (item.params[index - 1].
|
|
224
|
+
if (item.params[index - 1].includes(".")) {
|
|
225
225
|
break;
|
|
226
226
|
}
|
|
227
227
|
default:
|
|
@@ -233,8 +233,8 @@ function cleanPath(path) {
|
|
|
233
233
|
});
|
|
234
234
|
return output;
|
|
235
235
|
}
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
function deOptimisePaths(svg) {
|
|
237
|
+
parseSVG(svg, (item) => {
|
|
238
238
|
if (item.tagName !== "path") {
|
|
239
239
|
return;
|
|
240
240
|
}
|
|
@@ -15,11 +15,11 @@ function getClassList(value) {
|
|
|
15
15
|
return value?.split(/\s+/);
|
|
16
16
|
}
|
|
17
17
|
const tempDataAttrbiute = "data-gstyle-temp";
|
|
18
|
-
|
|
18
|
+
function cleanupGlobalStyle(svg) {
|
|
19
19
|
const backup = svg.toString();
|
|
20
20
|
let containsTempAttr = false;
|
|
21
21
|
const animatedClasses = /* @__PURE__ */ new Set();
|
|
22
|
-
|
|
22
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
23
23
|
if (!svg_data_tags.animateTags.has(item.tagName)) {
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
@@ -41,7 +41,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
41
41
|
});
|
|
42
42
|
const removeClasses = /* @__PURE__ */ new Set();
|
|
43
43
|
try {
|
|
44
|
-
|
|
44
|
+
svg_parseStyle.parseSVGStyle(svg, (styleItem) => {
|
|
45
45
|
const returnValue = styleItem.value;
|
|
46
46
|
if (styleItem.type !== "global") {
|
|
47
47
|
return returnValue;
|
|
@@ -93,7 +93,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
93
93
|
break;
|
|
94
94
|
case "class": {
|
|
95
95
|
const className = $element.attr("class");
|
|
96
|
-
if (className && getClassList(className).
|
|
96
|
+
if (className && getClassList(className).includes(value)) {
|
|
97
97
|
return true;
|
|
98
98
|
}
|
|
99
99
|
}
|
|
@@ -101,7 +101,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
101
101
|
}
|
|
102
102
|
return false;
|
|
103
103
|
};
|
|
104
|
-
|
|
104
|
+
svg_parse.parseSVG(svg, (svgItem) => {
|
|
105
105
|
const tagName = svgItem.tagName;
|
|
106
106
|
const $element = svgItem.$element;
|
|
107
107
|
if (!isMatch(tagName, $element)) {
|
|
@@ -130,7 +130,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
132
|
});
|
|
133
|
-
|
|
133
|
+
svg_parse.parseSVG(svg, (svgItem) => {
|
|
134
134
|
const $element = svgItem.$element;
|
|
135
135
|
const classList = getClassList($element.attr("class"));
|
|
136
136
|
if (!classList) {
|
|
@@ -146,7 +146,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
148
|
if (containsTempAttr) {
|
|
149
|
-
|
|
149
|
+
svg_parse.parseSVG(svg, (item) => {
|
|
150
150
|
item.$element.removeAttr(tempDataAttrbiute);
|
|
151
151
|
});
|
|
152
152
|
}
|
|
@@ -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
|
+
* Expand global style
|
|
8
|
+
*/
|
|
9
|
+
declare function cleanupGlobalStyle(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { cleanupGlobalStyle };
|
|
@@ -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
|
+
* Expand global style
|
|
8
|
+
*/
|
|
9
|
+
declare function cleanupGlobalStyle(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { cleanupGlobalStyle };
|
|
@@ -13,11 +13,11 @@ function getClassList(value) {
|
|
|
13
13
|
return value?.split(/\s+/);
|
|
14
14
|
}
|
|
15
15
|
const tempDataAttrbiute = "data-gstyle-temp";
|
|
16
|
-
|
|
16
|
+
function cleanupGlobalStyle(svg) {
|
|
17
17
|
const backup = svg.toString();
|
|
18
18
|
let containsTempAttr = false;
|
|
19
19
|
const animatedClasses = /* @__PURE__ */ new Set();
|
|
20
|
-
|
|
20
|
+
parseSVG(svg, (item) => {
|
|
21
21
|
if (!animateTags.has(item.tagName)) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
@@ -39,7 +39,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
39
39
|
});
|
|
40
40
|
const removeClasses = /* @__PURE__ */ new Set();
|
|
41
41
|
try {
|
|
42
|
-
|
|
42
|
+
parseSVGStyle(svg, (styleItem) => {
|
|
43
43
|
const returnValue = styleItem.value;
|
|
44
44
|
if (styleItem.type !== "global") {
|
|
45
45
|
return returnValue;
|
|
@@ -91,7 +91,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
91
91
|
break;
|
|
92
92
|
case "class": {
|
|
93
93
|
const className = $element.attr("class");
|
|
94
|
-
if (className && getClassList(className).
|
|
94
|
+
if (className && getClassList(className).includes(value)) {
|
|
95
95
|
return true;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -99,7 +99,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
99
99
|
}
|
|
100
100
|
return false;
|
|
101
101
|
};
|
|
102
|
-
|
|
102
|
+
parseSVG(svg, (svgItem) => {
|
|
103
103
|
const tagName = svgItem.tagName;
|
|
104
104
|
const $element = svgItem.$element;
|
|
105
105
|
if (!isMatch(tagName, $element)) {
|
|
@@ -128,7 +128,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
|
-
|
|
131
|
+
parseSVG(svg, (svgItem) => {
|
|
132
132
|
const $element = svgItem.$element;
|
|
133
133
|
const classList = getClassList($element.attr("class"));
|
|
134
134
|
if (!classList) {
|
|
@@ -144,7 +144,7 @@ async function cleanupGlobalStyle(svg) {
|
|
|
144
144
|
}
|
|
145
145
|
});
|
|
146
146
|
if (containsTempAttr) {
|
|
147
|
-
|
|
147
|
+
parseSVG(svg, (item) => {
|
|
148
148
|
item.$element.removeAttr(tempDataAttrbiute);
|
|
149
149
|
});
|
|
150
150
|
}
|
package/lib/optimise/mask.cjs
CHANGED
|
@@ -46,7 +46,7 @@ function convertSVGToMask(svg, options = {}) {
|
|
|
46
46
|
let failed = false;
|
|
47
47
|
let hasCustomValue = false;
|
|
48
48
|
const backup = svg.toString();
|
|
49
|
-
colors_parse.
|
|
49
|
+
colors_parse.parseColors(svg, {
|
|
50
50
|
callback: (attr, colorStr, color) => {
|
|
51
51
|
if (!color || colors_parse.isEmptyColor(color)) {
|
|
52
52
|
return colorStr;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Color } from '@iconify/utils/lib/colors/types';
|
|
2
|
+
import { SVG } from '../svg/index.cjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
|
|
7
|
+
type ColorCallback = (value: string, color: Color | null) => boolean;
|
|
8
|
+
type ColorCheck = string | string[] | ColorCallback;
|
|
9
|
+
interface SVGToMaskOptions {
|
|
10
|
+
color?: string;
|
|
11
|
+
solid?: ColorCheck;
|
|
12
|
+
transparent?: ColorCheck;
|
|
13
|
+
custom?: (value: string, color: Color | null) => string | number | undefined;
|
|
14
|
+
force?: boolean;
|
|
15
|
+
id?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Converts SVG to mask
|
|
19
|
+
*
|
|
20
|
+
* Fixes badly designed icons, which use white shape where icon supposed to be transparent
|
|
21
|
+
*/
|
|
22
|
+
declare function convertSVGToMask(svg: SVG, options?: SVGToMaskOptions): boolean;
|
|
23
|
+
|
|
24
|
+
export { convertSVGToMask };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Color } from '@iconify/utils/lib/colors/types';
|
|
2
|
+
import { SVG } from '../svg/index.mjs';
|
|
3
|
+
import 'cheerio';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
|
|
7
|
+
type ColorCallback = (value: string, color: Color | null) => boolean;
|
|
8
|
+
type ColorCheck = string | string[] | ColorCallback;
|
|
9
|
+
interface SVGToMaskOptions {
|
|
10
|
+
color?: string;
|
|
11
|
+
solid?: ColorCheck;
|
|
12
|
+
transparent?: ColorCheck;
|
|
13
|
+
custom?: (value: string, color: Color | null) => string | number | undefined;
|
|
14
|
+
force?: boolean;
|
|
15
|
+
id?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Converts SVG to mask
|
|
19
|
+
*
|
|
20
|
+
* Fixes badly designed icons, which use white shape where icon supposed to be transparent
|
|
21
|
+
*/
|
|
22
|
+
declare function convertSVGToMask(svg: SVG, options?: SVGToMaskOptions): boolean;
|
|
23
|
+
|
|
24
|
+
export { convertSVGToMask };
|
package/lib/optimise/mask.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseColors, isEmptyColor } from '../colors/parse.mjs';
|
|
2
2
|
import { parseSVGContent, splitSVGDefs, iconToHTML } from '@iconify/utils';
|
|
3
3
|
import '@iconify/utils/lib/colors';
|
|
4
4
|
import '../svg/data/tags.mjs';
|
|
@@ -44,7 +44,7 @@ function convertSVGToMask(svg, options = {}) {
|
|
|
44
44
|
let failed = false;
|
|
45
45
|
let hasCustomValue = false;
|
|
46
46
|
const backup = svg.toString();
|
|
47
|
-
|
|
47
|
+
parseColors(svg, {
|
|
48
48
|
callback: (attr, colorStr, color) => {
|
|
49
49
|
if (!color || isEmptyColor(color)) {
|
|
50
50
|
return colorStr;
|
|
@@ -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
|
+
* Reset origin to 0 0
|
|
8
|
+
*/
|
|
9
|
+
declare function resetSVGOrigin(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { resetSVGOrigin };
|
|
@@ -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
|
+
* Reset origin to 0 0
|
|
8
|
+
*/
|
|
9
|
+
declare function resetSVGOrigin(svg: SVG): void;
|
|
10
|
+
|
|
11
|
+
export { resetSVGOrigin };
|
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
|