@iconify/tools 4.1.5 → 5.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/colors/attribs.d.ts +2 -4
- package/lib/colors/attribs.js +33 -0
- package/lib/colors/detect.d.ts +2 -10
- package/lib/colors/detect.js +36 -0
- package/lib/colors/parse.d.ts +12 -19
- package/lib/colors/parse.js +241 -0
- package/lib/colors/validate.d.ts +3 -13
- package/lib/colors/validate.js +31 -0
- package/lib/css/parse.d.ts +1 -2
- package/lib/css/parse.js +18 -0
- package/lib/css/parser/error.d.ts +6 -7
- package/lib/css/parser/error.js +24 -0
- package/lib/css/parser/export.d.ts +2 -4
- package/lib/css/parser/export.js +34 -0
- package/lib/css/parser/strings.d.ts +2 -4
- package/lib/css/parser/strings.js +66 -0
- package/lib/css/parser/text.d.ts +2 -4
- package/lib/css/parser/text.js +103 -0
- package/lib/css/parser/tokens.d.ts +3 -5
- package/lib/css/parser/tokens.js +169 -0
- package/lib/css/parser/tree.d.ts +2 -4
- package/lib/css/parser/tree.js +35 -0
- package/lib/css/parser/types.d.ts +21 -22
- package/lib/css/parser/types.js +1 -0
- package/lib/download/api/cache.d.ts +2 -4
- package/lib/download/api/cache.js +84 -0
- package/lib/download/api/config.d.ts +7 -9
- package/lib/download/api/config.js +10 -0
- package/lib/download/api/download.d.ts +2 -4
- package/lib/download/api/download.js +26 -0
- package/lib/download/api/fetch.d.ts +9 -0
- package/lib/download/api/fetch.js +15 -0
- package/lib/download/api/index.d.ts +2 -4
- package/lib/download/api/index.js +50 -0
- package/lib/download/api/queue.d.ts +9 -10
- package/lib/download/api/queue.js +94 -0
- package/lib/download/api/types.d.ts +6 -7
- package/lib/download/api/types.js +1 -0
- package/lib/download/git/branch.d.ts +2 -4
- package/lib/download/git/branch.js +15 -0
- package/lib/download/git/hash.d.ts +2 -4
- package/lib/download/git/hash.js +10 -0
- package/lib/download/git/index.d.ts +10 -12
- package/lib/download/git/index.js +39 -0
- package/lib/download/git/reset.d.ts +1 -2
- package/lib/download/git/reset.js +12 -0
- package/lib/download/github/hash.d.ts +2 -4
- package/lib/download/github/hash.js +20 -0
- package/lib/download/github/index.d.ts +12 -14
- package/lib/download/github/index.js +66 -0
- package/lib/download/github/types.d.ts +5 -6
- package/lib/download/github/types.js +1 -0
- package/lib/download/gitlab/hash.d.ts +2 -4
- package/lib/download/gitlab/hash.js +19 -0
- package/lib/download/gitlab/index.d.ts +12 -14
- package/lib/download/gitlab/index.js +64 -0
- package/lib/download/gitlab/types.d.ts +5 -6
- package/lib/download/gitlab/types.js +6 -0
- package/lib/download/helpers/untar.d.ts +1 -2
- package/lib/download/helpers/untar.js +13 -0
- package/lib/download/helpers/unzip.d.ts +1 -2
- package/lib/download/helpers/unzip.js +39 -0
- package/lib/download/index.d.ts +15 -20
- package/lib/download/index.js +19 -0
- package/lib/download/npm/index.d.ts +11 -13
- package/lib/download/npm/index.js +51 -0
- package/lib/download/npm/types.d.ts +3 -4
- package/lib/download/npm/types.js +1 -0
- package/lib/download/npm/version.d.ts +4 -6
- package/lib/download/npm/version.js +23 -0
- package/lib/download/types/modified.d.ts +1 -2
- package/lib/download/types/modified.js +1 -0
- package/lib/download/types/sources.d.ts +2 -3
- package/lib/download/types/sources.js +1 -0
- package/lib/export/directory.d.ts +7 -15
- package/lib/export/directory.js +37 -0
- package/lib/export/helpers/custom-files.d.ts +2 -3
- package/lib/export/helpers/custom-files.js +23 -0
- package/lib/export/helpers/prepare.d.ts +3 -4
- package/lib/export/helpers/prepare.js +31 -0
- package/lib/export/helpers/types-version.d.ts +1 -2
- package/lib/export/helpers/types-version.js +19 -0
- package/lib/export/icon-package.d.ts +8 -15
- package/lib/export/icon-package.js +55 -0
- package/lib/export/json-package.d.ts +7 -14
- package/lib/export/json-package.js +129 -0
- package/lib/icon-set/index.d.ts +144 -147
- package/lib/icon-set/index.js +595 -0
- package/lib/icon-set/match.d.ts +3 -11
- package/lib/icon-set/match.js +45 -0
- package/lib/icon-set/merge.d.ts +2 -10
- package/lib/icon-set/merge.js +68 -0
- package/lib/icon-set/modified.d.ts +2 -10
- package/lib/icon-set/modified.js +20 -0
- package/lib/icon-set/props.d.ts +2 -5
- package/lib/icon-set/props.js +19 -0
- package/lib/icon-set/tags.d.ts +7 -15
- package/lib/icon-set/tags.js +53 -0
- package/lib/icon-set/types.d.ts +16 -21
- package/lib/icon-set/types.js +1 -0
- package/lib/import/directory.d.ts +11 -20
- package/lib/import/directory.js +101 -0
- package/lib/import/figma/index.d.ts +4 -15
- package/lib/import/figma/index.js +61 -0
- package/lib/import/figma/nodes.d.ts +4 -14
- package/lib/import/figma/nodes.js +80 -0
- package/lib/import/figma/query.d.ts +9 -19
- package/lib/import/figma/query.js +183 -0
- package/lib/import/figma/types/api.d.ts +23 -35
- package/lib/import/figma/types/nodes.d.ts +12 -21
- package/lib/import/figma/types/options.d.ts +23 -32
- package/lib/import/figma/types/result.d.ts +16 -24
- package/lib/index.d.ts +55 -79
- package/lib/index.js +56 -0
- package/lib/misc/bump-version.d.ts +1 -2
- package/lib/misc/bump-version.js +13 -0
- package/lib/misc/compare-dirs.d.ts +4 -5
- package/lib/misc/compare-dirs.js +65 -0
- package/lib/misc/exec.d.ts +4 -6
- package/lib/misc/exec.js +23 -0
- package/lib/misc/keyword.d.ts +1 -2
- package/lib/misc/keyword.js +12 -0
- package/lib/misc/scan.d.ts +4 -6
- package/lib/misc/scan.js +87 -0
- package/lib/misc/write-json.d.ts +1 -2
- package/lib/misc/write-json.js +10 -0
- package/lib/optimise/figma.d.ts +2 -7
- package/lib/optimise/figma.js +189 -0
- package/lib/optimise/flags.d.ts +2 -7
- package/lib/optimise/flags.js +231 -0
- package/lib/optimise/global-style.d.ts +2 -7
- package/lib/optimise/global-style.js +114 -0
- package/lib/optimise/mask.d.ts +9 -14
- package/lib/optimise/mask.js +83 -0
- package/lib/optimise/origin.d.ts +2 -7
- package/lib/optimise/origin.js +22 -0
- package/lib/optimise/scale.d.ts +2 -7
- package/lib/optimise/scale.js +24 -0
- package/lib/optimise/svgo.d.ts +10 -15
- package/lib/optimise/svgo.js +90 -0
- package/lib/optimise/unwrap.d.ts +2 -7
- package/lib/optimise/unwrap.js +25 -0
- package/lib/svg/analyse/error.d.ts +2 -7
- package/lib/svg/analyse/error.js +12 -0
- package/lib/svg/analyse/types.d.ts +31 -35
- package/lib/svg/analyse/types.js +1 -0
- package/lib/svg/analyse.d.ts +3 -10
- package/lib/svg/analyse.js +256 -0
- package/lib/svg/cleanup/attribs.d.ts +2 -7
- package/lib/svg/cleanup/attribs.js +37 -0
- package/lib/svg/cleanup/bad-tags.d.ts +3 -8
- package/lib/svg/cleanup/bad-tags.js +57 -0
- package/lib/svg/cleanup/inline-style.d.ts +2 -7
- package/lib/svg/cleanup/inline-style.js +80 -0
- package/lib/svg/cleanup/root-style.d.ts +4 -9
- package/lib/svg/cleanup/root-style.js +27 -0
- package/lib/svg/cleanup/root-svg.d.ts +2 -7
- package/lib/svg/cleanup/root-svg.js +73 -0
- package/lib/svg/cleanup/svgo-style.d.ts +2 -7
- package/lib/svg/cleanup/svgo-style.js +24 -0
- package/lib/svg/cleanup.d.ts +3 -8
- package/lib/svg/cleanup.js +20 -0
- package/lib/svg/data/attributes.d.ts +1 -2
- package/lib/svg/data/attributes.js +451 -0
- package/lib/svg/data/tags.d.ts +1 -2
- package/lib/svg/data/tags.js +182 -0
- package/lib/svg/index.d.ts +38 -47
- package/lib/svg/index.js +117 -0
- package/lib/svg/parse-style.d.ts +21 -28
- package/lib/svg/parse-style.js +199 -0
- package/lib/svg/parse.d.ts +8 -16
- package/lib/svg/parse.js +32 -0
- package/package.json +126 -227
- package/lib/colors/attribs.cjs +0 -33
- package/lib/colors/attribs.d.cts +0 -27
- package/lib/colors/attribs.d.mts +0 -27
- package/lib/colors/attribs.mjs +0 -26
- package/lib/colors/detect.cjs +0 -66
- package/lib/colors/detect.d.cts +0 -16
- package/lib/colors/detect.d.mts +0 -16
- package/lib/colors/detect.mjs +0 -64
- package/lib/colors/parse.cjs +0 -300
- package/lib/colors/parse.d.cts +0 -61
- package/lib/colors/parse.d.mts +0 -61
- package/lib/colors/parse.mjs +0 -297
- package/lib/colors/validate.cjs +0 -56
- package/lib/colors/validate.d.cts +0 -21
- package/lib/colors/validate.d.mts +0 -21
- package/lib/colors/validate.mjs +0 -54
- package/lib/css/parse.cjs +0 -24
- package/lib/css/parse.d.cts +0 -6
- package/lib/css/parse.d.mts +0 -6
- package/lib/css/parse.mjs +0 -22
- package/lib/css/parser/error.cjs +0 -23
- package/lib/css/parser/error.d.cts +0 -13
- package/lib/css/parser/error.d.mts +0 -13
- package/lib/css/parser/error.mjs +0 -21
- package/lib/css/parser/export.cjs +0 -37
- package/lib/css/parser/export.d.cts +0 -8
- package/lib/css/parser/export.d.mts +0 -8
- package/lib/css/parser/export.mjs +0 -35
- package/lib/css/parser/strings.cjs +0 -83
- package/lib/css/parser/strings.d.cts +0 -16
- package/lib/css/parser/strings.d.mts +0 -16
- package/lib/css/parser/strings.mjs +0 -80
- package/lib/css/parser/text.cjs +0 -114
- package/lib/css/parser/text.d.cts +0 -20
- package/lib/css/parser/text.d.mts +0 -20
- package/lib/css/parser/text.mjs +0 -109
- package/lib/css/parser/tokens.cjs +0 -206
- package/lib/css/parser/tokens.d.cts +0 -9
- package/lib/css/parser/tokens.d.mts +0 -9
- package/lib/css/parser/tokens.mjs +0 -204
- package/lib/css/parser/tree.cjs +0 -40
- package/lib/css/parser/tree.d.cts +0 -8
- package/lib/css/parser/tree.d.mts +0 -8
- package/lib/css/parser/tree.mjs +0 -38
- package/lib/css/parser/types.cjs +0 -2
- package/lib/css/parser/types.d.cts +0 -52
- package/lib/css/parser/types.d.mts +0 -52
- package/lib/css/parser/types.mjs +0 -1
- package/lib/download/api/cache.cjs +0 -91
- package/lib/download/api/cache.d.cts +0 -20
- package/lib/download/api/cache.d.mts +0 -20
- package/lib/download/api/cache.mjs +0 -86
- package/lib/download/api/config.cjs +0 -11
- package/lib/download/api/config.d.cts +0 -18
- package/lib/download/api/config.d.mts +0 -18
- package/lib/download/api/config.mjs +0 -8
- package/lib/download/api/download.cjs +0 -30
- package/lib/download/api/download.d.cts +0 -8
- package/lib/download/api/download.d.mts +0 -8
- package/lib/download/api/download.mjs +0 -24
- package/lib/download/api/index.cjs +0 -60
- package/lib/download/api/index.d.cts +0 -8
- package/lib/download/api/index.d.mts +0 -8
- package/lib/download/api/index.mjs +0 -54
- package/lib/download/api/queue.cjs +0 -104
- package/lib/download/api/queue.d.cts +0 -32
- package/lib/download/api/queue.d.mts +0 -32
- package/lib/download/api/queue.mjs +0 -101
- package/lib/download/api/types.cjs +0 -2
- package/lib/download/api/types.d.cts +0 -17
- package/lib/download/api/types.d.mts +0 -17
- package/lib/download/api/types.mjs +0 -1
- package/lib/download/git/branch.cjs +0 -19
- package/lib/download/git/branch.d.cts +0 -8
- package/lib/download/git/branch.d.mts +0 -8
- package/lib/download/git/branch.mjs +0 -17
- package/lib/download/git/hash.cjs +0 -14
- package/lib/download/git/hash.d.cts +0 -8
- package/lib/download/git/hash.d.mts +0 -8
- package/lib/download/git/hash.mjs +0 -12
- package/lib/download/git/index.cjs +0 -77
- package/lib/download/git/index.d.cts +0 -29
- package/lib/download/git/index.d.mts +0 -29
- package/lib/download/git/index.mjs +0 -75
- package/lib/download/git/reset.cjs +0 -37
- package/lib/download/git/reset.d.cts +0 -6
- package/lib/download/git/reset.d.mts +0 -6
- package/lib/download/git/reset.mjs +0 -35
- package/lib/download/github/hash.cjs +0 -31
- package/lib/download/github/hash.d.cts +0 -8
- package/lib/download/github/hash.d.mts +0 -8
- package/lib/download/github/hash.mjs +0 -29
- package/lib/download/github/index.cjs +0 -105
- package/lib/download/github/index.d.cts +0 -31
- package/lib/download/github/index.d.mts +0 -31
- package/lib/download/github/index.mjs +0 -103
- package/lib/download/github/types.cjs +0 -2
- package/lib/download/github/types.d.cts +0 -11
- package/lib/download/github/types.d.mts +0 -11
- package/lib/download/github/types.mjs +0 -1
- package/lib/download/gitlab/hash.cjs +0 -33
- package/lib/download/gitlab/hash.d.cts +0 -8
- package/lib/download/gitlab/hash.d.mts +0 -8
- package/lib/download/gitlab/hash.mjs +0 -31
- package/lib/download/gitlab/index.cjs +0 -105
- package/lib/download/gitlab/index.d.cts +0 -31
- package/lib/download/gitlab/index.d.mts +0 -31
- package/lib/download/gitlab/index.mjs +0 -103
- package/lib/download/gitlab/types.cjs +0 -5
- package/lib/download/gitlab/types.d.cts +0 -15
- package/lib/download/gitlab/types.d.mts +0 -15
- package/lib/download/gitlab/types.mjs +0 -3
- package/lib/download/helpers/untar.cjs +0 -12
- package/lib/download/helpers/untar.d.cts +0 -6
- package/lib/download/helpers/untar.d.mts +0 -6
- package/lib/download/helpers/untar.mjs +0 -10
- package/lib/download/helpers/unzip.cjs +0 -17
- package/lib/download/helpers/unzip.d.cts +0 -6
- package/lib/download/helpers/unzip.d.mts +0 -6
- package/lib/download/helpers/unzip.mjs +0 -11
- package/lib/download/index.cjs +0 -64
- package/lib/download/index.d.cts +0 -48
- package/lib/download/index.d.mts +0 -48
- package/lib/download/index.mjs +0 -62
- package/lib/download/npm/index.cjs +0 -85
- package/lib/download/npm/index.d.cts +0 -30
- package/lib/download/npm/index.d.mts +0 -30
- package/lib/download/npm/index.mjs +0 -83
- package/lib/download/npm/types.cjs +0 -2
- package/lib/download/npm/types.d.cts +0 -9
- package/lib/download/npm/types.d.mts +0 -9
- package/lib/download/npm/types.mjs +0 -1
- package/lib/download/npm/version.cjs +0 -29
- package/lib/download/npm/version.d.cts +0 -16
- package/lib/download/npm/version.d.mts +0 -16
- package/lib/download/npm/version.mjs +0 -26
- package/lib/download/types/modified.cjs +0 -2
- package/lib/download/types/modified.d.cts +0 -6
- package/lib/download/types/modified.d.mts +0 -6
- package/lib/download/types/modified.mjs +0 -1
- package/lib/download/types/sources.cjs +0 -2
- package/lib/download/types/sources.d.cts +0 -12
- package/lib/download/types/sources.d.mts +0 -12
- package/lib/download/types/sources.mjs +0 -1
- package/lib/export/directory.cjs +0 -43
- package/lib/export/directory.d.cts +0 -26
- package/lib/export/directory.d.mts +0 -26
- package/lib/export/directory.mjs +0 -41
- package/lib/export/helpers/custom-files.cjs +0 -26
- package/lib/export/helpers/custom-files.d.cts +0 -12
- package/lib/export/helpers/custom-files.d.mts +0 -12
- package/lib/export/helpers/custom-files.mjs +0 -24
- package/lib/export/helpers/prepare.cjs +0 -34
- package/lib/export/helpers/prepare.d.cts +0 -19
- package/lib/export/helpers/prepare.d.mts +0 -19
- package/lib/export/helpers/prepare.mjs +0 -31
- package/lib/export/helpers/types-version.cjs +0 -12
- package/lib/export/helpers/types-version.d.cts +0 -6
- package/lib/export/helpers/types-version.d.mts +0 -6
- package/lib/export/helpers/types-version.mjs +0 -10
- package/lib/export/icon-package.cjs +0 -56
- package/lib/export/icon-package.d.cts +0 -26
- package/lib/export/icon-package.d.mts +0 -26
- package/lib/export/icon-package.mjs +0 -54
- package/lib/export/json-package.cjs +0 -144
- package/lib/export/json-package.d.cts +0 -25
- package/lib/export/json-package.d.mts +0 -25
- package/lib/export/json-package.mjs +0 -142
- package/lib/icon-set/index.cjs +0 -720
- package/lib/icon-set/index.d.cts +0 -162
- package/lib/icon-set/index.d.mts +0 -162
- package/lib/icon-set/index.mjs +0 -716
- package/lib/icon-set/match.cjs +0 -56
- package/lib/icon-set/match.d.cts +0 -15
- package/lib/icon-set/match.d.mts +0 -15
- package/lib/icon-set/match.mjs +0 -54
- package/lib/icon-set/merge.cjs +0 -87
- package/lib/icon-set/merge.d.cts +0 -14
- package/lib/icon-set/merge.d.mts +0 -14
- package/lib/icon-set/merge.mjs +0 -85
- package/lib/icon-set/modified.cjs +0 -25
- package/lib/icon-set/modified.d.cts +0 -16
- package/lib/icon-set/modified.d.mts +0 -16
- package/lib/icon-set/modified.mjs +0 -23
- package/lib/icon-set/props.cjs +0 -16
- package/lib/icon-set/props.d.cts +0 -13
- package/lib/icon-set/props.d.mts +0 -13
- package/lib/icon-set/props.mjs +0 -13
- package/lib/icon-set/tags.cjs +0 -95
- package/lib/icon-set/tags.d.cts +0 -25
- package/lib/icon-set/tags.d.mts +0 -25
- package/lib/icon-set/tags.mjs +0 -91
- package/lib/icon-set/types.cjs +0 -2
- package/lib/icon-set/types.d.cts +0 -75
- package/lib/icon-set/types.d.mts +0 -75
- package/lib/icon-set/types.mjs +0 -1
- package/lib/import/directory.cjs +0 -169
- package/lib/import/directory.d.cts +0 -52
- package/lib/import/directory.d.mts +0 -52
- package/lib/import/directory.mjs +0 -166
- package/lib/import/figma/index.cjs +0 -115
- package/lib/import/figma/index.d.cts +0 -20
- package/lib/import/figma/index.d.mts +0 -20
- package/lib/import/figma/index.mjs +0 -113
- package/lib/import/figma/nodes.cjs +0 -90
- package/lib/import/figma/nodes.d.cts +0 -18
- package/lib/import/figma/nodes.d.mts +0 -18
- package/lib/import/figma/nodes.mjs +0 -88
- package/lib/import/figma/query.cjs +0 -260
- package/lib/import/figma/query.d.cts +0 -42
- package/lib/import/figma/query.d.mts +0 -42
- package/lib/import/figma/query.mjs +0 -256
- package/lib/import/figma/types/api.cjs +0 -2
- package/lib/import/figma/types/api.d.cts +0 -53
- package/lib/import/figma/types/api.d.mts +0 -53
- package/lib/import/figma/types/api.mjs +0 -1
- package/lib/import/figma/types/nodes.cjs +0 -2
- package/lib/import/figma/types/nodes.d.cts +0 -44
- package/lib/import/figma/types/nodes.d.mts +0 -44
- package/lib/import/figma/types/nodes.mjs +0 -1
- package/lib/import/figma/types/options.cjs +0 -2
- package/lib/import/figma/types/options.d.cts +0 -59
- package/lib/import/figma/types/options.d.mts +0 -59
- package/lib/import/figma/types/options.mjs +0 -1
- package/lib/import/figma/types/result.cjs +0 -2
- package/lib/import/figma/types/result.d.cts +0 -44
- package/lib/import/figma/types/result.d.mts +0 -44
- package/lib/import/figma/types/result.mjs +0 -1
- package/lib/index.cjs +0 -156
- package/lib/index.d.cts +0 -79
- package/lib/index.d.mts +0 -79
- package/lib/index.mjs +0 -91
- package/lib/misc/bump-version.cjs +0 -15
- package/lib/misc/bump-version.d.cts +0 -6
- package/lib/misc/bump-version.d.mts +0 -6
- package/lib/misc/bump-version.mjs +0 -13
- package/lib/misc/cheerio.cjs +0 -2
- package/lib/misc/cheerio.d.cts +0 -10
- package/lib/misc/cheerio.d.mts +0 -10
- package/lib/misc/cheerio.d.ts +0 -10
- package/lib/misc/cheerio.mjs +0 -1
- package/lib/misc/compare-dirs.cjs +0 -75
- package/lib/misc/compare-dirs.d.cts +0 -11
- package/lib/misc/compare-dirs.d.mts +0 -11
- package/lib/misc/compare-dirs.mjs +0 -73
- package/lib/misc/exec.cjs +0 -27
- package/lib/misc/exec.d.cts +0 -12
- package/lib/misc/exec.d.mts +0 -12
- package/lib/misc/exec.mjs +0 -25
- package/lib/misc/keyword.cjs +0 -20
- package/lib/misc/keyword.d.cts +0 -6
- package/lib/misc/keyword.d.mts +0 -6
- package/lib/misc/keyword.mjs +0 -18
- package/lib/misc/scan.cjs +0 -114
- package/lib/misc/scan.d.cts +0 -33
- package/lib/misc/scan.d.mts +0 -33
- package/lib/misc/scan.mjs +0 -111
- package/lib/misc/write-json.cjs +0 -9
- package/lib/misc/write-json.d.cts +0 -6
- package/lib/misc/write-json.d.mts +0 -6
- package/lib/misc/write-json.mjs +0 -7
- package/lib/optimise/figma.cjs +0 -232
- package/lib/optimise/figma.d.cts +0 -14
- package/lib/optimise/figma.d.mts +0 -14
- package/lib/optimise/figma.mjs +0 -230
- package/lib/optimise/flags.cjs +0 -256
- package/lib/optimise/flags.d.cts +0 -11
- package/lib/optimise/flags.d.mts +0 -11
- package/lib/optimise/flags.mjs +0 -254
- package/lib/optimise/global-style.cjs +0 -158
- package/lib/optimise/global-style.d.cts +0 -11
- package/lib/optimise/global-style.d.mts +0 -11
- package/lib/optimise/global-style.mjs +0 -156
- package/lib/optimise/mask.cjs +0 -110
- package/lib/optimise/mask.d.cts +0 -24
- package/lib/optimise/mask.d.mts +0 -24
- package/lib/optimise/mask.mjs +0 -108
- package/lib/optimise/origin.cjs +0 -23
- package/lib/optimise/origin.d.cts +0 -11
- package/lib/optimise/origin.d.mts +0 -11
- package/lib/optimise/origin.mjs +0 -21
- package/lib/optimise/scale.cjs +0 -27
- package/lib/optimise/scale.d.cts +0 -11
- package/lib/optimise/scale.d.mts +0 -11
- package/lib/optimise/scale.mjs +0 -25
- package/lib/optimise/svgo.cjs +0 -107
- package/lib/optimise/svgo.d.cts +0 -37
- package/lib/optimise/svgo.d.mts +0 -37
- package/lib/optimise/svgo.mjs +0 -104
- package/lib/optimise/unwrap.cjs +0 -31
- package/lib/optimise/unwrap.d.cts +0 -11
- package/lib/optimise/unwrap.d.mts +0 -11
- package/lib/optimise/unwrap.mjs +0 -29
- package/lib/svg/analyse/error.cjs +0 -16
- package/lib/svg/analyse/error.d.cts +0 -11
- package/lib/svg/analyse/error.d.mts +0 -11
- package/lib/svg/analyse/error.mjs +0 -14
- package/lib/svg/analyse/types.cjs +0 -2
- package/lib/svg/analyse/types.d.cts +0 -93
- package/lib/svg/analyse/types.d.mts +0 -93
- package/lib/svg/analyse/types.mjs +0 -1
- package/lib/svg/analyse.cjs +0 -303
- package/lib/svg/analyse.d.cts +0 -16
- package/lib/svg/analyse.d.mts +0 -16
- package/lib/svg/analyse.mjs +0 -301
- package/lib/svg/cleanup/attribs.cjs +0 -39
- package/lib/svg/cleanup/attribs.d.cts +0 -11
- package/lib/svg/cleanup/attribs.d.mts +0 -11
- package/lib/svg/cleanup/attribs.mjs +0 -37
- package/lib/svg/cleanup/bad-tags.cjs +0 -69
- package/lib/svg/cleanup/bad-tags.d.cts +0 -17
- package/lib/svg/cleanup/bad-tags.d.mts +0 -17
- package/lib/svg/cleanup/bad-tags.mjs +0 -67
- package/lib/svg/cleanup/inline-style.cjs +0 -97
- package/lib/svg/cleanup/inline-style.d.cts +0 -11
- package/lib/svg/cleanup/inline-style.d.mts +0 -11
- package/lib/svg/cleanup/inline-style.mjs +0 -95
- package/lib/svg/cleanup/root-style.cjs +0 -34
- package/lib/svg/cleanup/root-style.d.cts +0 -17
- package/lib/svg/cleanup/root-style.d.mts +0 -17
- package/lib/svg/cleanup/root-style.mjs +0 -32
- package/lib/svg/cleanup/root-svg.cjs +0 -84
- package/lib/svg/cleanup/root-svg.d.cts +0 -11
- package/lib/svg/cleanup/root-svg.d.mts +0 -11
- package/lib/svg/cleanup/root-svg.mjs +0 -82
- package/lib/svg/cleanup/svgo-style.cjs +0 -43
- package/lib/svg/cleanup/svgo-style.d.cts +0 -11
- package/lib/svg/cleanup/svgo-style.d.mts +0 -11
- package/lib/svg/cleanup/svgo-style.mjs +0 -41
- package/lib/svg/cleanup.cjs +0 -33
- package/lib/svg/cleanup.d.cts +0 -16
- package/lib/svg/cleanup.d.mts +0 -16
- package/lib/svg/cleanup.mjs +0 -31
- package/lib/svg/data/attributes.cjs +0 -373
- package/lib/svg/data/attributes.d.cts +0 -77
- package/lib/svg/data/attributes.d.mts +0 -77
- package/lib/svg/data/attributes.mjs +0 -346
- package/lib/svg/data/tags.cjs +0 -141
- package/lib/svg/data/tags.d.cts +0 -95
- package/lib/svg/data/tags.d.mts +0 -95
- package/lib/svg/data/tags.mjs +0 -117
- package/lib/svg/index.cjs +0 -178
- package/lib/svg/index.d.cts +0 -52
- package/lib/svg/index.d.mts +0 -52
- package/lib/svg/index.mjs +0 -162
- package/lib/svg/parse-style.cjs +0 -243
- package/lib/svg/parse-style.d.cts +0 -59
- package/lib/svg/parse-style.d.mts +0 -59
- package/lib/svg/parse-style.mjs +0 -241
- package/lib/svg/parse.cjs +0 -46
- package/lib/svg/parse.d.cts +0 -31
- package/lib/svg/parse.d.mts +0 -31
- package/lib/svg/parse.mjs +0 -44
package/lib/colors/attribs.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Color } from
|
|
2
|
-
|
|
1
|
+
import { Color } from "@iconify/utils/lib/colors/types";
|
|
3
2
|
/**
|
|
4
3
|
* Color attributes
|
|
5
4
|
*/
|
|
@@ -23,5 +22,4 @@ declare const defaultColorValues: Record<ColorAttributes, Color>;
|
|
|
23
22
|
* Parent elements are not checked for these tags!
|
|
24
23
|
*/
|
|
25
24
|
declare const allowDefaultColorValue: Partial<Record<ColorAttributes, string | true>>;
|
|
26
|
-
|
|
27
|
-
export { type ColorAttributes, type CommonColorAttributes, type ShapeColorAttributes, type SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
|
|
25
|
+
export { ColorAttributes, CommonColorAttributes, ShapeColorAttributes, SpecialColorAttributes, allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const commonColorAttributes = ["color"];
|
|
2
|
+
const shapeColorAttributes = ["fill", "stroke"];
|
|
3
|
+
const specialColorAttributes = ["stop-color", "flood-color"];
|
|
4
|
+
/**
|
|
5
|
+
* Default values
|
|
6
|
+
*/
|
|
7
|
+
const defaultBlackColor = {
|
|
8
|
+
type: "rgb",
|
|
9
|
+
r: 0,
|
|
10
|
+
g: 0,
|
|
11
|
+
b: 0,
|
|
12
|
+
alpha: 1
|
|
13
|
+
};
|
|
14
|
+
const defaultColorValues = {
|
|
15
|
+
"color": { type: "current" },
|
|
16
|
+
"fill": defaultBlackColor,
|
|
17
|
+
"stroke": { type: "none" },
|
|
18
|
+
"stop-color": defaultBlackColor,
|
|
19
|
+
"flood-color": defaultBlackColor
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Ignore default color for some tags:
|
|
23
|
+
* - If value is true, allow default color
|
|
24
|
+
* - If value is attribute name, allow default color if attribute is set
|
|
25
|
+
*
|
|
26
|
+
* Parent elements are not checked for these tags!
|
|
27
|
+
*/
|
|
28
|
+
const allowDefaultColorValue = {
|
|
29
|
+
"stop-color": true,
|
|
30
|
+
"flood-color": "flood-opacity"
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { allowDefaultColorValue, commonColorAttributes, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes };
|
package/lib/colors/detect.d.ts
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import { IconSet } from
|
|
2
|
-
import '@iconify/types';
|
|
3
|
-
import '@iconify/utils/lib/customisations/defaults';
|
|
4
|
-
import '../icon-set/types.js';
|
|
5
|
-
import '../svg/index.js';
|
|
6
|
-
import 'cheerio';
|
|
7
|
-
import '@iconify/utils/lib/icon-set/tree';
|
|
8
|
-
|
|
1
|
+
import { IconSet } from "../icon-set/index.js";
|
|
9
2
|
/**
|
|
10
3
|
* Detect palette
|
|
11
4
|
*
|
|
12
5
|
* Returns null if icon set has mixed colors
|
|
13
6
|
*/
|
|
14
7
|
declare function detectIconSetPalette(iconSet: IconSet): boolean | null;
|
|
15
|
-
|
|
16
|
-
export { detectIconSetPalette };
|
|
8
|
+
export { detectIconSetPalette };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isEmptyColor, parseColors } from "./parse.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Detect palette
|
|
5
|
+
*
|
|
6
|
+
* Returns null if icon set has mixed colors
|
|
7
|
+
*/
|
|
8
|
+
function detectIconSetPalette(iconSet) {
|
|
9
|
+
let palette;
|
|
10
|
+
iconSet.forEachSync((name) => {
|
|
11
|
+
if (palette === null) return;
|
|
12
|
+
const svg = iconSet.toSVG(name);
|
|
13
|
+
if (!svg) return;
|
|
14
|
+
let iconPalette;
|
|
15
|
+
parseColors(svg, { callback: (attr, colorStr, color) => {
|
|
16
|
+
if (!color) {
|
|
17
|
+
iconPalette = null;
|
|
18
|
+
return colorStr;
|
|
19
|
+
}
|
|
20
|
+
if (iconPalette === null || isEmptyColor(color)) return color;
|
|
21
|
+
const isColor = color.type !== "current";
|
|
22
|
+
if (iconPalette === void 0) {
|
|
23
|
+
iconPalette = isColor;
|
|
24
|
+
return color;
|
|
25
|
+
}
|
|
26
|
+
if (iconPalette !== isColor) iconPalette = null;
|
|
27
|
+
return color;
|
|
28
|
+
} });
|
|
29
|
+
if (iconPalette === void 0) iconPalette = null;
|
|
30
|
+
if (palette === void 0) palette = iconPalette;
|
|
31
|
+
else if (palette !== iconPalette) palette = null;
|
|
32
|
+
}, ["icon"]);
|
|
33
|
+
return palette ?? null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { detectIconSetPalette };
|
package/lib/colors/parse.d.ts
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SVG } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import 'cheerio';
|
|
6
|
-
import '@iconify/types';
|
|
7
|
-
import '@iconify/utils/lib/customisations/defaults';
|
|
8
|
-
import '../misc/cheerio.js';
|
|
9
|
-
import 'domhandler';
|
|
10
|
-
|
|
1
|
+
import { ColorAttributes } from "./attribs.js";
|
|
2
|
+
import { SVG } from "../svg/index.js";
|
|
3
|
+
import { AnalyseSVGStructureOptions, AnalyseSVGStructureResult, ElementsTreeItem, ExtendedTagElement } from "../svg/analyse/types.js";
|
|
4
|
+
import { Color } from "@iconify/utils/lib/colors/types";
|
|
11
5
|
/**
|
|
12
6
|
* Result
|
|
13
7
|
*/
|
|
14
8
|
interface FindColorsResult {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
colors: (Color | string)[];
|
|
10
|
+
hasUnsetColor: boolean;
|
|
11
|
+
hasGlobalStyle: boolean;
|
|
18
12
|
}
|
|
19
13
|
/**
|
|
20
14
|
* Callback to call for each found color
|
|
@@ -35,16 +29,16 @@ type ParseColorOptionsDefaultColorCallback = (prop: string, item: ExtendedTagEle
|
|
|
35
29
|
* Options
|
|
36
30
|
*/
|
|
37
31
|
interface ParseColorsOptions extends AnalyseSVGStructureOptions {
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
callback?: ParseColorsCallback;
|
|
33
|
+
defaultColor?: Color | string | ParseColorOptionsDefaultColorCallback;
|
|
40
34
|
}
|
|
41
35
|
/**
|
|
42
36
|
* Extend properties for element
|
|
43
37
|
*/
|
|
44
38
|
type ItemColors = Partial<Record<ColorAttributes, Color | string>>;
|
|
45
39
|
interface ExtendedTagElementWithColors extends ExtendedTagElement {
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
_colors?: ItemColors;
|
|
41
|
+
_removed?: boolean;
|
|
48
42
|
}
|
|
49
43
|
/**
|
|
50
44
|
* Find colors in icon
|
|
@@ -57,5 +51,4 @@ declare function parseColors(svg: SVG, options?: ParseColorsOptions): FindColors
|
|
|
57
51
|
* Check if color is empty, such as 'none' or 'transparent'
|
|
58
52
|
*/
|
|
59
53
|
declare function isEmptyColor(color: Color): boolean;
|
|
60
|
-
|
|
61
|
-
export { type ExtendedTagElementWithColors, type FindColorsResult, type ParseColorOptionsDefaultColorCallback, type ParseColorsOptions, isEmptyColor, parseColors };
|
|
54
|
+
export { ExtendedTagElementWithColors, FindColorsResult, ParseColorOptionsDefaultColorCallback, ParseColorsOptions, isEmptyColor, parseColors };
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { parseSVGStyle } from "../svg/parse-style.js";
|
|
2
|
+
import { animateTags, shapeTags } from "../svg/data/tags.js";
|
|
3
|
+
import { tagSpecificPresentationalAttributes } from "../svg/data/attributes.js";
|
|
4
|
+
import { analyseSVGStructure } from "../svg/analyse.js";
|
|
5
|
+
import { allowDefaultColorValue, defaultBlackColor, defaultColorValues, shapeColorAttributes, specialColorAttributes } from "./attribs.js";
|
|
6
|
+
import { colorToString, compareColors, stringToColor } from "@iconify/utils/lib/colors";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Properties to check
|
|
10
|
+
*/
|
|
11
|
+
const propsToCheck = Object.keys(defaultColorValues);
|
|
12
|
+
const animatePropsToCheck = [
|
|
13
|
+
"from",
|
|
14
|
+
"to",
|
|
15
|
+
"values"
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Find colors in icon
|
|
19
|
+
*
|
|
20
|
+
* Clean up icon before running this function to convert style to attributes using
|
|
21
|
+
* cleanupInlineStyle() or cleanupSVG(), otherwise results might be inaccurate
|
|
22
|
+
*/
|
|
23
|
+
function parseColors(svg, options = {}) {
|
|
24
|
+
const result = {
|
|
25
|
+
colors: [],
|
|
26
|
+
hasUnsetColor: false,
|
|
27
|
+
hasGlobalStyle: false
|
|
28
|
+
};
|
|
29
|
+
const defaultColor = typeof options.defaultColor === "string" ? stringToColor(options.defaultColor) : options.defaultColor;
|
|
30
|
+
/**
|
|
31
|
+
* Find matching color in results
|
|
32
|
+
*/
|
|
33
|
+
function findColor(color, add = false) {
|
|
34
|
+
const isString = typeof color === "string";
|
|
35
|
+
for (let i = 0; i < result.colors.length; i++) {
|
|
36
|
+
const item = result.colors[i];
|
|
37
|
+
if (item === color) return item;
|
|
38
|
+
if (!isString && typeof item !== "string" && compareColors(item, color)) return item;
|
|
39
|
+
}
|
|
40
|
+
if (add) {
|
|
41
|
+
result.colors.push(color);
|
|
42
|
+
return color;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Add color to item and to results
|
|
48
|
+
*/
|
|
49
|
+
function addColorToItem(prop, color, item, add = true) {
|
|
50
|
+
const addedColor = findColor(color, add !== false);
|
|
51
|
+
if (item) {
|
|
52
|
+
const itemColors = item._colors || (item._colors = {});
|
|
53
|
+
itemColors[prop] = addedColor === null ? color : addedColor;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get element color
|
|
58
|
+
*/
|
|
59
|
+
function getElementColor(prop, item, elements$1) {
|
|
60
|
+
function find(prop$1) {
|
|
61
|
+
let currentItem = item;
|
|
62
|
+
const allowDefaultColor = allowDefaultColorValue[prop$1];
|
|
63
|
+
while (currentItem) {
|
|
64
|
+
const element = elements$1.get(currentItem.index);
|
|
65
|
+
const color = element._colors?.[prop$1];
|
|
66
|
+
if (color !== void 0) return color;
|
|
67
|
+
if (allowDefaultColor) {
|
|
68
|
+
if (allowDefaultColor === true || element.attribs[allowDefaultColor]) return null;
|
|
69
|
+
}
|
|
70
|
+
currentItem = currentItem.parent;
|
|
71
|
+
if (currentItem?.usedAsMask) return defaultColorValues[prop$1];
|
|
72
|
+
}
|
|
73
|
+
return defaultColorValues[prop$1];
|
|
74
|
+
}
|
|
75
|
+
let propColor = find(prop);
|
|
76
|
+
if (propColor !== null && typeof propColor === "object" && propColor.type === "current" && prop !== "color") propColor = find("color");
|
|
77
|
+
return propColor;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Change color
|
|
81
|
+
*/
|
|
82
|
+
function checkColor(prop, value, item) {
|
|
83
|
+
switch (value.trim().toLowerCase()) {
|
|
84
|
+
case "":
|
|
85
|
+
case "inherit": return;
|
|
86
|
+
}
|
|
87
|
+
const parsedColor = stringToColor(value);
|
|
88
|
+
const defaultValue = parsedColor || value;
|
|
89
|
+
if (parsedColor?.type === "function" && parsedColor.func === "url") {
|
|
90
|
+
addColorToItem(prop, defaultValue, item, false);
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
if (!options.callback) {
|
|
94
|
+
addColorToItem(prop, defaultValue, item);
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
const callbackResult = options.callback(prop, value, parsedColor, item?.tag, item);
|
|
98
|
+
if (callbackResult instanceof Promise) throw new Error("parseColors does not support async callbacks");
|
|
99
|
+
switch (callbackResult) {
|
|
100
|
+
case "remove": return item ? callbackResult : void 0;
|
|
101
|
+
case "unset": return;
|
|
102
|
+
}
|
|
103
|
+
if (callbackResult === value || parsedColor && callbackResult === parsedColor) {
|
|
104
|
+
addColorToItem(prop, defaultValue, item);
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
if (typeof callbackResult === "string") {
|
|
108
|
+
addColorToItem(prop, stringToColor(callbackResult) || callbackResult, item);
|
|
109
|
+
return callbackResult;
|
|
110
|
+
}
|
|
111
|
+
const newValue = colorToString(callbackResult);
|
|
112
|
+
addColorToItem(prop, callbackResult, item);
|
|
113
|
+
return newValue;
|
|
114
|
+
}
|
|
115
|
+
parseSVGStyle(svg, (item) => {
|
|
116
|
+
const prop = item.prop;
|
|
117
|
+
const value = item.value;
|
|
118
|
+
if (!propsToCheck.includes(prop)) return value;
|
|
119
|
+
const newValue = checkColor(prop, value);
|
|
120
|
+
if (newValue === void 0) return newValue;
|
|
121
|
+
if (item.type === "global") result.hasGlobalStyle = true;
|
|
122
|
+
return newValue;
|
|
123
|
+
});
|
|
124
|
+
const iconData = analyseSVGStructure(svg, options);
|
|
125
|
+
const { elements, tree } = iconData;
|
|
126
|
+
const removedElements = /* @__PURE__ */ new Set();
|
|
127
|
+
const parsedElements = /* @__PURE__ */ new Set();
|
|
128
|
+
function removeElement(index, element) {
|
|
129
|
+
function removeChildren(element$1) {
|
|
130
|
+
element$1.children.forEach((item) => {
|
|
131
|
+
if (item.type !== "tag") return;
|
|
132
|
+
const element$2 = item;
|
|
133
|
+
const index$1 = element$2._index;
|
|
134
|
+
if (index$1 && !removedElements.has(index$1)) {
|
|
135
|
+
element$2._removed = true;
|
|
136
|
+
removedElements.add(index$1);
|
|
137
|
+
removeChildren(element$2);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
element._removed = true;
|
|
142
|
+
removedElements.add(index);
|
|
143
|
+
removeChildren(element);
|
|
144
|
+
}
|
|
145
|
+
function parseTreeItem(item) {
|
|
146
|
+
const index = item.index;
|
|
147
|
+
if (removedElements.has(index) || parsedElements.has(index)) return;
|
|
148
|
+
parsedElements.add(index);
|
|
149
|
+
const element = elements.get(index);
|
|
150
|
+
if (element._removed) return;
|
|
151
|
+
const { tag, attribs } = element;
|
|
152
|
+
if (item.parent) {
|
|
153
|
+
const parentIndex = item.parent.index;
|
|
154
|
+
const parentElement = elements.get(parentIndex);
|
|
155
|
+
if (parentElement._colors) element._colors = { ...parentElement._colors };
|
|
156
|
+
}
|
|
157
|
+
for (let i = 0; i < propsToCheck.length; i++) {
|
|
158
|
+
const prop = propsToCheck[i];
|
|
159
|
+
if (prop === "fill" && animateTags.has(tag)) continue;
|
|
160
|
+
const value = attribs[prop];
|
|
161
|
+
if (typeof value === "string") {
|
|
162
|
+
const newValue = checkColor(prop, value, element);
|
|
163
|
+
if (newValue !== value) if (newValue === void 0) {
|
|
164
|
+
delete attribs[prop];
|
|
165
|
+
if (element._colors) delete element._colors[prop];
|
|
166
|
+
} else if (newValue === "remove") {
|
|
167
|
+
removeElement(index, element);
|
|
168
|
+
return;
|
|
169
|
+
} else attribs[prop] = newValue;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (animateTags.has(tag)) {
|
|
173
|
+
const attr = attribs.attributeName;
|
|
174
|
+
if (propsToCheck.includes(attr)) for (let i = 0; i < animatePropsToCheck.length; i++) {
|
|
175
|
+
const elementProp = animatePropsToCheck[i];
|
|
176
|
+
const fullValue = attribs[elementProp];
|
|
177
|
+
if (typeof fullValue !== "string") continue;
|
|
178
|
+
const splitValues = fullValue.split(";");
|
|
179
|
+
let updatedValues = false;
|
|
180
|
+
for (let j = 0; j < splitValues.length; j++) {
|
|
181
|
+
const value = splitValues[j];
|
|
182
|
+
if (value !== void 0) {
|
|
183
|
+
const newValue = checkColor(elementProp, value);
|
|
184
|
+
if (newValue !== value) {
|
|
185
|
+
updatedValues = true;
|
|
186
|
+
splitValues[j] = typeof newValue === "string" ? newValue : "";
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (updatedValues) attribs[elementProp] = splitValues.join(";");
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (!result.hasGlobalStyle) {
|
|
194
|
+
let requiredProps;
|
|
195
|
+
if (shapeTags.has(tag)) requiredProps = shapeColorAttributes;
|
|
196
|
+
specialColorAttributes.forEach((attr) => {
|
|
197
|
+
if (tagSpecificPresentationalAttributes[tag]?.has(attr)) requiredProps = [attr];
|
|
198
|
+
});
|
|
199
|
+
if (requiredProps) {
|
|
200
|
+
const itemColors = element._colors || (element._colors = {});
|
|
201
|
+
for (let i = 0; i < requiredProps.length; i++) {
|
|
202
|
+
const prop = requiredProps[i];
|
|
203
|
+
if (getElementColor(prop, item, elements) === defaultBlackColor) if (defaultColor) {
|
|
204
|
+
const defaultColorValue = typeof defaultColor === "function" ? defaultColor(prop, element, item, iconData) : defaultColor;
|
|
205
|
+
findColor(defaultColorValue, true);
|
|
206
|
+
attribs[prop] = colorToString(defaultColorValue);
|
|
207
|
+
itemColors[prop] = defaultColorValue;
|
|
208
|
+
} else result.hasUnsetColor = true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (let i = 0; i < item.children.length; i++) {
|
|
213
|
+
const childItem = item.children[i];
|
|
214
|
+
if (!childItem.usedAsMask) parseTreeItem(childItem);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
parseTreeItem(tree);
|
|
218
|
+
function removeElements(node, parent) {
|
|
219
|
+
if (parent) {
|
|
220
|
+
const index = node.index;
|
|
221
|
+
if (removedElements.has(index) || elements.get(index)._removed) {
|
|
222
|
+
parent.children = parent.children.filter((item) => item.index !== index);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
node.children.forEach((child) => {
|
|
227
|
+
removeElements(child, node);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
removeElements(tree);
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Check if color is empty, such as 'none' or 'transparent'
|
|
235
|
+
*/
|
|
236
|
+
function isEmptyColor(color) {
|
|
237
|
+
const type = color.type;
|
|
238
|
+
return type === "none" || type === "transparent";
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export { isEmptyColor, parseColors };
|
package/lib/colors/validate.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
import { SVG } from
|
|
2
|
-
import {
|
|
3
|
-
import 'cheerio';
|
|
4
|
-
import '@iconify/types';
|
|
5
|
-
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
-
import '@iconify/utils/lib/colors/types';
|
|
7
|
-
import './attribs.js';
|
|
8
|
-
import '../svg/analyse/types.js';
|
|
9
|
-
import '../misc/cheerio.js';
|
|
10
|
-
import 'domhandler';
|
|
11
|
-
|
|
1
|
+
import { SVG } from "../svg/index.js";
|
|
2
|
+
import { FindColorsResult, ParseColorsOptions } from "./parse.js";
|
|
12
3
|
/**
|
|
13
4
|
* Validate colors in icon
|
|
14
5
|
*
|
|
@@ -17,5 +8,4 @@ import 'domhandler';
|
|
|
17
8
|
* Throws exception on error
|
|
18
9
|
*/
|
|
19
10
|
declare function validateColors(svg: SVG, expectMonotone: boolean, options?: ParseColorsOptions): FindColorsResult;
|
|
20
|
-
|
|
21
|
-
export { validateColors };
|
|
11
|
+
export { validateColors };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { parseColors } from "./parse.js";
|
|
2
|
+
import { colorToString } from "@iconify/utils/lib/colors";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Validate colors in icon
|
|
6
|
+
*
|
|
7
|
+
* If icon is monotone,
|
|
8
|
+
*
|
|
9
|
+
* Throws exception on error
|
|
10
|
+
*/
|
|
11
|
+
function validateColors(svg, expectMonotone, options) {
|
|
12
|
+
const palette = parseColors(svg, options);
|
|
13
|
+
palette.colors.forEach((color) => {
|
|
14
|
+
if (typeof color === "string") throw new Error("Unexpected color: " + color);
|
|
15
|
+
switch (color.type) {
|
|
16
|
+
case "none":
|
|
17
|
+
case "transparent": return;
|
|
18
|
+
case "current":
|
|
19
|
+
if (!expectMonotone) throw new Error("Unexpected color: " + colorToString(color));
|
|
20
|
+
return;
|
|
21
|
+
case "rgb":
|
|
22
|
+
case "hsl":
|
|
23
|
+
if (expectMonotone) throw new Error("Unexpected color: " + colorToString(color));
|
|
24
|
+
return;
|
|
25
|
+
default: if (color.type !== "function" || color.func !== "url") throw new Error("Unexpected color: " + colorToString(color));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return palette;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { validateColors };
|
package/lib/css/parse.d.ts
CHANGED
package/lib/css/parse.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getTokens } from "./parser/tokens.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Parse inline style
|
|
5
|
+
*/
|
|
6
|
+
function parseInlineStyle(style) {
|
|
7
|
+
const tokens = getTokens(style);
|
|
8
|
+
if (!(tokens instanceof Array)) return null;
|
|
9
|
+
const results = Object.create(null);
|
|
10
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
11
|
+
const token = tokens[i];
|
|
12
|
+
if (token.type !== "rule") return null;
|
|
13
|
+
results[token.prop] = token.value;
|
|
14
|
+
}
|
|
15
|
+
return results;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { parseInlineStyle };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
interface StyleParseError {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
type: 'style-parse-error';
|
|
3
|
+
message: string;
|
|
4
|
+
code: string;
|
|
5
|
+
index?: number;
|
|
6
|
+
fullMessage: string;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Create error message
|
|
10
10
|
*/
|
|
11
11
|
declare function styleParseError(message: string, code: string, index?: number): StyleParseError;
|
|
12
|
-
|
|
13
|
-
export { type StyleParseError, styleParseError };
|
|
12
|
+
export { StyleParseError, styleParseError };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create error message
|
|
3
|
+
*/
|
|
4
|
+
function styleParseError(message, code, index) {
|
|
5
|
+
let fullMessage = message;
|
|
6
|
+
if (typeof index === "number" && index !== -1) {
|
|
7
|
+
const start = index;
|
|
8
|
+
const remaining = code.slice(index) + "!";
|
|
9
|
+
const trimmed = remaining.trim();
|
|
10
|
+
const end = start + remaining.length - trimmed.length;
|
|
11
|
+
const code2 = code.slice(0, end);
|
|
12
|
+
const line = code2.length - code2.replace(/\n/g, "").length + 1;
|
|
13
|
+
fullMessage = message + " on line " + line.toString();
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
type: "style-parse-error",
|
|
17
|
+
message,
|
|
18
|
+
code,
|
|
19
|
+
index,
|
|
20
|
+
fullMessage
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { styleParseError };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const tab = " ";
|
|
2
|
+
const nl = "\n";
|
|
3
|
+
/**
|
|
4
|
+
* Convert tokens tree to string
|
|
5
|
+
*/
|
|
6
|
+
function tokensToString(tree) {
|
|
7
|
+
let compact = true;
|
|
8
|
+
for (let i = 0; i < tree.length; i++) if (tree[i].type !== "rule") {
|
|
9
|
+
compact = false;
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
return tree.map((token) => {
|
|
13
|
+
return parseToken(token, compact, 0);
|
|
14
|
+
}).join("");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Old code
|
|
18
|
+
*/
|
|
19
|
+
function parseToken(token, compact, depth) {
|
|
20
|
+
let content;
|
|
21
|
+
switch (token.type) {
|
|
22
|
+
case "rule": return (compact ? "" : tab.repeat(depth)) + token.prop + (compact ? ":" : ": ") + token.value + ";" + (compact ? "" : nl);
|
|
23
|
+
case "at-rule":
|
|
24
|
+
content = `@${token.rule} ${token.value}`.trim();
|
|
25
|
+
break;
|
|
26
|
+
case "selector": content = token.selectors.join(compact ? "," : ", ");
|
|
27
|
+
}
|
|
28
|
+
const children = token.children.map((item) => {
|
|
29
|
+
return parseToken(item, compact, depth + 1);
|
|
30
|
+
});
|
|
31
|
+
return (compact ? "" : tab.repeat(depth)) + content + (compact ? "{" : " {" + nl) + children.join("") + (compact ? "}" : tab.repeat(depth) + "}\n");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { tokensToString };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { StyleParseError } from
|
|
2
|
-
|
|
1
|
+
import { StyleParseError } from "./error.js";
|
|
3
2
|
/**
|
|
4
3
|
* Find end of quoted string
|
|
5
4
|
*
|
|
@@ -12,5 +11,4 @@ declare function findEndOfQuotedString(code: string, quote: string, start: numbe
|
|
|
12
11
|
* Returns index of character after end of URL
|
|
13
12
|
*/
|
|
14
13
|
declare function findEndOfURL(code: string, start: number): number | StyleParseError;
|
|
15
|
-
|
|
16
|
-
export { findEndOfQuotedString, findEndOfURL };
|
|
14
|
+
export { findEndOfQuotedString, findEndOfURL };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { styleParseError } from "./error.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Find end of quoted string
|
|
5
|
+
*
|
|
6
|
+
* Returns index of character after quote
|
|
7
|
+
*/
|
|
8
|
+
function findEndOfQuotedString(code, quote, start) {
|
|
9
|
+
let nextEscape = code.indexOf("\\", start + 1);
|
|
10
|
+
let end = code.indexOf(quote, start + 1);
|
|
11
|
+
if (end === -1) return null;
|
|
12
|
+
while (nextEscape !== -1 && nextEscape < end) {
|
|
13
|
+
if (end === nextEscape + 1) {
|
|
14
|
+
end = code.indexOf(quote, end + 1);
|
|
15
|
+
if (end === -1) return null;
|
|
16
|
+
}
|
|
17
|
+
nextEscape = code.indexOf("\\", nextEscape + 2);
|
|
18
|
+
}
|
|
19
|
+
return end + 1;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Find end of url
|
|
23
|
+
*
|
|
24
|
+
* Returns index of character after end of URL
|
|
25
|
+
*/
|
|
26
|
+
function findEndOfURL(code, start) {
|
|
27
|
+
let index = (start || 0) + 4;
|
|
28
|
+
const length = code.length;
|
|
29
|
+
while (true) {
|
|
30
|
+
if (index >= length) return styleParseError("Cannot find end of URL", code, start);
|
|
31
|
+
let next = code.charAt(index);
|
|
32
|
+
switch (next) {
|
|
33
|
+
case "\"":
|
|
34
|
+
case "'": {
|
|
35
|
+
let end = findEndOfQuotedString(code, next, index);
|
|
36
|
+
if (end === null) return styleParseError("Incomplete string", code, index);
|
|
37
|
+
end = code.indexOf(")", end);
|
|
38
|
+
return end === -1 ? styleParseError("Cannot find end of URL", code, start) : end + 1;
|
|
39
|
+
}
|
|
40
|
+
case " ":
|
|
41
|
+
case " ":
|
|
42
|
+
case "\r":
|
|
43
|
+
case "\n":
|
|
44
|
+
index++;
|
|
45
|
+
break;
|
|
46
|
+
default: while (true) {
|
|
47
|
+
switch (next) {
|
|
48
|
+
case ")": return index + 1;
|
|
49
|
+
case "\"":
|
|
50
|
+
case "'":
|
|
51
|
+
case "(":
|
|
52
|
+
case " ":
|
|
53
|
+
case " ":
|
|
54
|
+
case "\r":
|
|
55
|
+
case "\n": return styleParseError("Invalid URL", code, start);
|
|
56
|
+
default: if (code.charCodeAt(index) < 32) return styleParseError("Invalid URL", code, start);
|
|
57
|
+
}
|
|
58
|
+
index++;
|
|
59
|
+
if (index >= length) return styleParseError("Cannot find end of URL", code, start);
|
|
60
|
+
next = code.charAt(index);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { findEndOfQuotedString, findEndOfURL };
|
package/lib/css/parser/text.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { CSSRuleToken, CSSTokenWithSelector, TextToken } from "./types.js";
|
|
3
2
|
/**
|
|
4
3
|
* Merge text tokens to string
|
|
5
4
|
*/
|
|
@@ -16,5 +15,4 @@ declare function textTokensToRule(tokens: TextToken[]): CSSRuleToken | null;
|
|
|
16
15
|
* Create at-rule or selector token from text tokens
|
|
17
16
|
*/
|
|
18
17
|
declare function textTokensToSelector(tokens: TextToken[]): CSSTokenWithSelector | null;
|
|
19
|
-
|
|
20
|
-
export { getSelectors, mergeTextTokens, textTokensToRule, textTokensToSelector };
|
|
18
|
+
export { getSelectors, mergeTextTokens, textTokensToRule, textTokensToSelector };
|