@visactor/vchart 1.5.2-alpha.0 → 1.5.2-hotfix.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/build/es5/index.js +1 -1
- package/build/index.js +415 -360
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base-chart.d.ts +4 -6
- package/cjs/chart/base-chart.js +44 -45
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/gauge/gauge.js +3 -2
- package/cjs/chart/gauge/gauge.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +3 -3
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/polar/progress-like.js +9 -22
- package/cjs/chart/polar/progress-like.js.map +1 -1
- package/cjs/chart/sequence/sequence.js +0 -1
- package/cjs/chart/sequence/sequence.js.map +1 -1
- package/cjs/component/axis/util.d.ts +3 -3
- package/cjs/component/axis/util.js +14 -10
- package/cjs/component/axis/util.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +1 -2
- package/cjs/component/base/base-component.js +2 -39
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/base/util.d.ts +2 -3
- package/cjs/component/base/util.js +16 -19
- package/cjs/component/base/util.js.map +1 -1
- package/cjs/component/brush/brush.js +1 -1
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/util.d.ts +3 -3
- package/cjs/component/crosshair/util.js +7 -5
- package/cjs/component/crosshair/util.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +4 -0
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +2 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/index.js +2 -1
- package/cjs/component/tooltip/handler/base.js +6 -6
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.d.ts +3 -3
- package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/cjs/component/util.d.ts +4 -0
- package/cjs/component/util.js +14 -0
- package/cjs/component/util.js.map +1 -0
- package/cjs/constant/correlation.js +1 -2
- package/cjs/constant/word-cloud.js +2 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +1 -2
- package/cjs/core/interface.d.ts +8 -1
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +3 -2
- package/cjs/core/vchart.js +36 -30
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/aggregation.js.map +1 -1
- package/cjs/interaction/config.js +1 -2
- package/cjs/interaction/dimension-trigger.js +2 -1
- package/cjs/layout/util.js +1 -1
- package/cjs/mark/base/base-mark.js +4 -5
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/model/base-model.d.ts +4 -2
- package/cjs/model/base-model.js +51 -11
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +10 -3
- package/cjs/model/interface.js.map +1 -1
- package/cjs/series/area/area.d.ts +1 -1
- package/cjs/series/area/area.js +1 -1
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +1 -1
- package/cjs/series/bar/bar.js +1 -1
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +4 -3
- package/cjs/series/base/base-series.js +12 -46
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/dot/dot.js +3 -4
- package/cjs/series/dot/dot.js.map +1 -1
- package/cjs/series/gauge/gauge-pointer.d.ts +1 -0
- package/cjs/series/gauge/gauge-pointer.js +1 -1
- package/cjs/series/gauge/gauge-pointer.js.map +1 -1
- package/cjs/series/geo/geo.d.ts +1 -1
- package/cjs/series/geo/geo.js +2 -2
- package/cjs/series/geo/geo.js.map +1 -1
- package/cjs/series/heatmap/heatmap.js +1 -1
- package/cjs/series/heatmap/heatmap.js.map +1 -1
- package/cjs/series/interface/theme.d.ts +2 -0
- package/cjs/series/interface/theme.js +3 -2
- package/cjs/series/interface/theme.js.map +1 -1
- package/cjs/series/link/link.js +1 -1
- package/cjs/series/link/link.js.map +1 -1
- package/cjs/series/map/map.d.ts +1 -1
- package/cjs/series/map/map.js +3 -3
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/map/tooltip-helper.js +2 -2
- package/cjs/series/map/tooltip-helper.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.d.ts +1 -1
- package/cjs/series/polar/progress-like/progress-like.js +2 -3
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/progress/circular/circular.js +4 -4
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/range-area/interface.d.ts +2 -1
- package/cjs/series/range-area/interface.js.map +1 -1
- package/cjs/series/rose/rose.d.ts +1 -1
- package/cjs/series/rose/rose.js +2 -2
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/sankey/sankey.js +14 -16
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +1 -1
- package/cjs/series/waterfall/waterfall.js +3 -3
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/series/word-cloud/base.js +34 -35
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/series/word-cloud/word-cloud-3d.js +32 -32
- package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/cjs/theme/builtin/index.d.ts +4 -1
- package/cjs/theme/builtin/index.js +13 -8
- package/cjs/theme/builtin/index.js.map +1 -1
- package/cjs/theme/color-scheme/util.js +2 -1
- package/cjs/theme/color-scheme/util.js.map +1 -1
- package/cjs/theme/theme-manager.js +4 -3
- package/cjs/theme/theme-manager.js.map +1 -1
- package/cjs/theme/util.d.ts +5 -0
- package/cjs/theme/util.js +34 -0
- package/cjs/theme/util.js.map +1 -0
- package/cjs/util/math.js +13 -29
- package/cjs/util/math.js.map +1 -1
- package/cjs/util/spec/merge-theme.d.ts +4 -1
- package/cjs/util/spec/merge-theme.js +22 -13
- package/cjs/util/spec/merge-theme.js.map +1 -1
- package/cjs/util/spec/preprocess.js +1 -0
- package/cjs/util/spec/preprocess.js.map +1 -1
- package/esm/chart/base-chart.d.ts +4 -6
- package/esm/chart/base-chart.js +42 -42
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/gauge/gauge.js +3 -2
- package/esm/chart/gauge/gauge.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +3 -3
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/polar/progress-like.js +9 -21
- package/esm/chart/polar/progress-like.js.map +1 -1
- package/esm/chart/sequence/sequence.js +0 -1
- package/esm/chart/sequence/sequence.js.map +1 -1
- package/esm/component/axis/util.d.ts +3 -3
- package/esm/component/axis/util.js +10 -8
- package/esm/component/axis/util.js.map +1 -1
- package/esm/component/base/base-component.d.ts +1 -2
- package/esm/component/base/base-component.js +3 -40
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/base/util.d.ts +2 -3
- package/esm/component/base/util.js +19 -16
- package/esm/component/base/util.js.map +1 -1
- package/esm/component/brush/brush.js +1 -1
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/util.d.ts +3 -3
- package/esm/component/crosshair/util.js +8 -4
- package/esm/component/crosshair/util.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +4 -0
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +2 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/index.js +2 -1
- package/esm/component/tooltip/handler/base.js +7 -5
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/utils/attribute.d.ts +3 -3
- package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/esm/component/util.d.ts +4 -0
- package/esm/component/util.js +6 -0
- package/esm/component/util.js.map +1 -0
- package/esm/constant/correlation.js +1 -2
- package/esm/constant/word-cloud.js +2 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +1 -2
- package/esm/core/interface.d.ts +8 -1
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +3 -2
- package/esm/core/vchart.js +37 -25
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/aggregation.js +1 -1
- package/esm/data/transforms/aggregation.js.map +1 -1
- package/esm/interaction/config.js +1 -2
- package/esm/interaction/dimension-trigger.js +2 -1
- package/esm/layout/util.js +1 -1
- package/esm/mark/base/base-mark.js +4 -5
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/model/base-model.d.ts +4 -2
- package/esm/model/base-model.js +53 -10
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +10 -3
- package/esm/model/interface.js.map +1 -1
- package/esm/series/area/area.d.ts +1 -1
- package/esm/series/area/area.js +1 -1
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar.d.ts +1 -1
- package/esm/series/bar/bar.js +1 -1
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series.d.ts +4 -3
- package/esm/series/base/base-series.js +14 -46
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/dot/dot.js +2 -4
- package/esm/series/dot/dot.js.map +1 -1
- package/esm/series/gauge/gauge-pointer.d.ts +1 -0
- package/esm/series/gauge/gauge-pointer.js +1 -1
- package/esm/series/gauge/gauge-pointer.js.map +1 -1
- package/esm/series/geo/geo.d.ts +1 -1
- package/esm/series/geo/geo.js +2 -2
- package/esm/series/geo/geo.js.map +1 -1
- package/esm/series/heatmap/heatmap.js +1 -1
- package/esm/series/heatmap/heatmap.js.map +1 -1
- package/esm/series/interface/theme.d.ts +2 -0
- package/esm/series/interface/theme.js +4 -1
- package/esm/series/interface/theme.js.map +1 -1
- package/esm/series/link/link.js +1 -1
- package/esm/series/link/link.js.map +1 -1
- package/esm/series/map/map.d.ts +1 -1
- package/esm/series/map/map.js +3 -3
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/map/tooltip-helper.js +2 -2
- package/esm/series/map/tooltip-helper.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.d.ts +1 -1
- package/esm/series/polar/progress-like/progress-like.js +2 -3
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/progress/circular/circular.js +4 -4
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/range-area/interface.d.ts +2 -1
- package/esm/series/range-area/interface.js.map +1 -1
- package/esm/series/rose/rose.d.ts +1 -1
- package/esm/series/rose/rose.js +1 -1
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/sankey/sankey.js +6 -8
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +1 -1
- package/esm/series/waterfall/waterfall.js +3 -3
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/series/word-cloud/base.js +33 -35
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/series/word-cloud/word-cloud-3d.js +32 -32
- package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/esm/theme/builtin/index.d.ts +4 -1
- package/esm/theme/builtin/index.js +15 -6
- package/esm/theme/builtin/index.js.map +1 -1
- package/esm/theme/color-scheme/util.js +1 -1
- package/esm/theme/color-scheme/util.js.map +1 -1
- package/esm/theme/theme-manager.js +5 -4
- package/esm/theme/theme-manager.js.map +1 -1
- package/esm/theme/util.d.ts +5 -0
- package/esm/theme/util.js +34 -0
- package/esm/theme/util.js.map +1 -0
- package/esm/util/math.js +3 -15
- package/esm/util/math.js.map +1 -1
- package/esm/util/spec/merge-theme.d.ts +4 -1
- package/esm/util/spec/merge-theme.js +18 -10
- package/esm/util/spec/merge-theme.js.map +1 -1
- package/esm/util/spec/preprocess.js +2 -1
- package/esm/util/spec/preprocess.js.map +1 -1
- package/package.json +7 -7
|
@@ -17,17 +17,22 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), exports.getMergedTheme = exports.themes = exports.defaultThemeName = exports.
|
|
20
|
+
}), exports.defaultChartLevelTheme = exports.getMergedTheme = exports.hasThemeMerged = exports.themes = exports.defaultThemeName = exports.builtinThemes = void 0,
|
|
21
21
|
__exportStar(require("./light"), exports), __exportStar(require("./common/legacy"), exports);
|
|
22
22
|
|
|
23
|
-
const merge_theme_1 = require("../../util/spec/merge-theme"), dark_1 = require("./dark"), light_1 = require("./light");
|
|
23
|
+
const merge_theme_1 = require("../../util/spec/merge-theme"), util_1 = require("../color-scheme/util"), dark_1 = require("./dark"), light_1 = require("./light");
|
|
24
24
|
|
|
25
|
-
exports.
|
|
26
|
-
|
|
25
|
+
exports.builtinThemes = {
|
|
26
|
+
[light_1.lightTheme.name]: light_1.lightTheme,
|
|
27
|
+
[dark_1.darkTheme.name]: dark_1.darkTheme
|
|
28
|
+
}, exports.defaultThemeName = light_1.lightTheme.name, exports.themes = new Map(Object.keys(exports.builtinThemes).map((key => [ key, exports.builtinThemes[key] ]))),
|
|
29
|
+
exports.hasThemeMerged = new Map(Object.keys(exports.builtinThemes).map((key => [ key, key === exports.defaultThemeName ])));
|
|
27
30
|
|
|
28
|
-
const getMergedTheme = theme => (0, merge_theme_1.mergeTheme)({}, exports.
|
|
31
|
+
const getMergedTheme = theme => (0, merge_theme_1.mergeTheme)({}, exports.themes.get(exports.defaultThemeName), theme);
|
|
29
32
|
|
|
30
|
-
exports.getMergedTheme = getMergedTheme, exports.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
exports.getMergedTheme = getMergedTheme, exports.defaultChartLevelTheme = {
|
|
34
|
+
background: (0, util_1.getActualColor)(exports.builtinThemes[exports.defaultThemeName].background, exports.builtinThemes[exports.defaultThemeName].colorScheme),
|
|
35
|
+
fontFamily: exports.builtinThemes[exports.defaultThemeName].fontFamily,
|
|
36
|
+
colorScheme: exports.builtinThemes[exports.defaultThemeName].colorScheme
|
|
37
|
+
};
|
|
33
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,kDAAgC;
|
|
1
|
+
{"version":3,"sources":["../src/theme/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,kDAAgC;AAGhC,6DAAyD;AACzD,+CAAsD;AAEtD,iCAAmC;AACnC,mCAAqC;AAGxB,QAAA,aAAa,GAA2B;IACnD,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,kBAAU;IAC7B,CAAC,gBAAS,CAAC,IAAI,CAAC,EAAE,gBAAS;CAC5B,CAAC;AAEW,QAAA,gBAAgB,GAAG,kBAAU,CAAC,IAAI,CAAC;AAGnC,QAAA,MAAM,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,qBAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAExG,QAAA,cAAc,GAAyB,IAAI,GAAG,CACzD,MAAM,CAAC,IAAI,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,wBAAgB,CAAC,CAAC,CACvE,CAAC;AAGK,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,IAAA,wBAAU,EAAC,EAAE,EAAE,cAAM,CAAC,GAAG,CAAC,wBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;AAAzG,QAAA,cAAc,kBAA2F;AAEzG,QAAA,sBAAsB,GAAqB;IACtD,UAAU,EAAE,IAAA,qBAAc,EAAC,qBAAa,CAAC,wBAAgB,CAAC,CAAC,UAAU,EAAE,qBAAa,CAAC,wBAAgB,CAAC,CAAC,WAAW,CAAC;IACnH,UAAU,EAAE,qBAAa,CAAC,wBAAgB,CAAC,CAAC,UAAU;IACtD,WAAW,EAAE,qBAAa,CAAC,wBAAgB,CAAC,CAAC,WAAW;CACzD,CAAC","file":"index.js","sourcesContent":["export * from './light';\n/** 历史弃用主题 */\nexport * from './common/legacy';\n\nimport type { IChartLevelTheme } from '../../core/interface';\nimport { mergeTheme } from '../../util/spec/merge-theme';\nimport { getActualColor } from '../color-scheme/util';\nimport type { ITheme } from '../interface';\nimport { darkTheme } from './dark';\nimport { lightTheme } from './light';\n\n/** 声明内置主题 */\nexport const builtinThemes: Record<string, ITheme> = {\n [lightTheme.name]: lightTheme,\n [darkTheme.name]: darkTheme\n};\n/** 声明默认主题 */\nexport const defaultThemeName = lightTheme.name;\n\n/** 全局主题 map (包含用户新注册的主题) */\nexport const themes: Map<string, ITheme> = new Map(Object.keys(builtinThemes).map(key => [key, builtinThemes[key]]));\n/** 主题 map 中的元素是否 merge 过默认主题 (非默认主题的其他内置主题没有 merge 过默认主题) */\nexport const hasThemeMerged: Map<string, boolean> = new Map(\n Object.keys(builtinThemes).map(key => [key, key === defaultThemeName])\n);\n\n/** 使新主题基于默认主题扩展,保证基础值 */\nexport const getMergedTheme = (theme: Partial<ITheme>): ITheme => mergeTheme({}, themes.get(defaultThemeName), theme);\n\nexport const defaultChartLevelTheme: IChartLevelTheme = {\n background: getActualColor(builtinThemes[defaultThemeName].background, builtinThemes[defaultThemeName].colorScheme),\n fontFamily: builtinThemes[defaultThemeName].fontFamily,\n colorScheme: builtinThemes[defaultThemeName].colorScheme\n};\n"]}
|
|
@@ -60,7 +60,8 @@ function isColorKey(obj) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
function isProgressiveDataColorScheme(obj) {
|
|
63
|
-
return
|
|
63
|
+
return !(!(0, vutils_1.isArray)(obj) || 0 === obj.length) && obj.every((item => (0,
|
|
64
|
+
vutils_1.isValid)(item.scheme)));
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
function transformColorSchemeToStandardStruct(colorScheme) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/color-scheme/util.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/theme/color-scheme/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { array, isArray, isFunction, isObject, isString, isValid } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { ColorUtil } from '@visactor/vutils';\nimport type { SeriesTypeEnum } from '../../series/interface';\nimport { Color } from '../../util/color';\nimport type {\n ColorScheme,\n ColorSchemeItem,\n IColorKey,\n IColorSchemeStruct,\n IProgressiveDataSchemeCase,\n IThemeColorScheme,\n ProgressiveDataScheme\n} from './interface';\n\n/**\n * 从色板中获取数据色板(在此步骤中替换语义色值)\n * @param colorScheme\n * @param seriesType\n * @returns\n */\nexport function getDataScheme(\n colorScheme: IThemeColorScheme,\n seriesType?: SeriesTypeEnum\n): Array<ColorSchemeItem> | ProgressiveDataScheme<ColorSchemeItem> {\n const scheme = !isValid(seriesType) ? colorScheme?.default : colorScheme?.[seriesType] ?? colorScheme?.default;\n if (!scheme || isArray(scheme)) {\n // 不带语义色板,直接输出\n return scheme as Array<ColorSchemeItem> | ProgressiveDataScheme<ColorSchemeItem>;\n } else if (isObject(scheme)) {\n // 带语义色板,转换颜色后输出\n const { dataScheme } = scheme as IColorSchemeStruct;\n if (!dataScheme) {\n return [];\n }\n // 渐进式色板的情况\n if (isProgressiveDataColorScheme(dataScheme)) {\n return dataScheme.map(item => ({\n ...item,\n scheme: item.scheme\n .map(color => {\n if (isColorKey(color)) {\n return queryColorFromColorScheme(colorScheme, color, seriesType);\n }\n return color;\n })\n .filter(isValid)\n }));\n }\n // 普通色板的情况\n return dataScheme\n .map(color => {\n if (isColorKey(color)) {\n return queryColorFromColorScheme(colorScheme, color, seriesType);\n }\n return color;\n })\n .filter(isValid);\n }\n return [];\n}\n\n/**\n * 计算最终数据色板(在此步骤中获得渐进式色板的最终色板)\n * @param colorScheme\n * @param seriesType\n * @returns\n */\nexport function computeActualDataScheme(\n dataScheme: Array<ColorSchemeItem> | ProgressiveDataScheme<ColorSchemeItem>,\n colorDomain: any[]\n): Array<ColorSchemeItem> {\n if (isProgressiveDataColorScheme(dataScheme)) {\n return (\n dataScheme.find(item => {\n if (isValid(item.isAvailable)) {\n if (isFunction(item.isAvailable)) {\n return item.isAvailable(colorDomain);\n }\n return !!item.isAvailable;\n } else if (isValid(item.maxDomainLength)) {\n return colorDomain?.length <= item.maxDomainLength;\n }\n return true;\n })?.scheme ?? dataScheme[dataScheme.length - 1].scheme\n );\n }\n return dataScheme;\n}\n\n/**\n * 根据色板和色值索引生成颜色\n * @param colorScheme\n * @param colorKey\n * @param seriesType\n * @returns\n */\nexport function queryColorFromColorScheme(\n colorScheme: IThemeColorScheme,\n colorKey: IColorKey,\n seriesType?: SeriesTypeEnum\n): ColorSchemeItem | undefined {\n const scheme = !isValid(seriesType) ? colorScheme.default : colorScheme[seriesType] ?? colorScheme.default;\n if (!scheme) {\n return undefined;\n }\n let color;\n const { palette } = scheme as IColorSchemeStruct;\n if (isObject(palette)) {\n color = palette[colorKey.key] ?? colorKey.default;\n }\n if (!color) {\n return undefined;\n }\n if ((!isValid(colorKey.a) && !isValid(colorKey.l)) || !isString(color)) {\n return color;\n }\n let c = new Color(color);\n if (isValid(colorKey.l)) {\n const { r, g, b } = c.color;\n const { h, s } = ColorUtil.rgbToHsl(r, g, b);\n const rgb = ColorUtil.hslToRgb(h, s, colorKey.l);\n const newColor = new Color(`rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`);\n newColor.setOpacity(c.color.opacity);\n c = newColor;\n }\n if (isValid(colorKey.a)) {\n c.setOpacity(colorKey.a);\n }\n return c.toRGBA();\n}\n\n/** 查询语义化颜色 */\nexport const getActualColor = (value: any, colorScheme?: IThemeColorScheme, seriesType?: SeriesTypeEnum) => {\n if (isColorKey(value)) {\n if (colorScheme) {\n const color = queryColorFromColorScheme(colorScheme, value, seriesType);\n if (color) {\n return color;\n }\n }\n }\n return value;\n};\n\nexport function isColorKey(obj: any): obj is IColorKey {\n return isObject(obj) && (obj as IColorKey).type === 'palette' && !!(obj as IColorKey).key;\n}\n\nexport function isProgressiveDataColorScheme<T>(obj: any): obj is ProgressiveDataScheme<T> {\n if (!isArray(obj) || obj.length === 0) {\n return false;\n }\n return obj.every(item => {\n return isValid((item as IProgressiveDataSchemeCase<T>).scheme);\n });\n}\n\n/** 将色板转化为标准形式 */\nexport function transformColorSchemeToStandardStruct(colorScheme: ColorScheme): IColorSchemeStruct {\n if (isArray(colorScheme)) {\n return {\n dataScheme: colorScheme\n };\n }\n return colorScheme;\n}\n"]}
|
|
@@ -8,13 +8,14 @@ const builtin_1 = require("./builtin"), instance_manager_1 = require("../core/in
|
|
|
8
8
|
|
|
9
9
|
class ThemeManager {
|
|
10
10
|
static registerTheme(name, theme) {
|
|
11
|
-
name && ThemeManager.themes.set(name, (0, builtin_1.getMergedTheme)(theme));
|
|
11
|
+
name && (ThemeManager.themes.set(name, (0, builtin_1.getMergedTheme)(theme)), builtin_1.hasThemeMerged.set(name, !0));
|
|
12
12
|
}
|
|
13
13
|
static getTheme(name) {
|
|
14
|
-
return
|
|
14
|
+
return builtin_1.hasThemeMerged.has(name) && !builtin_1.hasThemeMerged.get(name) && ThemeManager.registerTheme(name, ThemeManager.themes.get(name)),
|
|
15
|
+
ThemeManager.themes.get(name) || ThemeManager.getDefaultTheme();
|
|
15
16
|
}
|
|
16
17
|
static removeTheme(name) {
|
|
17
|
-
return ThemeManager.themes.delete(name);
|
|
18
|
+
return ThemeManager.themes.delete(name) && builtin_1.hasThemeMerged.delete(name);
|
|
18
19
|
}
|
|
19
20
|
static themeExist(name) {
|
|
20
21
|
return !!(0, vutils_1.isString)(name) && ThemeManager.themes.has(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":";;;AAAA,uCAAqF;AAErF,+DAA2D;AAE3D,6CAA4C;AAE5C,MAAa,YAAY;IAYvB,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,KAAsB;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;QACrD,wBAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAOD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,IAAI,wBAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAEzD,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,IAAI,CAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,0BAAgB,CAAC,CAAC;IACnD,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAY;QACjC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO;SACR;QACD,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACtC,kCAAe,CAAC,OAAO,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAGD,MAAM,CAAC,mBAAmB;QACxB,OAAO,YAAY,CAAC,iBAAiB,CAAC;IACxC,CAAC;;AA7EH,oCA8EC;AA5EiB,mBAAM,GAAG,gBAAM,CAAC;AAEjB,8BAAiB,GAAW,0BAAgB,CAAC","file":"theme-manager.js","sourcesContent":["import { defaultThemeName, getMergedTheme, hasThemeMerged, themes } from './builtin';\nimport type { ITheme } from './interface';\nimport { InstanceManager } from '../core/instance-manager';\nimport type { IVChart } from '../core/interface';\nimport { isString } from '@visactor/vutils';\n\nexport class ThemeManager {\n /** 主题字典 */\n static readonly themes = themes;\n\n private static _currentThemeName: string = defaultThemeName; // 设置缺省为默认主题\n\n /**\n * 注册主题\n * @param name 主题名称\n * @param theme 主题配置\n * @returns\n */\n static registerTheme(name: string, theme: Partial<ITheme>) {\n if (!name) {\n return;\n }\n // 所有主题基于默认主题扩展,保证基础值\n ThemeManager.themes.set(name, getMergedTheme(theme));\n hasThemeMerged.set(name, true);\n }\n\n /**\n * 获取主题\n * @param name 主题名称\n * @returns\n */\n static getTheme(name: string) {\n if (hasThemeMerged.has(name) && !hasThemeMerged.get(name)) {\n // 重新 merge 默认主题\n ThemeManager.registerTheme(name, ThemeManager.themes.get(name));\n }\n return ThemeManager.themes.get(name) || ThemeManager.getDefaultTheme();\n }\n\n /**\n * 移除主题\n * @param name 主题名称\n * @returns 是否移除成功\n */\n static removeTheme(name: string): boolean {\n return ThemeManager.themes.delete(name) && hasThemeMerged.delete(name);\n }\n\n /**\n * 判断主题是否存在\n * @param name 主题名称\n * @returns 是否存在\n */\n static themeExist(name: any) {\n if (!isString(name)) {\n return false;\n }\n return ThemeManager.themes.has(name);\n }\n\n /** 获取图表默认主题(非用户配置) */\n static getDefaultTheme(): ITheme {\n return ThemeManager.themes.get(defaultThemeName);\n }\n\n /** 设置当前主题(所有实例生效) */\n static setCurrentTheme(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return;\n }\n ThemeManager._currentThemeName = name;\n InstanceManager.forEach((instance: IVChart) => instance?.setCurrentTheme(name));\n }\n\n /** 获取当前主题(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentTheme(): ITheme {\n return ThemeManager.getTheme(ThemeManager._currentThemeName);\n }\n\n /** 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentThemeName(): string {\n return ThemeManager._currentThemeName;\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ITheme } from './interface';
|
|
2
|
+
import type { IThemeColorScheme } from './color-scheme/interface';
|
|
3
|
+
import type { IModelOption } from '../model/interface';
|
|
4
|
+
export declare const mergeThemeAndGet: (path: string, currentThemeName?: string, optionTheme?: string | ITheme, specTheme?: string | ITheme, colorScheme?: IThemeColorScheme) => any;
|
|
5
|
+
export declare const getThemeFromOption: (path: string, option: Partial<IModelOption>) => any;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.getThemeFromOption = exports.mergeThemeAndGet = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), theme_manager_1 = require("./theme-manager"), util_1 = require("../util"), util_2 = require("./color-scheme/util"), builtin_1 = require("./builtin"), mergeThemeAndGet = (path, currentThemeName, optionTheme, specTheme, colorScheme) => (0,
|
|
8
|
+
vutils_1.isString)(specTheme) && theme_manager_1.ThemeManager.themeExist(specTheme) ? getMergedValue(getThemeValue(path, specTheme, colorScheme)) : (0,
|
|
9
|
+
vutils_1.isString)(optionTheme) && theme_manager_1.ThemeManager.themeExist(optionTheme) ? getMergedValue(getThemeValue(path, optionTheme, colorScheme), getThemeValue(path, specTheme, colorScheme)) : getMergedValue(getThemeValue(path, currentThemeName, colorScheme), getThemeValue(path, optionTheme, colorScheme), getThemeValue(path, specTheme, colorScheme));
|
|
10
|
+
|
|
11
|
+
exports.mergeThemeAndGet = mergeThemeAndGet;
|
|
12
|
+
|
|
13
|
+
const getThemeValue = (path, theme, colorScheme) => {
|
|
14
|
+
let themeObject;
|
|
15
|
+
if ((0, vutils_1.isString)(theme) && theme_manager_1.ThemeManager.themeExist(theme) ? themeObject = theme_manager_1.ThemeManager.getTheme(theme) : (0,
|
|
16
|
+
vutils_1.isObject)(theme) && (themeObject = theme), (0, vutils_1.isNil)(themeObject)) return;
|
|
17
|
+
const paths = path.split(".");
|
|
18
|
+
if ("colorScheme" === path) return (0, util_1.transformColorSchemeToMerge)(themeObject.colorScheme);
|
|
19
|
+
if ("background" === path) return (0, util_2.getActualColor)(themeObject.background, colorScheme);
|
|
20
|
+
if (2 === paths.length && "series" === paths[0]) {
|
|
21
|
+
const {markByName: markByName, mark: mark} = themeObject;
|
|
22
|
+
return (0, util_1.transformSeriesThemeToMerge)((0, vutils_1.get)(themeObject, paths), paths[1], mark, markByName);
|
|
23
|
+
}
|
|
24
|
+
return (0, vutils_1.get)(themeObject, paths);
|
|
25
|
+
}, getMergedValue = (...sources) => (0, util_1.mergeSpec)({}, ...sources.map((source => ({
|
|
26
|
+
__TMP_KEY__: source
|
|
27
|
+
})))).__TMP_KEY__, getThemeFromOption = (path, option) => {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
const {globalTheme: globalTheme = builtin_1.defaultThemeName, optionTheme: optionTheme, specTheme: specTheme, chartLevelTheme: chartLevelTheme = builtin_1.defaultChartLevelTheme} = null !== (_b = null === (_a = option.getThemeConfig) || void 0 === _a ? void 0 : _a.call(option)) && void 0 !== _b ? _b : {};
|
|
30
|
+
return (0, exports.mergeThemeAndGet)(path, globalTheme, optionTheme, specTheme, null == chartLevelTheme ? void 0 : chartLevelTheme.colorScheme);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.getThemeFromOption = getThemeFromOption;
|
|
34
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isString, get, isObject, isNil } from '@visactor/vutils';\nimport type { ITheme } from './interface';\nimport { ThemeManager } from './theme-manager';\nimport { mergeSpec, transformColorSchemeToMerge, transformSeriesThemeToMerge } from '../util';\nimport { getActualColor } from './color-scheme/util';\nimport type { IThemeColorScheme } from './color-scheme/interface';\nimport type { IModelOption } from '../model/interface';\nimport { defaultChartLevelTheme, defaultThemeName } from './builtin';\n\n/**\n * 性能优化过的主题合并,只合并需要取用的主题部分\n * @param path 需要取用的路径\n * @param currentThemeName (低优先级)当前全局主题 name\n * @param optionTheme (中优先级)option 中设置的主题\n * @param specTheme (高优先级)spec 中设置的主题\n * @returns\n */\nexport const mergeThemeAndGet = (\n path: string,\n currentThemeName?: string,\n optionTheme?: string | ITheme,\n specTheme?: string | ITheme,\n colorScheme?: IThemeColorScheme\n) => {\n if (isString(specTheme) && ThemeManager.themeExist(specTheme)) {\n // 以 specTheme 为最底开始合并\n return getMergedValue(getThemeValue(path, specTheme, colorScheme));\n } else if (isString(optionTheme) && ThemeManager.themeExist(optionTheme)) {\n // 以 optionTheme 为最底开始合并\n return getMergedValue(getThemeValue(path, optionTheme, colorScheme), getThemeValue(path, specTheme, colorScheme));\n }\n // 以 baseTheme 为最底开始合并\n return getMergedValue(\n getThemeValue(path, currentThemeName, colorScheme),\n getThemeValue(path, optionTheme, colorScheme),\n getThemeValue(path, specTheme, colorScheme)\n );\n};\n\n/** 从 theme 取特定 path 的值,但可能会改变形式为 merge 作准备 */\nconst getThemeValue = (path: string, theme?: string | ITheme, colorScheme?: IThemeColorScheme) => {\n let themeObject: ITheme;\n if (isString(theme) && ThemeManager.themeExist(theme)) {\n themeObject = ThemeManager.getTheme(theme);\n } else if (isObject(theme)) {\n themeObject = theme;\n }\n if (isNil(themeObject)) {\n return undefined;\n }\n\n const paths = path.split('.');\n\n const colorSchemePath: keyof ITheme = 'colorScheme';\n if (path === colorSchemePath) {\n return transformColorSchemeToMerge(themeObject.colorScheme);\n }\n const backgroundPath: keyof ITheme = 'background';\n if (path === backgroundPath) {\n return getActualColor(themeObject.background, colorScheme);\n }\n const seriesPath: keyof ITheme = 'series';\n if (paths.length === 2 && paths[0] === seriesPath) {\n const { markByName, mark } = themeObject;\n return transformSeriesThemeToMerge(get(themeObject, paths), paths[1], mark, markByName);\n }\n\n return get(themeObject, paths);\n};\n\nconst getMergedValue = (...sources: any[]) => {\n const tmpKey = '__TMP_KEY__';\n const obj = mergeSpec(\n {},\n ...sources.map(source => ({\n [tmpKey]: source\n }))\n );\n return obj[tmpKey];\n};\n\nexport const getThemeFromOption = (path: string, option: Partial<IModelOption>) => {\n const {\n globalTheme = defaultThemeName,\n optionTheme,\n specTheme,\n chartLevelTheme = defaultChartLevelTheme\n } = option.getThemeConfig?.() ?? {};\n return mergeThemeAndGet(path, globalTheme, optionTheme, specTheme, chartLevelTheme?.colorScheme);\n};\n"]}
|
package/cjs/util/math.js
CHANGED
|
@@ -20,20 +20,6 @@ Object.defineProperty(exports, "isGreater", {
|
|
|
20
20
|
|
|
21
21
|
const vutils_extension_1 = require("@visactor/vutils-extension");
|
|
22
22
|
|
|
23
|
-
Object.defineProperty(exports, "normalizeAngle", {
|
|
24
|
-
enumerable: !0,
|
|
25
|
-
get: function() {
|
|
26
|
-
return vutils_extension_1.normalizeAngle;
|
|
27
|
-
}
|
|
28
|
-
}), Object.defineProperty(exports, "angleLabelOrientAttribute", {
|
|
29
|
-
enumerable: !0,
|
|
30
|
-
get: function() {
|
|
31
|
-
return vutils_extension_1.angleLabelOrientAttribute;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const debug_1 = require("./debug");
|
|
36
|
-
|
|
37
23
|
function polarToCartesian(point) {
|
|
38
24
|
return point.radius ? {
|
|
39
25
|
x: Math.cos(point.angle) * point.radius,
|
|
@@ -67,23 +53,11 @@ function outOfBounds(bounds, x, y) {
|
|
|
67
53
|
}
|
|
68
54
|
|
|
69
55
|
function min(data, field) {
|
|
70
|
-
|
|
71
|
-
if (!(0, type_1.isValidNumber)(initialData)) return (0, debug_1.warn)("invalid data"),
|
|
72
|
-
0;
|
|
73
|
-
return data.reduce(((pre, _cur) => {
|
|
74
|
-
const cur = field ? +_cur[field] : +_cur;
|
|
75
|
-
return (0, type_1.isValidNumber)(cur) && cur < pre && (pre = cur), pre;
|
|
76
|
-
}), initialData);
|
|
56
|
+
return (0, vutils_1.minInArray)(data.map((d => +d[field])).filter((d => (0, type_1.isValidNumber)(d))));
|
|
77
57
|
}
|
|
78
58
|
|
|
79
59
|
function max(data, field) {
|
|
80
|
-
|
|
81
|
-
if (!(0, type_1.isValidNumber)(initialData)) return (0, debug_1.warn)("invalid data"),
|
|
82
|
-
0;
|
|
83
|
-
return data.reduce(((pre, _cur) => {
|
|
84
|
-
const cur = field ? +_cur[field] : +_cur;
|
|
85
|
-
return (0, type_1.isValidNumber)(cur) && cur > pre && (pre = cur), pre;
|
|
86
|
-
}), initialData);
|
|
60
|
+
return (0, vutils_1.maxInArray)(data.map((d => +d[field])).filter((d => (0, type_1.isValidNumber)(d))));
|
|
87
61
|
}
|
|
88
62
|
|
|
89
63
|
function sum(data, field) {
|
|
@@ -150,7 +124,17 @@ function distance(p1, p2 = {
|
|
|
150
124
|
return vutils_1.PointService.distancePP(p1, p2);
|
|
151
125
|
}
|
|
152
126
|
|
|
153
|
-
exports
|
|
127
|
+
Object.defineProperty(exports, "normalizeAngle", {
|
|
128
|
+
enumerable: !0,
|
|
129
|
+
get: function() {
|
|
130
|
+
return vutils_extension_1.normalizeAngle;
|
|
131
|
+
}
|
|
132
|
+
}), Object.defineProperty(exports, "angleLabelOrientAttribute", {
|
|
133
|
+
enumerable: !0,
|
|
134
|
+
get: function() {
|
|
135
|
+
return vutils_extension_1.angleLabelOrientAttribute;
|
|
136
|
+
}
|
|
137
|
+
}), exports.isClose = vutils_1.isNumberClose, exports.polarToCartesian = polarToCartesian,
|
|
154
138
|
exports.computeQuadrant = computeQuadrant, exports.normalizeStartEndAngle = normalizeStartEndAngle,
|
|
155
139
|
exports.outOfBounds = outOfBounds, exports.min = min, exports.max = max, exports.sum = sum,
|
|
156
140
|
exports.average = average, exports.variance = variance, exports.standardDeviation = standardDeviation,
|
package/cjs/util/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/math.ts"],"names":[],"mappings":"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","file":"math.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { IPoint, IPolarPoint, Quadrant, TextAlign, TextBaseLine } from '../typings';\nimport type { Datum } from '@visactor/vgrammar-core';\nimport { isValidNumber } from './type';\nimport { regressionLinear } from '@visactor/vgrammar-util';\nimport { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian } from '@visactor/vutils';\nimport { normalizeAngle, angleLabelOrientAttribute } from '@visactor/vutils-extension';\n\nimport { warn } from './debug';\n\nexport const isClose = isNumberClose;\nexport { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };\n\n/**\n * 极坐标系 -> 直角坐标系\n * @param point\n * @returns\n */\nexport function polarToCartesian(point: IPolarPoint): IPoint {\n if (!point.radius) {\n return { x: 0, y: 0 };\n }\n return {\n x: Math.cos(point.angle) * point.radius,\n y: Math.sin(point.angle) * point.radius\n };\n}\n\n/**\n * 根据角度计算象限\n * 计算角度所在象限\n * @param angle\n * @returns\n */\nexport function computeQuadrant(angle: number): Quadrant {\n angle = normalizeAngle(angle);\n if (angle > 0 && angle <= Math.PI / 2) {\n return 2;\n } else if (angle > Math.PI / 2 && angle <= Math.PI) {\n return 3;\n } else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {\n return 4;\n }\n return 1;\n}\n\n/**\n * 将角度轴起始角度 & 终结角度标准化\n * @param start\n * @param end\n * @returns\n */\nexport function normalizeStartEndAngle(\n start: number | null,\n end: number | null\n): { startAngle: number; endAngle: number } {\n let startAngle: number = 0;\n let endAngle: number = Math.PI * 2;\n const isStartValid = isValid(start);\n const isEndValid = isValid(end);\n if (!isStartValid && !isEndValid) {\n startAngle = 0;\n endAngle = Math.PI * 2;\n } else if (!isEndValid) {\n startAngle = start as number;\n endAngle = (start as number) + Math.PI * 2;\n } else if (!isStartValid) {\n startAngle = (end as number) - Math.PI * 2;\n endAngle = end as number;\n } else {\n startAngle = start as number;\n endAngle = end as number;\n }\n\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2;\n }\n while (startAngle > Math.PI * 2) {\n startAngle -= Math.PI * 2;\n endAngle -= Math.PI * 2;\n }\n while (endAngle < 0) {\n startAngle += Math.PI * 2;\n endAngle += Math.PI * 2;\n }\n return { startAngle, endAngle };\n}\n\nexport function outOfBounds(bounds: IBoundsLike, x: number, y: number) {\n return bounds.x1 > x || bounds.x2 < x || bounds.y1 > y || bounds.y2 < y;\n}\n\nexport function min(data: any[], field?: string): number {\n const initialData = field ? +data[0][field] : +data[0];\n\n if (!isValidNumber(initialData)) {\n warn('invalid data');\n return 0;\n }\n const min = data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur) && cur < pre) {\n pre = cur;\n }\n return pre;\n }, initialData);\n return min;\n}\n\nexport function max(data: any[], field?: string): number {\n const initialData = field ? +data[0][field] : +data[0];\n if (!isValidNumber(initialData)) {\n warn('invalid data');\n return 0;\n }\n const max = data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur) && cur > pre) {\n pre = cur;\n }\n return pre;\n }, initialData);\n return max;\n}\n\nexport function sum(data: any[], field?: string): number {\n return data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur)) {\n pre += cur;\n }\n return pre;\n }, 0);\n}\n\nexport function average(data: any[], field?: string): number {\n let sum = 0;\n let count = 0;\n data.forEach((x: any) => {\n const v = field ? +x[field] : +x;\n if (isValidNumber(v)) {\n sum += v;\n count++;\n }\n });\n\n const average = sum / count;\n return average;\n}\n\nexport function variance(data: any[], field?: string): number {\n const averageNumber = average(data, field);\n\n if (data.length <= 1) {\n return 0;\n }\n\n const total = data.reduce((sum, cur) => sum + (field ? +cur[field] : +cur - averageNumber) ** 2, 0);\n const value = total / (data.length - 1);\n return value;\n}\n\nexport function standardDeviation(data: any[], field?: string): number {\n const value = Math.sqrt(variance(data, field));\n return value;\n}\n\nexport function median(data: any[], field?: string): number {\n const value = visMedian(data.map((datum: Datum) => datum[field]));\n return value;\n}\n\nexport function regression(data: any[], fieldX?: string, fieldY?: string): any[] {\n const { predict } = regressionLinear(\n data,\n datum => datum[fieldX],\n datum => datum[fieldY]\n );\n // 计算回归线起点和终点\n const x1 = min(data, fieldX);\n const x2 = max(data, fieldX);\n\n const predict1 = predict(x1);\n const predict2 = predict(x2);\n return [\n {\n [fieldX]: x1,\n [fieldY]: predict1\n },\n {\n [fieldX]: x2,\n [fieldY]: predict2\n }\n ];\n}\n\n/**\n * 计算对应角度下的半径轴标签定位属性\n * @param angle 弧度角,需要注意是逆时针计算的\n * @returns\n */\nexport function radiusLabelOrientAttribute(angle: number) {\n let align: TextAlign = 'center';\n let baseline: TextBaseLine = 'middle';\n\n angle = normalizeAngle(angle);\n\n // right: 7/6 - 11/6; left: 1/6 - 5/6; center: 11/6 - 1/6 & 5/6 - 7/6\n if (angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6)) {\n align = 'right';\n } else if (angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6)) {\n align = 'left';\n } else {\n align = 'center';\n }\n\n // bottom: 5/3 - 1/3; top: 2/3 - 4/3; middle: 5/3 - 1/3 & 2/3 - 4/3\n if (angle >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3)) {\n baseline = 'bottom';\n } else if (angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3)) {\n baseline = 'top';\n } else {\n baseline = 'middle';\n }\n\n return { align, baseline };\n}\n\n/** 求一个向量顺时针旋转到另一个向量的角度,带正负号 */\nexport function vectorAngle(v1: IPoint, v2: IPoint) {\n const v1Length = distance(v1);\n const v2Length = distance(v2);\n // 叉乘\n const rho = Math.asin((v1.x * v2.y - v2.x * v1.y) / v1Length / v2Length);\n // 点乘\n const theta = Math.acos((v1.x * v2.x + v1.y * v2.y) / v1Length / v2Length);\n if (rho < 0) {\n return -theta;\n }\n return theta;\n}\n\n/** 求两个点的距离 */\nexport function distance(p1: IPoint, p2: IPoint = { x: 0, y: 0 }) {\n return PointService.distancePP(p1, p2);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/util/math.ts"],"names":[],"mappings":";;;AAGA,iCAAuC;AACvC,2DAA2D;AAC3D,6CAS0B;AAGjB,0FAVP,kBAAS,OAUO;AAAE,uFATlB,eAAM,OASkB;AAF1B,iEAAuF;AAE3D,+FAFnB,iCAAc,OAEmB;AAAE,0GAFnB,4CAAyB,OAEmB;AADxD,QAAA,OAAO,GAAG,sBAAa,CAAC;AAQrC,SAAgB,gBAAgB,CAAC,KAAkB;IACjD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACvB;IACD,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;QACvC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;KACxC,CAAC;AACJ,CAAC;AARD,4CAQC;AAQD,SAAgB,eAAe,CAAC,KAAa;IAC3C,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;QACrC,OAAO,CAAC,CAAC;KACV;SAAM,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE;QAClD,OAAO,CAAC,CAAC;KACV;SAAM,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;QACxD,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAVD,0CAUC;AAQD,SAAgB,sBAAsB,CACpC,KAAoB,EACpB,GAAkB;IAElB,IAAI,UAAU,GAAW,CAAC,CAAC;IAC3B,IAAI,QAAQ,GAAW,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE;QAChC,UAAU,GAAG,CAAC,CAAC;QACf,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACxB;SAAM,IAAI,CAAC,UAAU,EAAE;QACtB,UAAU,GAAG,KAAe,CAAC;QAC7B,QAAQ,GAAI,KAAgB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC5C;SAAM,IAAI,CAAC,YAAY,EAAE;QACxB,UAAU,GAAI,GAAc,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3C,QAAQ,GAAG,GAAa,CAAC;KAC1B;SAAM;QACL,UAAU,GAAG,KAAe,CAAC;QAC7B,QAAQ,GAAG,GAAa,CAAC;KAC1B;IAED,OAAO,QAAQ,IAAI,UAAU,EAAE;QAC7B,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACzB;IACD,OAAO,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;QAC/B,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACzB;IACD,OAAO,QAAQ,GAAG,CAAC,EAAE;QACnB,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACzB;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAlCD,wDAkCC;AAED,SAAgB,WAAW,CAAC,MAAmB,EAAE,CAAS,EAAE,CAAS;IACnE,OAAO,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC;AAFD,kCAEC;AACD,SAAgB,GAAG,CAAC,IAAW,EAAE,KAAc;IAC7C,OAAO,IAAA,mBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,oBAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAC,IAAW,EAAE,KAAc;IAC7C,OAAO,IAAA,mBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,oBAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAC,IAAW,EAAE,KAAc;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,IAAA,oBAAa,EAAC,GAAG,CAAC,EAAE;YACtB,GAAG,IAAI,GAAG,CAAC;SACZ;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AARD,kBAQC;AAED,SAAgB,OAAO,CAAC,IAAW,EAAE,KAAc;IACjD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAA,oBAAa,EAAC,CAAC,CAAC,EAAE;YACpB,GAAG,IAAI,CAAC,CAAC;YACT,KAAK,EAAE,CAAC;SACT;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,0BAaC;AAED,SAAgB,QAAQ,CAAC,IAAW,EAAE,KAAc;IAClD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,OAAO,CAAC,CAAC;KACV;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,4BAUC;AAED,SAAgB,iBAAiB,CAAC,IAAW,EAAE,KAAc;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,8CAGC;AAED,SAAgB,MAAM,CAAC,IAAW,EAAE,KAAc;IAChD,MAAM,KAAK,GAAG,IAAA,eAAS,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,wBAGC;AAED,SAAgB,UAAU,CAAC,IAAW,EAAE,MAAe,EAAE,MAAe;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAgB,EAClC,IAAI,EACJ,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EACtB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CACvB,CAAC;IAEF,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,OAAO;QACL;YACE,CAAC,MAAM,CAAC,EAAE,EAAE;YACZ,CAAC,MAAM,CAAC,EAAE,QAAQ;SACnB;QACD;YACE,CAAC,MAAM,CAAC,EAAE,EAAE;YACZ,CAAC,MAAM,CAAC,EAAE,QAAQ;SACnB;KACF,CAAC;AACJ,CAAC;AAtBD,gCAsBC;AAOD,SAAgB,0BAA0B,CAAC,KAAa;IACtD,IAAI,KAAK,GAAc,QAAQ,CAAC;IAChC,IAAI,QAAQ,GAAiB,QAAQ,CAAC;IAEtC,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC;IAG9B,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QAC7D,KAAK,GAAG,OAAO,CAAC;KACjB;SAAM,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;QACnE,KAAK,GAAG,MAAM,CAAC;KAChB;SAAM;QACL,KAAK,GAAG,QAAQ,CAAC;KAClB;IAGD,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5D,QAAQ,GAAG,QAAQ,CAAC;KACrB;SAAM,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;QACnE,QAAQ,GAAG,KAAK,CAAC;KAClB;SAAM;QACL,QAAQ,GAAG,QAAQ,CAAC;KACrB;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAzBD,gEAyBC;AAGD,SAAgB,WAAW,CAAC,EAAU,EAAE,EAAU;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3E,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,OAAO,CAAC,KAAK,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,kCAWC;AAGD,SAAgB,QAAQ,CAAC,EAAU,EAAE,KAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC9D,OAAO,qBAAY,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAFD,4BAEC","file":"math.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { IPoint, IPolarPoint, Quadrant, TextAlign, TextBaseLine } from '../typings';\nimport type { Datum } from '@visactor/vgrammar-core';\nimport { isValidNumber } from './type';\nimport { regressionLinear } from '@visactor/vgrammar-util';\nimport {\n isNumberClose,\n isGreater,\n isLess,\n isValid,\n PointService,\n median as visMedian,\n maxInArray,\n minInArray\n} from '@visactor/vutils';\nimport { normalizeAngle, angleLabelOrientAttribute } from '@visactor/vutils-extension';\nexport const isClose = isNumberClose;\nexport { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };\n\n/**\n * 极坐标系 -> 直角坐标系\n * @param point\n * @returns\n */\nexport function polarToCartesian(point: IPolarPoint): IPoint {\n if (!point.radius) {\n return { x: 0, y: 0 };\n }\n return {\n x: Math.cos(point.angle) * point.radius,\n y: Math.sin(point.angle) * point.radius\n };\n}\n\n/**\n * 根据角度计算象限\n * 计算角度所在象限\n * @param angle\n * @returns\n */\nexport function computeQuadrant(angle: number): Quadrant {\n angle = normalizeAngle(angle);\n if (angle > 0 && angle <= Math.PI / 2) {\n return 2;\n } else if (angle > Math.PI / 2 && angle <= Math.PI) {\n return 3;\n } else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {\n return 4;\n }\n return 1;\n}\n\n/**\n * 将角度轴起始角度 & 终结角度标准化\n * @param start\n * @param end\n * @returns\n */\nexport function normalizeStartEndAngle(\n start: number | null,\n end: number | null\n): { startAngle: number; endAngle: number } {\n let startAngle: number = 0;\n let endAngle: number = Math.PI * 2;\n const isStartValid = isValid(start);\n const isEndValid = isValid(end);\n if (!isStartValid && !isEndValid) {\n startAngle = 0;\n endAngle = Math.PI * 2;\n } else if (!isEndValid) {\n startAngle = start as number;\n endAngle = (start as number) + Math.PI * 2;\n } else if (!isStartValid) {\n startAngle = (end as number) - Math.PI * 2;\n endAngle = end as number;\n } else {\n startAngle = start as number;\n endAngle = end as number;\n }\n\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2;\n }\n while (startAngle > Math.PI * 2) {\n startAngle -= Math.PI * 2;\n endAngle -= Math.PI * 2;\n }\n while (endAngle < 0) {\n startAngle += Math.PI * 2;\n endAngle += Math.PI * 2;\n }\n return { startAngle, endAngle };\n}\n\nexport function outOfBounds(bounds: IBoundsLike, x: number, y: number) {\n return bounds.x1 > x || bounds.x2 < x || bounds.y1 > y || bounds.y2 < y;\n}\nexport function min(data: any[], field?: string): number {\n return minInArray(data.map(d => +d[field]).filter(d => isValidNumber(d)));\n}\n\nexport function max(data: any[], field?: string): number {\n return maxInArray(data.map(d => +d[field]).filter(d => isValidNumber(d)));\n}\n\nexport function sum(data: any[], field?: string): number {\n return data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur)) {\n pre += cur;\n }\n return pre;\n }, 0);\n}\n\nexport function average(data: any[], field?: string): number {\n let sum = 0;\n let count = 0;\n data.forEach((x: any) => {\n const v = field ? +x[field] : +x;\n if (isValidNumber(v)) {\n sum += v;\n count++;\n }\n });\n\n const average = sum / count;\n return average;\n}\n\nexport function variance(data: any[], field?: string): number {\n const averageNumber = average(data, field);\n\n if (data.length <= 1) {\n return 0;\n }\n\n const total = data.reduce((sum, cur) => sum + (field ? +cur[field] : +cur - averageNumber) ** 2, 0);\n const value = total / (data.length - 1);\n return value;\n}\n\nexport function standardDeviation(data: any[], field?: string): number {\n const value = Math.sqrt(variance(data, field));\n return value;\n}\n\nexport function median(data: any[], field?: string): number {\n const value = visMedian(data.map((datum: Datum) => datum[field]));\n return value;\n}\n\nexport function regression(data: any[], fieldX?: string, fieldY?: string): any[] {\n const { predict } = regressionLinear(\n data,\n datum => datum[fieldX],\n datum => datum[fieldY]\n );\n // 计算回归线起点和终点\n const x1 = min(data, fieldX);\n const x2 = max(data, fieldX);\n\n const predict1 = predict(x1);\n const predict2 = predict(x2);\n return [\n {\n [fieldX]: x1,\n [fieldY]: predict1\n },\n {\n [fieldX]: x2,\n [fieldY]: predict2\n }\n ];\n}\n\n/**\n * 计算对应角度下的半径轴标签定位属性\n * @param angle 弧度角,需要注意是逆时针计算的\n * @returns\n */\nexport function radiusLabelOrientAttribute(angle: number) {\n let align: TextAlign = 'center';\n let baseline: TextBaseLine = 'middle';\n\n angle = normalizeAngle(angle);\n\n // right: 7/6 - 11/6; left: 1/6 - 5/6; center: 11/6 - 1/6 & 5/6 - 7/6\n if (angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6)) {\n align = 'right';\n } else if (angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6)) {\n align = 'left';\n } else {\n align = 'center';\n }\n\n // bottom: 5/3 - 1/3; top: 2/3 - 4/3; middle: 5/3 - 1/3 & 2/3 - 4/3\n if (angle >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3)) {\n baseline = 'bottom';\n } else if (angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3)) {\n baseline = 'top';\n } else {\n baseline = 'middle';\n }\n\n return { align, baseline };\n}\n\n/** 求一个向量顺时针旋转到另一个向量的角度,带正负号 */\nexport function vectorAngle(v1: IPoint, v2: IPoint) {\n const v1Length = distance(v1);\n const v2Length = distance(v2);\n // 叉乘\n const rho = Math.asin((v1.x * v2.y - v2.x * v1.y) / v1Length / v2Length);\n // 点乘\n const theta = Math.acos((v1.x * v2.x + v1.y * v2.y) / v1Length / v2Length);\n if (rho < 0) {\n return -theta;\n }\n return theta;\n}\n\n/** 求两个点的距离 */\nexport function distance(p1: IPoint, p2: IPoint = { x: 0, y: 0 }) {\n return PointService.distancePP(p1, p2);\n}\n"]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { type Maybe } from '@visactor/vutils';
|
|
2
|
-
import type { ITheme } from '../../theme';
|
|
2
|
+
import type { IGlobalMarkThemeByName, IGlobalMarkThemeByType, ITheme } from '../../theme';
|
|
3
|
+
import type { IThemeColorScheme } from '../../theme/color-scheme/interface';
|
|
3
4
|
export declare function mergeTheme(target: Maybe<ITheme>, ...sources: Maybe<ITheme>[]): Maybe<ITheme>;
|
|
5
|
+
export declare function transformColorSchemeToMerge(colorScheme?: Maybe<IThemeColorScheme>): Maybe<IThemeColorScheme>;
|
|
6
|
+
export declare function transformSeriesThemeToMerge(seriesTheme: any, seriesType: string, markByType: IGlobalMarkThemeByType, markByName: IGlobalMarkThemeByName): any;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.mergeTheme = void 0;
|
|
5
|
+
}), exports.transformSeriesThemeToMerge = exports.transformColorSchemeToMerge = exports.mergeTheme = void 0;
|
|
6
6
|
|
|
7
7
|
const vutils_1 = require("@visactor/vutils"), util_1 = require("../../theme/color-scheme/util"), interface_1 = require("../../series/interface"), merge_spec_1 = require("./merge-spec");
|
|
8
8
|
|
|
@@ -12,26 +12,35 @@ function mergeTheme(target, ...sources) {
|
|
|
12
12
|
|
|
13
13
|
function transformThemeToMerge(theme) {
|
|
14
14
|
if (!theme) return theme;
|
|
15
|
-
|
|
16
|
-
colorScheme && (colorScheme = Object.keys(colorScheme).reduce(((scheme, key) => {
|
|
17
|
-
const value = colorScheme[key];
|
|
18
|
-
return scheme[key] = (0, util_1.transformColorSchemeToStandardStruct)(value), scheme;
|
|
19
|
-
}), {}));
|
|
15
|
+
const colorScheme = transformColorSchemeToMerge(theme.colorScheme);
|
|
20
16
|
let {series: series} = theme;
|
|
21
17
|
const {mark: markByType, markByName: markByName} = theme;
|
|
22
18
|
return (markByType || markByName) && (series = Object.keys(interface_1.seriesMarkInfoMap).reduce(((newSeriesTheme, key) => {
|
|
23
19
|
var _a;
|
|
24
|
-
const value = null !== (_a = null == series ? void 0 : series[key]) && void 0 !== _a ? _a : {}
|
|
25
|
-
return
|
|
26
|
-
|
|
27
|
-
newValue[name] = (0, merge_spec_1.mergeSpec)({}, null !== (_a = null == markByType ? void 0 : markByType[(0,
|
|
28
|
-
vutils_1.array)(type)[0]]) && void 0 !== _a ? _a : {}, null !== (_b = null == markByName ? void 0 : markByName[name]) && void 0 !== _b ? _b : {}, value[name]);
|
|
29
|
-
})), newSeriesTheme[key] = Object.assign(Object.assign({}, value), newValue), newSeriesTheme;
|
|
20
|
+
const value = null !== (_a = null == series ? void 0 : series[key]) && void 0 !== _a ? _a : {};
|
|
21
|
+
return newSeriesTheme[key] = transformSeriesThemeToMerge(value, key, markByType, markByName),
|
|
22
|
+
newSeriesTheme;
|
|
30
23
|
}), {})), Object.assign(Object.assign({}, theme), {
|
|
31
24
|
colorScheme: colorScheme,
|
|
32
25
|
series: series
|
|
33
26
|
});
|
|
34
27
|
}
|
|
35
28
|
|
|
36
|
-
|
|
29
|
+
function transformColorSchemeToMerge(colorScheme) {
|
|
30
|
+
return colorScheme && (colorScheme = Object.keys(colorScheme).reduce(((scheme, key) => {
|
|
31
|
+
const value = colorScheme[key];
|
|
32
|
+
return scheme[key] = (0, util_1.transformColorSchemeToStandardStruct)(value), scheme;
|
|
33
|
+
}), {})), colorScheme;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function transformSeriesThemeToMerge(seriesTheme, seriesType, markByType, markByName) {
|
|
37
|
+
const newTheme = {};
|
|
38
|
+
return Object.values(interface_1.seriesMarkInfoMap[seriesType]).forEach((({type: type, name: name}) => {
|
|
39
|
+
newTheme[name] = (0, merge_spec_1.mergeSpec)({}, null == markByType ? void 0 : markByType[(0,
|
|
40
|
+
vutils_1.array)(type)[0]], null == markByName ? void 0 : markByName[name], null == seriesTheme ? void 0 : seriesTheme[name]);
|
|
41
|
+
})), Object.assign(Object.assign({}, seriesTheme), newTheme);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.mergeTheme = mergeTheme, exports.transformColorSchemeToMerge = transformColorSchemeToMerge,
|
|
45
|
+
exports.transformSeriesThemeToMerge = transformSeriesThemeToMerge;
|
|
37
46
|
//# sourceMappingURL=merge-theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/spec/merge-theme.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAErD,wDAAqF;AAIrF,sDAAiF;AACjF,6CAAyC;AAEzC,SAAgB,UAAU,CAAC,MAAqB,EAAE,GAAG,OAAwB;IAC3E,OAAO,IAAA,sBAAS,EAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACzF,CAAC;AAFD,gCAEC;AAED,SAAS,qBAAqB,CAAC,KAAqB;IAClD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IAGD,IAAI,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/util/spec/merge-theme.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAErD,wDAAqF;AAIrF,sDAAiF;AACjF,6CAAyC;AAEzC,SAAgB,UAAU,CAAC,MAAqB,EAAE,GAAG,OAAwB;IAC3E,OAAO,IAAA,sBAAS,EAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACzF,CAAC;AAFD,gCAEC;AAED,SAAS,qBAAqB,CAAC,KAAqB;IAClD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IAGD,MAAM,WAAW,GAAG,2BAA2B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAGnE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC/C,IAAI,UAAU,IAAI,UAAU,EAAE;QAC5B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,6BAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE;;YACrE,MAAM,KAAK,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,mCAAI,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,CAAC,GAAG,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACtF,OAAO,cAAc,CAAC;QACxB,CAAC,EAAE,EAAkB,CAAC,CAAC;KACxB;IAED,uCACK,KAAK,KACR,WAAW;QACX,MAAM,IACN;AACJ,CAAC;AAGD,SAAgB,2BAA2B,CAAC,WAAsC;IAChF,IAAI,WAAW,EAAE;QACf,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAC/E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,2CAAoC,EAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAuB,CAAC,CAAC;KAC7B;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AATD,kEASC;AAGD,SAAgB,2BAA2B,CACzC,WAAgB,EAChB,UAAkB,EAClB,UAAkC,EAClC,UAAkC;IAElC,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,MAAM,CAAkB,6BAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAS,EAAC,EAAE,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,IAAI,CAAC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,IAAI,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IACH,uCACK,WAAW,GACX,QAAQ,EACX;AACJ,CAAC;AAdD,kEAcC","file":"merge-theme.js","sourcesContent":["import { type Maybe, array } from '@visactor/vutils';\nimport type { IGlobalMarkThemeByName, IGlobalMarkThemeByType, ITheme } from '../../theme';\nimport { transformColorSchemeToStandardStruct } from '../../theme/color-scheme/util';\nimport type { IThemeColorScheme } from '../../theme/color-scheme/interface';\nimport type { ISeriesTheme } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { seriesMarkInfoMap, type ISeriesMarkInfo } from '../../series/interface';\nimport { mergeSpec } from './merge-spec';\n\nexport function mergeTheme(target: Maybe<ITheme>, ...sources: Maybe<ITheme>[]): Maybe<ITheme> {\n return mergeSpec(transformThemeToMerge(target), ...sources.map(transformThemeToMerge));\n}\n\nfunction transformThemeToMerge(theme?: Maybe<ITheme>): Maybe<ITheme> {\n if (!theme) {\n return theme;\n }\n\n // 将色板转化为标准形式\n const colorScheme = transformColorSchemeToMerge(theme.colorScheme);\n\n // 将全局 mark 主题 merge 进系列主题\n let { series } = theme;\n const { mark: markByType, markByName } = theme;\n if (markByType || markByName) {\n series = Object.keys(seriesMarkInfoMap).reduce((newSeriesTheme, key) => {\n const value = series?.[key] ?? {};\n newSeriesTheme[key] = transformSeriesThemeToMerge(value, key, markByType, markByName);\n return newSeriesTheme;\n }, {} as ISeriesTheme);\n }\n\n return {\n ...theme,\n colorScheme,\n series\n };\n}\n\n/** 将色板转化为标准形式 */\nexport function transformColorSchemeToMerge(colorScheme?: Maybe<IThemeColorScheme>): Maybe<IThemeColorScheme> {\n if (colorScheme) {\n colorScheme = Object.keys(colorScheme).reduce<IThemeColorScheme>((scheme, key) => {\n const value = colorScheme[key];\n scheme[key] = transformColorSchemeToStandardStruct(value);\n return scheme;\n }, {} as IThemeColorScheme);\n }\n return colorScheme;\n}\n\n/** 将全局 mark 主题 merge 进系列主题 */\nexport function transformSeriesThemeToMerge(\n seriesTheme: any,\n seriesType: string,\n markByType: IGlobalMarkThemeByType,\n markByName: IGlobalMarkThemeByName\n): any {\n const newTheme: any = {};\n Object.values<ISeriesMarkInfo>(seriesMarkInfoMap[seriesType]).forEach(({ type, name }) => {\n newTheme[name] = mergeSpec({}, markByType?.[array(type)[0]], markByName?.[name], seriesTheme?.[name]);\n });\n return {\n ...seriesTheme,\n ...newTheme\n };\n}\n"]}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const vutils_1 = require("@visactor/vutils"), interface_1 = require("../../series/interface"), common_1 = require("./common"), util_1 = require("../../theme/color-scheme/util"), space_1 = require("../space");
|
|
8
8
|
|
|
9
9
|
function preprocessSpecOrTheme(type, obj, colorScheme, seriesType) {
|
|
10
|
+
if ((0, vutils_1.isNil)(obj)) return obj;
|
|
10
11
|
if ((0, vutils_1.isArray)(obj)) return obj.map((element => (0, vutils_1.isObject)(element) && !(0,
|
|
11
12
|
vutils_1.isFunction)(element) ? preprocessSpecOrTheme(type, element, colorScheme, seriesType) : element));
|
|
12
13
|
const newObj = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/spec/preprocess.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/util/spec/preprocess.ts"],"names":[],"mappings":"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","file":"preprocess.js","sourcesContent":["import { isArray, isFunction, isNil, isObject, isString, isValid, isValidNumber } from '@visactor/vutils';\nimport { seriesMarkNameSet, type SeriesTypeEnum } from '../../series/interface';\nimport type { IThemeColorScheme } from '../../theme/color-scheme/interface';\nimport { isDataView, isHTMLElement } from './common';\nimport { getActualColor, isColorKey } from '../../theme/color-scheme/util';\nimport { normalizeLayoutPaddingSpec } from '../space';\n\n/**\n * 对 spec 或者类 spec 配置(如 theme)进行预处理,如进行语义化颜色的转换等\n * @param type 需要转换的对象类型(spec 或者 theme)\n * @param obj 需要转换的对象\n * @param colorScheme 主题色板\n * @param seriesType 当前系列类型\n * @returns\n */\nexport function preprocessSpecOrTheme(\n type: 'spec' | 'theme' | 'mark-spec' | 'mark-theme',\n obj: any,\n colorScheme?: IThemeColorScheme,\n seriesType?: SeriesTypeEnum\n): any {\n if (isNil(obj)) {\n return obj;\n }\n if (isArray(obj)) {\n return obj.map(element => {\n if (isObject(element) && !isFunction(element)) {\n return preprocessSpecOrTheme(type, element, colorScheme, seriesType);\n }\n return element;\n });\n }\n\n const newObj = {};\n Object.keys(obj).forEach(key => {\n const value = obj[key];\n // 绕过数据\n if (key.includes('data')) {\n newObj[key] = value;\n return;\n }\n if (isObject(value)) {\n // 绕过不可深拷贝的对象\n if (isFunction(value) || isDataView(value) || isHTMLElement(value)) {\n newObj[key] = value;\n return;\n }\n if (isColorKey(value)) {\n // 查询、替换语义化颜色\n newObj[key] = getActualColor(value, colorScheme, seriesType);\n } else {\n newObj[key] = preprocessSpecOrTheme(\n seriesMarkNameSet.has(key) ? (type.includes('spec') ? 'mark-spec' : 'mark-theme') : type,\n value,\n colorScheme,\n seriesType\n );\n }\n } else if (!type.includes('mark') && key === 'padding') {\n // 标准化 padding\n newObj[key] = normalizeLayoutPaddingSpec(value);\n } else if (!type.includes('theme') && key === 'lineHeight' && isString(value) && value[value.length - 1] === '%') {\n if (isValid(obj.fontSize)) {\n // 处理 lineHeight 的比例值\n // FIXME: vrender 支持行高字符串后删掉这段逻辑\n const scale = Number.parseFloat(value.substring(0, value.length - 1)) / 100;\n const newValue = obj.fontSize * scale;\n if (isValidNumber(newValue)) {\n newObj[key] = newValue;\n }\n }\n // 如果 spec 同级里没有 fontSize 配置,lineHeight 比例值失效\n } else {\n newObj[key] = value;\n }\n });\n\n return newObj;\n}\n"]}
|
|
@@ -11,7 +11,6 @@ import type { IEvent } from '../event/interface';
|
|
|
11
11
|
import type { DataView } from '@visactor/vdataset';
|
|
12
12
|
import type { DataSet } from '@visactor/vdataset/es/data-set';
|
|
13
13
|
import { Stack } from './stack';
|
|
14
|
-
import type { ITheme } from '../theme/interface';
|
|
15
14
|
import type { IParserOptions } from '@visactor/vdataset/es/parser';
|
|
16
15
|
import type { IBoundsLike } from '@visactor/vutils';
|
|
17
16
|
import type { IRunningConfig as IMorphConfig, IMark as IVGrammarMark, IView } from '@visactor/vgrammar-core';
|
|
@@ -25,7 +24,6 @@ export declare class BaseChart extends CompilableBase implements IChart {
|
|
|
25
24
|
getSpec(): any;
|
|
26
25
|
setSpec(s: any): void;
|
|
27
26
|
getOption(): IChartOption;
|
|
28
|
-
protected _theme: ITheme;
|
|
29
27
|
protected _regions: IRegion[];
|
|
30
28
|
protected _series: ISeries[];
|
|
31
29
|
protected _components: IComponent[];
|
|
@@ -129,11 +127,10 @@ export declare class BaseChart extends CompilableBase implements IChart {
|
|
|
129
127
|
protected isValidSeries(seriesType: string): boolean;
|
|
130
128
|
protected _getDefaultSeriesSpec(spec: any): any;
|
|
131
129
|
private _updateLayoutRect;
|
|
132
|
-
|
|
133
|
-
setCurrentTheme(theme: ITheme, reInit?: boolean): void;
|
|
130
|
+
setCurrentTheme(reInit?: boolean): void;
|
|
134
131
|
protected setRegionTheme(reInit?: boolean): void;
|
|
135
|
-
protected setComponentTheme(
|
|
136
|
-
protected setSeriesTheme(
|
|
132
|
+
protected setComponentTheme(reInit?: boolean): void;
|
|
133
|
+
protected setSeriesTheme(reInit?: boolean): void;
|
|
137
134
|
clear(): void;
|
|
138
135
|
compile(): void;
|
|
139
136
|
afterCompile(): void;
|
|
@@ -153,4 +150,5 @@ export declare class BaseChart extends CompilableBase implements IChart {
|
|
|
153
150
|
protected _disableMarkAnimation(states: string | string[]): void;
|
|
154
151
|
protected _setStateInDatum(stateKey: string, checkReverse: boolean, datum: MaybeArray<Datum> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier): void;
|
|
155
152
|
setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption): void;
|
|
153
|
+
getColorScheme(): import("../theme/color-scheme/interface").IThemeColorScheme;
|
|
156
154
|
}
|