@visactor/vgrammar-core 0.11.6 → 0.11.8

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.
@@ -1,5 +1,5 @@
1
1
  import type { DataZoomAttributes } from '@visactor/vrender-components';
2
- import type { ChannelEncodeType, IData, IGroupMark, ITheme, IView, Nil, RecursivePartial, ScaleEncodeType } from '../types';
2
+ import type { ChannelEncodeType, IData, IGrammarBase, IGroupMark, ITheme, IView, Nil, RecursivePartial, ScaleEncodeType } from '../types';
3
3
  import type { DatazoomSpec, IDatazoom } from '../types/component';
4
4
  import { Component } from '../view/component';
5
5
  export declare const generateDatazoomAttributes: (data: any[], theme?: ITheme, addition?: RecursivePartial<DataZoomAttributes>) => DataZoomAttributes;
@@ -15,8 +15,10 @@ export declare class Datazoom extends Component implements IDatazoom {
15
15
  end: number;
16
16
  };
17
17
  addGraphicItem(attrs: any, groupKey?: string): any;
18
+ reuse(grammar: IGrammarBase): this;
18
19
  protected _updateComponentEncoders(): void;
19
20
  invertDatazoomRatio(ratio: number): any;
20
21
  getDatazoomMainScale(): import("@visactor/vscale").IBaseScale;
22
+ private setDatazoomHandlers;
21
23
  }
22
24
  export declare const registerDataZoom: () => void;
@@ -63,32 +63,14 @@ class Datazoom extends component_1.Component {
63
63
  return null;
64
64
  }
65
65
  addGraphicItem(attrs, groupKey) {
66
- var _a, _b;
66
+ var _a;
67
67
  const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme(), initialAttributes = Object.assign({}, null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.datazoom, attrs), graphicItem = factory_1.Factory.createGraphicComponent(this.componentType, initialAttributes, {
68
68
  skipDefault: this.spec.skipTheme
69
- }), datazoom = graphicItem;
70
- datazoom.setStatePointToData((state => {
71
- var _a;
72
- return this.spec.preview && null !== (_a = this.invertDatazoomRatio(state)) && void 0 !== _a ? _a : state;
73
- }));
74
- const {data: data, x: x, y: y, x1: x1, y1: y1} = null !== (_b = this.spec.preview) && void 0 !== _b ? _b : {};
75
- return datazoom.setPreviewPointsX((datum => {
76
- if (x && data) return (0, encode_1.invokeEncoder)({
77
- x: x
78
- }, datum, this.elements[0], this.parameters()).x;
79
- })), datazoom.setPreviewPointsY((datum => {
80
- if (y && data) return (0, encode_1.invokeEncoder)({
81
- y: y
82
- }, datum, this.elements[0], this.parameters()).y;
83
- })), datazoom.setPreviewPointsX1((datum => {
84
- if (x1 && data) return (0, encode_1.invokeEncoder)({
85
- x1: x1
86
- }, datum, this.elements[0], this.parameters()).x1;
87
- })), datazoom.setPreviewPointsY1((datum => {
88
- if (y1 && data) return (0, encode_1.invokeEncoder)({
89
- y1: y1
90
- }, datum, this.elements[0], this.parameters()).y1;
91
- })), super.addGraphicItem(initialAttributes, groupKey, graphicItem);
69
+ });
70
+ return this.setDatazoomHandlers(graphicItem), super.addGraphicItem(initialAttributes, groupKey, graphicItem);
71
+ }
72
+ reuse(grammar) {
73
+ return super.reuse(grammar), this.setDatazoomHandlers(), this;
92
74
  }
93
75
  _updateComponentEncoders() {
94
76
  var _a;
@@ -126,6 +108,32 @@ class Datazoom extends component_1.Component {
126
108
  }
127
109
  return null;
128
110
  }
111
+ setDatazoomHandlers(graphicItem) {
112
+ var _a;
113
+ const datazoom = null != graphicItem ? graphicItem : this.getGroupGraphicItem();
114
+ datazoom.setStatePointToData((state => {
115
+ var _a;
116
+ return this.spec.preview && null !== (_a = this.invertDatazoomRatio(state)) && void 0 !== _a ? _a : state;
117
+ }));
118
+ const {data: data, x: x, y: y, x1: x1, y1: y1} = null !== (_a = this.spec.preview) && void 0 !== _a ? _a : {};
119
+ datazoom.setPreviewPointsX((datum => {
120
+ if (x && data) return (0, encode_1.invokeEncoder)({
121
+ x: x
122
+ }, datum, this.elements[0], this.parameters()).x;
123
+ })), datazoom.setPreviewPointsY((datum => {
124
+ if (y && data) return (0, encode_1.invokeEncoder)({
125
+ y: y
126
+ }, datum, this.elements[0], this.parameters()).y;
127
+ })), datazoom.setPreviewPointsX1((datum => {
128
+ if (x1 && data) return (0, encode_1.invokeEncoder)({
129
+ x1: x1
130
+ }, datum, this.elements[0], this.parameters()).x1;
131
+ })), datazoom.setPreviewPointsY1((datum => {
132
+ if (y1 && data) return (0, encode_1.invokeEncoder)({
133
+ y1: y1
134
+ }, datum, this.elements[0], this.parameters()).y1;
135
+ }));
136
+ }
129
137
  }
130
138
 
