@visactor/vchart 1.8.3 → 1.8.5
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 +358 -305
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/utils.d.ts +1 -1
- package/cjs/animation/utils.js +15 -14
- package/cjs/animation/utils.js.map +1 -1
- package/cjs/chart/stack.js +1 -2
- package/cjs/compile/grammar-item.js +2 -1
- package/cjs/component/axis/base-axis.js +2 -2
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/util.js +2 -1
- package/cjs/component/axis/util.js.map +1 -1
- package/cjs/component/base/util.js +4 -4
- package/cjs/component/base/util.js.map +1 -1
- package/cjs/component/crosshair/base.js +9 -1
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/interface/theme.d.ts +1 -0
- package/cjs/component/interface/theme.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +3 -4
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/utils.js +10 -23
- package/cjs/component/marker/utils.js.map +1 -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/data/transforms/aggregation.js +25 -21
- package/cjs/data/transforms/aggregation.js.map +1 -1
- package/cjs/interaction/trigger.d.ts +1 -0
- package/cjs/interaction/trigger.js +2 -1
- package/cjs/interaction/trigger.js.map +1 -1
- package/cjs/plugin/chart/media-query/interface/common.d.ts +0 -4
- package/cjs/plugin/chart/media-query/interface/common.js.map +1 -1
- package/cjs/plugin/chart/media-query/interface/index.d.ts +1 -1
- package/cjs/plugin/chart/media-query/interface/index.js +1 -1
- package/cjs/plugin/chart/media-query/interface/index.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +3 -1
- package/cjs/series/base/base-series.js +19 -13
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/funnel/funnel.js +2 -2
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/waterfall/waterfall-transformer.js +1 -1
- package/cjs/series/waterfall/waterfall-transformer.js.map +1 -1
- package/cjs/theme/builtin/common/component/axis/cartesian-axis.d.ts +1 -0
- package/cjs/theme/builtin/common/component/axis/cartesian-axis.js +6 -2
- package/cjs/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
- package/cjs/theme/builtin/common/component/index.js +1 -0
- package/cjs/theme/builtin/common/component/index.js.map +1 -1
- package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.d.ts +1 -0
- package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.js +6 -2
- package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.js.map +1 -1
- package/cjs/theme/builtin/common-mobile/component/index.js +1 -0
- package/cjs/theme/builtin/common-mobile/component/index.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +2 -0
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/spec/index.d.ts +1 -0
- package/cjs/typings/spec/index.js +2 -1
- package/cjs/typings/spec/index.js.map +1 -1
- package/cjs/{plugin/chart/media-query/interface/spec.d.ts → typings/spec/media-query.d.ts} +8 -5
- package/cjs/{plugin/chart/media-query/interface/spec.js → typings/spec/media-query.js} +1 -1
- package/cjs/typings/spec/media-query.js.map +1 -0
- package/esm/animation/utils.d.ts +1 -1
- package/esm/animation/utils.js +15 -14
- package/esm/animation/utils.js.map +1 -1
- package/esm/chart/stack.js +1 -2
- package/esm/compile/grammar-item.js +2 -1
- package/esm/component/axis/base-axis.js +2 -2
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/util.js +2 -2
- package/esm/component/axis/util.js.map +1 -1
- package/esm/component/base/util.js +4 -4
- package/esm/component/base/util.js.map +1 -1
- package/esm/component/crosshair/base.js +9 -1
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/interface/theme.d.ts +1 -0
- package/esm/component/interface/theme.js.map +1 -1
- package/esm/component/marker/interface.d.ts +3 -4
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/utils.js +10 -22
- package/esm/component/marker/utils.js.map +1 -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/data/transforms/aggregation.js +26 -22
- package/esm/data/transforms/aggregation.js.map +1 -1
- package/esm/interaction/trigger.d.ts +1 -0
- package/esm/interaction/trigger.js +2 -1
- package/esm/interaction/trigger.js.map +1 -1
- package/esm/plugin/chart/media-query/interface/common.d.ts +0 -4
- package/esm/plugin/chart/media-query/interface/common.js.map +1 -1
- package/esm/plugin/chart/media-query/interface/index.d.ts +1 -1
- package/esm/plugin/chart/media-query/interface/index.js +1 -1
- package/esm/plugin/chart/media-query/interface/index.js.map +1 -1
- package/esm/series/base/base-series.d.ts +3 -1
- package/esm/series/base/base-series.js +19 -13
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/funnel/funnel.js +2 -2
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/waterfall/waterfall-transformer.js +1 -1
- package/esm/series/waterfall/waterfall-transformer.js.map +1 -1
- package/esm/theme/builtin/common/component/axis/cartesian-axis.d.ts +1 -0
- package/esm/theme/builtin/common/component/axis/cartesian-axis.js +6 -0
- package/esm/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
- package/esm/theme/builtin/common/component/index.js +2 -1
- package/esm/theme/builtin/common/component/index.js.map +1 -1
- package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.d.ts +1 -0
- package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.js +6 -0
- package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.js.map +1 -1
- package/esm/theme/builtin/common-mobile/component/index.js +2 -1
- package/esm/theme/builtin/common-mobile/component/index.js.map +1 -1
- package/esm/typings/spec/common.d.ts +2 -0
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/spec/index.d.ts +1 -0
- package/esm/typings/spec/index.js +2 -0
- package/esm/typings/spec/index.js.map +1 -1
- package/esm/{plugin/chart/media-query/interface/spec.d.ts → typings/spec/media-query.d.ts} +8 -5
- package/esm/typings/spec/media-query.js +2 -0
- package/esm/typings/spec/media-query.js.map +1 -0
- package/package.json +14 -14
- package/cjs/plugin/chart/media-query/interface/spec.js.map +0 -1
- package/esm/plugin/chart/media-query/interface/spec.js +0 -2
- package/esm/plugin/chart/media-query/interface/spec.js.map +0 -1
|
@@ -21,6 +21,7 @@ export interface IComponentTheme {
|
|
|
21
21
|
axisLinear?: IAxisCommonTheme;
|
|
22
22
|
axisX?: ICartesianAxisCommonTheme;
|
|
23
23
|
axisY?: ICartesianAxisCommonTheme;
|
|
24
|
+
axisZ?: ICartesianAxisCommonTheme;
|
|
24
25
|
axisRadius?: IPolarAxisCommonTheme;
|
|
25
26
|
axisAngle?: IPolarAxisCommonTheme;
|
|
26
27
|
[ComponentTypeEnum.discreteLegend]?: IDiscreteLegendTheme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IAxisCommonTheme, ICartesianAxisCommonTheme, IPolarAxisCommonTheme } from '../axis';\nimport type { IBrushTheme } from '../brush';\nimport type { ICrosshairTheme } from '../crosshair/interface';\nimport type { IDataZoomTheme, IScrollBarTheme } from '../data-zoom';\nimport type { IIndicatorTheme } from '../indicator/interface';\nimport type { IDiscreteLegendTheme, IColorLegendTheme, ISizeLegendTheme } from '../legend';\nimport type { IMapLabelTheme } from '../map-label';\nimport type { IMarkAreaTheme } from '../marker/mark-area/interface';\nimport type { IMarkLineTheme } from '../marker/mark-line/interface';\nimport type { IMarkPointTheme } from '../marker/mark-point/interface';\nimport type { IPlayerTheme } from '../player';\nimport type { ITitleTheme } from '../title';\nimport type { ITooltipTheme } from '../tooltip/interface';\nimport type { ComponentTypeEnum } from './type';\nimport type { ITotalLabelTheme } from '../label';\nimport type { IPoptipTheme } from '../poptip/interface';\nimport type { IColorKey } from '../../theme';\n\nexport interface IComponentTheme {\n /**\n * 通用坐标轴配置\n */\n axis?: IAxisCommonTheme;\n /**\n * 离散轴的通用配置\n */\n axisBand?: IAxisCommonTheme;\n /**\n * 连续轴的通用配置\n */\n axisLinear?: IAxisCommonTheme;\n /**\n * 笛卡尔坐标系下 x 轴的配置\n */\n axisX?: ICartesianAxisCommonTheme;\n /**\n * 笛卡尔坐标系下 y 轴配置\n */\n axisY?: ICartesianAxisCommonTheme;\n /**\n * 极坐标系下半径轴配置\n */\n axisRadius?: IPolarAxisCommonTheme;\n /**\n * 极坐标系下角度轴配置\n */\n axisAngle?: IPolarAxisCommonTheme;\n /**\n * 离散图例配置\n */\n [ComponentTypeEnum.discreteLegend]?: IDiscreteLegendTheme;\n /**\n * 连续颜色图例配置\n */\n [ComponentTypeEnum.colorLegend]?: IColorLegendTheme;\n /**\n * 连续尺寸图例配置\n */\n [ComponentTypeEnum.sizeLegend]?: ISizeLegendTheme;\n /**\n * markLine 标记配置\n */\n [ComponentTypeEnum.markLine]?: IMarkLineTheme;\n /**\n * markArea 标记配置\n */\n [ComponentTypeEnum.markArea]?: IMarkAreaTheme;\n /**\n * markPoint 标记配置\n */\n [ComponentTypeEnum.markPoint]?: IMarkPointTheme;\n /**\n * tooltip 组件配置\n */\n [ComponentTypeEnum.tooltip]?: ITooltipTheme<string | IColorKey>;\n /**\n * crosshair 配置\n */\n [ComponentTypeEnum.crosshair]?: ICrosshairTheme;\n /**\n * dataZoom 配置\n */\n [ComponentTypeEnum.dataZoom]?: IDataZoomTheme;\n /**\n * scrollbar 滚动条配置\n */\n [ComponentTypeEnum.scrollBar]?: IScrollBarTheme;\n /**\n * 指标卡组件配置\n */\n [ComponentTypeEnum.indicator]?: IIndicatorTheme;\n /**\n * 播放器配置\n */\n [ComponentTypeEnum.player]?: IPlayerTheme;\n /**\n * 框选配置\n */\n [ComponentTypeEnum.brush]?: IBrushTheme;\n /**\n * 图表标题配置\n */\n [ComponentTypeEnum.title]?: ITitleTheme;\n /**\n * 地图标签配置\n */\n [ComponentTypeEnum.mapLabel]?: IMapLabelTheme;\n /**\n * 省略文本配置\n */\n [ComponentTypeEnum.poptip]?: IPoptipTheme;\n /**\n * 堆叠总计标签配置\n * @since 1.3.0\n */\n [ComponentTypeEnum.totalLabel]?: ITotalLabelTheme;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IAxisCommonTheme, ICartesianAxisCommonTheme, IPolarAxisCommonTheme } from '../axis';\nimport type { IBrushTheme } from '../brush';\nimport type { ICrosshairTheme } from '../crosshair/interface';\nimport type { IDataZoomTheme, IScrollBarTheme } from '../data-zoom';\nimport type { IIndicatorTheme } from '../indicator/interface';\nimport type { IDiscreteLegendTheme, IColorLegendTheme, ISizeLegendTheme } from '../legend';\nimport type { IMapLabelTheme } from '../map-label';\nimport type { IMarkAreaTheme } from '../marker/mark-area/interface';\nimport type { IMarkLineTheme } from '../marker/mark-line/interface';\nimport type { IMarkPointTheme } from '../marker/mark-point/interface';\nimport type { IPlayerTheme } from '../player';\nimport type { ITitleTheme } from '../title';\nimport type { ITooltipTheme } from '../tooltip/interface';\nimport type { ComponentTypeEnum } from './type';\nimport type { ITotalLabelTheme } from '../label';\nimport type { IPoptipTheme } from '../poptip/interface';\nimport type { IColorKey } from '../../theme';\n\nexport interface IComponentTheme {\n /**\n * 通用坐标轴配置\n */\n axis?: IAxisCommonTheme;\n /**\n * 离散轴的通用配置\n */\n axisBand?: IAxisCommonTheme;\n /**\n * 连续轴的通用配置\n */\n axisLinear?: IAxisCommonTheme;\n /**\n * 笛卡尔坐标系下 x 轴的配置\n */\n axisX?: ICartesianAxisCommonTheme;\n /**\n * 笛卡尔坐标系下 y 轴配置\n */\n axisY?: ICartesianAxisCommonTheme;\n /**\n * 笛卡尔坐标系下 z 轴配置\n */\n axisZ?: ICartesianAxisCommonTheme;\n /**\n * 极坐标系下半径轴配置\n */\n axisRadius?: IPolarAxisCommonTheme;\n /**\n * 极坐标系下角度轴配置\n */\n axisAngle?: IPolarAxisCommonTheme;\n /**\n * 离散图例配置\n */\n [ComponentTypeEnum.discreteLegend]?: IDiscreteLegendTheme;\n /**\n * 连续颜色图例配置\n */\n [ComponentTypeEnum.colorLegend]?: IColorLegendTheme;\n /**\n * 连续尺寸图例配置\n */\n [ComponentTypeEnum.sizeLegend]?: ISizeLegendTheme;\n /**\n * markLine 标记配置\n */\n [ComponentTypeEnum.markLine]?: IMarkLineTheme;\n /**\n * markArea 标记配置\n */\n [ComponentTypeEnum.markArea]?: IMarkAreaTheme;\n /**\n * markPoint 标记配置\n */\n [ComponentTypeEnum.markPoint]?: IMarkPointTheme;\n /**\n * tooltip 组件配置\n */\n [ComponentTypeEnum.tooltip]?: ITooltipTheme<string | IColorKey>;\n /**\n * crosshair 配置\n */\n [ComponentTypeEnum.crosshair]?: ICrosshairTheme;\n /**\n * dataZoom 配置\n */\n [ComponentTypeEnum.dataZoom]?: IDataZoomTheme;\n /**\n * scrollbar 滚动条配置\n */\n [ComponentTypeEnum.scrollBar]?: IScrollBarTheme;\n /**\n * 指标卡组件配置\n */\n [ComponentTypeEnum.indicator]?: IIndicatorTheme;\n /**\n * 播放器配置\n */\n [ComponentTypeEnum.player]?: IPlayerTheme;\n /**\n * 框选配置\n */\n [ComponentTypeEnum.brush]?: IBrushTheme;\n /**\n * 图表标题配置\n */\n [ComponentTypeEnum.title]?: ITitleTheme;\n /**\n * 地图标签配置\n */\n [ComponentTypeEnum.mapLabel]?: IMapLabelTheme;\n /**\n * 省略文本配置\n */\n [ComponentTypeEnum.poptip]?: IPoptipTheme;\n /**\n * 堆叠总计标签配置\n * @since 1.3.0\n */\n [ComponentTypeEnum.totalLabel]?: ITotalLabelTheme;\n}\n"]}
|
|
@@ -12,9 +12,8 @@ export type OffsetPoint = {
|
|
|
12
12
|
export type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';
|
|
13
13
|
export type IDataPos = StringOrNumber | IAggrType;
|
|
14
14
|
export type IDataPosCallback = (relativeSeriesData: Datum[], startRelativeSeriesData: Datum[], endRelativeSeriesData: Datum[], relativeSeries: ICartesianSeries, startRelativeSeries: ICartesianSeries, endRelativeSeries: ICartesianSeries) => StringOrNumber;
|
|
15
|
-
export type IDataPointCallback = (relativeSeriesData: Datum[], relativeSeries: ICartesianSeries) => StringOrNumber;
|
|
16
15
|
export type IDataPointSpec = {
|
|
17
|
-
[key: string]: IDataPos |
|
|
16
|
+
[key: string]: IDataPos | IDataPosCallback;
|
|
18
17
|
refRelativeSeriesIndex?: number;
|
|
19
18
|
refRelativeSeriesId?: StringOrNumber;
|
|
20
19
|
xFieldIndex?: number;
|
|
@@ -27,8 +26,8 @@ export type MarkerPositionPoint = {
|
|
|
27
26
|
y: StringOrNumber;
|
|
28
27
|
};
|
|
29
28
|
export type ICoordinateOption = {
|
|
30
|
-
x?: IOptionAggrField | (
|
|
31
|
-
y?: IOptionAggrField | (
|
|
29
|
+
x?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];
|
|
30
|
+
y?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];
|
|
32
31
|
getRefRelativeSeries?: () => ICartesianSeries;
|
|
33
32
|
} & IOptionSeries;
|
|
34
33
|
export type IMarkerPositionsSpec = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IPadding } from '@visactor/vutils';\nimport type { SymbolType, IRichTextCharacter } from '@visactor/vrender-core';\nimport type { IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec, StringOrNumber } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { IOptionAggrField, IOptionSeries } from '../../data/transforms/aggregation';\n\nexport type OffsetPoint = {\n /**\n * x 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 宽度的占比\n */\n x?: number | string;\n /**\n * y 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 高度的占比\n */\n y?: number | string;\n};\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = StringOrNumber | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: Datum[],\n startRelativeSeriesData: Datum[],\n endRelativeSeriesData: Datum[],\n relativeSeries: ICartesianSeries,\n startRelativeSeries: ICartesianSeries,\n endRelativeSeries: ICartesianSeries\n) => StringOrNumber;\n\nexport type
|
|
1
|
+
{"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IPadding } from '@visactor/vutils';\nimport type { SymbolType, IRichTextCharacter } from '@visactor/vrender-core';\nimport type { IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec, StringOrNumber } from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { IOptionAggrField, IOptionSeries } from '../../data/transforms/aggregation';\n\nexport type OffsetPoint = {\n /**\n * x 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 宽度的占比\n */\n x?: number | string;\n /**\n * y 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 高度的占比\n */\n y?: number | string;\n};\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = StringOrNumber | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: Datum[],\n startRelativeSeriesData: Datum[],\n endRelativeSeriesData: Datum[],\n relativeSeries: ICartesianSeries,\n startRelativeSeries: ICartesianSeries,\n endRelativeSeries: ICartesianSeries\n) => StringOrNumber;\n\nexport type IDataPointSpec = {\n /**\n * 数据字段配置\n */\n [key: string]: IDataPos | IDataPosCallback;\n /**\n * 具体某个数据元素关联的series(仅在标注目标:数据元素下有效)\n */\n refRelativeSeriesIndex?: number;\n refRelativeSeriesId?: StringOrNumber;\n /**\n * 指定使用 xField 上的那个维度索引,因为 xField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.7.0\n */\n xFieldIndex?: number;\n /**\n * 指定使用 xField 上的维度名称,因为 xField 字段有可能会包含多个维度,比如分组场景。\n * `xFieldIndex` 和 `xFieldDim` 声明一个即可,同时声明则 `xFieldDim` 优先级更高。\n * @since 1.7.0\n */\n xFieldDim?: string;\n /**\n * 指定使用 yField 上的那个维度索引,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * @default 0\n * @since 1.7.0\n */\n yFieldIndex?: number;\n /**\n * 指定使用 yField 上的维度名称,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * `yFieldIndex` 和 `yFieldDim` 声明一个即可,同时声明则 `yFieldDim` 优先级更高。\n * @since 1.7.0\n */\n yFieldDim?: string;\n};\n\nexport type MarkerPositionPoint = {\n /**\n * x 坐标位置,number 类型表示像素值,string 类型表示相对画布宽度或者 region 宽度的占比(从左往右)\n */\n x: StringOrNumber;\n /**\n * y 坐标位置,number 类型表示像素值,string 类型表示相对画布高度或者 region 高度的占比(从上至下)\n */\n y: StringOrNumber;\n};\n\nexport type ICoordinateOption = {\n x?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n y?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n getRefRelativeSeries?: () => ICartesianSeries;\n} & IOptionSeries;\n\nexport type IMarkerPositionsSpec = {\n /**\n * 画布坐标\n */\n positions: MarkerPositionPoint[];\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n};\n\nexport type IMarkerLabelWithoutRefSpec = {\n visible?: boolean;\n /**\n * label整体 - 是否自动旋转\n */\n autoRotate?: boolean;\n /**\n * label整体 - 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * label整体 - 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * label整体 - 背景面板配置\n */\n labelBackground?: {\n visible?: boolean;\n /**\n * 内部边距\n */\n padding?: IPadding | number[] | number;\n /**\n * 背景面板样式\n */\n style?: Omit<IRectMarkSpec, 'visible'>;\n };\n /**\n * 文本类型:text, rich, html\n */\n type?: 'text' | 'rich' | 'html';\n /**\n * 文本内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n * 支持富文本内容, 如textConfig, html, 设置富文本时要配置type类型为'rich'或'html'\n */\n text?: string | string[] | number | number[] | IRichTextCharacter[];\n /**\n * label文本 - 文本格式化\n * @param markData 组成标注的数据\n * @param seriesData 标注关联的数据\n * @returns 格式化后的文本\n */\n formatMethod?: (\n markData: Datum[],\n seriesData: Datum[]\n ) => string | string[] | number | number[] | IRichTextCharacter[];\n /**\n * label文本 - 文本样式\n */\n style?: Omit<ITextMarkSpec, 'visible'>;\n\n /**\n * label文本 - 文本前 mark 图元\n */\n shape?: {\n visible?: boolean;\n style: Omit<ISymbolMarkSpec, 'visible'>;\n };\n /**\n * label文本 - shape 同文本之间的间距\n */\n space?: number;\n\n /**\n * 是否自动调整 label 使其展示在 marker 可见区域内。\n * @default false\n * @since 1.4.0\n */\n confine?: boolean;\n /**\n * 水平方向的偏移\n */\n dx?: number;\n /**\n * 垂直方向的偏移\n */\n dy?: number;\n};\n\nexport type IMarkerLabelSpec = IMarkerLabelWithoutRefSpec & IMarkerRef;\n\nexport interface IMarkerRef {\n /**\n * label or symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label or symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label or symbol 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n}\n\n// 跨越系列的配置\nexport interface IMarkerCrossSeriesSpec {\n /**\n * 起点和终点关联的series(仅在标注目标:坐标空间下有效)\n */\n startRelativeSeriesIndex?: number;\n endRelativeSeriesIndex?: number;\n startRelativeSeriesId?: string;\n endRelativeSeriesId?: string;\n}\n\nexport interface IMarkerSpec extends IComponentSpec {\n /**\n * 标注数据关联的series\n */\n relativeSeriesIndex?: number;\n relativeSeriesId?: number | string;\n /**\n * marker组件是否可见\n * @default true\n */\n visible?: boolean;\n /**\n * marker组件是否可交互\n * @default false\n */\n interactive?: boolean;\n /**\n * marker组件是否自动拓展轴范围\n * @default false\n * @since 1.1.0\n */\n autoRange?: boolean;\n /**\n * marker组件超出图表区域是否被裁剪\n * @default false\n * @since 1.3.0\n */\n clip?: boolean;\n\n /**\n * 标注组件的名称标识\n * @since 1.7.0\n */\n name?: string;\n}\n\nexport interface IMarkerSymbol extends IMarkerRef {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n style?: Omit<ISymbolMarkSpec, 'visible'>;\n}\n"]}
|
|
@@ -25,32 +25,20 @@ function isNeedExtendDomain(domain, datum, autoRange) {
|
|
|
25
25
|
|
|
26
26
|
function getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint) {
|
|
27
27
|
var _a, _b;
|
|
28
|
-
const {relativeSeries: relativeSeries
|
|
28
|
+
const {relativeSeries: relativeSeries} = refSeries;
|
|
29
29
|
let x;
|
|
30
|
-
|
|
31
|
-
(0, util_1.isPercent)(datum.x)
|
|
32
|
-
|
|
33
|
-
const relativeSeriesData = relativeSeries.getData().getLatestData(), startRelativeSeriesData = startRelativeSeries.getData().getLatestData(), endRelativeSeriesData = endRelativeSeries.getData().getLatestData();
|
|
34
|
-
x = datum.x(relativeSeriesData, startRelativeSeriesData, endRelativeSeriesData, relativeSeries, startRelativeSeries, endRelativeSeries);
|
|
35
|
-
}
|
|
36
|
-
x = relativeSeries.getXAxisHelper().dataToPosition([ x ]) + regionStartLayoutStartPoint.x;
|
|
37
|
-
}
|
|
38
|
-
return x;
|
|
30
|
+
return (0, vutils_1.isNumber)(datum.x) && isNeedExtendDomain(xDomain, datum.x, autoRange) && (null === (_b = null == relativeSeries ? void 0 : (_a = relativeSeries.getXAxisHelper()).setExtendDomain) || void 0 === _b || _b.call(_a, "marker_xAxis_extend", datum.x)),
|
|
31
|
+
x = (0, util_1.isPercent)(datum.x) ? convertPercentToValue(datum.x, regionWidth) + regionStartLayoutStartPoint.x : relativeSeries.getXAxisHelper().dataToPosition([ datum.x ]) + regionStartLayoutStartPoint.x,
|
|
32
|
+
x;
|
|
39
33
|
}
|
|
40
34
|
|
|
41
35
|
function getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint) {
|
|
42
36
|
var _a, _b;
|
|
43
|
-
const {relativeSeries: relativeSeries
|
|
37
|
+
const {relativeSeries: relativeSeries} = refSeries;
|
|
44
38
|
let y;
|
|
45
|
-
|
|
46
|
-
(0, util_1.isPercent)(datum.y)
|
|
47
|
-
|
|
48
|
-
const relativeSeriesData = relativeSeries.getData().getLatestData(), startRelativeSeriesData = startRelativeSeries.getData().getLatestData(), endRelativeSeriesData = endRelativeSeries.getData().getLatestData();
|
|
49
|
-
y = datum.y(relativeSeriesData, startRelativeSeriesData, endRelativeSeriesData, relativeSeries, startRelativeSeries, endRelativeSeries);
|
|
50
|
-
}
|
|
51
|
-
y = relativeSeries.getYAxisHelper().dataToPosition([ y ]) + regionStartLayoutStartPoint.y;
|
|
52
|
-
}
|
|
53
|
-
return y;
|
|
39
|
+
return (0, vutils_1.isNumber)(datum.y) && isNeedExtendDomain(yDomain, datum.y, autoRange) && (null === (_b = null === (_a = relativeSeries.getYAxisHelper()) || void 0 === _a ? void 0 : _a.setExtendDomain) || void 0 === _b || _b.call(_a, "marker_yAxis_extend", datum.y)),
|
|
40
|
+
y = (0, util_1.isPercent)(datum.y) ? convertPercentToValue(datum.y, regionHeight) + regionStartLayoutStartPoint.y : relativeSeries.getYAxisHelper().dataToPosition([ datum.y ]) + regionStartLayoutStartPoint.y,
|
|
41
|
+
y;
|
|
54
42
|
}
|
|
55
43
|
|
|
56
44
|
function convertPercentToValue(percent, relativeLength) {
|
|
@@ -109,9 +97,8 @@ function coordinateLayout(data, relativeSeries, autoRange, coordinatesOffset) {
|
|
|
109
97
|
x && (offsetX = (0, util_1.isPercent)(x) ? Number(x.substring(0, x.length - 1)) * regionWidth / 100 : x),
|
|
110
98
|
y && (offsetY = (0, util_1.isPercent)(y) ? Number(y.substring(0, y.length - 1)) * regionHeight / 100 : y);
|
|
111
99
|
}
|
|
112
|
-
const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain(), yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain(),
|
|
113
|
-
vutils_1.array)(datum.x)
|
|
114
|
-
vutils_1.array)(datum.y).map((y => (0, vutils_1.isFunction)(y) ? y(refRelativeSeriesData, refRelativeSeries) : y));
|
|
100
|
+
const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain(), yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain(), xValue = (0,
|
|
101
|
+
vutils_1.array)(datum.x), yValue = (0, vutils_1.array)(datum.y);
|
|
115
102
|
1 === xValue.length && (0, vutils_1.isNumber)(xValue[0]) && isNeedExtendDomain(xDomain, xValue[0], autoRange) && (null === (_b = null === (_a = refRelativeSeries.getXAxisHelper()) || void 0 === _a ? void 0 : _a.setExtendDomain) || void 0 === _b || _b.call(_a, "marker_xAxis_extend", xValue[0])),
|
|
116
103
|
1 === yValue.length && (0, vutils_1.isNumber)(yValue[0]) && isNeedExtendDomain(yDomain, yValue[0], autoRange) && (null === (_d = null === (_c = refRelativeSeries.getYAxisHelper()) || void 0 === _c ? void 0 : _c.setExtendDomain) || void 0 === _d || _d.call(_c, "marker_yAxis_extend", yValue[0])),
|
|
117
104
|
points.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/marker/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { DataView } from '@visactor/vdataset';\nimport {\n isValid,\n isNumber,\n array,\n minInArray,\n maxInArray,\n isFunction,\n isArray,\n normalizePadding\n} from '@visactor/vutils';\nimport type { Datum, IPoint, StringOrNumber } from '../../typings';\nimport { isPercent, transformToGraphic } from '../../util';\nimport type { IDataPointCallback, IDataPos, IMarkerLabelSpec, MarkerPositionPoint } from './interface';\nimport { AGGR_TYPE } from '../../constant/marker';\nimport type { IRegion } from '../../region/interface';\nimport type { OffsetPoint } from './interface';\n\nfunction isNeedExtendDomain(domain: number[], datum: number, autoRange: boolean) {\n if (!autoRange) {\n return false;\n }\n const domainNum = domain.map((n: any) => n * 1);\n const min = minInArray(domainNum);\n const max = maxInArray(domainNum);\n if (datum < min || datum > max) {\n return true;\n }\n return false;\n}\n\nfunction getXValue(\n datum: Datum,\n xDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: ICartesianSeries },\n regionWidth: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries, startRelativeSeries, endRelativeSeries } = refSeries;\n isNumber(datum.x) &&\n isNeedExtendDomain(xDomain, datum.x, autoRange) &&\n relativeSeries?.getXAxisHelper().setExtendDomain?.('marker_xAxis_extend', datum.x);\n let x: number;\n if (isPercent(datum.x)) {\n x = convertPercentToValue(datum.x, regionWidth) + regionStartLayoutStartPoint.x;\n } else {\n x = datum.x;\n if (isFunction(datum.x)) {\n const relativeSeriesData = relativeSeries.getData().getLatestData();\n const startRelativeSeriesData = startRelativeSeries.getData().getLatestData();\n const endRelativeSeriesData = endRelativeSeries.getData().getLatestData();\n x = datum.x(\n relativeSeriesData,\n startRelativeSeriesData,\n endRelativeSeriesData,\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n );\n }\n x = relativeSeries.getXAxisHelper().dataToPosition([x]) + regionStartLayoutStartPoint.x;\n }\n\n return x;\n}\n\nfunction getYValue(\n datum: Datum,\n yDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: ICartesianSeries },\n regionHeight: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries, startRelativeSeries, endRelativeSeries } = refSeries;\n isNumber(datum.y) &&\n isNeedExtendDomain(yDomain, datum.y, autoRange) &&\n relativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', datum.y);\n\n let y: number;\n if (isPercent(datum.y)) {\n y = convertPercentToValue(datum.y, regionHeight) + regionStartLayoutStartPoint.y;\n } else {\n y = datum.y;\n if (isFunction(datum.y)) {\n const relativeSeriesData = relativeSeries.getData().getLatestData();\n const startRelativeSeriesData = startRelativeSeries.getData().getLatestData();\n const endRelativeSeriesData = endRelativeSeries.getData().getLatestData();\n y = datum.y(\n relativeSeriesData,\n startRelativeSeriesData,\n endRelativeSeriesData,\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n );\n }\n y = relativeSeries.getYAxisHelper().dataToPosition([y]) + regionStartLayoutStartPoint.y;\n }\n\n return y;\n}\n\nfunction convertPercentToValue(percent: string, relativeLength: number) {\n return (Number(percent.substring(0, percent.length - 1)) * relativeLength) / 100;\n}\n\nexport function isAggrSpec(spec: IDataPos) {\n return AGGR_TYPE.includes(spec as any);\n}\n\nexport function xyLayout(\n data: DataView,\n startRelativeSeries: ICartesianSeries,\n endRelativeSeries: ICartesianSeries,\n relativeSeries: ICartesianSeries,\n autoRange: boolean\n) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n\n const lines: IPoint[][] = [];\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const xDomain = relativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = relativeSeries.getYAxisHelper().getScale(0).domain();\n dataPoints.forEach((datum: IPoint) => {\n const isValidX = isValid(datum.x);\n const isValidY = isValid(datum.y);\n if (isValidX && isValidY) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n lines.push([{ x, y }]);\n } else if (isValid(datum.x)) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n );\n const y1 = Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y);\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x,\n y: y1\n }\n ]);\n } else if (isValid(datum.y)) {\n const x = Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n const x1 = Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n );\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x1,\n y: y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function coordinateLayout(\n data: DataView,\n relativeSeries: ICartesianSeries,\n autoRange: boolean,\n coordinatesOffset: OffsetPoint[] | OffsetPoint\n) {\n const points: IPoint[] = [];\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const isArrayCoordinatesOffset = isArray(coordinatesOffset);\n dataPoints.forEach(\n (\n datum: {\n x: StringOrNumber[] | StringOrNumber | IDataPointCallback | null;\n y: StringOrNumber[] | StringOrNumber | IDataPointCallback | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n },\n index: number\n ) => {\n const refRelativeSeries = datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries;\n const regionStart = refRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n\n const { width: regionWidth, height: regionHeight } = regionStart.getLayoutRect();\n\n let offsetX = 0;\n let offsetY = 0;\n if (coordinatesOffset) {\n const currentCoordinatesOffset = isArrayCoordinatesOffset ? coordinatesOffset[index] : coordinatesOffset;\n const x = currentCoordinatesOffset.x;\n const y = currentCoordinatesOffset.y;\n if (x) {\n offsetX = isPercent(x) ? (Number(x.substring(0, x.length - 1)) * regionWidth) / 100 : (x as number);\n }\n if (y) {\n offsetY = isPercent(y) ? (Number(y.substring(0, y.length - 1)) * regionHeight) / 100 : (y as number);\n }\n }\n\n const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain();\n const refRelativeSeriesData = refRelativeSeries.getData().getLatestData();\n const xValue = array(datum.x).map(x => {\n if (isFunction(x)) {\n return x(refRelativeSeriesData, refRelativeSeries);\n }\n return x;\n });\n const yValue = array(datum.y).map(y => {\n if (isFunction(y)) {\n return y(refRelativeSeriesData, refRelativeSeries);\n }\n return y;\n });\n\n xValue.length === 1 &&\n isNumber(xValue[0]) &&\n isNeedExtendDomain(xDomain, xValue[0], autoRange) &&\n refRelativeSeries.getXAxisHelper()?.setExtendDomain?.('marker_xAxis_extend', xValue[0] as number);\n\n yValue.length === 1 &&\n isNumber(yValue[0]) &&\n isNeedExtendDomain(yDomain, yValue[0], autoRange) &&\n refRelativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', yValue[0] as number);\n points.push({\n x: refRelativeSeries.getXAxisHelper().dataToPosition(xValue) + regionStartLayoutStartPoint.x + offsetX,\n y: refRelativeSeries.getYAxisHelper().dataToPosition(yValue) + regionStartLayoutStartPoint.y + offsetY\n });\n }\n );\n return points;\n}\n\nexport function positionLayout(positions: MarkerPositionPoint[], series: ISeries, regionRelative: boolean): IPoint[] {\n if (regionRelative) {\n const region = series.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n const { width: regionWidth, height: regionHeight } = region.getLayoutRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, regionWidth);\n }\n x = (x as number) + regionStartX;\n if (isPercent(y)) {\n y = convertPercentToValue(y, regionHeight);\n }\n y = (y as number) + regionStartY;\n\n return {\n x,\n y\n };\n });\n }\n\n const { width: canvasWidth, height: canvasHeight } = series.getOption().getChart().getCanvasRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, canvasWidth);\n }\n if (isPercent(y)) {\n y = convertPercentToValue(y, canvasHeight);\n }\n return {\n x: x as number,\n y: y as number\n };\n });\n}\n\nexport function computeClipRange(regions: IRegion[]) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n regions.forEach((region: IRegion) => {\n if (region.getLayoutStartPoint().x < minX) {\n minX = region.getLayoutStartPoint().x;\n }\n if (region.getLayoutStartPoint().x + region.getLayoutRect().width > maxX) {\n maxX = region.getLayoutStartPoint().x + region.getLayoutRect().width;\n }\n if (region.getLayoutStartPoint().y < minY) {\n minY = region.getLayoutStartPoint().y;\n }\n if (region.getLayoutStartPoint().y + region.getLayoutRect().height > maxY) {\n maxY = region.getLayoutStartPoint().y + region.getLayoutRect().height;\n }\n });\n return { minX, maxX, minY, maxY };\n}\n\nexport function transformLabelAttributes(label: IMarkerLabelSpec) {\n const { labelBackground = {}, style, shape, ...restLabel } = label;\n\n if (label.visible !== false) {\n const labelAttrs = restLabel as any;\n\n if (shape?.visible) {\n labelAttrs.shape = {\n visible: true,\n ...transformToGraphic(shape.style)\n };\n } else {\n labelAttrs.shape = {\n visible: false\n };\n }\n\n if (labelBackground.visible !== false) {\n labelAttrs.panel = {\n visible: true,\n ...transformToGraphic(labelBackground.style)\n };\n if (isValid(labelBackground.padding)) {\n labelAttrs.padding = normalizePadding(labelBackground.padding);\n }\n } else {\n labelAttrs.panel = {\n visible: false\n };\n labelAttrs.padding = 0;\n }\n\n if (style) {\n labelAttrs.textStyle = transformToGraphic(style);\n }\n return labelAttrs;\n }\n return {\n visible: false\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/marker/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { DataView } from '@visactor/vdataset';\nimport { isValid, isNumber, array, minInArray, maxInArray, isArray, normalizePadding } from '@visactor/vutils';\nimport type { Datum, IPoint, StringOrNumber } from '../../typings';\nimport { isPercent, transformToGraphic } from '../../util';\nimport type { IDataPos, IMarkerLabelSpec, MarkerPositionPoint } from './interface';\nimport { AGGR_TYPE } from '../../constant/marker';\nimport type { IRegion } from '../../region/interface';\nimport type { OffsetPoint } from './interface';\n\nfunction isNeedExtendDomain(domain: number[], datum: number, autoRange: boolean) {\n if (!autoRange) {\n return false;\n }\n const domainNum = domain.map((n: any) => n * 1);\n const min = minInArray(domainNum);\n const max = maxInArray(domainNum);\n if (datum < min || datum > max) {\n return true;\n }\n return false;\n}\n\nfunction getXValue(\n datum: Datum,\n xDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: ICartesianSeries },\n regionWidth: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.x) &&\n isNeedExtendDomain(xDomain, datum.x, autoRange) &&\n relativeSeries?.getXAxisHelper().setExtendDomain?.('marker_xAxis_extend', datum.x);\n let x: number;\n if (isPercent(datum.x)) {\n x = convertPercentToValue(datum.x, regionWidth) + regionStartLayoutStartPoint.x;\n } else {\n x = relativeSeries.getXAxisHelper().dataToPosition([datum.x]) + regionStartLayoutStartPoint.x;\n }\n\n return x;\n}\n\nfunction getYValue(\n datum: Datum,\n yDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: ICartesianSeries },\n regionHeight: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.y) &&\n isNeedExtendDomain(yDomain, datum.y, autoRange) &&\n relativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', datum.y);\n\n let y: number;\n if (isPercent(datum.y)) {\n y = convertPercentToValue(datum.y, regionHeight) + regionStartLayoutStartPoint.y;\n } else {\n y = relativeSeries.getYAxisHelper().dataToPosition([datum.y]) + regionStartLayoutStartPoint.y;\n }\n\n return y;\n}\n\nfunction convertPercentToValue(percent: string, relativeLength: number) {\n return (Number(percent.substring(0, percent.length - 1)) * relativeLength) / 100;\n}\n\nexport function isAggrSpec(spec: IDataPos) {\n return AGGR_TYPE.includes(spec as any);\n}\n\nexport function xyLayout(\n data: DataView,\n startRelativeSeries: ICartesianSeries,\n endRelativeSeries: ICartesianSeries,\n relativeSeries: ICartesianSeries,\n autoRange: boolean\n) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n\n const lines: IPoint[][] = [];\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const xDomain = relativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = relativeSeries.getYAxisHelper().getScale(0).domain();\n dataPoints.forEach((datum: IPoint) => {\n const isValidX = isValid(datum.x);\n const isValidY = isValid(datum.y);\n if (isValidX && isValidY) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n lines.push([{ x, y }]);\n } else if (isValid(datum.x)) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n );\n const y1 = Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y);\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x,\n y: y1\n }\n ]);\n } else if (isValid(datum.y)) {\n const x = Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n const x1 = Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n );\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x1,\n y: y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function coordinateLayout(\n data: DataView,\n relativeSeries: ICartesianSeries,\n autoRange: boolean,\n coordinatesOffset: OffsetPoint[] | OffsetPoint\n) {\n const points: IPoint[] = [];\n const dataPoints = data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const isArrayCoordinatesOffset = isArray(coordinatesOffset);\n dataPoints.forEach(\n (\n datum: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n },\n index: number\n ) => {\n const refRelativeSeries = datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries;\n const regionStart = refRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n\n const { width: regionWidth, height: regionHeight } = regionStart.getLayoutRect();\n\n let offsetX = 0;\n let offsetY = 0;\n if (coordinatesOffset) {\n const currentCoordinatesOffset = isArrayCoordinatesOffset ? coordinatesOffset[index] : coordinatesOffset;\n const x = currentCoordinatesOffset.x;\n const y = currentCoordinatesOffset.y;\n if (x) {\n offsetX = isPercent(x) ? (Number(x.substring(0, x.length - 1)) * regionWidth) / 100 : (x as number);\n }\n if (y) {\n offsetY = isPercent(y) ? (Number(y.substring(0, y.length - 1)) * regionHeight) / 100 : (y as number);\n }\n }\n\n const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain();\n const xValue = array(datum.x);\n const yValue = array(datum.y);\n\n xValue.length === 1 &&\n isNumber(xValue[0]) &&\n isNeedExtendDomain(xDomain, xValue[0], autoRange) &&\n refRelativeSeries.getXAxisHelper()?.setExtendDomain?.('marker_xAxis_extend', xValue[0] as number);\n\n yValue.length === 1 &&\n isNumber(yValue[0]) &&\n isNeedExtendDomain(yDomain, yValue[0], autoRange) &&\n refRelativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', yValue[0] as number);\n points.push({\n x: refRelativeSeries.getXAxisHelper().dataToPosition(xValue) + regionStartLayoutStartPoint.x + offsetX,\n y: refRelativeSeries.getYAxisHelper().dataToPosition(yValue) + regionStartLayoutStartPoint.y + offsetY\n });\n }\n );\n return points;\n}\n\nexport function positionLayout(positions: MarkerPositionPoint[], series: ISeries, regionRelative: boolean): IPoint[] {\n if (regionRelative) {\n const region = series.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n const { width: regionWidth, height: regionHeight } = region.getLayoutRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, regionWidth);\n }\n x = (x as number) + regionStartX;\n if (isPercent(y)) {\n y = convertPercentToValue(y, regionHeight);\n }\n y = (y as number) + regionStartY;\n\n return {\n x,\n y\n };\n });\n }\n\n const { width: canvasWidth, height: canvasHeight } = series.getOption().getChart().getCanvasRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, canvasWidth);\n }\n if (isPercent(y)) {\n y = convertPercentToValue(y, canvasHeight);\n }\n return {\n x: x as number,\n y: y as number\n };\n });\n}\n\nexport function computeClipRange(regions: IRegion[]) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n regions.forEach((region: IRegion) => {\n if (region.getLayoutStartPoint().x < minX) {\n minX = region.getLayoutStartPoint().x;\n }\n if (region.getLayoutStartPoint().x + region.getLayoutRect().width > maxX) {\n maxX = region.getLayoutStartPoint().x + region.getLayoutRect().width;\n }\n if (region.getLayoutStartPoint().y < minY) {\n minY = region.getLayoutStartPoint().y;\n }\n if (region.getLayoutStartPoint().y + region.getLayoutRect().height > maxY) {\n maxY = region.getLayoutStartPoint().y + region.getLayoutRect().height;\n }\n });\n return { minX, maxX, minY, maxY };\n}\n\nexport function transformLabelAttributes(label: IMarkerLabelSpec) {\n const { labelBackground = {}, style, shape, ...restLabel } = label;\n\n if (label.visible !== false) {\n const labelAttrs = restLabel as any;\n\n if (shape?.visible) {\n labelAttrs.shape = {\n visible: true,\n ...transformToGraphic(shape.style)\n };\n } else {\n labelAttrs.shape = {\n visible: false\n };\n }\n\n if (labelBackground.visible !== false) {\n labelAttrs.panel = {\n visible: true,\n ...transformToGraphic(labelBackground.style)\n };\n if (isValid(labelBackground.padding)) {\n labelAttrs.padding = normalizePadding(labelBackground.padding);\n }\n } else {\n labelAttrs.panel = {\n visible: false\n };\n labelAttrs.padding = 0;\n }\n\n if (style) {\n labelAttrs.textStyle = transformToGraphic(style);\n }\n return labelAttrs;\n }\n return {\n visible: false\n };\n}\n"]}
|
package/cjs/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "1.8.
|
|
4
|
+
export declare const version = "1.8.5";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export * from '../typings/spec/common';
|
package/cjs/core/index.js
CHANGED
|
@@ -35,7 +35,7 @@ Object.defineProperty(exports, "Factory", {
|
|
|
35
35
|
get: function() {
|
|
36
36
|
return factory_1.Factory;
|
|
37
37
|
}
|
|
38
|
-
}), exports.version = "1.8.
|
|
38
|
+
}), exports.version = "1.8.5", __exportStar(require("../typings/spec/common"), exports),
|
|
39
39
|
__exportStar(require("../event/interface"), exports), __exportStar(require("../theme/interface"), exports),
|
|
40
40
|
__exportStar(require("../constant"), exports), __exportStar(require("./interface"), exports),
|
|
41
41
|
__exportStar(require("../typings/spec/index"), exports), __exportStar(require("../theme/index"), exports);
|
package/cjs/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,OAAO,CAAC;AAM/B,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAC5B,8CAA4B;AAK5B,wDAAsC;AAGtC,iDAA+B;AAG/B,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAGhB,4CAA0B","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.8.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,OAAO,CAAC;AAM/B,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAC5B,8CAA4B;AAK5B,wDAAsC;AAGtC,iDAA+B;AAG/B,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAGhB,4CAA0B","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.8.5\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n\n// plugin\nexport * from '../plugin';\n"]}
|
|
@@ -42,15 +42,7 @@ function markerMedian(_data, opt) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function markerAggregation(_data, options) {
|
|
45
|
-
const
|
|
46
|
-
min: exports.markerMin,
|
|
47
|
-
max: exports.markerMax,
|
|
48
|
-
sum: markerSum,
|
|
49
|
-
average: markerAverage,
|
|
50
|
-
variance: markerVariance,
|
|
51
|
-
standardDeviation: markerStandardDeviation,
|
|
52
|
-
median: markerMedian
|
|
53
|
-
}, results = [];
|
|
45
|
+
const results = [];
|
|
54
46
|
return options.forEach((option => {
|
|
55
47
|
const result = {
|
|
56
48
|
x: null,
|
|
@@ -58,21 +50,11 @@ function markerAggregation(_data, options) {
|
|
|
58
50
|
};
|
|
59
51
|
if ((0, vutils_1.isValid)(option.x)) {
|
|
60
52
|
const x = option.x;
|
|
61
|
-
|
|
62
|
-
const {aggrType: aggrType, field: field} = x;
|
|
63
|
-
result.x = aggrMap[aggrType](_data, {
|
|
64
|
-
field: field
|
|
65
|
-
});
|
|
66
|
-
} else result.x = x;
|
|
53
|
+
(0, vutils_1.isArray)(x) ? result.x = x.map((item => getFinalValue(item, _data, option))) : result.x = getFinalValue(x, _data, option);
|
|
67
54
|
}
|
|
68
55
|
if ((0, vutils_1.isValid)(option.y)) {
|
|
69
56
|
const y = option.y;
|
|
70
|
-
|
|
71
|
-
const {aggrType: aggrType, field: field} = y;
|
|
72
|
-
result.y = aggrMap[aggrType](_data, {
|
|
73
|
-
field: field
|
|
74
|
-
});
|
|
75
|
-
} else result.y = y;
|
|
57
|
+
(0, vutils_1.isArray)(y) ? result.y = y.map((item => getFinalValue(item, _data, option))) : result.y = getFinalValue(y, _data, option);
|
|
76
58
|
}
|
|
77
59
|
option.getRefRelativeSeries && (result.getRefRelativeSeries = option.getRefRelativeSeries),
|
|
78
60
|
results.push(result);
|
|
@@ -82,4 +64,26 @@ function markerAggregation(_data, options) {
|
|
|
82
64
|
exports.markerMax = markerMax, exports.markerSum = markerSum, exports.markerAverage = markerAverage,
|
|
83
65
|
exports.markerVariance = markerVariance, exports.markerStandardDeviation = markerStandardDeviation,
|
|
84
66
|
exports.markerMedian = markerMedian, exports.markerAggregation = markerAggregation;
|
|
67
|
+
|
|
68
|
+
const aggrMap = {
|
|
69
|
+
min: exports.markerMin,
|
|
70
|
+
max: exports.markerMax,
|
|
71
|
+
sum: markerSum,
|
|
72
|
+
average: markerAverage,
|
|
73
|
+
variance: markerVariance,
|
|
74
|
+
standardDeviation: markerStandardDeviation,
|
|
75
|
+
median: markerMedian
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
function getFinalValue(source, _data, option) {
|
|
79
|
+
const relativeSeries = option.getRelativeSeries(), startSeries = option.getStartRelativeSeries(), endSeries = option.getEndRelativeSeries(), relativeSeriesData = relativeSeries.getData().getLatestData(), startRelativeSeriesData = startSeries.getData().getLatestData(), endRelativeSeriesData = endSeries.getData().getLatestData();
|
|
80
|
+
if ((0, vutils_1.isFunction)(source)) return source(relativeSeriesData, startRelativeSeriesData, endRelativeSeriesData, relativeSeries, startSeries, endSeries);
|
|
81
|
+
if ((0, vutils_1.isPlainObject)(source)) {
|
|
82
|
+
const {aggrType: aggrType, field: field} = source;
|
|
83
|
+
return aggrMap[aggrType](_data, {
|
|
84
|
+
field: field
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return source;
|
|
88
|
+
}
|
|
85
89
|
//# sourceMappingURL=aggregation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/aggregation.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/aggregation.ts"],"names":[],"mappings":"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","file":"aggregation.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { IAggrType } from '../../component/marker/interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { Datum, StringOrNumber } from '../../typings';\n\nimport { isArray, isFunction, isPlainObject, isValid } from '@visactor/vutils';\nimport { variance, average, min, max, sum, standardDeviation, median } from '../../util/math';\n\nexport type IOption = {\n field: string;\n};\n\nexport type IOptionAggrField = {\n field: string;\n aggrType: IAggrType;\n};\n\nexport type IOptionPos = IOptionAggrField | string | number | StringOrNumber[];\n\nexport type IOptionSeries = {\n getRelativeSeries: () => ICartesianSeries;\n getStartRelativeSeries: () => ICartesianSeries;\n getEndRelativeSeries: () => ICartesianSeries;\n};\n\nexport type IOptionCallback = (\n relativeSeriesData: any,\n startRelativeSeriesData: any,\n endRelativeSeriesData: any,\n relativeSeries: ICartesianSeries,\n startRelative: ICartesianSeries,\n endRelative: ICartesianSeries\n) => IOptionPos;\n\nexport type IOptionAggr = {\n x?: IOptionPos | IOptionCallback;\n y?: IOptionPos | IOptionCallback;\n getRefRelativeSeries?: () => ICartesianSeries;\n} & IOptionSeries;\n\nexport const markerMin = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return min(data, opt.field);\n};\nexport const markerMax = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return max(data, opt.field);\n};\n\nexport function markerSum(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return sum(data, opt.field);\n}\nexport function markerAverage(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return average(data, opt.field);\n}\n\nexport function markerVariance(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return variance(data, opt.field);\n}\n\nexport function markerStandardDeviation(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return standardDeviation(data, opt.field);\n}\n\nexport function markerMedian(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return median(data, opt.field);\n}\n\nexport function markerAggregation(_data: Array<DataView>, options: IOptionAggr[]) {\n const results: {\n x: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n y: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n }[] = [];\n options.forEach(option => {\n const result: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n } = { x: null, y: null };\n\n if (isValid(option.x)) {\n const x = option.x;\n\n if (isArray(x)) {\n result.x = x.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.x = getFinalValue(x, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.y)) {\n const y = option.y;\n if (isArray(y)) {\n result.y = y.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.y = getFinalValue(y, _data, option) as StringOrNumber;\n }\n }\n if (option.getRefRelativeSeries) {\n result.getRefRelativeSeries = option.getRefRelativeSeries;\n }\n results.push(result);\n });\n\n return results;\n}\n\nconst aggrMap = {\n min: markerMin,\n max: markerMax,\n sum: markerSum,\n average: markerAverage,\n variance: markerVariance,\n standardDeviation: markerStandardDeviation,\n median: markerMedian\n};\n\nfunction getFinalValue(source: IOptionPos | IOptionCallback, _data: Array<DataView>, option: IOptionAggr) {\n const relativeSeries = option.getRelativeSeries();\n const startSeries = option.getStartRelativeSeries();\n const endSeries = option.getEndRelativeSeries();\n const relativeSeriesData = relativeSeries.getData().getLatestData();\n const startRelativeSeriesData = startSeries.getData().getLatestData();\n const endRelativeSeriesData = endSeries.getData().getLatestData();\n\n if (isFunction(source)) {\n return source(\n relativeSeriesData,\n startRelativeSeriesData,\n endRelativeSeriesData,\n relativeSeries,\n startSeries,\n endSeries\n ) as StringOrNumber[] | StringOrNumber;\n }\n if (isPlainObject(source)) {\n const { aggrType, field } = source as IOptionAggrField;\n return aggrMap[aggrType](_data, { field: field });\n }\n\n return source;\n}\n"]}
|
|
@@ -14,6 +14,7 @@ export declare class Trigger implements ITrigger {
|
|
|
14
14
|
protected _fields: string[] | null;
|
|
15
15
|
protected _marks: MarkSet;
|
|
16
16
|
protected _markReverse: MarkSet;
|
|
17
|
+
private _isHovered?;
|
|
17
18
|
constructor(spec: ITriggerSpec, option: ITriggerOption);
|
|
18
19
|
setStateKeys(fields: string[]): void;
|
|
19
20
|
registerMark(mark: IMark): void;
|
|
@@ -16,7 +16,8 @@ class Trigger {
|
|
|
16
16
|
constructor(spec, option) {
|
|
17
17
|
this._fields = null, this._marks = new mark_set_1.MarkSet, this._markReverse = new mark_set_1.MarkSet,
|
|
18
18
|
this.onHover = params => {
|
|
19
|
-
this.filterEventMark(params) ? this.hoverItem(params) : this.
|
|
19
|
+
this.filterEventMark(params) ? (this._isHovered = !0, this.hoverItem(params)) : this._isHovered && (this._isHovered = !1,
|
|
20
|
+
this.unhoverItem());
|
|
20
21
|
}, this.onUnHover = params => {
|
|
21
22
|
this.filterEventMark(params) || this.interaction.filterEventMark(params, interface_1.STATE_VALUE_ENUM.STATE_HOVER) || this.interaction.getEventElement(interface_1.STATE_VALUE_ENUM.STATE_HOVER)[0] && this.unhoverItem();
|
|
22
23
|
}, this.onSelect = params => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":"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","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { getDefaultInteractionConfigByMode } from './config';\nimport { isBoolean, isObject, array } from '@visactor/vutils';\nimport { mergeSpec } from '../util/spec/merge-spec';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = getDefaultInteractionConfigByMode(mode);\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else {\n this.unhoverItem();\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n const { triggerOff } = this._select;\n if (triggerOff !== 'none') {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AACvC,qCAA6D;AAC7D,6CAA8D;AAC9D,wDAAoD;AAMpD,+CAA2C;AAC3C,yDAA6D;AAC7D,0CAAoE;AAEpE,MAAa,OAAO;IAUlB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAOD,YAAY,IAAkB,EAAE,MAAsB;QAL5C,YAAO,GAAoB,IAAI,CAAC;QAChC,WAAM,GAAY,IAAI,kBAAO,EAAE,CAAC;QAChC,iBAAY,GAAY,IAAI,kBAAO,EAAE,CAAC;QAoGxC,YAAO,GAAG,CAAC,MAAuB,EAAE,EAAE;YAM5C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACxB;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,MAAuB,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,4BAAgB,CAAC,WAAW,CAAC,EAAE;gBAC1G,OAAO;aACR;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrE,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,MAAuB,EAAE,EAAE;YAC7C,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,MAAuB,EAAE,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,4BAAgB,CAAC,cAAc,CAAC,EAAE;gBAC9E,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;QACH,CAAC,CAAC;QAhIA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,MAAgB;QAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,IAAW;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,4BAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACnE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,4BAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SACtE;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAGS,SAAS;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAChG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACpG,IAAI,WAAW,EAAE;YAEf,IAAA,cAAK,EAAC,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACpC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,6BAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAqC,CAAC,CAAC;YACrG,CAAC,CAAC,CAAC;YACH,IAAI,eAAe,IAAI,eAAe,KAAK,MAAM,EAAE;gBACjD,IAAA,cAAK,EAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACvC,KAAK,CAAC,EAAE,CACN,OAAO,EACP,EAAE,KAAK,EAAE,6BAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,4BAAiB,CAAC,KAAK,EAAE,EACrE,IAAI,CAAC,SAAuC,CAC7C,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;SACF;QAED,IAAI,YAAY,EAAE;YAEhB,IAAA,cAAK,EAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,6BAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAsC,CAAC,CAAC;YACrG,CAAC,CAAC,CAAC;YACH,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;gBACnD,IAAA,cAAK,EAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,6BAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAwC,CAAC,CAAC;gBACvG,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,gBAAgB,EAAE;gBACrB,IAAA,cAAK,EAAC,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACzD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,6BAAkB,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAwC,CAAC,CAAC;gBACzG,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAEO,UAAU,CAAC,IAAgB;QACjC,MAAM,aAAa,GAAG,IAAA,0CAAiC,EAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,qBAAQ,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,qBAAQ,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAE,CAAC;QAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,IAAI,IAAA,kBAAS,EAAC,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;SAChC;aAAM,IAAI,IAAA,iBAAQ,EAAC,SAAS,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAS,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SACjD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,IAAI,IAAA,kBAAS,EAAC,UAAU,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;SAClC;aAAM,IAAI,IAAA,iBAAQ,EAAC,UAAU,CAAC,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;SACpD;IACH,CAAC;IAqCS,SAAS,CAAC,MAAuB;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,OAAO;SACR;QACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,4BAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAES,WAAW;QACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;QAC7F,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,4BAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,iBAAiB;SACzB,CAAC,CAAC;IACL,CAAC;IAES,sBAAsB,CAAC,MAAuB;QACtD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACxB;aAAM,IACL,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,4BAAgB,CAAC,WAAW,CAAC,EACvE;YACA,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAGS,WAAW,CAAC,MAAa;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,4BAAgB,CAAC,cAAc,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,4BAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAE1E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACL,CAAC;IAES,aAAa,CAAC,MAAuB;QAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,UAAU,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,4BAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAClF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,KAAK,EAAE,MAAM,CAAC,IAAI;aACnB,CAAC,CAAC;SACJ;IACH,CAAC;IAES,uBAAuB,CAAC,MAAuB;QACvD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,4BAAgB,CAAC,cAAc,CAAC,EAAE;gBACrE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAC5B;iBAAM;gBACL,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACzB,KAAK,UAAU;wBACb,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,4BAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC/E,MAAM;oBACR,KAAK,QAAQ,CAAC;oBACd;wBACE,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,4BAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;iBACvF;gBACD,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,4BAAgB,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,4BAAgB,CAAC,cAAc,CAAC,CAAC;gBACpF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACzB;SACF;aAAM,IAGL,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,4BAAgB,CAAC,cAAc,CAAC,EAC1E;YACA,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACH,CAAC;IAGS,eAAe,CAAC,MAAuB;QAC/C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAES,YAAY,CAAC,MAAW,EAAE,MAAW;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AA9PD,0BA8PC","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { getDefaultInteractionConfigByMode } from './config';\nimport { isBoolean, isObject, array } from '@visactor/vutils';\nimport { mergeSpec } from '../util/spec/merge-spec';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n private _isHovered?: boolean;\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = getDefaultInteractionConfigByMode(mode);\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n /**\n * 多个series的时候,trigger会有多个,每个trigger管理自己的marks\n * 如果不加状态\n * 会存在A系列触发hover,B系列触发unhover清空A系列高亮元素的情况\n */\n if (this.filterEventMark(params)) {\n this._isHovered = true;\n this.hoverItem(params);\n } else if (this._isHovered) {\n this._isHovered = false;\n this.unhoverItem();\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n const { triggerOff } = this._select;\n if (triggerOff !== 'none') {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
|
|
@@ -3,10 +3,6 @@ import type { IVChart } from '../../../../core';
|
|
|
3
3
|
import type { IModelSpecInfo } from '../../../../model/interface';
|
|
4
4
|
import type { SeriesTypeEnum } from '../../../../series';
|
|
5
5
|
import type { IChartSpec } from '../../../../typings';
|
|
6
|
-
export interface IMediaInfo {
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
}
|
|
10
6
|
export interface IMediaQueryActionFilterResult<T extends Record<string, unknown> = any> {
|
|
11
7
|
isChart?: boolean;
|
|
12
8
|
modelType?: 'series' | 'region' | 'component';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/chart/media-query/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { ComponentTypeEnum } from '../../../../component/interface';\nimport type { IVChart } from '../../../../core';\nimport type { IModelSpecInfo } from '../../../../model/interface';\nimport type { SeriesTypeEnum } from '../../../../series';\nimport type { IChartSpec } from '../../../../typings';\n\nexport interface
|
|
1
|
+
{"version":3,"sources":["../src/plugin/chart/media-query/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { ComponentTypeEnum } from '../../../../component/interface';\nimport type { IVChart } from '../../../../core';\nimport type { IModelSpecInfo } from '../../../../model/interface';\nimport type { SeriesTypeEnum } from '../../../../series';\nimport type { IChartSpec } from '../../../../typings';\n\nexport interface IMediaQueryActionFilterResult<T extends Record<string, unknown> = any> {\n /** 是否是图表层级 */\n isChart?: boolean;\n /** 如果不是图表层级,是哪个 model 类型 */\n modelType?: 'series' | 'region' | 'component';\n /** model 具体的类型 */\n type?: SeriesTypeEnum | ComponentTypeEnum;\n /** model 在图表 spec 中对应的 key */\n specKey?: keyof IChartSpec;\n /** 匹配到的 model 的 spec 信息 */\n modelInfo: IModelSpecInfo<T>[];\n}\n\nexport interface IMediaQueryOption {\n globalInstance: IVChart;\n updateSpec: (spec: any, compile?: boolean, render?: boolean) => void;\n}\n\nexport interface IMediaQueryCheckResult {\n /** 是否命中媒体查询条件 */\n isActive: boolean;\n /** 当前媒体查询的状态是否发生改变(生效->失效 或 失效->生效) */\n hasChanged: boolean;\n}\n\nexport interface IMediaQueryActionResult {\n /** 返回的图表 spec */\n chartSpec: any;\n /** spec 是否被更改 */\n hasChanged: boolean;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from '../../../../typings/spec/media-query';
|
|
2
2
|
export * from './common';
|
|
@@ -17,5 +17,5 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), __exportStar(require("
|
|
20
|
+
}), __exportStar(require("../../../../typings/spec/media-query"), exports), __exportStar(require("./common"), exports);
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/chart/media-query/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/plugin/chart/media-query/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uEAAqD;AACrD,2CAAyB","file":"index.js","sourcesContent":["export * from '../../../../typings/spec/media-query';\nexport * from './common';\n"]}
|
|
@@ -123,7 +123,9 @@ export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseMode
|
|
|
123
123
|
setValueFieldToStackOffsetSilhouette(): void;
|
|
124
124
|
abstract getActiveMarks(): IMark[];
|
|
125
125
|
initRootMark(): void;
|
|
126
|
-
protected _initExtensionMark(
|
|
126
|
+
protected _initExtensionMark(options: {
|
|
127
|
+
hasAnimation: boolean;
|
|
128
|
+
}): void;
|
|
127
129
|
private _createExtensionMark;
|
|
128
130
|
protected _updateExtensionMarkSpec(lastSpec?: any): void;
|
|
129
131
|
getStackData(): ISeriesStackData;
|