@visactor/vrender-components 0.21.5-alpha.0 → 0.21.5-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/axis/base.js CHANGED
@@ -145,7 +145,10 @@ class AxisBase extends base_1.AbstractComponent {
145
145
  (0, vutils_1.isFunction)(labelState[key]) && (labelState[key] = labelState[key](item, index, data, layer));
146
146
  })), text.states = labelState;
147
147
  }
148
- labelGroup.add(text);
148
+ text.data = Object.assign(Object.assign({}, item), {
149
+ index: index,
150
+ layer: layer
151
+ }), labelGroup.add(text);
149
152
  })), labelGroup;
150
153
  }
151
154
  renderTitle(container) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * TODO:\n * 1. trunk 坐标轴截断\n * @description 坐标轴组件基类\n */\nimport type {\n IGroup,\n INode,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType,\n FederatedPointerEvent,\n IGraphic,\n IText\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { Dict } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { abs, cloneDeep, get, isEmpty, isFunction, merge, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { Point } from '../core/type';\nimport type { TagAttributes } from '../tag';\nimport { createTextGraphicByType } from '../util';\nimport { DEFAULT_STATES } from '../constant';\nimport { AXIS_ELEMENT_NAME } from './constant';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport type {\n LabelAttributes,\n AxisBaseAttributes,\n AxisItem,\n TickAttributes,\n TransformedAxisItem,\n SubTickAttributes,\n TickLineItem,\n callbackFunc\n} from './type';\nimport { Tag } from '../tag/tag';\nimport { getElMap, getVerticalCoord } from './util';\nimport { dispatchClickState, dispatchHoverState, dispatchUnHoverState } from '../util/interaction';\n\nexport abstract class AxisBase<T extends AxisBaseAttributes> extends AbstractComponent<Required<T>> {\n name = 'axis';\n\n // TODO: 组件整体统一起来\n protected _innerView: IGroup;\n getInnerView() {\n return this._innerView;\n }\n\n protected _prevInnerView: { [key: string]: IGraphic }; // 缓存旧场景树,用于自定义动画\n /**\n * 获取更新前的旧场景树\n * @returns 返回更新前的旧场景树\n */\n getPrevInnerView() {\n return this._prevInnerView;\n }\n\n // 经过处理后的坐标轴点数据\n protected data: TransformedAxisItem[] = [];\n protected tickLineItems: TickLineItem[] = [];\n protected subTickLineItems: TickLineItem[] = [];\n protected axisLabelLayerSize: Dict<{\n width: number;\n height: number;\n textAlign: string;\n textBaseline: string;\n labelPos: number;\n }> = {};\n protected axisLabelsContainer: IGroup | null = null;\n protected axisContainer: IGroup;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n protected abstract renderLine(container: IGroup): void;\n abstract isInValidValue(value: number): boolean;\n abstract getTickCoord(value: number): Point;\n abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];\n abstract getRelativeVector(point?: Point): [number, number];\n protected abstract getTitleAttribute(): TagAttributes;\n protected abstract beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType };\n\n /**\n * 坐标轴的一个特殊的方法,用于不更新场景树来获取更新属性后的包围盒\n * TODO:后面看情况再抽象为通用的方法\n */\n getBoundsWithoutRender(attributes: Partial<T>) {\n const currentAttribute = cloneDeep(this.attribute);\n merge(this.attribute, attributes);\n\n const offscreenGroup = graphicCreator.group({\n x: this.attribute.x,\n y: this.attribute.y\n });\n this.add(offscreenGroup);\n\n this._renderInner(offscreenGroup);\n\n this.removeChild(offscreenGroup);\n this.attribute = currentAttribute;\n return offscreenGroup.AABBBounds;\n }\n\n protected render(): void {\n this._prevInnerView = this._innerView && getElMap(this._innerView);\n this.removeAllChild(true);\n this._innerView = graphicCreator.group({ x: 0, y: 0, pickable: false });\n this.add(this._innerView);\n\n this._renderInner(this._innerView);\n\n this._bindEvent();\n }\n\n private _bindEvent() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { hover, select } = this.attribute;\n\n if (hover) {\n this._innerView.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._innerView.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._innerView.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchUnHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n this._lastSelect = dispatchClickState(e, this.axisContainer, this._lastSelect);\n };\n\n protected _renderInner(container: IGroup) {\n const { title, label, tick, line, items } = this.attribute;\n\n const axisContainer = graphicCreator.group({ x: 0, y: 0, zIndex: 1, pickable: false });\n axisContainer.name = AXIS_ELEMENT_NAME.axisContainer;\n axisContainer.id = this._getNodeId('container');\n axisContainer.setMode(this.mode);\n this.axisContainer = axisContainer;\n container.add(axisContainer);\n\n // 渲染轴线\n if (line && line.visible) {\n this.renderLine(axisContainer);\n }\n\n if (items && items.length) {\n this.data = this._transformItems(items[0]);\n\n // 渲染刻度线,包含子刻度线\n if (tick && tick.visible) {\n this.renderTicks(axisContainer);\n }\n // 渲染标签\n if (label && label.visible) {\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = AXIS_ELEMENT_NAME.labelContainer;\n labelGroup.id = this._getNodeId('label-container');\n this.axisLabelsContainer = labelGroup;\n axisContainer.add(labelGroup);\n items.forEach((axisItems: AxisItem[], layer: number) => {\n const layerLabelGroup = this.renderLabels(labelGroup, axisItems, layer);\n\n const labels = layerLabelGroup.getChildren() as IText[];\n this.beforeLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n // handle overlap\n this.handleLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n this.afterLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n\n let maxTextWidth = 0;\n let maxTextHeight = 0;\n let textAlign = 'center';\n let textBaseline = 'middle';\n let labelPos: number = 0;\n labels.forEach((label: IText, index) => {\n const labelStyle = label.attribute;\n\n const angle = labelStyle.angle ?? 0;\n const textBounds = label.AABBBounds;\n let textWidth = textBounds.width();\n let textHeight = textBounds.height();\n if (angle) {\n textWidth = Math.abs(textWidth * Math.cos(angle));\n textHeight = Math.abs(textHeight * Math.sin(angle));\n }\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, textHeight);\n\n textAlign = labelStyle.textAlign as string;\n textBaseline = labelStyle.textBaseline as string;\n if (index === 0) {\n labelPos = labelStyle.x;\n }\n });\n this.axisLabelLayerSize[layer] = {\n width: maxTextWidth,\n height: maxTextHeight,\n\n labelPos,\n textAlign,\n textBaseline\n };\n });\n }\n }\n\n // 渲染标题\n if (title && title.visible) {\n this.renderTitle(axisContainer);\n }\n }\n protected renderTicks(container: IGroup) {\n const tickLineItems = this.getTickLineItems();\n\n const tickLineGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n tickLineGroup.name = AXIS_ELEMENT_NAME.tickContainer;\n tickLineGroup.id = this._getNodeId('tick-container');\n container.add(tickLineGroup);\n\n tickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('tick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.tick;\n line.id = this._getNodeId(item.id);\n\n if (isEmpty(this.attribute.tick?.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const data = this.data[index];\n const tickLineState = merge({}, DEFAULT_STATES, this.attribute.tick.state);\n Object.keys(tickLineState).forEach(key => {\n if (isFunction(tickLineState[key])) {\n tickLineState[key] = tickLineState[key](data.rawValue, index, data, this.data);\n }\n });\n line.states = tickLineState;\n }\n\n tickLineGroup.add(line);\n });\n this.tickLineItems = tickLineItems;\n\n // subTick 处理\n const { subTick } = this.attribute;\n if (subTick && subTick.visible) {\n const subTickLineItems: TickLineItem[] = this.getSubTickLineItems();\n if (subTickLineItems.length) {\n subTickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('subTick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.subTick;\n line.id = this._getNodeId(`${index}`);\n\n if (isEmpty(subTick.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const subTickLineState = merge({}, DEFAULT_STATES, subTick.state);\n Object.keys(subTickLineState).forEach(key => {\n if (isFunction(subTickLineState[key])) {\n subTickLineState[key] = subTickLineState[key](item.value, index, item, tickLineItems);\n }\n });\n line.states = subTickLineState;\n }\n\n tickLineGroup.add(line);\n });\n }\n\n this.subTickLineItems = subTickLineItems;\n }\n }\n\n protected renderLabels(container: IGroup, items: AxisItem[], layer: number) {\n const { dataFilter } = this.attribute.label;\n if (dataFilter && isFunction(dataFilter)) {\n items = dataFilter(items, layer) as TransformedAxisItem[];\n }\n const data = this._transformItems(items);\n\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = `${AXIS_ELEMENT_NAME.labelContainer}-layer-${layer}`;\n labelGroup.id = this._getNodeId(`label-container-layer-${layer}`);\n container.add(labelGroup);\n\n data.forEach((item: TransformedAxisItem, index: number) => {\n const labelStyle: any = this._getLabelAttribute(item, index, data, layer);\n const text = createTextGraphicByType(labelStyle);\n\n text.name = AXIS_ELEMENT_NAME.label;\n text.id = this._getNodeId(`layer${layer}-label-${item.id}`);\n if (isEmpty(this.attribute.label?.state)) {\n text.states = DEFAULT_STATES;\n } else {\n const labelState = merge({}, DEFAULT_STATES, this.attribute.label.state);\n Object.keys(labelState).forEach(key => {\n if (isFunction(labelState[key])) {\n labelState[key] = labelState[key](item, index, data, layer);\n }\n });\n text.states = labelState;\n }\n\n labelGroup.add(text);\n });\n\n return labelGroup;\n }\n\n protected renderTitle(container: IGroup) {\n const titleAttributes = this.getTitleAttribute();\n const axisTitle = new Tag({\n ...titleAttributes\n });\n axisTitle.name = AXIS_ELEMENT_NAME.title;\n axisTitle.id = this._getNodeId('title');\n container.add(axisTitle as unknown as INode);\n }\n\n protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point {\n return getVerticalCoord(point, this.getVerticalVector(offset, inside, point));\n }\n\n protected getTickLineItems() {\n const { tick } = this.attribute;\n const data = this.data;\n // tick 处理\n const tickLineItems: TickLineItem[] = [];\n const { alignWithLabel, inside = false, length, dataFilter } = tick as TickAttributes;\n let tickSegment = 1;\n const count = data.length;\n if (count >= 2) {\n tickSegment = data[1].value - data[0].value;\n }\n\n (dataFilter && isFunction(dataFilter) ? dataFilter(data) : data).forEach((item: TransformedAxisItem) => {\n let point = item.point;\n let tickValue = item.value;\n if (!alignWithLabel) {\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n tickValue = value;\n }\n const endPoint = this.getVerticalCoord(point, length as number, inside);\n\n if (this.mode === '3d') {\n const vec = this.getVerticalVector(length as number, inside, point);\n let alpha = 0;\n let beta = 0;\n if (abs(vec[0]) > abs(vec[1])) {\n alpha = (pi / 2) * (endPoint.x > point.x ? 1 : -1);\n } else {\n beta = (pi / 2) * (endPoint.y > point.y ? -1 : 1);\n }\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`,\n anchor: [point.x, point.y],\n alpha,\n beta\n });\n } else {\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`\n });\n }\n });\n\n return tickLineItems;\n }\n\n protected getSubTickLineItems() {\n const { subTick } = this.attribute as AxisBaseAttributes;\n const subTickLineItems: TickLineItem[] = [];\n const { count: subCount = 4, inside = false, length = 2 } = subTick as SubTickAttributes;\n const tickLineItems = this.tickLineItems;\n const tickLineCount = tickLineItems.length;\n\n if (tickLineCount >= 2) {\n for (let i = 0; i < tickLineCount - 1; i++) {\n const pre = tickLineItems[i];\n const next = tickLineItems[i + 1];\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n const endPoint = this.getVerticalCoord(point, length, inside);\n subTickLineItems.push({\n start: point,\n end: endPoint,\n value,\n id: `sub-tick-${value}`\n });\n }\n }\n }\n\n return subTickLineItems;\n }\n\n private _getTickLineAttribute(type: string, tickItem: TickLineItem, index: number, tickItems: TickLineItem[]) {\n let style = get(this.attribute, `${type}.style`);\n const data = this.data[index];\n style = isFunction(style)\n ? merge(\n {},\n get(DEFAULT_AXIS_THEME, `${type}.style`),\n type === 'tick'\n ? style(data.rawValue, index, data, this.data)\n : style(tickItem.value, index, tickItem, tickItems)\n )\n : style;\n\n const { start, end, anchor, alpha, beta } = tickItem;\n return {\n points: [start, end],\n anchor,\n alpha,\n beta,\n ...style\n };\n }\n\n private _getLabelAttribute(\n tickDatum: TransformedAxisItem,\n index: number,\n tickData: TransformedAxisItem[],\n layer: number\n ) {\n const { space = 4, inside = false, formatMethod, type = 'text', text } = this.attribute.label as LabelAttributes;\n let offset = space;\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === inside) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === inside) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n offset += tickLength;\n\n // 先测试 line\n const axisVector = this.getRelativeVector(tickDatum.point);\n if (layer > 0) {\n if (axisVector[1] === 0) {\n offset += (this.axisLabelLayerSize[layer - 1].height + get(this.attribute, 'label.space', 4)) * layer;\n } else {\n offset += (this.axisLabelLayerSize[layer - 1].width + get(this.attribute, 'label.space', 4)) * layer;\n }\n }\n\n const point = this.getVerticalCoord(tickDatum.point, offset, inside);\n const vector = this.getVerticalVector(offset || 1, inside, point);\n const textContent = formatMethod\n ? formatMethod(`${tickDatum.label}`, tickDatum, index, tickData, layer)\n : tickDatum.label;\n let { style: textStyle } = this.attribute.label as LabelAttributes;\n textStyle = isFunction(textStyle)\n ? merge(\n {},\n DEFAULT_AXIS_THEME.label.style,\n (textStyle as callbackFunc<Partial<ITextGraphicAttribute> | undefined>)(tickDatum, index, tickData, layer)\n )\n : textStyle;\n\n const labelAlign = this.getLabelAlign(vector, inside, (textStyle as ITextGraphicAttribute).angle);\n textStyle = merge(labelAlign, textStyle) as Partial<ITextGraphicAttribute>;\n // 兼容原先 style.text 回调的方式\n if (isFunction(textStyle.text)) {\n // @ts-ignore\n textStyle.text = textStyle.text({\n label: tickDatum.label,\n value: tickDatum.rawValue,\n index: tickDatum.index,\n layer\n });\n }\n return {\n ...this.getLabelPosition(point, vector, textContent, textStyle),\n text: text ?? textContent,\n _originText: tickDatum.label,\n lineHeight: textStyle?.fontSize,\n type,\n ...textStyle\n };\n }\n\n protected getLabelPosition(\n point: Point,\n vector: [number, number],\n text: string | number,\n style: Partial<ITextGraphicAttribute>\n ) {\n return point;\n }\n\n private _transformItems(items: AxisItem[]) {\n const data: TransformedAxisItem[] = [];\n items.forEach((item: AxisItem) => {\n data.push({\n ...item,\n point: this.getTickCoord(item.value),\n id: item.id ?? item.label\n });\n });\n return data;\n }\n\n release(): void {\n super.release();\n this._prevInnerView = null;\n this._innerView = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * TODO:\n * 1. trunk 坐标轴截断\n * @description 坐标轴组件基类\n */\nimport type {\n IGroup,\n INode,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType,\n FederatedPointerEvent,\n IGraphic,\n IText\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { Dict } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { abs, cloneDeep, get, isEmpty, isFunction, merge, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { Point } from '../core/type';\nimport type { TagAttributes } from '../tag';\nimport { createTextGraphicByType } from '../util';\nimport { DEFAULT_STATES } from '../constant';\nimport { AXIS_ELEMENT_NAME } from './constant';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport type {\n LabelAttributes,\n AxisBaseAttributes,\n AxisItem,\n TickAttributes,\n TransformedAxisItem,\n SubTickAttributes,\n TickLineItem,\n callbackFunc\n} from './type';\nimport { Tag } from '../tag/tag';\nimport { getElMap, getVerticalCoord } from './util';\nimport { dispatchClickState, dispatchHoverState, dispatchUnHoverState } from '../util/interaction';\n\nexport abstract class AxisBase<T extends AxisBaseAttributes> extends AbstractComponent<Required<T>> {\n name = 'axis';\n\n // TODO: 组件整体统一起来\n protected _innerView: IGroup;\n getInnerView() {\n return this._innerView;\n }\n\n protected _prevInnerView: { [key: string]: IGraphic }; // 缓存旧场景树,用于自定义动画\n /**\n * 获取更新前的旧场景树\n * @returns 返回更新前的旧场景树\n */\n getPrevInnerView() {\n return this._prevInnerView;\n }\n\n // 经过处理后的坐标轴点数据\n protected data: TransformedAxisItem[] = [];\n protected tickLineItems: TickLineItem[] = [];\n protected subTickLineItems: TickLineItem[] = [];\n protected axisLabelLayerSize: Dict<{\n width: number;\n height: number;\n textAlign: string;\n textBaseline: string;\n labelPos: number;\n }> = {};\n protected axisLabelsContainer: IGroup | null = null;\n protected axisContainer: IGroup;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n protected abstract renderLine(container: IGroup): void;\n abstract isInValidValue(value: number): boolean;\n abstract getTickCoord(value: number): Point;\n abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];\n abstract getRelativeVector(point?: Point): [number, number];\n protected abstract getTitleAttribute(): TagAttributes;\n protected abstract beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType };\n\n /**\n * 坐标轴的一个特殊的方法,用于不更新场景树来获取更新属性后的包围盒\n * TODO:后面看情况再抽象为通用的方法\n */\n getBoundsWithoutRender(attributes: Partial<T>) {\n const currentAttribute = cloneDeep(this.attribute);\n merge(this.attribute, attributes);\n\n const offscreenGroup = graphicCreator.group({\n x: this.attribute.x,\n y: this.attribute.y\n });\n this.add(offscreenGroup);\n\n this._renderInner(offscreenGroup);\n\n this.removeChild(offscreenGroup);\n this.attribute = currentAttribute;\n return offscreenGroup.AABBBounds;\n }\n\n protected render(): void {\n this._prevInnerView = this._innerView && getElMap(this._innerView);\n this.removeAllChild(true);\n this._innerView = graphicCreator.group({ x: 0, y: 0, pickable: false });\n this.add(this._innerView);\n\n this._renderInner(this._innerView);\n\n this._bindEvent();\n }\n\n private _bindEvent() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { hover, select } = this.attribute;\n\n if (hover) {\n this._innerView.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._innerView.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._innerView.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchUnHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n this._lastSelect = dispatchClickState(e, this.axisContainer, this._lastSelect);\n };\n\n protected _renderInner(container: IGroup) {\n const { title, label, tick, line, items } = this.attribute;\n\n const axisContainer = graphicCreator.group({ x: 0, y: 0, zIndex: 1, pickable: false });\n axisContainer.name = AXIS_ELEMENT_NAME.axisContainer;\n axisContainer.id = this._getNodeId('container');\n axisContainer.setMode(this.mode);\n this.axisContainer = axisContainer;\n container.add(axisContainer);\n\n // 渲染轴线\n if (line && line.visible) {\n this.renderLine(axisContainer);\n }\n\n if (items && items.length) {\n this.data = this._transformItems(items[0]);\n\n // 渲染刻度线,包含子刻度线\n if (tick && tick.visible) {\n this.renderTicks(axisContainer);\n }\n // 渲染标签\n if (label && label.visible) {\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = AXIS_ELEMENT_NAME.labelContainer;\n labelGroup.id = this._getNodeId('label-container');\n this.axisLabelsContainer = labelGroup;\n axisContainer.add(labelGroup);\n items.forEach((axisItems: AxisItem[], layer: number) => {\n const layerLabelGroup = this.renderLabels(labelGroup, axisItems, layer);\n\n const labels = layerLabelGroup.getChildren() as IText[];\n this.beforeLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n // handle overlap\n this.handleLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n this.afterLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n\n let maxTextWidth = 0;\n let maxTextHeight = 0;\n let textAlign = 'center';\n let textBaseline = 'middle';\n let labelPos: number = 0;\n labels.forEach((label: IText, index) => {\n const labelStyle = label.attribute;\n\n const angle = labelStyle.angle ?? 0;\n const textBounds = label.AABBBounds;\n let textWidth = textBounds.width();\n let textHeight = textBounds.height();\n if (angle) {\n textWidth = Math.abs(textWidth * Math.cos(angle));\n textHeight = Math.abs(textHeight * Math.sin(angle));\n }\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, textHeight);\n\n textAlign = labelStyle.textAlign as string;\n textBaseline = labelStyle.textBaseline as string;\n if (index === 0) {\n labelPos = labelStyle.x;\n }\n });\n this.axisLabelLayerSize[layer] = {\n width: maxTextWidth,\n height: maxTextHeight,\n\n labelPos,\n textAlign,\n textBaseline\n };\n });\n }\n }\n\n // 渲染标题\n if (title && title.visible) {\n this.renderTitle(axisContainer);\n }\n }\n protected renderTicks(container: IGroup) {\n const tickLineItems = this.getTickLineItems();\n\n const tickLineGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n tickLineGroup.name = AXIS_ELEMENT_NAME.tickContainer;\n tickLineGroup.id = this._getNodeId('tick-container');\n container.add(tickLineGroup);\n\n tickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('tick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.tick;\n line.id = this._getNodeId(item.id);\n\n if (isEmpty(this.attribute.tick?.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const data = this.data[index];\n const tickLineState = merge({}, DEFAULT_STATES, this.attribute.tick.state);\n Object.keys(tickLineState).forEach(key => {\n if (isFunction(tickLineState[key])) {\n tickLineState[key] = tickLineState[key](data.rawValue, index, data, this.data);\n }\n });\n line.states = tickLineState;\n }\n\n tickLineGroup.add(line);\n });\n this.tickLineItems = tickLineItems;\n\n // subTick 处理\n const { subTick } = this.attribute;\n if (subTick && subTick.visible) {\n const subTickLineItems: TickLineItem[] = this.getSubTickLineItems();\n if (subTickLineItems.length) {\n subTickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('subTick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.subTick;\n line.id = this._getNodeId(`${index}`);\n\n if (isEmpty(subTick.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const subTickLineState = merge({}, DEFAULT_STATES, subTick.state);\n Object.keys(subTickLineState).forEach(key => {\n if (isFunction(subTickLineState[key])) {\n subTickLineState[key] = subTickLineState[key](item.value, index, item, tickLineItems);\n }\n });\n line.states = subTickLineState;\n }\n\n tickLineGroup.add(line);\n });\n }\n\n this.subTickLineItems = subTickLineItems;\n }\n }\n\n protected renderLabels(container: IGroup, items: AxisItem[], layer: number) {\n const { dataFilter } = this.attribute.label;\n if (dataFilter && isFunction(dataFilter)) {\n items = dataFilter(items, layer) as TransformedAxisItem[];\n }\n const data = this._transformItems(items);\n\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = `${AXIS_ELEMENT_NAME.labelContainer}-layer-${layer}`;\n labelGroup.id = this._getNodeId(`label-container-layer-${layer}`);\n container.add(labelGroup);\n\n data.forEach((item: TransformedAxisItem, index: number) => {\n const labelStyle: any = this._getLabelAttribute(item, index, data, layer);\n const text = createTextGraphicByType(labelStyle);\n\n text.name = AXIS_ELEMENT_NAME.label;\n text.id = this._getNodeId(`layer${layer}-label-${item.id}`);\n if (isEmpty(this.attribute.label?.state)) {\n text.states = DEFAULT_STATES;\n } else {\n const labelState = merge({}, DEFAULT_STATES, this.attribute.label.state);\n Object.keys(labelState).forEach(key => {\n if (isFunction(labelState[key])) {\n labelState[key] = labelState[key](item, index, data, layer);\n }\n });\n text.states = labelState;\n }\n text.data = { ...item, index, layer };\n labelGroup.add(text);\n });\n\n return labelGroup;\n }\n\n protected renderTitle(container: IGroup) {\n const titleAttributes = this.getTitleAttribute();\n const axisTitle = new Tag({\n ...titleAttributes\n });\n axisTitle.name = AXIS_ELEMENT_NAME.title;\n axisTitle.id = this._getNodeId('title');\n container.add(axisTitle as unknown as INode);\n }\n\n protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point {\n return getVerticalCoord(point, this.getVerticalVector(offset, inside, point));\n }\n\n protected getTickLineItems() {\n const { tick } = this.attribute;\n const data = this.data;\n // tick 处理\n const tickLineItems: TickLineItem[] = [];\n const { alignWithLabel, inside = false, length, dataFilter } = tick as TickAttributes;\n let tickSegment = 1;\n const count = data.length;\n if (count >= 2) {\n tickSegment = data[1].value - data[0].value;\n }\n\n (dataFilter && isFunction(dataFilter) ? dataFilter(data) : data).forEach((item: TransformedAxisItem) => {\n let point = item.point;\n let tickValue = item.value;\n if (!alignWithLabel) {\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n tickValue = value;\n }\n const endPoint = this.getVerticalCoord(point, length as number, inside);\n\n if (this.mode === '3d') {\n const vec = this.getVerticalVector(length as number, inside, point);\n let alpha = 0;\n let beta = 0;\n if (abs(vec[0]) > abs(vec[1])) {\n alpha = (pi / 2) * (endPoint.x > point.x ? 1 : -1);\n } else {\n beta = (pi / 2) * (endPoint.y > point.y ? -1 : 1);\n }\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`,\n anchor: [point.x, point.y],\n alpha,\n beta\n });\n } else {\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`\n });\n }\n });\n\n return tickLineItems;\n }\n\n protected getSubTickLineItems() {\n const { subTick } = this.attribute as AxisBaseAttributes;\n const subTickLineItems: TickLineItem[] = [];\n const { count: subCount = 4, inside = false, length = 2 } = subTick as SubTickAttributes;\n const tickLineItems = this.tickLineItems;\n const tickLineCount = tickLineItems.length;\n\n if (tickLineCount >= 2) {\n for (let i = 0; i < tickLineCount - 1; i++) {\n const pre = tickLineItems[i];\n const next = tickLineItems[i + 1];\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n const endPoint = this.getVerticalCoord(point, length, inside);\n subTickLineItems.push({\n start: point,\n end: endPoint,\n value,\n id: `sub-tick-${value}`\n });\n }\n }\n }\n\n return subTickLineItems;\n }\n\n private _getTickLineAttribute(type: string, tickItem: TickLineItem, index: number, tickItems: TickLineItem[]) {\n let style = get(this.attribute, `${type}.style`);\n const data = this.data[index];\n style = isFunction(style)\n ? merge(\n {},\n get(DEFAULT_AXIS_THEME, `${type}.style`),\n type === 'tick'\n ? style(data.rawValue, index, data, this.data)\n : style(tickItem.value, index, tickItem, tickItems)\n )\n : style;\n\n const { start, end, anchor, alpha, beta } = tickItem;\n return {\n points: [start, end],\n anchor,\n alpha,\n beta,\n ...style\n };\n }\n\n private _getLabelAttribute(\n tickDatum: TransformedAxisItem,\n index: number,\n tickData: TransformedAxisItem[],\n layer: number\n ) {\n const { space = 4, inside = false, formatMethod, type = 'text', text } = this.attribute.label as LabelAttributes;\n let offset = space;\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === inside) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === inside) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n offset += tickLength;\n\n // 先测试 line\n const axisVector = this.getRelativeVector(tickDatum.point);\n if (layer > 0) {\n if (axisVector[1] === 0) {\n offset += (this.axisLabelLayerSize[layer - 1].height + get(this.attribute, 'label.space', 4)) * layer;\n } else {\n offset += (this.axisLabelLayerSize[layer - 1].width + get(this.attribute, 'label.space', 4)) * layer;\n }\n }\n\n const point = this.getVerticalCoord(tickDatum.point, offset, inside);\n const vector = this.getVerticalVector(offset || 1, inside, point);\n const textContent = formatMethod\n ? formatMethod(`${tickDatum.label}`, tickDatum, index, tickData, layer)\n : tickDatum.label;\n let { style: textStyle } = this.attribute.label as LabelAttributes;\n textStyle = isFunction(textStyle)\n ? merge(\n {},\n DEFAULT_AXIS_THEME.label.style,\n (textStyle as callbackFunc<Partial<ITextGraphicAttribute> | undefined>)(tickDatum, index, tickData, layer)\n )\n : textStyle;\n\n const labelAlign = this.getLabelAlign(vector, inside, (textStyle as ITextGraphicAttribute).angle);\n textStyle = merge(labelAlign, textStyle) as Partial<ITextGraphicAttribute>;\n // 兼容原先 style.text 回调的方式\n if (isFunction(textStyle.text)) {\n // @ts-ignore\n textStyle.text = textStyle.text({\n label: tickDatum.label,\n value: tickDatum.rawValue,\n index: tickDatum.index,\n layer\n });\n }\n return {\n ...this.getLabelPosition(point, vector, textContent, textStyle),\n text: text ?? textContent,\n _originText: tickDatum.label,\n lineHeight: textStyle?.fontSize,\n type,\n ...textStyle\n };\n }\n\n protected getLabelPosition(\n point: Point,\n vector: [number, number],\n text: string | number,\n style: Partial<ITextGraphicAttribute>\n ) {\n return point;\n }\n\n private _transformItems(items: AxisItem[]) {\n const data: TransformedAxisItem[] = [];\n items.forEach((item: AxisItem) => {\n data.push({\n ...item,\n point: this.getTickCoord(item.value),\n id: item.id ?? item.label\n });\n });\n return data;\n }\n\n release(): void {\n super.release();\n this._prevInnerView = null;\n this._innerView = null;\n }\n}\n"]}
@@ -67,9 +67,7 @@ class DataZoom extends base_1.AbstractComponent {
67
67
  });
68
68
  }, this._pointerMove = e => {
69
69
  e.stopPropagation();
70
- const {start: startAttr, end: endAttr, brushSelect: brushSelect, realTime: realTime = !0, position: position, size: size, disableDispatchOutSide: disableDispatchOutSide = !1} = this.attribute, pos = this.eventPosToStagePos(e), {attPos: attPos, max: max, attSize: attSize} = this._layoutCache;
71
- let dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;
72
- disableDispatchOutSide && (pos[attPos] <= position[attPos] || pos[attPos] >= position[attPos] + size[attSize]) && (dis = 0);
70
+ const {start: startAttr, end: endAttr, brushSelect: brushSelect, realTime: realTime = !0} = this.attribute, pos = this.eventPosToStagePos(e), {attPos: attPos, max: max} = this._layoutCache, dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;
73
71
  let {start: start, end: end} = this.state;
74
72
  this._activeState && (this._activeTag === type_1.DataZoomActiveTag.middleHandler ? this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis) : this._activeTag === type_1.DataZoomActiveTag.startHandler ? start + dis > end ? (start = end,
75
73
  end = start + dis, this._activeTag = type_1.DataZoomActiveTag.endHandler) : start += dis : this._activeTag === type_1.DataZoomActiveTag.endHandler && (end + dis < start ? (end = start,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data-zoom/data-zoom.ts"],"names":[],"mappings":"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","file":"data-zoom.js","sourcesContent":["import type { FederatedPointerEvent, IArea, IGroup, ILine, IRect, ISymbol, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { flatten_simplify, vglobal } from '@visactor/vrender-core';\nimport type { IBoundsLike, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { Bounds, array, clamp, debounce, isFunction, isValid, merge, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { DEFAULT_DATA_ZOOM_ATTRIBUTES, DEFAULT_HANDLER_ATTR_MAP } from './config';\nimport { DataZoomActiveTag } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataZoomAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadDataZoomComponent } from './register';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\nloadDataZoomComponent();\nexport class DataZoom extends AbstractComponent<Required<DataZoomAttributes>> {\n name = 'dataZoom';\n static defaultAttributes = DEFAULT_DATA_ZOOM_ATTRIBUTES;\n\n private _isHorizontal: boolean;\n\n private _background!: IRect;\n\n private _container!: IGroup;\n\n /** 手柄 */\n private _startHandlerMask!: IRect;\n private _startHandler!: ISymbol;\n private _middleHandlerSymbol!: ISymbol;\n private _middleHandlerRect!: IRect;\n private _endHandlerMask!: IRect;\n private _endHandler!: ISymbol;\n private _selectedBackground!: IRect;\n private _dragMask!: IRect;\n private _startText!: Tag;\n private _endText!: Tag;\n private _startValue!: string | number;\n private _endValue!: string | number;\n private _showText!: boolean;\n\n /** 背景图表 */\n private _previewData: any[] = [];\n private _previewGroup!: IGroup;\n private _previewLine!: ILine;\n private _previewArea!: IArea;\n private _selectedPreviewGroupClip!: IGroup;\n private _selectedPreviewGroup!: IGroup;\n private _selectedPreviewLine!: ILine;\n private _selectedPreviewArea!: IArea;\n\n /** 交互状态 */\n protected _activeTag!: DataZoomActiveTag;\n protected _activeItem!: any;\n protected _activeState = false;\n protected _activeCache: {\n startPos: IPointLike;\n lastPos: IPointLike;\n } = {\n startPos: { x: 0, y: 0 },\n lastPos: { x: 0, y: 0 }\n };\n protected _layoutCache: {\n attPos: 'x' | 'y';\n attSize: 'width' | 'height';\n max: number;\n } = {\n attPos: 'x',\n attSize: 'width',\n max: 0\n };\n /** 起始状态 */\n readonly state = {\n start: 0,\n end: 1\n };\n protected _spanCache: number;\n\n /** 回调函数 */\n private _previewPointsX!: (datum: any) => number;\n private _previewPointsY!: (datum: any) => number;\n private _previewPointsX1!: (datum: any) => number;\n private _previewPointsY1!: (datum: any) => number;\n private _statePointToData: (state: number) => any = state => state;\n private _layoutAttrFromConfig: any; // 用于缓存\n\n setPropsFromAttrs() {\n const { start, end, orient, previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1 } = this\n .attribute as DataZoomAttributes;\n start && (this.state.start = start);\n end && (this.state.end = end);\n const { width, height } = this.getLayoutAttrFromConfig();\n this._spanCache = this.state.end - this.state.start;\n this._isHorizontal = orient === 'top' || orient === 'bottom';\n this._layoutCache.max = this._isHorizontal ? width : height;\n this._layoutCache.attPos = this._isHorizontal ? 'x' : 'y';\n this._layoutCache.attSize = this._isHorizontal ? 'width' : 'height';\n previewData && (this._previewData = previewData);\n isFunction(previewPointsX) && (this._previewPointsX = previewPointsX);\n isFunction(previewPointsY) && (this._previewPointsY = previewPointsY);\n isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1);\n isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1);\n }\n\n constructor(attributes: DataZoomAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, DataZoom.defaultAttributes, attributes));\n const { position, showDetail } = attributes;\n // 这些属性在事件交互过程中会改变,所以不能在setAttrs里面动态更改\n this._activeCache.startPos = position;\n this._activeCache.lastPos = position;\n if (showDetail === 'auto') {\n this._showText = false as boolean;\n } else {\n this._showText = showDetail as boolean;\n }\n this.setPropsFromAttrs();\n }\n\n setAttributes(params: Partial<Required<DataZoomAttributes>>, forceUpdateTag?: boolean): void {\n super.setAttributes(params, forceUpdateTag);\n this.setPropsFromAttrs();\n }\n\n protected bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n this.setAttribute('childrenPickable', false);\n return;\n }\n const { showDetail, brushSelect } = this.attribute as DataZoomAttributes;\n // 拖拽开始\n if (this._startHandlerMask) {\n this._startHandlerMask.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'start') as unknown as EventListener\n );\n }\n if (this._endHandlerMask) {\n this._endHandlerMask.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'end') as unknown as EventListener\n );\n }\n if (this._middleHandlerSymbol) {\n this._middleHandlerSymbol.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleSymbol') as unknown as EventListener\n );\n }\n if (this._middleHandlerRect) {\n this._middleHandlerRect.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleRect') as unknown as EventListener\n );\n }\n\n const selectedTag = brushSelect ? 'background' : 'middleRect';\n if (this._selectedBackground) {\n this._selectedBackground.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener\n );\n }\n if (brushSelect && this._background) {\n this._background.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener\n );\n }\n if (brushSelect && this._previewGroup) {\n this._previewGroup.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener\n );\n }\n if (this._selectedPreviewGroup) {\n this._selectedPreviewGroup.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener\n );\n }\n // 拖拽结束\n (this as unknown as IGroup).addEventListener('pointerup', this._onHandlerPointerUp);\n (this as unknown as IGroup).addEventListener('pointerupoutside', this._onHandlerPointerUp);\n // hover\n if (showDetail === 'auto') {\n (this as unknown as IGroup).addEventListener('pointerenter', this._onHandlerPointerEnter as EventListener);\n (this as unknown as IGroup).addEventListener('pointerleave', this._onHandlerPointerLeave as EventListener);\n }\n }\n\n /** dragMask size边界处理 */\n protected dragMaskSize() {\n const { position } = this.attribute as DataZoomAttributes;\n const { attPos, max } = this._layoutCache;\n if (this._activeCache.lastPos[attPos] - position[attPos] > max) {\n return max + position[attPos] - this._activeCache.startPos[attPos];\n } else if (this._activeCache.lastPos[attPos] - position[attPos] < 0) {\n return position[attPos] - this._activeCache.startPos[attPos];\n }\n return this._activeCache.lastPos[attPos] - this._activeCache.startPos[attPos];\n }\n\n /** state 边界处理 */\n protected setStateAttr(start: number, end: number, shouldRender: boolean) {\n const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute as DataZoomAttributes;\n const span = end - start;\n if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) {\n return;\n }\n this._spanCache = span;\n this.state.start = start;\n this.state.end = end;\n shouldRender && this.setAttributes({ start, end });\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n return this.stage.eventPointTransform(e);\n }\n\n /**\n * 拖拽开始事件\n * @description 开启activeState + 通过tag判断事件在哪个元素上触发 并 更新交互坐标\n */\n private _onHandlerPointerDown = (e: FederatedPointerEvent, tag: string) => {\n e.stopPropagation();\n if (tag === 'start') {\n this._activeTag = DataZoomActiveTag.startHandler;\n this._activeItem = this._startHandlerMask;\n } else if (tag === 'end') {\n this._activeTag = DataZoomActiveTag.endHandler;\n this._activeItem = this._endHandlerMask;\n } else if (tag === 'middleRect') {\n this._activeTag = DataZoomActiveTag.middleHandler;\n this._activeItem = this._middleHandlerRect;\n } else if (tag === 'middleSymbol') {\n this._activeTag = DataZoomActiveTag.middleHandler;\n this._activeItem = this._middleHandlerSymbol;\n } else if (tag === 'background') {\n this._activeTag = DataZoomActiveTag.background;\n this._activeItem = this._background;\n }\n this._activeState = true;\n this._activeCache.startPos = this.eventPosToStagePos(e);\n this._activeCache.lastPos = this.eventPosToStagePos(e);\n\n // 拖拽开始时监听事件\n if (vglobal.env === 'browser') {\n // 拖拽时\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n // 拖拽结束\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp);\n }\n // 拖拽时\n (this as unknown as IGroup).addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n };\n\n /**\n * 拖拽进行事件\n * @description 分为以下四种情况:\n * 1. 在背景 or 背景图表上拖拽 (activeTag === 'background'): 改变lastPos => dragMask的宽 or 高被改变\n * 2. 在middleHandler上拖拽 (activeTag === 'middleHandler'): 改变lastPos、start & end + 边界处理: 防止拖拽结果超出背景 => 所有handler的位置被改变\n * 3. 在startHandler上拖拽 (activeTag === 'startHandler'): 改变lastPos、start & end + 边界处理: startHandler和endHandler交换 => 所有handler的位置被改变\n * 4. 在endHandler上拖拽,同上\n */\n private _pointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const {\n start: startAttr,\n end: endAttr,\n brushSelect,\n realTime = true,\n position,\n size,\n disableDispatchOutSide = false\n } = this.attribute as DataZoomAttributes;\n const pos = this.eventPosToStagePos(e);\n const { attPos, max, attSize } = this._layoutCache;\n let dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;\n\n if (\n disableDispatchOutSide &&\n (pos[attPos] <= position[attPos] || pos[attPos] >= position[attPos] + size[attSize])\n ) {\n dis = 0;\n }\n let { start, end } = this.state;\n // this._activeState= false;\n if (this._activeState) {\n // if (this._activeTag === DataZoomActiveTag.background) {\n // } else\n if (this._activeTag === DataZoomActiveTag.middleHandler) {\n this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis);\n } else if (this._activeTag === DataZoomActiveTag.startHandler) {\n if (start + dis > end) {\n start = end;\n end = start + dis;\n this._activeTag = DataZoomActiveTag.endHandler;\n } else {\n start = start + dis;\n }\n } else if (this._activeTag === DataZoomActiveTag.endHandler) {\n if (end + dis < start) {\n end = start;\n start = end + dis;\n this._activeTag = DataZoomActiveTag.startHandler;\n } else {\n end = end + dis;\n }\n }\n this._activeCache.lastPos = pos;\n brushSelect && this.renderDragMask();\n }\n start = Math.min(Math.max(start, 0), 1);\n end = Math.min(Math.max(end, 0), 1);\n\n // 避免attributes相同时, 重复渲染\n if (startAttr !== start || endAttr !== end) {\n this.setStateAttr(start, end, true);\n\n if (realTime) {\n this._dispatchEvent('change', {\n start,\n end,\n tag: this._activeTag\n });\n }\n }\n };\n private _onHandlerPointerMove =\n this.attribute.delayTime === 0\n ? this._pointerMove\n : delayMap[this.attribute.delayType](this._pointerMove, this.attribute.delayTime);\n\n /**\n * 拖拽结束事件\n * @description 关闭activeState + 边界情况处理: 防止拖拽后start和end过近\n */\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n const { start, end, brushSelect, realTime = true } = this.attribute as DataZoomAttributes;\n if (this._activeState) {\n if (this._activeTag === DataZoomActiveTag.background) {\n const pos = this.eventPosToStagePos(e);\n this.backgroundDragZoom(this._activeCache.startPos, pos);\n }\n }\n this._activeState = false;\n\n // dragMask不依赖于state更新\n brushSelect && this.renderDragMask();\n\n // 避免attributes相同时, 重复渲染\n if (start !== this.state.start || end !== this.state.end) {\n this.setStateAttr(this.state.start, this.state.end, true);\n\n this._dispatchEvent('change', {\n start: this.state.start,\n end: this.state.end,\n tag: this._activeTag\n });\n }\n\n // 拖拽结束后卸载事件\n if (vglobal.env === 'browser') {\n // 拖拽时\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n // 拖拽结束\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);\n }\n // 拖拽时\n (this as unknown as IGroup).removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n (this as unknown as IGroup).removeEventListener('pointerup', this._onHandlerPointerUp);\n };\n\n /**\n * 鼠标进入事件\n * @description 鼠标进入选中部分出现start和end文字\n */\n private _onHandlerPointerEnter(e: FederatedPointerEvent) {\n e.stopPropagation();\n this._showText = true;\n this.renderText();\n }\n\n /**\n * 鼠标移出事件\n * @description 鼠标移出选中部分不出现start和end文字\n */\n private _onHandlerPointerLeave(e: FederatedPointerEvent) {\n e.stopPropagation();\n this._showText = false;\n this.renderText();\n }\n\n protected backgroundDragZoom(startPos: IPointLike, endPos: IPointLike) {\n const { attPos, max } = this._layoutCache;\n const { position } = this.attribute as DataZoomAttributes;\n const startPosInComponent = startPos[attPos] - position[attPos];\n const endPosInComponent = endPos[attPos] - position[attPos];\n const start = Math.min(Math.max(Math.min(startPosInComponent, endPosInComponent) / max, 0), 1);\n const end = Math.min(Math.max(Math.max(startPosInComponent, endPosInComponent) / max, 0), 1);\n if (Math.abs(start - end) < 0.01) {\n this.moveZoomWithMiddle(start);\n } else {\n this.setStateAttr(start, end, false);\n }\n }\n\n protected moveZoomWithMiddle(middle: number) {\n const currentMiddle = (this.state.start + this.state.end) / 2;\n let offset = middle - currentMiddle;\n // 拖拽middleHandler时,限制在background范围内\n if (offset === 0) {\n return;\n } else if (offset > 0) {\n if (this.state.end + offset > 1) {\n offset = 1 - this.state.end;\n }\n } else if (offset < 0) {\n if (this.state.start + offset < 0) {\n offset = -this.state.start;\n }\n }\n this.setStateAttr(this.state.start + offset, this.state.end + offset, false);\n }\n\n protected renderDragMask() {\n const { dragMaskStyle } = this.attribute as DataZoomAttributes;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n // drag部分\n if (this._isHorizontal) {\n this._dragMask = this._container.createOrUpdateChild(\n 'dragMask',\n {\n x: clamp(\n this.dragMaskSize() < 0 ? this._activeCache.lastPos.x : this._activeCache.startPos.x,\n position.x,\n position.x + width\n ),\n y: position.y,\n width:\n (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) ||\n 0,\n height,\n ...dragMaskStyle\n },\n 'rect'\n ) as IRect;\n } else {\n this._dragMask = this._container.createOrUpdateChild(\n 'dragMask',\n {\n x: position.x,\n y: clamp(\n this.dragMaskSize() < 0 ? this._activeCache.lastPos.y : this._activeCache.startPos.y,\n position.y,\n position.y + height\n ),\n width,\n height:\n (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) ||\n 0,\n ...dragMaskStyle\n },\n 'rect'\n ) as IRect;\n }\n }\n\n /**\n * 判断文字是否超出datazoom范围\n */\n protected isTextOverflow(componentBoundsLike: IBoundsLike, textBounds: IBoundsLike | null, layout: 'start' | 'end') {\n if (!textBounds) {\n return false;\n }\n if (this._isHorizontal) {\n if (layout === 'start') {\n if (textBounds.x1 < componentBoundsLike.x1) {\n return true;\n }\n } else {\n if (textBounds.x2 > componentBoundsLike.x2) {\n return true;\n }\n }\n } else {\n if (layout === 'start') {\n if (textBounds.y1 < componentBoundsLike.y1) {\n return true;\n }\n } else {\n if (textBounds.y2 > componentBoundsLike.y2) {\n return true;\n }\n }\n }\n return false;\n }\n\n protected setTextAttr(startTextBounds: IBoundsLike, endTextBounds: IBoundsLike) {\n const { startTextStyle, endTextStyle } = this.attribute as DataZoomAttributes;\n const { formatMethod: startTextFormat, ...restStartTextStyle } = startTextStyle;\n const { formatMethod: endTextFormat, ...restEndTextStyle } = endTextStyle;\n const { start, end } = this.state;\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n const { position, width, height } = this.getLayoutAttrFromConfig();\n\n const startTextValue = startTextFormat ? startTextFormat(this._startValue) : this._startValue;\n const endTextValue = endTextFormat ? endTextFormat(this._endValue) : this._endValue;\n const componentBoundsLike = {\n x1: position.x,\n y1: position.y,\n x2: position.x + width,\n y2: position.y + height\n };\n let startTextPosition: IPointLike;\n let endTextPosition: IPointLike;\n let startTextAlignStyle: any;\n let endTextAlignStyle: any;\n if (this._isHorizontal) {\n startTextPosition = {\n x: position.x + start * width,\n y: position.y + height / 2\n };\n endTextPosition = {\n x: position.x + end * width,\n y: position.y + height / 2\n };\n startTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'left' : 'right',\n textBaseline: restStartTextStyle?.textStyle?.textBaseline ?? 'middle'\n };\n endTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'right' : 'left',\n textBaseline: restEndTextStyle?.textStyle?.textBaseline ?? 'middle'\n };\n } else {\n startTextPosition = {\n x: position.x + width / 2,\n y: position.y + start * height\n };\n endTextPosition = {\n x: position.x + width / 2,\n y: position.y + end * height\n };\n startTextAlignStyle = {\n textAlign: restStartTextStyle?.textStyle?.textAlign ?? 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'top' : 'bottom'\n };\n endTextAlignStyle = {\n textAlign: restEndTextStyle?.textStyle?.textAlign ?? 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'bottom' : 'top'\n };\n }\n\n this._startText = this.maybeAddLabel(\n this._container,\n merge({}, restStartTextStyle, {\n text: startTextValue,\n x: startTextPosition.x,\n y: startTextPosition.y,\n visible: this._showText,\n pickable: false,\n childrenPickable: false,\n textStyle: startTextAlignStyle\n }),\n `data-zoom-start-text-${position}`\n );\n this._endText = this.maybeAddLabel(\n this._container,\n merge({}, restEndTextStyle, {\n text: endTextValue,\n x: endTextPosition.x,\n y: endTextPosition.y,\n visible: this._showText,\n pickable: false,\n childrenPickable: false,\n textStyle: endTextAlignStyle\n }),\n `data-zoom-end-text-${position}`\n );\n }\n\n protected renderText() {\n let startTextBounds: IBoundsLike | null = null;\n let endTextBounds: IBoundsLike | null = null;\n\n // 第一次绘制\n this.setTextAttr(startTextBounds, endTextBounds);\n // 得到bounds\n startTextBounds = this._startText.AABBBounds;\n endTextBounds = this._endText.AABBBounds;\n\n // 第二次绘制: 将text限制在组件bounds内\n this.setTextAttr(startTextBounds, endTextBounds);\n // 得到bounds\n startTextBounds = this._startText.AABBBounds;\n endTextBounds = this._endText.AABBBounds;\n const { x1, x2, y1, y2 } = startTextBounds;\n const { dx: startTextDx = 0, dy: startTextDy = 0 } = this.attribute.startTextStyle;\n\n // 第三次绘制: 避免startText和endText重叠, 如果重叠了, 对startText做位置调整(考虑到调整的最小化,只单独调整startText而不调整endText)\n if (new Bounds().set(x1, y1, x2, y2).intersects(endTextBounds)) {\n const direction = this.attribute.orient === 'bottom' || this.attribute.orient === 'right' ? -1 : 1;\n if (this._isHorizontal) {\n this._startText.setAttribute('dy', startTextDy + direction * Math.abs(endTextBounds.y1 - endTextBounds.y2));\n } else {\n this._startText.setAttribute('dx', startTextDx + direction * Math.abs(endTextBounds.x1 - endTextBounds.x2));\n }\n } else {\n if (this._isHorizontal) {\n this._startText.setAttribute('dy', startTextDy);\n } else {\n this._startText.setAttribute('dx', startTextDx);\n }\n }\n }\n\n /**\n * 获取背景框中的位置和宽高\n * @description 实际绘制的背景框中的高度或宽度 减去 中间手柄的高度或宽度\n */\n protected getLayoutAttrFromConfig() {\n if (this._layoutAttrFromConfig) {\n return this._layoutAttrFromConfig;\n }\n const {\n position: positionConfig,\n size,\n orient,\n middleHandlerStyle = {},\n startHandlerStyle = {},\n endHandlerStyle = {},\n backgroundStyle = {}\n } = this.attribute as DataZoomAttributes;\n const { width: widthConfig, height: heightConfig } = size;\n const middleHandlerSize = middleHandlerStyle.background?.size ?? 10;\n\n // 如果middleHandler显示的话,要将其宽高计入datazoom宽高\n let width;\n let height;\n let position;\n if (middleHandlerStyle.visible) {\n if (this._isHorizontal) {\n width = widthConfig;\n height = heightConfig - middleHandlerSize;\n position = {\n x: positionConfig.x,\n y: positionConfig.y + middleHandlerSize\n };\n } else {\n width = widthConfig - middleHandlerSize;\n height = heightConfig;\n position = {\n x: positionConfig.x + (orient === 'left' ? middleHandlerSize : 0),\n y: positionConfig.y\n };\n }\n } else {\n width = widthConfig;\n height = heightConfig;\n position = positionConfig;\n }\n\n const startHandlerSize = (startHandlerStyle.size as number) ?? (this._isHorizontal ? height : width);\n const endHandlerSize = (endHandlerStyle.size as number) ?? (this._isHorizontal ? height : width);\n // 如果startHandler显示的话,要将其宽高计入dataZoom宽高\n if (startHandlerStyle.visible) {\n if (this._isHorizontal) {\n width -= (startHandlerSize + endHandlerSize) / 2;\n position = {\n x: position.x + startHandlerSize / 2,\n y: position.y\n };\n } else {\n height -= (startHandlerSize + endHandlerSize) / 2;\n position = {\n x: position.x,\n y: position.y + startHandlerSize / 2\n };\n }\n }\n\n // stroke 需计入宽高, 否则dataZoom在画布边缘会被裁剪lineWidth / 2\n height += backgroundStyle.lineWidth / 2 ?? 1;\n width += backgroundStyle.lineWidth / 2 ?? 1;\n\n this._layoutAttrFromConfig = {\n position,\n width,\n height\n };\n return this._layoutAttrFromConfig;\n }\n\n protected render() {\n this._layoutAttrFromConfig = null;\n const {\n // start,\n // end,\n orient,\n backgroundStyle,\n backgroundChartStyle = {},\n selectedBackgroundStyle = {},\n selectedBackgroundChartStyle = {},\n middleHandlerStyle = {},\n startHandlerStyle = {},\n endHandlerStyle = {},\n brushSelect,\n zoomLock\n } = this.attribute as DataZoomAttributes;\n const { start, end } = this.state;\n\n const { position, width, height } = this.getLayoutAttrFromConfig();\n const startHandlerMinSize = startHandlerStyle.triggerMinSize ?? 40;\n const endHandlerMinSize = endHandlerStyle.triggerMinSize ?? 40;\n const group = (this as unknown as IGroup).createOrUpdateChild('dataZoom-container', {}, 'group') as IGroup;\n this._container = group;\n this._background = group.createOrUpdateChild(\n 'background',\n {\n x: position.x,\n y: position.y,\n width,\n height,\n cursor: brushSelect ? 'crosshair' : 'auto',\n ...backgroundStyle,\n pickable: zoomLock ? false : backgroundStyle.pickable ?? true\n },\n 'rect'\n ) as IRect;\n\n /** 背景图表 */\n backgroundChartStyle.line?.visible && this.setPreviewAttributes('line', group);\n backgroundChartStyle.area?.visible && this.setPreviewAttributes('area', group);\n\n /** drag mask */\n brushSelect && this.renderDragMask();\n\n /** 选中背景 */\n if (this._isHorizontal) {\n // 选中部分\n this._selectedBackground = group.createOrUpdateChild(\n 'selectedBackground',\n {\n x: position.x + start * width,\n y: position.y,\n width: (end - start) * width,\n height: height,\n cursor: brushSelect ? 'crosshair' : 'move',\n ...selectedBackgroundStyle,\n pickable: zoomLock ? false : (selectedBackgroundChartStyle as any).pickable ?? true\n },\n 'rect'\n ) as IRect;\n } else {\n // 选中部分\n this._selectedBackground = group.createOrUpdateChild(\n 'selectedBackground',\n {\n x: position.x,\n y: position.y + start * height,\n width,\n height: (end - start) * height,\n cursor: brushSelect ? 'crosshair' : 'move',\n ...selectedBackgroundStyle,\n pickable: zoomLock ? false : selectedBackgroundStyle.pickable ?? true\n },\n 'rect'\n ) as IRect;\n }\n\n /** 选中的背景图表 */\n selectedBackgroundChartStyle.line?.visible && this.setSelectedPreviewAttributes('line', group);\n selectedBackgroundChartStyle.area?.visible && this.setSelectedPreviewAttributes('area', group);\n\n /** 左右 和 中间手柄 */\n if (this._isHorizontal) {\n if (middleHandlerStyle.visible) {\n const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10;\n this._middleHandlerRect = group.createOrUpdateChild(\n 'middleHandlerRect',\n {\n x: position.x + start * width,\n y: position.y - middleHandlerBackgroundSize,\n width: (end - start) * width,\n height: middleHandlerBackgroundSize,\n ...middleHandlerStyle.background?.style,\n pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true\n },\n 'rect'\n ) as IRect;\n this._middleHandlerSymbol = group.createOrUpdateChild(\n 'middleHandlerSymbol',\n {\n x: position.x + ((start + end) / 2) * width,\n y: position.y - middleHandlerBackgroundSize / 2,\n strokeBoundsBuffer: 0,\n angle: 0,\n symbolType: middleHandlerStyle.icon?.symbolType ?? 'square',\n ...middleHandlerStyle.icon,\n pickable: zoomLock ? false : middleHandlerStyle.icon.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n }\n this._startHandler = group.createOrUpdateChild(\n 'startHandler',\n {\n x: position.x + start * width,\n y: position.y + height / 2,\n size: height,\n symbolType: startHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n ...startHandlerStyle,\n pickable: zoomLock ? false : startHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n this._endHandler = group.createOrUpdateChild(\n 'endHandler',\n {\n x: position.x + end * width,\n y: position.y + height / 2,\n size: height,\n symbolType: endHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n ...endHandlerStyle,\n pickable: zoomLock ? false : endHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n // 透明mask构造热区, 热区大小配置来自handler bounds\n const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize);\n const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize);\n const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize);\n const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize);\n\n this._startHandlerMask = group.createOrUpdateChild(\n 'startHandlerMask',\n {\n x: position.x + start * width - startHandlerWidth / 2,\n y: position.y + height / 2 - startHandlerHeight / 2,\n width: startHandlerWidth,\n height: startHandlerHeight,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n this._endHandlerMask = group.createOrUpdateChild(\n 'endHandlerMask',\n {\n x: position.x + end * width - endHandlerWidth / 2,\n y: position.y + height / 2 - endHandlerHeight / 2,\n width: endHandlerWidth,\n height: endHandlerHeight,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n } else {\n if (middleHandlerStyle.visible) {\n const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10;\n\n this._middleHandlerRect = group.createOrUpdateChild(\n 'middleHandlerRect',\n {\n x: orient === 'left' ? position.x - middleHandlerBackgroundSize : position.x + width,\n y: position.y + start * height,\n width: middleHandlerBackgroundSize,\n height: (end - start) * height,\n ...middleHandlerStyle.background?.style,\n pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true\n },\n 'rect'\n ) as IRect;\n this._middleHandlerSymbol = group.createOrUpdateChild(\n 'middleHandlerSymbol',\n {\n x:\n orient === 'left'\n ? position.x - middleHandlerBackgroundSize / 2\n : position.x + width + middleHandlerBackgroundSize / 2,\n y: position.y + ((start + end) / 2) * height,\n // size: height,\n angle: 90 * (Math.PI / 180),\n symbolType: middleHandlerStyle.icon?.symbolType ?? 'square',\n strokeBoundsBuffer: 0,\n ...middleHandlerStyle.icon,\n pickable: zoomLock ? false : middleHandlerStyle.icon?.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n }\n this._startHandler = group.createOrUpdateChild(\n 'startHandler',\n {\n x: position.x + width / 2,\n y: position.y + start * height,\n size: width,\n symbolType: startHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n ...startHandlerStyle,\n pickable: zoomLock ? false : startHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n this._endHandler = group.createOrUpdateChild(\n 'endHandler',\n {\n x: position.x + width / 2,\n y: position.y + end * height,\n size: width,\n symbolType: endHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n ...endHandlerStyle,\n pickable: zoomLock ? false : endHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n // 透明mask构造热区, 热区大小配置来自handler bounds\n const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize);\n const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize);\n const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize);\n const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize);\n\n this._startHandlerMask = group.createOrUpdateChild(\n 'startHandlerMask',\n {\n x: position.x + width / 2 + startHandlerWidth / 2,\n y: position.y + start * height - startHandlerHeight / 2,\n width: endHandlerHeight,\n height: endHandlerWidth,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n this._endHandlerMask = group.createOrUpdateChild(\n 'endHandlerMask',\n {\n x: position.x + width / 2 + endHandlerWidth / 2,\n y: position.y + end * height - endHandlerHeight / 2,\n width: endHandlerHeight,\n height: endHandlerWidth,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n }\n\n /** 左右文字 */\n if (this._showText) {\n this.renderText();\n }\n }\n\n computeBasePoints() {\n const { orient } = this.attribute as DataZoomAttributes;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n let basePointStart: any;\n let basePointEnd: any;\n if (this._isHorizontal) {\n basePointStart = [\n {\n x: position.x,\n y: position.y + height\n }\n ];\n basePointEnd = [\n {\n x: position.x + width,\n y: position.y + height\n }\n ];\n } else if (orient === 'left') {\n basePointStart = [\n {\n x: position.x + width,\n y: position.y\n }\n ];\n basePointEnd = [\n {\n x: position.x + width,\n y: position.y + height\n }\n ];\n } else {\n basePointStart = [\n {\n x: position.x,\n y: position.y + height\n }\n ];\n basePointEnd = [\n {\n x: position.x,\n y: position.y\n }\n ];\n }\n return {\n basePointStart,\n basePointEnd\n };\n }\n\n protected simplifyPoints(points: IPointLike[]) {\n // 采样压缩率策略: 如果没做任何配置, 那么限制在niceCount内, 如果做了配置, 则按照配置计算\n const niceCount = 10000; // 经验值\n if (points.length > niceCount) {\n const tolerance = this.attribute.tolerance ?? this._previewData.length / niceCount;\n return flatten_simplify(points, tolerance, false);\n }\n return points;\n }\n\n protected getPreviewLinePoints() {\n let previewPoints = this._previewData.map(d => {\n return {\n x: this._previewPointsX && this._previewPointsX(d),\n y: this._previewPointsY && this._previewPointsY(d)\n };\n });\n // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形\n if (previewPoints.length === 0) {\n return previewPoints;\n }\n\n // 采样\n previewPoints = this.simplifyPoints(previewPoints);\n\n const { basePointStart, basePointEnd } = this.computeBasePoints();\n return basePointStart.concat(previewPoints).concat(basePointEnd);\n }\n\n protected getPreviewAreaPoints() {\n let previewPoints: IPointLike[] = this._previewData.map(d => {\n return {\n x: this._previewPointsX && this._previewPointsX(d),\n y: this._previewPointsY && this._previewPointsY(d),\n x1: this._previewPointsX1 && this._previewPointsX1(d),\n y1: this._previewPointsY1 && this._previewPointsY1(d)\n };\n });\n // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形\n if (previewPoints.length === 0) {\n return previewPoints;\n }\n\n // 采样\n previewPoints = this.simplifyPoints(previewPoints);\n\n const { basePointStart, basePointEnd } = this.computeBasePoints();\n return basePointStart.concat(previewPoints).concat(basePointEnd);\n }\n\n /** 使用callback绘制背景图表 (数据和数据映射从外部传进来) */\n protected setPreviewAttributes(type: 'line' | 'area', group: IGroup) {\n if (!this._previewGroup) {\n this._previewGroup = group.createOrUpdateChild('previewGroup', { pickable: false }, 'group') as IGroup;\n }\n if (type === 'line') {\n this._previewLine = this._previewGroup.createOrUpdateChild('previewLine', {}, 'line') as ILine;\n } else {\n this._previewArea = this._previewGroup.createOrUpdateChild(\n 'previewArea',\n { curveType: 'basis' },\n 'area'\n ) as IArea;\n }\n\n const { backgroundChartStyle = {} } = this.attribute as DataZoomAttributes;\n\n type === 'line' &&\n this._previewLine.setAttributes({\n points: this.getPreviewLinePoints(),\n curveType: 'basis',\n pickable: false,\n ...backgroundChartStyle.line\n });\n type === 'area' &&\n this._previewArea.setAttributes({\n points: this.getPreviewAreaPoints(),\n curveType: 'basis',\n pickable: false,\n ...backgroundChartStyle.area\n });\n }\n\n /** 使用callback绘制选中的背景图表 (数据和数据映射从外部传进来) */\n protected setSelectedPreviewAttributes(type: 'area' | 'line', group: IGroup) {\n if (!this._selectedPreviewGroupClip) {\n this._selectedPreviewGroupClip = group.createOrUpdateChild(\n 'selectedPreviewGroupClip',\n { pickable: false },\n 'group'\n ) as IGroup;\n this._selectedPreviewGroup = this._selectedPreviewGroupClip.createOrUpdateChild(\n 'selectedPreviewGroup',\n {},\n 'group'\n ) as IGroup;\n }\n\n if (type === 'line') {\n this._selectedPreviewLine = this._selectedPreviewGroup.createOrUpdateChild(\n 'selectedPreviewLine',\n {},\n 'line'\n ) as ILine;\n } else {\n this._selectedPreviewArea = this._selectedPreviewGroup.createOrUpdateChild(\n 'selectedPreviewArea',\n { curveType: 'basis' },\n 'area'\n ) as IArea;\n }\n\n const { selectedBackgroundChartStyle = {} } = this.attribute as DataZoomAttributes;\n\n const { start, end } = this.state;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n this._selectedPreviewGroupClip.setAttributes({\n x: this._isHorizontal ? position.x + start * width : position.x,\n y: this._isHorizontal ? position.y : position.y + start * height,\n width: this._isHorizontal ? (end - start) * width : width,\n height: this._isHorizontal ? height : (end - start) * height,\n clip: true,\n pickable: false\n } as any);\n this._selectedPreviewGroup.setAttributes({\n x: -(this._isHorizontal ? position.x + start * width : position.x),\n y: -(this._isHorizontal ? position.y : position.y + start * height),\n width: this._isHorizontal ? (end - start) * width : width,\n height: this._isHorizontal ? height : (end - start) * height,\n pickable: false\n } as any);\n type === 'line' &&\n this._selectedPreviewLine.setAttributes({\n points: this.getPreviewLinePoints(),\n curveType: 'basis',\n pickable: false,\n ...selectedBackgroundChartStyle.line\n });\n type === 'area' &&\n this._selectedPreviewArea.setAttributes({\n points: this.getPreviewAreaPoints(),\n curveType: 'basis',\n pickable: false,\n ...selectedBackgroundChartStyle.area\n });\n }\n\n protected maybeAddLabel(container: IGroup, attributes: TagAttributes, name: string): Tag {\n let labelShape = (this as unknown as IGroup).find(node => node.name === name, true) as unknown as Tag;\n if (labelShape) {\n labelShape.setAttributes(attributes);\n } else {\n labelShape = new Tag(attributes);\n labelShape.name = name;\n }\n\n container.add(labelShape as unknown as INode);\n return labelShape;\n }\n\n /** 外部重置组件的起始状态 */\n setStartAndEnd(start?: number, end?: number) {\n const { start: startAttr, end: endAttr } = this.attribute as DataZoomAttributes;\n if (isValid(start) && isValid(end) && (start !== this.state.start || end !== this.state.end)) {\n this.state.start = start;\n this.state.end = end;\n if (startAttr !== this.state.start || endAttr !== this.state.end) {\n this.setStateAttr(start, end, true);\n this._dispatchEvent('change', {\n start,\n end,\n tag: this._activeTag\n });\n }\n }\n }\n\n /** 外部更新背景图表的数据 */\n setPreviewData(data: any[]) {\n this._previewData = data;\n }\n\n /** 外部更新手柄文字 */\n setText(text: string, tag: 'start' | 'end') {\n if (tag === 'start') {\n this._startText.setAttribute('text', text);\n } else {\n this._endText.setAttribute('text', text);\n }\n }\n\n /** 外部获取起始点数据值 */\n getStartValue() {\n return this._startValue;\n }\n\n getEndTextValue() {\n return this._endValue;\n }\n\n getMiddleHandlerSize() {\n const { middleHandlerStyle = {} } = this.attribute as DataZoomAttributes;\n const middleHandlerRectSize = middleHandlerStyle.background?.size ?? 10;\n const middleHandlerSymbolSize = middleHandlerStyle.icon?.size ?? 10;\n return Math.max(middleHandlerRectSize, ...array(middleHandlerSymbolSize));\n }\n\n /** 外部传入数据映射 */\n setPreviewPointsX(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsX = callback);\n }\n setPreviewPointsY(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsY = callback);\n }\n setPreviewPointsX1(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsX1 = callback);\n }\n setPreviewPointsY1(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsY1 = callback);\n }\n setStatePointToData(callback: (state: number) => any) {\n isFunction(callback) && (this._statePointToData = callback);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/data-zoom/data-zoom.ts"],"names":[],"mappings":"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","file":"data-zoom.js","sourcesContent":["import type { FederatedPointerEvent, IArea, IGroup, ILine, IRect, ISymbol, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { flatten_simplify, vglobal } from '@visactor/vrender-core';\nimport type { IBoundsLike, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { Bounds, array, clamp, debounce, isFunction, isValid, merge, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { DEFAULT_DATA_ZOOM_ATTRIBUTES, DEFAULT_HANDLER_ATTR_MAP } from './config';\nimport { DataZoomActiveTag } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataZoomAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadDataZoomComponent } from './register';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\nloadDataZoomComponent();\nexport class DataZoom extends AbstractComponent<Required<DataZoomAttributes>> {\n name = 'dataZoom';\n static defaultAttributes = DEFAULT_DATA_ZOOM_ATTRIBUTES;\n\n private _isHorizontal: boolean;\n\n private _background!: IRect;\n\n private _container!: IGroup;\n\n /** 手柄 */\n private _startHandlerMask!: IRect;\n private _startHandler!: ISymbol;\n private _middleHandlerSymbol!: ISymbol;\n private _middleHandlerRect!: IRect;\n private _endHandlerMask!: IRect;\n private _endHandler!: ISymbol;\n private _selectedBackground!: IRect;\n private _dragMask!: IRect;\n private _startText!: Tag;\n private _endText!: Tag;\n private _startValue!: string | number;\n private _endValue!: string | number;\n private _showText!: boolean;\n\n /** 背景图表 */\n private _previewData: any[] = [];\n private _previewGroup!: IGroup;\n private _previewLine!: ILine;\n private _previewArea!: IArea;\n private _selectedPreviewGroupClip!: IGroup;\n private _selectedPreviewGroup!: IGroup;\n private _selectedPreviewLine!: ILine;\n private _selectedPreviewArea!: IArea;\n\n /** 交互状态 */\n protected _activeTag!: DataZoomActiveTag;\n protected _activeItem!: any;\n protected _activeState = false;\n protected _activeCache: {\n startPos: IPointLike;\n lastPos: IPointLike;\n } = {\n startPos: { x: 0, y: 0 },\n lastPos: { x: 0, y: 0 }\n };\n protected _layoutCache: {\n attPos: 'x' | 'y';\n attSize: 'width' | 'height';\n max: number;\n } = {\n attPos: 'x',\n attSize: 'width',\n max: 0\n };\n /** 起始状态 */\n readonly state = {\n start: 0,\n end: 1\n };\n protected _spanCache: number;\n\n /** 回调函数 */\n private _previewPointsX!: (datum: any) => number;\n private _previewPointsY!: (datum: any) => number;\n private _previewPointsX1!: (datum: any) => number;\n private _previewPointsY1!: (datum: any) => number;\n private _statePointToData: (state: number) => any = state => state;\n private _layoutAttrFromConfig: any; // 用于缓存\n\n setPropsFromAttrs() {\n const { start, end, orient, previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1 } = this\n .attribute as DataZoomAttributes;\n start && (this.state.start = start);\n end && (this.state.end = end);\n const { width, height } = this.getLayoutAttrFromConfig();\n this._spanCache = this.state.end - this.state.start;\n this._isHorizontal = orient === 'top' || orient === 'bottom';\n this._layoutCache.max = this._isHorizontal ? width : height;\n this._layoutCache.attPos = this._isHorizontal ? 'x' : 'y';\n this._layoutCache.attSize = this._isHorizontal ? 'width' : 'height';\n previewData && (this._previewData = previewData);\n isFunction(previewPointsX) && (this._previewPointsX = previewPointsX);\n isFunction(previewPointsY) && (this._previewPointsY = previewPointsY);\n isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1);\n isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1);\n }\n\n constructor(attributes: DataZoomAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, DataZoom.defaultAttributes, attributes));\n const { position, showDetail } = attributes;\n // 这些属性在事件交互过程中会改变,所以不能在setAttrs里面动态更改\n this._activeCache.startPos = position;\n this._activeCache.lastPos = position;\n if (showDetail === 'auto') {\n this._showText = false as boolean;\n } else {\n this._showText = showDetail as boolean;\n }\n this.setPropsFromAttrs();\n }\n\n setAttributes(params: Partial<Required<DataZoomAttributes>>, forceUpdateTag?: boolean): void {\n super.setAttributes(params, forceUpdateTag);\n this.setPropsFromAttrs();\n }\n\n protected bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n this.setAttribute('childrenPickable', false);\n return;\n }\n const { showDetail, brushSelect } = this.attribute as DataZoomAttributes;\n // 拖拽开始\n if (this._startHandlerMask) {\n this._startHandlerMask.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'start') as unknown as EventListener\n );\n }\n if (this._endHandlerMask) {\n this._endHandlerMask.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'end') as unknown as EventListener\n );\n }\n if (this._middleHandlerSymbol) {\n this._middleHandlerSymbol.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleSymbol') as unknown as EventListener\n );\n }\n if (this._middleHandlerRect) {\n this._middleHandlerRect.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'middleRect') as unknown as EventListener\n );\n }\n\n const selectedTag = brushSelect ? 'background' : 'middleRect';\n if (this._selectedBackground) {\n this._selectedBackground.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener\n );\n }\n if (brushSelect && this._background) {\n this._background.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener\n );\n }\n if (brushSelect && this._previewGroup) {\n this._previewGroup.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, 'background') as unknown as EventListener\n );\n }\n if (this._selectedPreviewGroup) {\n this._selectedPreviewGroup.addEventListener(\n 'pointerdown',\n (e: FederatedPointerEvent) => this._onHandlerPointerDown(e, selectedTag) as unknown as EventListener\n );\n }\n // 拖拽结束\n (this as unknown as IGroup).addEventListener('pointerup', this._onHandlerPointerUp);\n (this as unknown as IGroup).addEventListener('pointerupoutside', this._onHandlerPointerUp);\n // hover\n if (showDetail === 'auto') {\n (this as unknown as IGroup).addEventListener('pointerenter', this._onHandlerPointerEnter as EventListener);\n (this as unknown as IGroup).addEventListener('pointerleave', this._onHandlerPointerLeave as EventListener);\n }\n }\n\n /** dragMask size边界处理 */\n protected dragMaskSize() {\n const { position } = this.attribute as DataZoomAttributes;\n const { attPos, max } = this._layoutCache;\n if (this._activeCache.lastPos[attPos] - position[attPos] > max) {\n return max + position[attPos] - this._activeCache.startPos[attPos];\n } else if (this._activeCache.lastPos[attPos] - position[attPos] < 0) {\n return position[attPos] - this._activeCache.startPos[attPos];\n }\n return this._activeCache.lastPos[attPos] - this._activeCache.startPos[attPos];\n }\n\n /** state 边界处理 */\n protected setStateAttr(start: number, end: number, shouldRender: boolean) {\n const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute as DataZoomAttributes;\n const span = end - start;\n if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) {\n return;\n }\n this._spanCache = span;\n this.state.start = start;\n this.state.end = end;\n shouldRender && this.setAttributes({ start, end });\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n return this.stage.eventPointTransform(e);\n }\n\n /**\n * 拖拽开始事件\n * @description 开启activeState + 通过tag判断事件在哪个元素上触发 并 更新交互坐标\n */\n private _onHandlerPointerDown = (e: FederatedPointerEvent, tag: string) => {\n e.stopPropagation();\n if (tag === 'start') {\n this._activeTag = DataZoomActiveTag.startHandler;\n this._activeItem = this._startHandlerMask;\n } else if (tag === 'end') {\n this._activeTag = DataZoomActiveTag.endHandler;\n this._activeItem = this._endHandlerMask;\n } else if (tag === 'middleRect') {\n this._activeTag = DataZoomActiveTag.middleHandler;\n this._activeItem = this._middleHandlerRect;\n } else if (tag === 'middleSymbol') {\n this._activeTag = DataZoomActiveTag.middleHandler;\n this._activeItem = this._middleHandlerSymbol;\n } else if (tag === 'background') {\n this._activeTag = DataZoomActiveTag.background;\n this._activeItem = this._background;\n }\n this._activeState = true;\n this._activeCache.startPos = this.eventPosToStagePos(e);\n this._activeCache.lastPos = this.eventPosToStagePos(e);\n\n // 拖拽开始时监听事件\n if (vglobal.env === 'browser') {\n // 拖拽时\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n // 拖拽结束\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp);\n }\n // 拖拽时\n (this as unknown as IGroup).addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n };\n\n /**\n * 拖拽进行事件\n * @description 分为以下四种情况:\n * 1. 在背景 or 背景图表上拖拽 (activeTag === 'background'): 改变lastPos => dragMask的宽 or 高被改变\n * 2. 在middleHandler上拖拽 (activeTag === 'middleHandler'): 改变lastPos、start & end + 边界处理: 防止拖拽结果超出背景 => 所有handler的位置被改变\n * 3. 在startHandler上拖拽 (activeTag === 'startHandler'): 改变lastPos、start & end + 边界处理: startHandler和endHandler交换 => 所有handler的位置被改变\n * 4. 在endHandler上拖拽,同上\n */\n private _pointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute as DataZoomAttributes;\n const pos = this.eventPosToStagePos(e);\n const { attPos, max } = this._layoutCache;\n const dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;\n\n let { start, end } = this.state;\n // this._activeState= false;\n if (this._activeState) {\n // if (this._activeTag === DataZoomActiveTag.background) {\n // } else\n if (this._activeTag === DataZoomActiveTag.middleHandler) {\n this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis);\n } else if (this._activeTag === DataZoomActiveTag.startHandler) {\n if (start + dis > end) {\n start = end;\n end = start + dis;\n this._activeTag = DataZoomActiveTag.endHandler;\n } else {\n start = start + dis;\n }\n } else if (this._activeTag === DataZoomActiveTag.endHandler) {\n if (end + dis < start) {\n end = start;\n start = end + dis;\n this._activeTag = DataZoomActiveTag.startHandler;\n } else {\n end = end + dis;\n }\n }\n this._activeCache.lastPos = pos;\n brushSelect && this.renderDragMask();\n }\n start = Math.min(Math.max(start, 0), 1);\n end = Math.min(Math.max(end, 0), 1);\n\n // 避免attributes相同时, 重复渲染\n if (startAttr !== start || endAttr !== end) {\n this.setStateAttr(start, end, true);\n\n if (realTime) {\n this._dispatchEvent('change', {\n start,\n end,\n tag: this._activeTag\n });\n }\n }\n };\n private _onHandlerPointerMove =\n this.attribute.delayTime === 0\n ? this._pointerMove\n : delayMap[this.attribute.delayType](this._pointerMove, this.attribute.delayTime);\n\n /**\n * 拖拽结束事件\n * @description 关闭activeState + 边界情况处理: 防止拖拽后start和end过近\n */\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n const { start, end, brushSelect, realTime = true } = this.attribute as DataZoomAttributes;\n if (this._activeState) {\n if (this._activeTag === DataZoomActiveTag.background) {\n const pos = this.eventPosToStagePos(e);\n this.backgroundDragZoom(this._activeCache.startPos, pos);\n }\n }\n this._activeState = false;\n\n // dragMask不依赖于state更新\n brushSelect && this.renderDragMask();\n\n // 避免attributes相同时, 重复渲染\n if (start !== this.state.start || end !== this.state.end) {\n this.setStateAttr(this.state.start, this.state.end, true);\n\n this._dispatchEvent('change', {\n start: this.state.start,\n end: this.state.end,\n tag: this._activeTag\n });\n }\n\n // 拖拽结束后卸载事件\n if (vglobal.env === 'browser') {\n // 拖拽时\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n // 拖拽结束\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);\n }\n // 拖拽时\n (this as unknown as IGroup).removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });\n (this as unknown as IGroup).removeEventListener('pointerup', this._onHandlerPointerUp);\n };\n\n /**\n * 鼠标进入事件\n * @description 鼠标进入选中部分出现start和end文字\n */\n private _onHandlerPointerEnter(e: FederatedPointerEvent) {\n e.stopPropagation();\n this._showText = true;\n this.renderText();\n }\n\n /**\n * 鼠标移出事件\n * @description 鼠标移出选中部分不出现start和end文字\n */\n private _onHandlerPointerLeave(e: FederatedPointerEvent) {\n e.stopPropagation();\n this._showText = false;\n this.renderText();\n }\n\n protected backgroundDragZoom(startPos: IPointLike, endPos: IPointLike) {\n const { attPos, max } = this._layoutCache;\n const { position } = this.attribute as DataZoomAttributes;\n const startPosInComponent = startPos[attPos] - position[attPos];\n const endPosInComponent = endPos[attPos] - position[attPos];\n const start = Math.min(Math.max(Math.min(startPosInComponent, endPosInComponent) / max, 0), 1);\n const end = Math.min(Math.max(Math.max(startPosInComponent, endPosInComponent) / max, 0), 1);\n if (Math.abs(start - end) < 0.01) {\n this.moveZoomWithMiddle(start);\n } else {\n this.setStateAttr(start, end, false);\n }\n }\n\n protected moveZoomWithMiddle(middle: number) {\n const currentMiddle = (this.state.start + this.state.end) / 2;\n let offset = middle - currentMiddle;\n // 拖拽middleHandler时,限制在background范围内\n if (offset === 0) {\n return;\n } else if (offset > 0) {\n if (this.state.end + offset > 1) {\n offset = 1 - this.state.end;\n }\n } else if (offset < 0) {\n if (this.state.start + offset < 0) {\n offset = -this.state.start;\n }\n }\n this.setStateAttr(this.state.start + offset, this.state.end + offset, false);\n }\n\n protected renderDragMask() {\n const { dragMaskStyle } = this.attribute as DataZoomAttributes;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n // drag部分\n if (this._isHorizontal) {\n this._dragMask = this._container.createOrUpdateChild(\n 'dragMask',\n {\n x: clamp(\n this.dragMaskSize() < 0 ? this._activeCache.lastPos.x : this._activeCache.startPos.x,\n position.x,\n position.x + width\n ),\n y: position.y,\n width:\n (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) ||\n 0,\n height,\n ...dragMaskStyle\n },\n 'rect'\n ) as IRect;\n } else {\n this._dragMask = this._container.createOrUpdateChild(\n 'dragMask',\n {\n x: position.x,\n y: clamp(\n this.dragMaskSize() < 0 ? this._activeCache.lastPos.y : this._activeCache.startPos.y,\n position.y,\n position.y + height\n ),\n width,\n height:\n (this._activeState && this._activeTag === DataZoomActiveTag.background && Math.abs(this.dragMaskSize())) ||\n 0,\n ...dragMaskStyle\n },\n 'rect'\n ) as IRect;\n }\n }\n\n /**\n * 判断文字是否超出datazoom范围\n */\n protected isTextOverflow(componentBoundsLike: IBoundsLike, textBounds: IBoundsLike | null, layout: 'start' | 'end') {\n if (!textBounds) {\n return false;\n }\n if (this._isHorizontal) {\n if (layout === 'start') {\n if (textBounds.x1 < componentBoundsLike.x1) {\n return true;\n }\n } else {\n if (textBounds.x2 > componentBoundsLike.x2) {\n return true;\n }\n }\n } else {\n if (layout === 'start') {\n if (textBounds.y1 < componentBoundsLike.y1) {\n return true;\n }\n } else {\n if (textBounds.y2 > componentBoundsLike.y2) {\n return true;\n }\n }\n }\n return false;\n }\n\n protected setTextAttr(startTextBounds: IBoundsLike, endTextBounds: IBoundsLike) {\n const { startTextStyle, endTextStyle } = this.attribute as DataZoomAttributes;\n const { formatMethod: startTextFormat, ...restStartTextStyle } = startTextStyle;\n const { formatMethod: endTextFormat, ...restEndTextStyle } = endTextStyle;\n const { start, end } = this.state;\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n const { position, width, height } = this.getLayoutAttrFromConfig();\n\n const startTextValue = startTextFormat ? startTextFormat(this._startValue) : this._startValue;\n const endTextValue = endTextFormat ? endTextFormat(this._endValue) : this._endValue;\n const componentBoundsLike = {\n x1: position.x,\n y1: position.y,\n x2: position.x + width,\n y2: position.y + height\n };\n let startTextPosition: IPointLike;\n let endTextPosition: IPointLike;\n let startTextAlignStyle: any;\n let endTextAlignStyle: any;\n if (this._isHorizontal) {\n startTextPosition = {\n x: position.x + start * width,\n y: position.y + height / 2\n };\n endTextPosition = {\n x: position.x + end * width,\n y: position.y + height / 2\n };\n startTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'left' : 'right',\n textBaseline: restStartTextStyle?.textStyle?.textBaseline ?? 'middle'\n };\n endTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'right' : 'left',\n textBaseline: restEndTextStyle?.textStyle?.textBaseline ?? 'middle'\n };\n } else {\n startTextPosition = {\n x: position.x + width / 2,\n y: position.y + start * height\n };\n endTextPosition = {\n x: position.x + width / 2,\n y: position.y + end * height\n };\n startTextAlignStyle = {\n textAlign: restStartTextStyle?.textStyle?.textAlign ?? 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'top' : 'bottom'\n };\n endTextAlignStyle = {\n textAlign: restEndTextStyle?.textStyle?.textAlign ?? 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'bottom' : 'top'\n };\n }\n\n this._startText = this.maybeAddLabel(\n this._container,\n merge({}, restStartTextStyle, {\n text: startTextValue,\n x: startTextPosition.x,\n y: startTextPosition.y,\n visible: this._showText,\n pickable: false,\n childrenPickable: false,\n textStyle: startTextAlignStyle\n }),\n `data-zoom-start-text-${position}`\n );\n this._endText = this.maybeAddLabel(\n this._container,\n merge({}, restEndTextStyle, {\n text: endTextValue,\n x: endTextPosition.x,\n y: endTextPosition.y,\n visible: this._showText,\n pickable: false,\n childrenPickable: false,\n textStyle: endTextAlignStyle\n }),\n `data-zoom-end-text-${position}`\n );\n }\n\n protected renderText() {\n let startTextBounds: IBoundsLike | null = null;\n let endTextBounds: IBoundsLike | null = null;\n\n // 第一次绘制\n this.setTextAttr(startTextBounds, endTextBounds);\n // 得到bounds\n startTextBounds = this._startText.AABBBounds;\n endTextBounds = this._endText.AABBBounds;\n\n // 第二次绘制: 将text限制在组件bounds内\n this.setTextAttr(startTextBounds, endTextBounds);\n // 得到bounds\n startTextBounds = this._startText.AABBBounds;\n endTextBounds = this._endText.AABBBounds;\n const { x1, x2, y1, y2 } = startTextBounds;\n const { dx: startTextDx = 0, dy: startTextDy = 0 } = this.attribute.startTextStyle;\n\n // 第三次绘制: 避免startText和endText重叠, 如果重叠了, 对startText做位置调整(考虑到调整的最小化,只单独调整startText而不调整endText)\n if (new Bounds().set(x1, y1, x2, y2).intersects(endTextBounds)) {\n const direction = this.attribute.orient === 'bottom' || this.attribute.orient === 'right' ? -1 : 1;\n if (this._isHorizontal) {\n this._startText.setAttribute('dy', startTextDy + direction * Math.abs(endTextBounds.y1 - endTextBounds.y2));\n } else {\n this._startText.setAttribute('dx', startTextDx + direction * Math.abs(endTextBounds.x1 - endTextBounds.x2));\n }\n } else {\n if (this._isHorizontal) {\n this._startText.setAttribute('dy', startTextDy);\n } else {\n this._startText.setAttribute('dx', startTextDx);\n }\n }\n }\n\n /**\n * 获取背景框中的位置和宽高\n * @description 实际绘制的背景框中的高度或宽度 减去 中间手柄的高度或宽度\n */\n protected getLayoutAttrFromConfig() {\n if (this._layoutAttrFromConfig) {\n return this._layoutAttrFromConfig;\n }\n const {\n position: positionConfig,\n size,\n orient,\n middleHandlerStyle = {},\n startHandlerStyle = {},\n endHandlerStyle = {},\n backgroundStyle = {}\n } = this.attribute as DataZoomAttributes;\n const { width: widthConfig, height: heightConfig } = size;\n const middleHandlerSize = middleHandlerStyle.background?.size ?? 10;\n\n // 如果middleHandler显示的话,要将其宽高计入datazoom宽高\n let width;\n let height;\n let position;\n if (middleHandlerStyle.visible) {\n if (this._isHorizontal) {\n width = widthConfig;\n height = heightConfig - middleHandlerSize;\n position = {\n x: positionConfig.x,\n y: positionConfig.y + middleHandlerSize\n };\n } else {\n width = widthConfig - middleHandlerSize;\n height = heightConfig;\n position = {\n x: positionConfig.x + (orient === 'left' ? middleHandlerSize : 0),\n y: positionConfig.y\n };\n }\n } else {\n width = widthConfig;\n height = heightConfig;\n position = positionConfig;\n }\n\n const startHandlerSize = (startHandlerStyle.size as number) ?? (this._isHorizontal ? height : width);\n const endHandlerSize = (endHandlerStyle.size as number) ?? (this._isHorizontal ? height : width);\n // 如果startHandler显示的话,要将其宽高计入dataZoom宽高\n if (startHandlerStyle.visible) {\n if (this._isHorizontal) {\n width -= (startHandlerSize + endHandlerSize) / 2;\n position = {\n x: position.x + startHandlerSize / 2,\n y: position.y\n };\n } else {\n height -= (startHandlerSize + endHandlerSize) / 2;\n position = {\n x: position.x,\n y: position.y + startHandlerSize / 2\n };\n }\n }\n\n // stroke 需计入宽高, 否则dataZoom在画布边缘会被裁剪lineWidth / 2\n height += backgroundStyle.lineWidth / 2 ?? 1;\n width += backgroundStyle.lineWidth / 2 ?? 1;\n\n this._layoutAttrFromConfig = {\n position,\n width,\n height\n };\n return this._layoutAttrFromConfig;\n }\n\n protected render() {\n this._layoutAttrFromConfig = null;\n const {\n // start,\n // end,\n orient,\n backgroundStyle,\n backgroundChartStyle = {},\n selectedBackgroundStyle = {},\n selectedBackgroundChartStyle = {},\n middleHandlerStyle = {},\n startHandlerStyle = {},\n endHandlerStyle = {},\n brushSelect,\n zoomLock\n } = this.attribute as DataZoomAttributes;\n const { start, end } = this.state;\n\n const { position, width, height } = this.getLayoutAttrFromConfig();\n const startHandlerMinSize = startHandlerStyle.triggerMinSize ?? 40;\n const endHandlerMinSize = endHandlerStyle.triggerMinSize ?? 40;\n const group = (this as unknown as IGroup).createOrUpdateChild('dataZoom-container', {}, 'group') as IGroup;\n this._container = group;\n this._background = group.createOrUpdateChild(\n 'background',\n {\n x: position.x,\n y: position.y,\n width,\n height,\n cursor: brushSelect ? 'crosshair' : 'auto',\n ...backgroundStyle,\n pickable: zoomLock ? false : backgroundStyle.pickable ?? true\n },\n 'rect'\n ) as IRect;\n\n /** 背景图表 */\n backgroundChartStyle.line?.visible && this.setPreviewAttributes('line', group);\n backgroundChartStyle.area?.visible && this.setPreviewAttributes('area', group);\n\n /** drag mask */\n brushSelect && this.renderDragMask();\n\n /** 选中背景 */\n if (this._isHorizontal) {\n // 选中部分\n this._selectedBackground = group.createOrUpdateChild(\n 'selectedBackground',\n {\n x: position.x + start * width,\n y: position.y,\n width: (end - start) * width,\n height: height,\n cursor: brushSelect ? 'crosshair' : 'move',\n ...selectedBackgroundStyle,\n pickable: zoomLock ? false : (selectedBackgroundChartStyle as any).pickable ?? true\n },\n 'rect'\n ) as IRect;\n } else {\n // 选中部分\n this._selectedBackground = group.createOrUpdateChild(\n 'selectedBackground',\n {\n x: position.x,\n y: position.y + start * height,\n width,\n height: (end - start) * height,\n cursor: brushSelect ? 'crosshair' : 'move',\n ...selectedBackgroundStyle,\n pickable: zoomLock ? false : selectedBackgroundStyle.pickable ?? true\n },\n 'rect'\n ) as IRect;\n }\n\n /** 选中的背景图表 */\n selectedBackgroundChartStyle.line?.visible && this.setSelectedPreviewAttributes('line', group);\n selectedBackgroundChartStyle.area?.visible && this.setSelectedPreviewAttributes('area', group);\n\n /** 左右 和 中间手柄 */\n if (this._isHorizontal) {\n if (middleHandlerStyle.visible) {\n const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10;\n this._middleHandlerRect = group.createOrUpdateChild(\n 'middleHandlerRect',\n {\n x: position.x + start * width,\n y: position.y - middleHandlerBackgroundSize,\n width: (end - start) * width,\n height: middleHandlerBackgroundSize,\n ...middleHandlerStyle.background?.style,\n pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true\n },\n 'rect'\n ) as IRect;\n this._middleHandlerSymbol = group.createOrUpdateChild(\n 'middleHandlerSymbol',\n {\n x: position.x + ((start + end) / 2) * width,\n y: position.y - middleHandlerBackgroundSize / 2,\n strokeBoundsBuffer: 0,\n angle: 0,\n symbolType: middleHandlerStyle.icon?.symbolType ?? 'square',\n ...middleHandlerStyle.icon,\n pickable: zoomLock ? false : middleHandlerStyle.icon.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n }\n this._startHandler = group.createOrUpdateChild(\n 'startHandler',\n {\n x: position.x + start * width,\n y: position.y + height / 2,\n size: height,\n symbolType: startHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n ...startHandlerStyle,\n pickable: zoomLock ? false : startHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n this._endHandler = group.createOrUpdateChild(\n 'endHandler',\n {\n x: position.x + end * width,\n y: position.y + height / 2,\n size: height,\n symbolType: endHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n ...endHandlerStyle,\n pickable: zoomLock ? false : endHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n // 透明mask构造热区, 热区大小配置来自handler bounds\n const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize);\n const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize);\n const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize);\n const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize);\n\n this._startHandlerMask = group.createOrUpdateChild(\n 'startHandlerMask',\n {\n x: position.x + start * width - startHandlerWidth / 2,\n y: position.y + height / 2 - startHandlerHeight / 2,\n width: startHandlerWidth,\n height: startHandlerHeight,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n this._endHandlerMask = group.createOrUpdateChild(\n 'endHandlerMask',\n {\n x: position.x + end * width - endHandlerWidth / 2,\n y: position.y + height / 2 - endHandlerHeight / 2,\n width: endHandlerWidth,\n height: endHandlerHeight,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.horizontal as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n } else {\n if (middleHandlerStyle.visible) {\n const middleHandlerBackgroundSize = middleHandlerStyle.background?.size || 10;\n\n this._middleHandlerRect = group.createOrUpdateChild(\n 'middleHandlerRect',\n {\n x: orient === 'left' ? position.x - middleHandlerBackgroundSize : position.x + width,\n y: position.y + start * height,\n width: middleHandlerBackgroundSize,\n height: (end - start) * height,\n ...middleHandlerStyle.background?.style,\n pickable: zoomLock ? false : middleHandlerStyle.background?.style?.pickable ?? true\n },\n 'rect'\n ) as IRect;\n this._middleHandlerSymbol = group.createOrUpdateChild(\n 'middleHandlerSymbol',\n {\n x:\n orient === 'left'\n ? position.x - middleHandlerBackgroundSize / 2\n : position.x + width + middleHandlerBackgroundSize / 2,\n y: position.y + ((start + end) / 2) * height,\n // size: height,\n angle: 90 * (Math.PI / 180),\n symbolType: middleHandlerStyle.icon?.symbolType ?? 'square',\n strokeBoundsBuffer: 0,\n ...middleHandlerStyle.icon,\n pickable: zoomLock ? false : middleHandlerStyle.icon?.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n }\n this._startHandler = group.createOrUpdateChild(\n 'startHandler',\n {\n x: position.x + width / 2,\n y: position.y + start * height,\n size: width,\n symbolType: startHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n ...startHandlerStyle,\n pickable: zoomLock ? false : startHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n this._endHandler = group.createOrUpdateChild(\n 'endHandler',\n {\n x: position.x + width / 2,\n y: position.y + end * height,\n size: width,\n symbolType: endHandlerStyle.symbolType ?? 'square',\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n ...endHandlerStyle,\n pickable: zoomLock ? false : endHandlerStyle.pickable ?? true\n },\n 'symbol'\n ) as ISymbol;\n\n // 透明mask构造热区, 热区大小配置来自handler bounds\n const startHandlerWidth = Math.max(this._startHandler.AABBBounds.width(), startHandlerMinSize);\n const startHandlerHeight = Math.max(this._startHandler.AABBBounds.height(), startHandlerMinSize);\n const endHandlerWidth = Math.max(this._endHandler.AABBBounds.width(), endHandlerMinSize);\n const endHandlerHeight = Math.max(this._endHandler.AABBBounds.height(), endHandlerMinSize);\n\n this._startHandlerMask = group.createOrUpdateChild(\n 'startHandlerMask',\n {\n x: position.x + width / 2 + startHandlerWidth / 2,\n y: position.y + start * height - startHandlerHeight / 2,\n width: endHandlerHeight,\n height: endHandlerWidth,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n this._endHandlerMask = group.createOrUpdateChild(\n 'endHandlerMask',\n {\n x: position.x + width / 2 + endHandlerWidth / 2,\n y: position.y + end * height - endHandlerHeight / 2,\n width: endHandlerHeight,\n height: endHandlerWidth,\n fill: 'white',\n fillOpacity: 0,\n zIndex: 999,\n ...(DEFAULT_HANDLER_ATTR_MAP.vertical as any),\n pickable: !zoomLock\n },\n 'rect'\n ) as IRect;\n }\n\n /** 左右文字 */\n if (this._showText) {\n this.renderText();\n }\n }\n\n computeBasePoints() {\n const { orient } = this.attribute as DataZoomAttributes;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n let basePointStart: any;\n let basePointEnd: any;\n if (this._isHorizontal) {\n basePointStart = [\n {\n x: position.x,\n y: position.y + height\n }\n ];\n basePointEnd = [\n {\n x: position.x + width,\n y: position.y + height\n }\n ];\n } else if (orient === 'left') {\n basePointStart = [\n {\n x: position.x + width,\n y: position.y\n }\n ];\n basePointEnd = [\n {\n x: position.x + width,\n y: position.y + height\n }\n ];\n } else {\n basePointStart = [\n {\n x: position.x,\n y: position.y + height\n }\n ];\n basePointEnd = [\n {\n x: position.x,\n y: position.y\n }\n ];\n }\n return {\n basePointStart,\n basePointEnd\n };\n }\n\n protected simplifyPoints(points: IPointLike[]) {\n // 采样压缩率策略: 如果没做任何配置, 那么限制在niceCount内, 如果做了配置, 则按照配置计算\n const niceCount = 10000; // 经验值\n if (points.length > niceCount) {\n const tolerance = this.attribute.tolerance ?? this._previewData.length / niceCount;\n return flatten_simplify(points, tolerance, false);\n }\n return points;\n }\n\n protected getPreviewLinePoints() {\n let previewPoints = this._previewData.map(d => {\n return {\n x: this._previewPointsX && this._previewPointsX(d),\n y: this._previewPointsY && this._previewPointsY(d)\n };\n });\n // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形\n if (previewPoints.length === 0) {\n return previewPoints;\n }\n\n // 采样\n previewPoints = this.simplifyPoints(previewPoints);\n\n const { basePointStart, basePointEnd } = this.computeBasePoints();\n return basePointStart.concat(previewPoints).concat(basePointEnd);\n }\n\n protected getPreviewAreaPoints() {\n let previewPoints: IPointLike[] = this._previewData.map(d => {\n return {\n x: this._previewPointsX && this._previewPointsX(d),\n y: this._previewPointsY && this._previewPointsY(d),\n x1: this._previewPointsX1 && this._previewPointsX1(d),\n y1: this._previewPointsY1 && this._previewPointsY1(d)\n };\n });\n // 仅在有数据的时候增加base point, 以弥补背景图表两端的不连续缺口。不然的话没有数据时,会因为base point而仍然绘制图形\n if (previewPoints.length === 0) {\n return previewPoints;\n }\n\n // 采样\n previewPoints = this.simplifyPoints(previewPoints);\n\n const { basePointStart, basePointEnd } = this.computeBasePoints();\n return basePointStart.concat(previewPoints).concat(basePointEnd);\n }\n\n /** 使用callback绘制背景图表 (数据和数据映射从外部传进来) */\n protected setPreviewAttributes(type: 'line' | 'area', group: IGroup) {\n if (!this._previewGroup) {\n this._previewGroup = group.createOrUpdateChild('previewGroup', { pickable: false }, 'group') as IGroup;\n }\n if (type === 'line') {\n this._previewLine = this._previewGroup.createOrUpdateChild('previewLine', {}, 'line') as ILine;\n } else {\n this._previewArea = this._previewGroup.createOrUpdateChild(\n 'previewArea',\n { curveType: 'basis' },\n 'area'\n ) as IArea;\n }\n\n const { backgroundChartStyle = {} } = this.attribute as DataZoomAttributes;\n\n type === 'line' &&\n this._previewLine.setAttributes({\n points: this.getPreviewLinePoints(),\n curveType: 'basis',\n pickable: false,\n ...backgroundChartStyle.line\n });\n type === 'area' &&\n this._previewArea.setAttributes({\n points: this.getPreviewAreaPoints(),\n curveType: 'basis',\n pickable: false,\n ...backgroundChartStyle.area\n });\n }\n\n /** 使用callback绘制选中的背景图表 (数据和数据映射从外部传进来) */\n protected setSelectedPreviewAttributes(type: 'area' | 'line', group: IGroup) {\n if (!this._selectedPreviewGroupClip) {\n this._selectedPreviewGroupClip = group.createOrUpdateChild(\n 'selectedPreviewGroupClip',\n { pickable: false },\n 'group'\n ) as IGroup;\n this._selectedPreviewGroup = this._selectedPreviewGroupClip.createOrUpdateChild(\n 'selectedPreviewGroup',\n {},\n 'group'\n ) as IGroup;\n }\n\n if (type === 'line') {\n this._selectedPreviewLine = this._selectedPreviewGroup.createOrUpdateChild(\n 'selectedPreviewLine',\n {},\n 'line'\n ) as ILine;\n } else {\n this._selectedPreviewArea = this._selectedPreviewGroup.createOrUpdateChild(\n 'selectedPreviewArea',\n { curveType: 'basis' },\n 'area'\n ) as IArea;\n }\n\n const { selectedBackgroundChartStyle = {} } = this.attribute as DataZoomAttributes;\n\n const { start, end } = this.state;\n const { position, width, height } = this.getLayoutAttrFromConfig();\n this._selectedPreviewGroupClip.setAttributes({\n x: this._isHorizontal ? position.x + start * width : position.x,\n y: this._isHorizontal ? position.y : position.y + start * height,\n width: this._isHorizontal ? (end - start) * width : width,\n height: this._isHorizontal ? height : (end - start) * height,\n clip: true,\n pickable: false\n } as any);\n this._selectedPreviewGroup.setAttributes({\n x: -(this._isHorizontal ? position.x + start * width : position.x),\n y: -(this._isHorizontal ? position.y : position.y + start * height),\n width: this._isHorizontal ? (end - start) * width : width,\n height: this._isHorizontal ? height : (end - start) * height,\n pickable: false\n } as any);\n type === 'line' &&\n this._selectedPreviewLine.setAttributes({\n points: this.getPreviewLinePoints(),\n curveType: 'basis',\n pickable: false,\n ...selectedBackgroundChartStyle.line\n });\n type === 'area' &&\n this._selectedPreviewArea.setAttributes({\n points: this.getPreviewAreaPoints(),\n curveType: 'basis',\n pickable: false,\n ...selectedBackgroundChartStyle.area\n });\n }\n\n protected maybeAddLabel(container: IGroup, attributes: TagAttributes, name: string): Tag {\n let labelShape = (this as unknown as IGroup).find(node => node.name === name, true) as unknown as Tag;\n if (labelShape) {\n labelShape.setAttributes(attributes);\n } else {\n labelShape = new Tag(attributes);\n labelShape.name = name;\n }\n\n container.add(labelShape as unknown as INode);\n return labelShape;\n }\n\n /** 外部重置组件的起始状态 */\n setStartAndEnd(start?: number, end?: number) {\n const { start: startAttr, end: endAttr } = this.attribute as DataZoomAttributes;\n if (isValid(start) && isValid(end) && (start !== this.state.start || end !== this.state.end)) {\n this.state.start = start;\n this.state.end = end;\n if (startAttr !== this.state.start || endAttr !== this.state.end) {\n this.setStateAttr(start, end, true);\n this._dispatchEvent('change', {\n start,\n end,\n tag: this._activeTag\n });\n }\n }\n }\n\n /** 外部更新背景图表的数据 */\n setPreviewData(data: any[]) {\n this._previewData = data;\n }\n\n /** 外部更新手柄文字 */\n setText(text: string, tag: 'start' | 'end') {\n if (tag === 'start') {\n this._startText.setAttribute('text', text);\n } else {\n this._endText.setAttribute('text', text);\n }\n }\n\n /** 外部获取起始点数据值 */\n getStartValue() {\n return this._startValue;\n }\n\n getEndTextValue() {\n return this._endValue;\n }\n\n getMiddleHandlerSize() {\n const { middleHandlerStyle = {} } = this.attribute as DataZoomAttributes;\n const middleHandlerRectSize = middleHandlerStyle.background?.size ?? 10;\n const middleHandlerSymbolSize = middleHandlerStyle.icon?.size ?? 10;\n return Math.max(middleHandlerRectSize, ...array(middleHandlerSymbolSize));\n }\n\n /** 外部传入数据映射 */\n setPreviewPointsX(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsX = callback);\n }\n setPreviewPointsY(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsY = callback);\n }\n setPreviewPointsX1(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsX1 = callback);\n }\n setPreviewPointsY1(callback: (d: any) => number) {\n isFunction(callback) && (this._previewPointsY1 = callback);\n }\n setStatePointToData(callback: (state: number) => any) {\n isFunction(callback) && (this._statePointToData = callback);\n }\n}\n"]}
@@ -74,5 +74,4 @@ export interface DataZoomAttributes extends IGroupGraphicAttribute {
74
74
  updateStateCallback?: (start: number, end: number) => any;
75
75
  disableTriggerEvent?: boolean;
76
76
  tolerance?: number;
77
- disableDispatchOutSide?: boolean;
78
77
  }