131
139
  exports.Datazoom = Datazoom, Datazoom.componentType = enums_1.ComponentEnum.datazoom;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/datazoom.ts"],"names":[],"mappings":"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","file":"datazoom.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { DataZoomAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataZoom as DatazoomComponent } from '@visactor/vrender-components';\nimport { isNil, isString, merge, mixin } from '@visactor/vutils';\nimport { ComponentEnum } from '../graph/enums';\nimport type {\n BaseSingleEncodeSpec,\n ChannelEncodeType,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n ScaleEncodeType,\n StateEncodeSpec\n} from '../types';\nimport type { DatazoomSpec, IDatazoom } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Component } from '../view/component';\nimport { parseEncodeType } from '../parse/mark';\nimport { Factory } from '../core/factory';\nimport { DatazoomFilter } from '../interactions/datazoom-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDatazoomAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DataZoomAttributes>\n): DataZoomAttributes => {\n const datazoomTheme = theme?.components?.datazoom;\n if (!data) {\n return merge({}, datazoomTheme, addition ?? {});\n }\n\n return merge({}, datazoomTheme, { previewData: data }, addition ?? {});\n};\n\nexport class Datazoom extends Component implements IDatazoom {\n static readonly componentType: string = ComponentEnum.datazoom;\n protected declare spec: DatazoomSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.datazoom, group);\n this.spec.componentType = ComponentEnum.datazoom;\n }\n\n protected parseAddition(spec: DatazoomSpec) {\n super.parseAddition(spec);\n const { data, x, y, x1, y1 } = spec.preview ?? {};\n this.preview(data, x, y, x1, y1);\n this._updateComponentEncoders();\n return this;\n }\n\n preview(\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) {\n if (!isNil(this.spec.preview)) {\n const lastData = this.spec.preview.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n this.detach(lastDataGrammar);\n this.detach(parseEncodeType(this.spec.preview.x, this.view));\n this.detach(parseEncodeType(this.spec.preview.y, this.view));\n this.detach(parseEncodeType(this.spec.preview.x1, this.view));\n this.detach(parseEncodeType(this.spec.preview.y1, this.view));\n }\n this.spec.preview = undefined;\n if (data) {\n this.spec.preview = { data, x, y, x1, y1 };\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n this.attach(dataGrammar);\n this.attach(parseEncodeType(x, this.view));\n this.attach(parseEncodeType(y, this.view));\n this.attach(parseEncodeType(x1, this.view));\n this.attach(parseEncodeType(y1, this.view));\n }\n this._updateComponentEncoders();\n this.commit();\n return this;\n }\n\n setStartEndValue(start?: number, end?: number) {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom && datazoom.setStartAndEnd) {\n datazoom.setStartAndEnd(start, end);\n }\n return this;\n }\n\n getStartEndValue() {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom) {\n const state = datazoom.state;\n return {\n start: state.start,\n end: state.end\n };\n }\n\n return null;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const initialAttributes = Object.assign({}, theme?.components?.datazoom, attrs);\n const graphicItem = Factory.createGraphicComponent(this.componentType, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n const datazoom = graphicItem as unknown as DatazoomComponent;\n datazoom.setStatePointToData(state => {\n if (this.spec.preview) {\n return this.invertDatazoomRatio(state) ?? state;\n }\n return state;\n });\n const { data, x, y, x1, y1 } = this.spec.preview ?? {};\n\n datazoom.setPreviewPointsX((datum: any) => {\n if (x && data) {\n return invokeEncoder({ x }, datum, this.elements[0], this.parameters()).x;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY((datum: any) => {\n if (y && data) {\n return invokeEncoder({ y }, datum, this.elements[0], this.parameters()).y;\n }\n\n return undefined;\n });\n\n datazoom.setPreviewPointsX1((datum: any) => {\n if (x1 && data) {\n return invokeEncoder({ x1 }, datum, this.elements[0], this.parameters()).x1;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY1((datum: any) => {\n if (y1 && data) {\n return invokeEncoder({ y1 }, datum, this.elements[0], this.parameters()).y1;\n }\n\n return undefined;\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const data = this.spec.preview?.data;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n return generateDatazoomAttributes(dataGrammar?.getValue?.(), theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n invertDatazoomRatio(ratio: number): any {\n const scale = this.getDatazoomMainScale();\n if (scale) {\n const range = scale.range();\n const scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];\n return scale.invert(scaledValue);\n }\n return null;\n }\n\n getDatazoomMainScale() {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom && this.spec.preview) {\n const isHorizontal = datazoom.attribute.orient === 'top' || datazoom.attribute.orient === 'bottom';\n const scale = isHorizontal ? this.spec.preview.x?.scale : this.spec.preview.y?.scale;\n const scaleGrammar = isString(scale) ? this.view.getScaleById(scale) : scale;\n return scaleGrammar?.getScale();\n }\n return null;\n }\n}\n\nexport const registerDataZoom = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.datazoom,\n (attrs: DataZoomAttributes) => new DatazoomComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.datazoom, Datazoom);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(DatazoomFilter.type, DatazoomFilter);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/datazoom.ts"],"names":[],"mappings":"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","file":"datazoom.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { DataZoomAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataZoom as DatazoomComponent } from '@visactor/vrender-components';\nimport { isNil, isString, merge, mixin } from '@visactor/vutils';\nimport { ComponentEnum } from '../graph/enums';\nimport type {\n BaseSingleEncodeSpec,\n ChannelEncodeType,\n IData,\n IElement,\n IGrammarBase,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n ScaleEncodeType,\n StateEncodeSpec\n} from '../types';\nimport type { DatazoomSpec, IDatazoom } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Component } from '../view/component';\nimport { parseEncodeType } from '../parse/mark';\nimport { Factory } from '../core/factory';\nimport { DatazoomFilter } from '../interactions/datazoom-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDatazoomAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DataZoomAttributes>\n): DataZoomAttributes => {\n const datazoomTheme = theme?.components?.datazoom;\n if (!data) {\n return merge({}, datazoomTheme, addition ?? {});\n }\n\n return merge({}, datazoomTheme, { previewData: data }, addition ?? {});\n};\n\nexport class Datazoom extends Component implements IDatazoom {\n static readonly componentType: string = ComponentEnum.datazoom;\n protected declare spec: DatazoomSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.datazoom, group);\n this.spec.componentType = ComponentEnum.datazoom;\n }\n\n protected parseAddition(spec: DatazoomSpec) {\n super.parseAddition(spec);\n const { data, x, y, x1, y1 } = spec.preview ?? {};\n this.preview(data, x, y, x1, y1);\n this._updateComponentEncoders();\n return this;\n }\n\n preview(\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) {\n if (!isNil(this.spec.preview)) {\n const lastData = this.spec.preview.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n this.detach(lastDataGrammar);\n this.detach(parseEncodeType(this.spec.preview.x, this.view));\n this.detach(parseEncodeType(this.spec.preview.y, this.view));\n this.detach(parseEncodeType(this.spec.preview.x1, this.view));\n this.detach(parseEncodeType(this.spec.preview.y1, this.view));\n }\n this.spec.preview = undefined;\n if (data) {\n this.spec.preview = { data, x, y, x1, y1 };\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n this.attach(dataGrammar);\n this.attach(parseEncodeType(x, this.view));\n this.attach(parseEncodeType(y, this.view));\n this.attach(parseEncodeType(x1, this.view));\n this.attach(parseEncodeType(y1, this.view));\n }\n this._updateComponentEncoders();\n this.commit();\n return this;\n }\n\n setStartEndValue(start?: number, end?: number) {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom && datazoom.setStartAndEnd) {\n datazoom.setStartAndEnd(start, end);\n }\n return this;\n }\n\n getStartEndValue() {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom) {\n const state = datazoom.state;\n return {\n start: state.start,\n end: state.end\n };\n }\n\n return null;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const initialAttributes = Object.assign({}, theme?.components?.datazoom, attrs);\n const graphicItem = Factory.createGraphicComponent(this.componentType, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n this.setDatazoomHandlers(graphicItem as unknown as DatazoomComponent);\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n reuse(grammar: IGrammarBase) {\n super.reuse(grammar);\n // update datazoom handler when mark is reused\n this.setDatazoomHandlers();\n return this;\n }\n\n protected _updateComponentEncoders() {\n const data = this.spec.preview?.data;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n return generateDatazoomAttributes(dataGrammar?.getValue?.(), theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n invertDatazoomRatio(ratio: number): any {\n const scale = this.getDatazoomMainScale();\n if (scale) {\n const range = scale.range();\n const scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];\n return scale.invert(scaledValue);\n }\n return null;\n }\n\n getDatazoomMainScale() {\n const datazoom = this.getGroupGraphicItem() as unknown as DatazoomComponent;\n if (datazoom && this.spec.preview) {\n const isHorizontal = datazoom.attribute.orient === 'top' || datazoom.attribute.orient === 'bottom';\n const scale = isHorizontal ? this.spec.preview.x?.scale : this.spec.preview.y?.scale;\n const scaleGrammar = isString(scale) ? this.view.getScaleById(scale) : scale;\n return scaleGrammar?.getScale();\n }\n return null;\n }\n\n private setDatazoomHandlers(graphicItem?: DatazoomComponent) {\n const datazoom = graphicItem ?? (this.getGroupGraphicItem() as unknown as DatazoomComponent);\n datazoom.setStatePointToData(state => {\n if (this.spec.preview) {\n return this.invertDatazoomRatio(state) ?? state;\n }\n return state;\n });\n\n // set preview callbacks\n const { data, x, y, x1, y1 } = this.spec.preview ?? {};\n datazoom.setPreviewPointsX((datum: any) => {\n if (x && data) {\n return invokeEncoder({ x }, datum, this.elements[0], this.parameters()).x;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY((datum: any) => {\n if (y && data) {\n return invokeEncoder({ y }, datum, this.elements[0], this.parameters()).y;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsX1((datum: any) => {\n if (x1 && data) {\n return invokeEncoder({ x1 }, datum, this.elements[0], this.parameters()).x1;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY1((datum: any) => {\n if (y1 && data) {\n return invokeEncoder({ y1 }, datum, this.elements[0], this.parameters()).y1;\n }\n\n return undefined;\n });\n }\n}\n\nexport const registerDataZoom = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.datazoom,\n (attrs: DataZoomAttributes) => new DatazoomComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.datazoom, Datazoom);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(DatazoomFilter.type, DatazoomFilter);\n};\n"]}
@@ -36,7 +36,7 @@ function getRulePoints(nextAttrs) {
36
36
  }
37
37
 
38
38
  function getLinePoints(items, includeOnePoint, lastPoints, isArea) {
39
- if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
39
+ if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
40
40
  return items.some((item => isValidPointsChannel(Object.keys(item.nextAttrs), "line"))) ? items.map(((item, index) => {
41
41
  var _a;
42
42
  const attrs = item.nextAttrs, {x: x, y: y, x1: x1, y1: y1, defined: defined} = null !== (_a = null == lastPoints ? void 0 : lastPoints[index]) && void 0 !== _a ? _a : {};
@@ -48,7 +48,7 @@ function getLinePoints(items, includeOnePoint, lastPoints, isArea) {
48
48
  }
49
49
 
50
50
  function getLargeRectsPoints(items, includeOnePoint, lastPoints = []) {
51
- if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
51
+ if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
52
52
  const arr = new Float32Array(4 * items.length);
53
53
  return items.forEach(((item, index) => {
54
54
  var _a, _b, _c, _d;
@@ -58,7 +58,7 @@ function getLargeRectsPoints(items, includeOnePoint, lastPoints = []) {
58
58
  }
59
59
 
60
60
  function getLargeSymbolsPoints(items, includeOnePoint, lastPoints = []) {
61
- if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
61
+ if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
62
62
  const arr = new Float32Array(2 * items.length);
63
63
  return items.forEach(((item, index) => {
64
64
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":"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","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValidNumber } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\nimport { GrammarMarkType } from '../enums';\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const { x, y, x1, y1, defined } = lastPoints?.[index] ?? {};\n if (isNil(attrs.x)) {\n attrs.x = x;\n }\n if (isNil(attrs.y)) {\n attrs.y = y;\n }\n\n if (isNil(attrs.defined) && defined === false) {\n attrs.defined = false;\n }\n\n attrs.context = item.key;\n\n if (isArea) {\n if (isNil(attrs.x1)) {\n attrs.x1 = x1;\n }\n if (isNil(attrs.y1)) {\n attrs.y1 = y1;\n }\n }\n\n return attrs;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 4];\n const y = attrs.y ?? lastPoints[index * 4 + 1];\n const width = attrs.width ?? lastPoints[index * 4 + 2];\n const y1 = attrs.y1 ?? lastPoints[index * 4 + 3];\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 2];\n const y = attrs.y ?? lastPoints[index * 2 + 1];\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n"]}
1
+ {"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":"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","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValidNumber } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\nimport { GrammarMarkType } from '../enums';\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const { x, y, x1, y1, defined } = lastPoints?.[index] ?? {};\n if (isNil(attrs.x)) {\n attrs.x = x;\n }\n if (isNil(attrs.y)) {\n attrs.y = y;\n }\n\n if (isNil(attrs.defined) && defined === false) {\n attrs.defined = false;\n }\n\n attrs.context = item.key;\n\n if (isArea) {\n if (isNil(attrs.x1)) {\n attrs.x1 = x1;\n }\n if (isNil(attrs.y1)) {\n attrs.y1 = y1;\n }\n }\n\n return attrs;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 4];\n const y = attrs.y ?? lastPoints[index * 4 + 1];\n const width = attrs.width ?? lastPoints[index * 4 + 2];\n const y1 = attrs.y1 ?? lastPoints[index * 4 + 3];\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 2];\n const y = attrs.y ?? lastPoints[index * 2 + 1];\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.11.6";
1
+ export declare const version = "0.11.8";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.vglobal = exports.ThemeManager = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_WIDTH = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_PADDING = exports.SIGNAL_HEIGHT = exports.SIGNAL_AUTOFIT = exports.Factory = exports.GrammarBase = exports.invokeFunctionType = exports.parseFunctionType = exports.registerCoordinate = exports.Coordinate = exports.registerScale = exports.Scale = exports.View = exports.version = void 0,
21
- exports.version = "0.11.6", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
21
+ exports.version = "0.11.8", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
22
22
 
23
23
  var view_1 = require("./view");
24
24
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.11.6\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.11.8\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
@@ -196,7 +196,7 @@ class Crosshair extends base_1.BaseInteraction {
196
196
  this.getCrosshairComponentType() !== enums_1.CrosshairEnum.circleCrosshair && (attributes.x = containerPoint.x,
197
197
  attributes.y = containerPoint.y), this._crosshairComponent.showAll(), this._crosshairComponent.setAttributes(attributes);
198
198
  }, this.handleCrosshairHide = () => {
199
- this._crosshairComponent.hideAll();
199
+ this._crosshairComponent && this._crosshairComponent.hideAll();
200
200
  }, this.options = Object.assign({}, Crosshair.defaultOptions, options), this._container = null !== (_b = null === (_a = view.getMarksBySelector(this.options.container)) || void 0 === _a ? void 0 : _a[0]) && void 0 !== _b ? _b : view.rootMark;
201
201
  }
202
202
  getEvents() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/crosshair.ts"],"names":[],"mappings":";;;AAEA,6CAAiF;AAUjF,qEAMsC;AAUtC,iCAAyC;AACzC,0CAA+C;AAG/C,6CAA4D;AAC5D,wCAAmD;AAInD,MAAM,wBAAwB,GAAG,CAC/B,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,SAAiB,CAAC,EAClB,EAAE;;IACF,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3G,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/G,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC1B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;KACF;SAAM,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;SACnB;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;SACnB;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE;YAC3B,OAAO,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAC1C;KACF;IACD,OAAO,IAAI,MAAM,CAAC;IAClB,QAAQ,IAAI,EAAE;QACZ,KAAK,GAAG;YACN,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAChB,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;YACzB,MAAM;QACR,KAAK,GAAG;YACN,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;YAClB,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YACxB,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAChB,MAAM;QACR,KAAK,OAAO;YACV,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM;KACT;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAChC,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,QAG0C,EAC1C,EAAE;;IACF,MAAM,MAAM,GAAG,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACzG,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;KAC5D;SAAM,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,SAAS,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpF,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACvG;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAAqD,EACjC,EAAE;;IACtB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,aAAa,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,wBAAwB,CACrC,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT;QACE,MAAM,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;QAC1C,MAAM,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;KAC3C,EACD,MAAM,CACP,CAAC;IACF,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAvBW,QAAA,+BAA+B,mCAuB1C;AAEK,MAAM,+BAA+B,GAAG,CAC7C,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAA+C,EAC3B,EAAE;;IACtB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,aAAa,CAAC;IACxD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAE,KAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACnH,MAAM,eAAe,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC;IAC5C,MAAM,IAAI,GACR,WAAW,aAAX,WAAW,cAAX,WAAW,GACX,CAAC,IAAI,KAAK,GAAG;QACX,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,mCAAI,cAAc,CAAC,SAAS,CAAC,KAAK;QAC1D,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,mCAAI,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACtH,MAAM,SAAS,GAAmC,EAAE,CAAC;IACrD,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;KACxB;SAAM;QACL,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;KACzB;IACD,MAAM,SAAS,GAAG,IAAA,cAAK,EACrB,EAAE,EACF,cAAc,EACd;QACE,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS;KACV,EACD,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CACf,CAAC;IACF,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAClE;SAAM;QACL,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACjE;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAxCW,QAAA,+BAA+B,mCAwC1C;AAEK,MAAM,+BAA+B,GAAG,CAC7C,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAAiD,EAC3B,EAAE;;IACxB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,eAAe,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEtG,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAE,KAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3G,OAAO,IAAA,cAAK,EACV,EAAE,EACF,cAAc,EACd,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EACzG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CACf,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,+BAA+B,mCAsB1C;AAEK,MAAM,iCAAiC,GAAG,CAC/C,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAAiD,EAC3B,EAAE;;IACxB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,eAAe,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAC9B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAe,CAAC;IACvF,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAE,KAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAChH,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,YAAY;YACV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9G;SAAM,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC/C;IACD,MAAM,UAAU,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;IAC1C,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AA1BW,QAAA,iCAAiC,qCA0B5C;AAEK,MAAM,iCAAiC,GAAG,CAC/C,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAAiD,EAC3B,EAAE;;IACxB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,eAAe,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEtG,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAEzC,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AACrG,CAAC,CAAC;AAhBW,QAAA,iCAAiC,qCAgB5C;AAEK,MAAM,kCAAkC,GAAG,CAChD,KAAiB,EACjB,KAAiB,EACjB,IAAmB,EACnB,SAA4C,EAC5C,MAAW,EACX,KAAc,EACd,QAAkD,EAC3B,EAAE;;IACzB,MAAM,cAAc,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,eAAe,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEtG,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACzC,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AACrG,CAAC,CAAC;AAfW,QAAA,kCAAkC,sCAe7C;AAEF,MAAa,SAAU,SAAQ,sBAAiC;IAgB9D,YAAY,IAAW,EAAE,OAA0B;;QACjD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAfvB,SAAI,GAAW,SAAS,CAAC,IAAI,CAAC;QAiCpB,wBAAmB,GAAG,CAAC,KAAuB,EAAE,EAAE;;YAC1D,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,OAAO;aACR;YACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAE/D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,iBAAiB,CAAC;YAC7D,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAC1E,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEtD,IACE,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK;gBAC1C,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAC3C;gBACA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBACnC,OAAO;aACR;YAED,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,mCAAI,GAAG,CAAC;YACxD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACzG,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACpH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAQ,CAAC;YAE/F,IAAI,UAAU,GAAQ,EAAE,CAAC;YACzB,QAAQ,IAAI,CAAC,yBAAyB,EAAE,EAAE;gBACxC,KAAK,qBAAa,CAAC,aAAa;oBAC9B,UAAU,GAAG,IAAA,uCAA+B,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9G,MAAM;gBACR,KAAK,qBAAa,CAAC,aAAa;oBAC9B,UAAU,GAAG,IAAA,uCAA+B,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9G,MAAM;gBACR,KAAK,qBAAa,CAAC,eAAe;oBAChC,UAAU,GAAG,IAAA,yCAAiC,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAChH,MAAM;gBACR,KAAK,qBAAa,CAAC,eAAe;oBAChC,UAAU,GAAG,IAAA,yCAAiC,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAChH,MAAM;gBACR,KAAK,qBAAa,CAAC,gBAAgB;oBACjC,UAAU,GAAG,IAAA,0CAAkC,EAC7C,KAAK,EACL,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAQ,CACT,CAAC;oBACF,MAAM;gBACR,KAAK,qBAAa,CAAC,aAAa;oBAC9B,UAAU,GAAG,IAAA,uCAA+B,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9G,MAAM;aACT;YAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,KAAK,qBAAa,CAAC,eAAe,EAAE;gBACtE,UAAU,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;gBAChC,UAAU,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC;QAEQ,wBAAmB,GAAG,GAAG,EAAE;YACnC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC;QAtFA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,MAAC,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0CAAG,CAAC,CAAgB,mCAAI,IAAI,CAAC,QAAQ,CAAC;IAC1G,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,mBAAmB;aAClC;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBAC7B,OAAO,EAAE,IAAI,CAAC,mBAAmB;aAClC;SACF,CAAC;IACJ,CAAC;IAyES,yBAAyB;;QACjC,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,IAAI,CAAC,uBAAuB,CAAC;SACrC;QACD,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,cAAc,mCAAI,MAAM,CAAC;QACpD,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,mCAAI,GAAG,CAAC;QAC/C,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,eAAe,CAAC;aAC9D;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;gBAC5B,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,aAAa,CAAC;aAC5D;iBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;gBACpC,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,gBAAgB,CAAC;aAC/D;iBAAM;gBACL,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,aAAa,CAAC;aAC5D;SACF;aAAM;YACL,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,eAAe,CAAC;aAC9D;iBAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;gBACpC,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,gBAAgB,CAAC;aAC/D;iBAAM;gBACL,IAAI,CAAC,uBAAuB,GAAG,qBAAa,CAAC,aAAa,CAAC;aAC5D;SACF;QACD,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAES,4BAA4B;;QACpC,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,mCAAI,GAAG,CAAC;QAC/C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,gBAAgB,EAAE;YAClD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;SAC/C;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,IAAI;QACF,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,KAAK,EAAE;YACtC,OAAO;SACR;QAED,QAAQ,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACxC,KAAK,qBAAa,CAAC,aAAa;gBAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,kCAAa,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,qBAAa,CAAC,aAAa;gBAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,kCAAa,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,qBAAa,CAAC,eAAe;gBAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,oCAAe,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBACpF,MAAM;YACR,KAAK,qBAAa,CAAC,eAAe;gBAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,oCAAe,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBACpF,MAAM;YACR,KAAK,qBAAa,CAAC,gBAAgB;gBACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,qCAAgB,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBACrF,MAAM;YACR,KAAK,qBAAa,CAAC,aAAa;gBAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,oCAAe,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBACpF,MAAM;SACT;QACA,KAAK,CAAC,YAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;IACH,CAAC;;AApLH,8BAqLC;AApLQ,cAAI,GAAW,WAAW,CAAC;AAI3B,wBAAc,GAAqC;IACxD,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,MAAM;CACvB,CAAC","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type {\n CrosshairOptions,\n CrosshairType,\n IGroupMark,\n ITheme,\n IView,\n InteractionEvent,\n RecursivePartial\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { CrosshairEnum } from '../graph/enums';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\ntype CrosshairComponent = CircleCrosshair | LineCrosshair | PolygonCrosshair | RectCrosshair | SectorCrosshair;\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & any\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends BaseInteraction<CrosshairOptions> {\n static type: string = 'crosshair';\n type: string = Crosshair.type;\n options: CrosshairOptions;\n\n static defaultOptions: Omit<CrosshairOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave',\n crosshairType: 'x',\n crosshairShape: 'line'\n };\n\n protected _crosshairComponent?: CrosshairComponent;\n protected _crosshairComponentType?: keyof typeof CrosshairEnum;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: CrosshairOptions) {\n super(view, options);\n this.options = Object.assign({}, Crosshair.defaultOptions, options);\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleCrosshairShow\n },\n {\n type: this.options.triggerOff,\n handler: this.handleCrosshairHide\n }\n ];\n }\n\n protected handleCrosshairShow = (event: InteractionEvent) => {\n if (!this._crosshairComponent) {\n return;\n }\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n const globalTransMatrix = groupGraphicItem.globalTransMatrix;\n const containerPoint = { x: globalTransMatrix.e, y: globalTransMatrix.f };\n globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._crosshairComponent.hideAll();\n return;\n }\n\n const crosshairType = this.options.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const config = { center: this.options.center, radius: this.options.radius };\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}, {}) as any;\n\n let attributes: any = {};\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n // Hack: waiting for component to fix\n if (this.getCrosshairComponentType() !== CrosshairEnum.circleCrosshair) {\n attributes.x = containerPoint.x;\n attributes.y = containerPoint.y;\n }\n this._crosshairComponent.showAll();\n this._crosshairComponent.setAttributes(attributes);\n };\n\n protected handleCrosshairHide = () => {\n this._crosshairComponent.hideAll();\n };\n\n protected getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.options.crosshairShape ?? 'line';\n const type = this.options.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n protected getDefaultCrosshairAttribute(): any {\n const type = this.options.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 }, zIndex: -1 };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, zIndex: -1 };\n }\n\n bind(): void {\n super.bind();\n\n const stage = this.view.renderer.stage();\n if (this._crosshairComponent || !stage) {\n return;\n }\n\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n this._crosshairComponent = new LineCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.rectCrosshair:\n this._crosshairComponent = new RectCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.sectorCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.circleCrosshair:\n this._crosshairComponent = new CircleCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.polygonCrosshair:\n this._crosshairComponent = new PolygonCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.ringCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n }\n (stage.defaultLayer as any).appendChild(this._crosshairComponent);\n }\n\n unbind(): void {\n super.unbind();\n\n if (this._crosshairComponent) {\n this._crosshairComponent.release();\n this._crosshairComponent = null;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/crosshair.ts"],"names":[],"mappings":"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","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type {\n CrosshairOptions,\n CrosshairType,\n IGroupMark,\n ITheme,\n IView,\n InteractionEvent,\n RecursivePartial\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { CrosshairEnum } from '../graph/enums';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\ntype CrosshairComponent = CircleCrosshair | LineCrosshair | PolygonCrosshair | RectCrosshair | SectorCrosshair;\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & any\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends BaseInteraction<CrosshairOptions> {\n static type: string = 'crosshair';\n type: string = Crosshair.type;\n options: CrosshairOptions;\n\n static defaultOptions: Omit<CrosshairOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave',\n crosshairType: 'x',\n crosshairShape: 'line'\n };\n\n protected _crosshairComponent?: CrosshairComponent;\n protected _crosshairComponentType?: keyof typeof CrosshairEnum;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: CrosshairOptions) {\n super(view, options);\n this.options = Object.assign({}, Crosshair.defaultOptions, options);\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleCrosshairShow\n },\n {\n type: this.options.triggerOff,\n handler: this.handleCrosshairHide\n }\n ];\n }\n\n protected handleCrosshairShow = (event: InteractionEvent) => {\n if (!this._crosshairComponent) {\n return;\n }\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n const globalTransMatrix = groupGraphicItem.globalTransMatrix;\n const containerPoint = { x: globalTransMatrix.e, y: globalTransMatrix.f };\n globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._crosshairComponent.hideAll();\n return;\n }\n\n const crosshairType = this.options.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const config = { center: this.options.center, radius: this.options.radius };\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}, {}) as any;\n\n let attributes: any = {};\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n // Hack: waiting for component to fix\n if (this.getCrosshairComponentType() !== CrosshairEnum.circleCrosshair) {\n attributes.x = containerPoint.x;\n attributes.y = containerPoint.y;\n }\n this._crosshairComponent.showAll();\n this._crosshairComponent.setAttributes(attributes);\n };\n\n protected handleCrosshairHide = () => {\n if (this._crosshairComponent) {\n this._crosshairComponent.hideAll();\n }\n };\n\n protected getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.options.crosshairShape ?? 'line';\n const type = this.options.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n protected getDefaultCrosshairAttribute(): any {\n const type = this.options.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 }, zIndex: -1 };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, zIndex: -1 };\n }\n\n bind(): void {\n super.bind();\n\n const stage = this.view.renderer.stage();\n if (this._crosshairComponent || !stage) {\n return;\n }\n\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n this._crosshairComponent = new LineCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.rectCrosshair:\n this._crosshairComponent = new RectCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.sectorCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.circleCrosshair:\n this._crosshairComponent = new CircleCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.polygonCrosshair:\n this._crosshairComponent = new PolygonCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.ringCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n }\n (stage.defaultLayer as any).appendChild(this._crosshairComponent);\n }\n\n unbind(): void {\n super.unbind();\n\n if (this._crosshairComponent) {\n this._crosshairComponent.release();\n this._crosshairComponent = null;\n }\n }\n}\n"]}
@@ -33,6 +33,7 @@ class DimensionTooltip extends base_tooltip_1.BaseTooltip {
33
33
  super(view, options), this.type = DimensionTooltip.type, this._avoidMarks = [],
34
34
  this._tooltipDataFilter = null, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
35
35
  var _a, _b, _c;
36
+ if (!this._tooltipComponent) return;
36
37
  const scale = ((0, vutils_1.isString)(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale).getScale(), groupGraphicItem = this._container.getGroupGraphicItem(), point = {
37
38
  x: 0,
38
39
  y: 0
@@ -73,7 +74,7 @@ class DimensionTooltip extends base_tooltip_1.BaseTooltip {
73
74
  base_tooltip_2.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
74
75
  this._tooltipComponent.setAttributes(attributes);
75
76
  }), 10), this.handleTooltipHide = event => {
76
- this._tooltipComponent.hideAll();
77
+ this._tooltipComponent && this._tooltipComponent.hideAll();
77
78
  }, this.options = Object.assign({}, DimensionTooltip.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
78
79
  this._avoidMarks = null !== (_a = view.getMarksBySelector(this.options.avoidMark)) && void 0 !== _a ? _a : [],
79
80
  this._container = null !== (_c = null === (_b = view.getMarksBySelector(this.options.container)) || void 0 === _b ? void 0 : _b[0]) && void 0 !== _c ? _c : view.rootMark;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/dimension-tooltip.ts"],"names":[],"mappings":"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","file":"dimension-tooltip.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { AABBBounds, array, getAngleByPoint, isString, throttle } from '@visactor/vutils';\nimport type { DimensionTooltipOptions, IGroupMark, IMark, IView, TooltipType } from '../types';\nimport { BaseTooltip } from './base-tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { generateTooltipAttributes } from './base-tooltip';\nimport { BridgeElementKey } from '../graph/constants';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\nconst isEqualTooltipDatum = (current: any[], previous: any[]) => {\n const currentDatum = array(current);\n const previousDatum = array(previous);\n if (currentDatum.length !== previousDatum.length) {\n return false;\n }\n return (\n currentDatum.every(datum => previousDatum.includes(datum)) &&\n previousDatum.every(datum => currentDatum.includes(datum))\n );\n};\n\nconst computeTooltipFilterValue = (\n point: IPointLike,\n scale: IBaseScale,\n type: TooltipType,\n groupSize: { width: number; height: number },\n tooltipCenter?: IPointLike\n) => {\n if (type === 'x') {\n return scale.invert(point.x);\n }\n if (type === 'y') {\n return scale.invert(point.y);\n }\n if (type === 'radius') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);\n return scale.invert(radius);\n }\n if (type === 'angle') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const angle = getAngleByPoint(center, point);\n return scale.invert(angle < 0 ? angle + Math.PI * 2 : angle);\n }\n return scale.invert(point.x);\n};\n\nexport class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {\n static type: string = 'dimension-tooltip';\n type: string = DimensionTooltip.type;\n\n static defaultOptions: Omit<DimensionTooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _avoidMarks: IMark[] = [];\n protected _lastDatum: any;\n protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null = null;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: DimensionTooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, DimensionTooltip.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n this._avoidMarks = view.getMarksBySelector(this.options.avoidMark) ?? [];\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n const filter = this.options.target.filter;\n\n this._tooltipDataFilter = isString(filter)\n ? (datum: any, filterValue: any[]) => filterValue === datum[filter]\n : filter;\n\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: any) => {\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n\n // if pointer is not within the area of group, hide tooltip\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._tooltipComponent.hideAll();\n return;\n }\n // if pointer is hovered on the avoided marks, hide tooltip\n const eventTargetMark = event.target?.[BridgeElementKey]?.mark;\n if (this._avoidMarks.includes(eventTargetMark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n const target = this.options.target?.data;\n const lastDataGrammar = !target ? null : isString(target) ? this.view.getDataById(target) : target;\n const data = lastDataGrammar ? lastDataGrammar.getValue() : [];\n\n const filterValue = computeTooltipFilterValue(\n point,\n scale,\n this.options.tooltipType,\n groupSize,\n this.options.center\n );\n const tooltipDatum = this._tooltipDataFilter\n ? data.filter(datum => this._tooltipDataFilter(datum, filterValue))\n : [];\n\n this._tooltipComponent.showAll();\n if (isEqualTooltipDatum(tooltipDatum, this._lastDatum)) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n this._lastDatum = tooltipDatum;\n\n // compute tooltip bounds\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(tooltipDatum);\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10);\n\n protected handleTooltipHide = (event: any) => {\n this._tooltipComponent.hideAll();\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/dimension-tooltip.ts"],"names":[],"mappings":";;;AAEA,6CAA0F;AAE1F,iDAA6C;AAE7C,iDAA2D;AAC3D,kDAAsD;AAEtD,wCAAmD;AAEnD,MAAM,mBAAmB,GAAG,CAAC,OAAc,EAAE,QAAe,EAAE,EAAE;IAC9D,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,YAAY,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;QAChD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CACL,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAChC,KAAiB,EACjB,KAAiB,EACjB,IAAiB,EACjB,SAA4C,EAC5C,aAA0B,EAC1B,EAAE;IACF,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC9B;IACD,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC9B;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,MAAM,MAAM,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7B;IACD,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,MAAM,MAAM,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC9D;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAa,gBAAiB,SAAQ,0BAAoC;IAaxE,YAAY,IAAW,EAAE,OAAiC;;QACxD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAZvB,SAAI,GAAW,gBAAgB,CAAC,IAAI,CAAC;QAM3B,gBAAW,GAAY,EAAE,CAAC;QAE1B,uBAAkB,GAAyD,IAAI,CAAC;QAwBhF,sBAAiB,GAAG,IAAA,iBAAQ,EAAC,CAAC,KAAU,EAAE,EAAE;;YACpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,OAAO;aACR;YAED,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACpH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAE/D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAGzG,IACE,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK;gBAC1C,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAC3C;gBACA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;aACR;YAED,MAAM,eAAe,GAAG,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAG,4BAAgB,CAAC,0CAAE,IAAI,CAAC;YAC/D,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;aACR;YAED,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,MAAM,0CAAE,IAAI,CAAC;YACzC,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnG,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/D,MAAM,WAAW,GAAG,yBAAyB,CAC3C,KAAK,EACL,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACnE,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;gBAEtD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAS,CAAC,CAAC;gBACtF,OAAO;aACR;YACD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAG/B,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAC/C;gBACE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAY;gBACxD,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAY;aAC1D,EACD,SAAS,CACV,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAQ,CAAC;YAC3F,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,EAAE,EAAE,CAAC,CAAC;QAEG,sBAAiB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;aAClC;QACH,CAAC,CAAC;QA/FA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,MAAC,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0CAAG,CAAC,CAAgB,mCAAI,IAAI,CAAC,QAAQ,CAAC;IAC1G,CAAC;IAES,SAAS;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAE1C,IAAI,CAAC,kBAAkB,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC;YACxC,CAAC,CAAC,CAAC,KAAU,EAAE,WAAkB,EAAE,EAAE,CAAC,WAAW,KAAK,KAAK,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC/D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;SACnE,CAAC;IACJ,CAAC;;AAhCH,4CA+GC;AA9GQ,qBAAI,GAAW,mBAAmB,CAAC;AAGnC,+BAAc,GAA4C;IAC/D,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,cAAc;CAC3B,CAAC","file":"dimension-tooltip.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { AABBBounds, array, getAngleByPoint, isString, throttle } from '@visactor/vutils';\nimport type { DimensionTooltipOptions, IGroupMark, IMark, IView, TooltipType } from '../types';\nimport { BaseTooltip } from './base-tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { generateTooltipAttributes } from './base-tooltip';\nimport { BridgeElementKey } from '../graph/constants';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\nconst isEqualTooltipDatum = (current: any[], previous: any[]) => {\n const currentDatum = array(current);\n const previousDatum = array(previous);\n if (currentDatum.length !== previousDatum.length) {\n return false;\n }\n return (\n currentDatum.every(datum => previousDatum.includes(datum)) &&\n previousDatum.every(datum => currentDatum.includes(datum))\n );\n};\n\nconst computeTooltipFilterValue = (\n point: IPointLike,\n scale: IBaseScale,\n type: TooltipType,\n groupSize: { width: number; height: number },\n tooltipCenter?: IPointLike\n) => {\n if (type === 'x') {\n return scale.invert(point.x);\n }\n if (type === 'y') {\n return scale.invert(point.y);\n }\n if (type === 'radius') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);\n return scale.invert(radius);\n }\n if (type === 'angle') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const angle = getAngleByPoint(center, point);\n return scale.invert(angle < 0 ? angle + Math.PI * 2 : angle);\n }\n return scale.invert(point.x);\n};\n\nexport class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {\n static type: string = 'dimension-tooltip';\n type: string = DimensionTooltip.type;\n\n static defaultOptions: Omit<DimensionTooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _avoidMarks: IMark[] = [];\n protected _lastDatum: any;\n protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null = null;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: DimensionTooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, DimensionTooltip.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n this._avoidMarks = view.getMarksBySelector(this.options.avoidMark) ?? [];\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n const filter = this.options.target.filter;\n\n this._tooltipDataFilter = isString(filter)\n ? (datum: any, filterValue: any[]) => filterValue === datum[filter]\n : filter;\n\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: any) => {\n if (!this._tooltipComponent) {\n return;\n }\n\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n\n // if pointer is not within the area of group, hide tooltip\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._tooltipComponent.hideAll();\n return;\n }\n // if pointer is hovered on the avoided marks, hide tooltip\n const eventTargetMark = event.target?.[BridgeElementKey]?.mark;\n if (this._avoidMarks.includes(eventTargetMark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n const target = this.options.target?.data;\n const lastDataGrammar = !target ? null : isString(target) ? this.view.getDataById(target) : target;\n const data = lastDataGrammar ? lastDataGrammar.getValue() : [];\n\n const filterValue = computeTooltipFilterValue(\n point,\n scale,\n this.options.tooltipType,\n groupSize,\n this.options.center\n );\n const tooltipDatum = this._tooltipDataFilter\n ? data.filter(datum => this._tooltipDataFilter(datum, filterValue))\n : [];\n\n this._tooltipComponent.showAll();\n if (isEqualTooltipDatum(tooltipDatum, this._lastDatum)) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n this._lastDatum = tooltipDatum;\n\n // compute tooltip bounds\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(tooltipDatum);\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10);\n\n protected handleTooltipHide = (event: any) => {\n if (this._tooltipComponent) {\n this._tooltipComponent.hideAll();\n }\n };\n}\n"]}
@@ -9,6 +9,7 @@ const vutils_1 = require("@visactor/vutils"), base_tooltip_1 = require("./base-t
9
9
  class Tooltip extends base_tooltip_1.BaseTooltip {
10
10
  constructor(view, options) {
11
11
  super(view, options), this.type = Tooltip.type, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
12
+ if (!this._tooltipComponent) return;
12
13
  const element = event.element;
13
14
  if (!this._marks.includes(null == element ? void 0 : element.mark)) return void this._tooltipComponent.hideAll();
14
15
  this._tooltipComponent.showAll();
@@ -41,7 +42,7 @@ class Tooltip extends base_tooltip_1.BaseTooltip {
41
42
  base_tooltip_1.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
42
43
  this._tooltipComponent.setAttributes(attributes);
43
44
  }), 10), this.handleTooltipHide = event => {
44
- this._tooltipComponent.hideAll();
45
+ this._tooltipComponent && this._tooltipComponent.hideAll();
45
46
  }, this.options = Object.assign({}, Tooltip.defaultOptions, options);
46
47
  }
47
48
  getEvents() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { AABBBounds, throttle } from '@visactor/vutils';\nimport type { IElement, IView, InteractionEvent, InteractionEventHandler, TooltipOptions } from '../types';\nimport { BaseTooltip, generateTooltipAttributes } from './base-tooltip';\nimport { invokeFunctionType } from '../parse/util';\n\nexport class Tooltip extends BaseTooltip<TooltipOptions> {\n static type: string = 'tooltip';\n type: string = Tooltip.type;\n\n static defaultOptions: Omit<TooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _lastElement: IElement;\n\n constructor(view: IView, options?: TooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, Tooltip.defaultOptions, options);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: InteractionEvent) => {\n const element = event.element;\n if (!this._marks.includes(element?.mark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n this._tooltipComponent.showAll();\n\n const groupGraphicItem = this.view.rootMark.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n\n if (element === this._lastElement) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(element.getDatum());\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), element.getDatum()) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10) as unknown as InteractionEventHandler;\n\n protected handleTooltipHide = (event: any) => {\n this._tooltipComponent.hideAll();\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { AABBBounds, throttle } from '@visactor/vutils';\nimport type { IElement, IView, InteractionEvent, InteractionEventHandler, TooltipOptions } from '../types';\nimport { BaseTooltip, generateTooltipAttributes } from './base-tooltip';\nimport { invokeFunctionType } from '../parse/util';\n\nexport class Tooltip extends BaseTooltip<TooltipOptions> {\n static type: string = 'tooltip';\n type: string = Tooltip.type;\n\n static defaultOptions: Omit<TooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _lastElement: IElement;\n\n constructor(view: IView, options?: TooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, Tooltip.defaultOptions, options);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: InteractionEvent) => {\n if (!this._tooltipComponent) {\n return;\n }\n\n const element = event.element;\n if (!this._marks.includes(element?.mark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n this._tooltipComponent.showAll();\n\n const groupGraphicItem = this.view.rootMark.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n\n if (element === this._lastElement) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(element.getDatum());\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), element.getDatum()) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10) as unknown as InteractionEventHandler;\n\n protected handleTooltipHide = (event: any) => {\n if (this._tooltipComponent) {\n this._tooltipComponent.hideAll();\n }\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { DataZoomAttributes } from '@visactor/vrender-components';
2
- import type { ChannelEncodeType, IData, IGroupMark, ITheme, IView, Nil, RecursivePartial, ScaleEncodeType } from '../types';
2
+ import type { ChannelEncodeType, IData, IGrammarBase, IGroupMark, ITheme, IView, Nil, RecursivePartial, ScaleEncodeType } from '../types';
3
3
  import type { DatazoomSpec, IDatazoom } from '../types/component';
4
4
  import { Component } from '../view/component';
5
5
  export declare const generateDatazoomAttributes: (data: any[], theme?: ITheme, addition?: RecursivePartial<DataZoomAttributes>) => DataZoomAttributes;
@@ -15,8 +15,10 @@ export declare class Datazoom extends Component implements IDatazoom {
15
15
  end: number;
16
16
  };
17
17
  addGraphicItem(attrs: any, groupKey?: string): any;
18
+ reuse(grammar: IGrammarBase): this;
18
19
  protected _updateComponentEncoders(): void;
19
20
  invertDatazoomRatio(ratio: number): any;
20
21
  getDatazoomMainScale(): import("@visactor/vscale").IBaseScale;
22
+ private setDatazoomHandlers;
21
23
  }
22
24
  export declare const registerDataZoom: () => void;