@visactor/vrender-components 0.19.8-beta.2 → 0.19.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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 { 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\n if (realTime) {\n this._dispatchEvent('change', {\n start,\n end,\n tag: this._activeTag\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 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: 'middle'\n };\n endTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'right' : 'left',\n 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: 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'top' : 'bottom'\n };\n endTextAlignStyle = {\n 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: 'middle'\n };\n endTextAlignStyle = {\n textAlign: this.isTextOverflow(componentBoundsLike, endTextBounds, 'end') ? 'right' : 'left',\n 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: 'center',\n textBaseline: this.isTextOverflow(componentBoundsLike, startTextBounds, 'start') ? 'top' : 'bottom'\n };\n endTextAlignStyle = {\n 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"]}
package/es/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.19.8-beta.2";
1
+ export declare const version = "0.19.8";
2
2
  export * from './core/base';
3
3
  export * from './core/type';
4
4
  export * from './scrollbar';
package/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const version = "0.19.8-beta.2";
1
+ export const version = "0.19.8";
2
2
 
3
3
  export * from "./core/base";
4
4
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;AAEvC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.19.8-beta.2\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './util';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.19.8\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './util';\n"]}
@@ -16,6 +16,7 @@ export declare class ColorContinuousLegend extends LegendBase<ColorLegendAttribu
16
16
  };
17
17
  handlerSize: number;
18
18
  handlerStyle: {
19
+ fill: any;
19
20
  lineWidth: number;
20
21
  stroke: string;
21
22
  outerBorder: {
@@ -94,8 +94,15 @@ export class ColorContinuousLegend extends LegendBase {
94
94
  res;
95
95
  }
96
96
  _updateColor() {
97
- const {layout: layout = "horizontal", colors: colors, railWidth: railWidth, railHeight: railHeight} = this.attribute, {startHandler: startHandler, endHandler: endHandler, track: track} = this._slider, {startValue: startValue, endValue: endValue, startPos: startPos, endPos: endPos} = this._slider.currentValue, startHandlerColor = this._colorScale.scale(startValue), endHandlerColor = this._colorScale.scale(endValue);
98
- null == startHandler || startHandler.setAttribute("fill", startHandlerColor), null == endHandler || endHandler.setAttribute("fill", endHandlerColor);
97
+ const {layout: layout = "horizontal", colors: colors, railWidth: railWidth, railHeight: railHeight} = this.attribute, {startHandler: startHandler, endHandler: endHandler, track: track} = this._slider, {startValue: startValue, endValue: endValue, startPos: startPos, endPos: endPos} = this._slider.currentValue;
98
+ if (startHandler && !startHandler.attribute.fill) {
99
+ const startHandlerColor = this._colorScale.scale(startValue);
100
+ startHandler.setAttribute("fill", startHandlerColor);
101
+ }
102
+ if (endHandler && !endHandler.attribute.fill) {
103
+ const endHandlerColor = this._colorScale.scale(endValue);
104
+ endHandler.setAttribute("fill", endHandlerColor);
105
+ }
99
106
  const railLen = "horizontal" === layout ? railWidth : railHeight;
100
107
  if (Math.abs(startPos - endPos) !== railLen && colors && colors.length > 1) {
101
108
  const stops = this._color.stops, start = Math.min(startPos, endPos), end = Math.max(startPos, endPos), startRatio = start / railLen, endRatio = end / railLen, range = endRatio - startRatio, betweenStops = stops.filter((stop => stop.offset > startRatio && stop.offset < endRatio)), minValue = Math.min(startValue, endValue), maxValue = Math.max(startValue, endValue), startColor = this._colorScale.scale(minValue), endColor = this._colorScale.scale(maxValue), newStops = [ {
@@ -130,6 +137,7 @@ ColorContinuousLegend.defaultAttributes = {
130
137
  },
131
138
  handlerSize: 10,
132
139
  handlerStyle: {
140
+ fill: null,
133
141
  lineWidth: 4,
134
142
  stroke: "#fff",
135
143
  outerBorder: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/legend/color/color.ts"],"names":[],"mappings":"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","file":"color.js","sourcesContent":["/**\n * @description 连续颜色图例\n * TODO:\n * showHandlers 测试\n */\nimport { merge, isEmpty, get, isNil } from '@visactor/vutils';\nimport type { FederatedPointerEvent, FederatedEvent, IColor, ILinearGradient, INode } from '@visactor/vrender-core';\nimport type { ILinearScale } from '@visactor/vscale';\nimport { LinearScale } from '@visactor/vscale';\nimport { LegendBase } from '../base';\nimport { Slider } from '../../slider';\nimport { DEFAULT_TITLE_SPACE } from '../constant';\nimport type { ColorLegendAttributes } from './type';\nimport type { ComponentOptions } from '../../interface';\nimport { loadColorContinuousLegendComponent } from '../register';\n\nloadColorContinuousLegendComponent();\nexport class ColorContinuousLegend extends LegendBase<ColorLegendAttributes> {\n name = 'colorLegend';\n\n static defaultAttributes = {\n layout: 'horizontal',\n title: {\n // orient: 'top',\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: 'rgba(46, 47, 50, 1)'\n }\n },\n handlerSize: 10,\n handlerStyle: {\n lineWidth: 4,\n stroke: '#fff',\n outerBorder: {\n distance: 2,\n lineWidth: 1,\n stroke: '#ccc'\n }\n },\n tooltip: {\n shapeStyle: {\n lineWidth: 4,\n stroke: '#fff'\n }\n }\n };\n\n private _slider!: Slider;\n private _colorScale!: ILinearScale;\n private _color: IColor | undefined;\n\n constructor(attributes: ColorLegendAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, ColorContinuousLegend.defaultAttributes, attributes));\n }\n\n /**\n * 更新数据选中范围\n * @param value 选中数据范围\n * @returns\n */\n setSelected(value: number[]) {\n if (!this._slider) {\n return;\n }\n this._slider.setValue(value);\n this._updateColor();\n }\n\n protected _renderContent(): void {\n const {\n colors,\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler = true,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n inverse,\n disableTriggerEvent\n } = this.attribute as ColorLegendAttributes;\n\n // 创建 colorScale\n const domain = [];\n const step = (max - min) / (colors.length - 1);\n for (let i = 0; i < colors.length; i++) {\n domain.push(min + step * i);\n }\n\n this._colorScale = new LinearScale().domain(domain, true).range(colors);\n this._color = this._getTrackColor();\n\n const slider = new Slider({\n x: 0,\n y: 0,\n range: {\n draggableTrack: true\n },\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle: {\n fill: this._color,\n ...trackStyle\n },\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n disableTriggerEvent,\n inverse\n });\n this._innerView.add(slider as unknown as INode);\n this._slider = slider;\n // 做下位置调整,对齐\n slider.translateTo(\n 0 - slider.AABBBounds.x1,\n (this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', DEFAULT_TITLE_SPACE) : 0) -\n slider.AABBBounds.y1\n );\n this._updateColor();\n }\n\n protected _bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (this._slider) {\n this._slider.addEventListener('change', this._onSliderChange as EventListenerOrEventListenerObject);\n this._slider.addEventListener('sliderTooltip', this._onSliderToolipChange as EventListenerOrEventListenerObject);\n }\n }\n\n private _getTrackColor(): IColor | undefined {\n const { colors, layout, inverse } = this.attribute as ColorLegendAttributes;\n\n if (isEmpty(colors)) {\n return undefined;\n }\n const count = colors.length;\n if (count === 1) {\n return colors[0];\n }\n const stops = [];\n\n for (let i = 0; i < count; i++) {\n const percent = i / (count - 1);\n stops.push({\n offset: percent,\n color: colors[i]\n });\n }\n const isHorizontal = layout === 'horizontal';\n\n const res: IColor = {\n gradient: 'linear',\n stops,\n x0: 0,\n y0: 0,\n x1: isHorizontal ? 1 : 0,\n y1: isHorizontal ? 0 : 1\n };\n\n if (inverse) {\n if (isHorizontal) {\n res.x0 = 1;\n res.x1 = 0;\n } else {\n res.y0 = 1;\n res.y1 = 0;\n }\n }\n\n return res;\n }\n\n private _onSliderToolipChange = (e: FederatedEvent) => {\n const tooltipShape = this._slider.tooltipShape;\n\n if (tooltipShape && e.detail && !isNil(e.detail.value)) {\n const color = this._colorScale.scale(e.detail.value);\n\n tooltipShape.setAttribute('fill', color);\n }\n\n this.dispatchEvent(e);\n };\n\n private _onSliderChange = (e: FederatedEvent) => {\n // 更新 handler 以及 track 的渐变色\n this._updateColor();\n this.dispatchEvent(e);\n };\n\n private _updateColor() {\n const { layout = 'horizontal', colors, railWidth, railHeight } = this.attribute as ColorLegendAttributes;\n const { startHandler, endHandler, track } = this._slider;\n const { startValue, endValue, startPos, endPos } = this._slider.currentValue;\n\n // 计算颜色\n const startHandlerColor = this._colorScale.scale(startValue);\n const endHandlerColor = this._colorScale.scale(endValue);\n startHandler?.setAttribute('fill', startHandlerColor);\n endHandler?.setAttribute('fill', endHandlerColor);\n\n const isHorizontal = layout === 'horizontal';\n const railLen = isHorizontal ? railWidth : railHeight;\n const trackLength = Math.abs((startPos as number) - (endPos as number));\n\n // 计算渐变色\n if (trackLength !== railLen && colors && colors.length > 1) {\n const stops = (this._color as ILinearGradient).stops;\n const start = Math.min(startPos as number, endPos as number);\n const end = Math.max(startPos as number, endPos as number);\n const startRatio = start / railLen;\n const endRatio = end / railLen;\n const range = endRatio - startRatio;\n const betweenStops = stops.filter(stop => stop.offset > startRatio && stop.offset < endRatio);\n\n const minValue = Math.min(startValue, endValue);\n const maxValue = Math.max(startValue, endValue);\n const startColor = this._colorScale.scale(minValue);\n const endColor = this._colorScale.scale(maxValue);\n const newStops = [{ offset: 0, color: startColor }];\n betweenStops.forEach(stop => {\n newStops.push({\n offset: (stop.offset - startRatio) / range,\n color: stop.color\n });\n });\n newStops.push({\n offset: 1,\n color: endColor\n });\n track.setAttribute('fill', {\n ...(this._color as ILinearGradient),\n stops: newStops\n });\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/legend/color/color.ts"],"names":[],"mappings":"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","file":"color.js","sourcesContent":["/**\n * @description 连续颜色图例\n * TODO:\n * showHandlers 测试\n */\nimport { merge, isEmpty, get, isNil } from '@visactor/vutils';\nimport type { FederatedPointerEvent, FederatedEvent, IColor, ILinearGradient, INode } from '@visactor/vrender-core';\nimport type { ILinearScale } from '@visactor/vscale';\nimport { LinearScale } from '@visactor/vscale';\nimport { LegendBase } from '../base';\nimport { Slider } from '../../slider';\nimport { DEFAULT_TITLE_SPACE } from '../constant';\nimport type { ColorLegendAttributes } from './type';\nimport type { ComponentOptions } from '../../interface';\nimport { loadColorContinuousLegendComponent } from '../register';\n\nloadColorContinuousLegendComponent();\nexport class ColorContinuousLegend extends LegendBase<ColorLegendAttributes> {\n name = 'colorLegend';\n\n static defaultAttributes = {\n layout: 'horizontal',\n title: {\n // orient: 'top',\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: 'rgba(46, 47, 50, 1)'\n }\n },\n handlerSize: 10,\n handlerStyle: {\n fill: null as any,\n lineWidth: 4,\n stroke: '#fff',\n outerBorder: {\n distance: 2,\n lineWidth: 1,\n stroke: '#ccc'\n }\n },\n tooltip: {\n shapeStyle: {\n lineWidth: 4,\n stroke: '#fff'\n }\n }\n };\n\n private _slider!: Slider;\n private _colorScale!: ILinearScale;\n private _color: IColor | undefined;\n\n constructor(attributes: ColorLegendAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, ColorContinuousLegend.defaultAttributes, attributes));\n }\n\n /**\n * 更新数据选中范围\n * @param value 选中数据范围\n * @returns\n */\n setSelected(value: number[]) {\n if (!this._slider) {\n return;\n }\n this._slider.setValue(value);\n this._updateColor();\n }\n\n protected _renderContent(): void {\n const {\n colors,\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler = true,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n inverse,\n disableTriggerEvent\n } = this.attribute as ColorLegendAttributes;\n\n // 创建 colorScale\n const domain = [];\n const step = (max - min) / (colors.length - 1);\n for (let i = 0; i < colors.length; i++) {\n domain.push(min + step * i);\n }\n\n this._colorScale = new LinearScale().domain(domain, true).range(colors);\n this._color = this._getTrackColor();\n\n const slider = new Slider({\n x: 0,\n y: 0,\n range: {\n draggableTrack: true\n },\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle: {\n fill: this._color,\n ...trackStyle\n },\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n disableTriggerEvent,\n inverse\n });\n this._innerView.add(slider as unknown as INode);\n this._slider = slider;\n // 做下位置调整,对齐\n slider.translateTo(\n 0 - slider.AABBBounds.x1,\n (this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', DEFAULT_TITLE_SPACE) : 0) -\n slider.AABBBounds.y1\n );\n this._updateColor();\n }\n\n protected _bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (this._slider) {\n this._slider.addEventListener('change', this._onSliderChange as EventListenerOrEventListenerObject);\n this._slider.addEventListener('sliderTooltip', this._onSliderToolipChange as EventListenerOrEventListenerObject);\n }\n }\n\n private _getTrackColor(): IColor | undefined {\n const { colors, layout, inverse } = this.attribute as ColorLegendAttributes;\n\n if (isEmpty(colors)) {\n return undefined;\n }\n const count = colors.length;\n if (count === 1) {\n return colors[0];\n }\n const stops = [];\n\n for (let i = 0; i < count; i++) {\n const percent = i / (count - 1);\n stops.push({\n offset: percent,\n color: colors[i]\n });\n }\n const isHorizontal = layout === 'horizontal';\n\n const res: IColor = {\n gradient: 'linear',\n stops,\n x0: 0,\n y0: 0,\n x1: isHorizontal ? 1 : 0,\n y1: isHorizontal ? 0 : 1\n };\n\n if (inverse) {\n if (isHorizontal) {\n res.x0 = 1;\n res.x1 = 0;\n } else {\n res.y0 = 1;\n res.y1 = 0;\n }\n }\n\n return res;\n }\n\n private _onSliderToolipChange = (e: FederatedEvent) => {\n const tooltipShape = this._slider.tooltipShape;\n\n if (tooltipShape && e.detail && !isNil(e.detail.value)) {\n const color = this._colorScale.scale(e.detail.value);\n\n tooltipShape.setAttribute('fill', color);\n }\n\n this.dispatchEvent(e);\n };\n\n private _onSliderChange = (e: FederatedEvent) => {\n // 更新 handler 以及 track 的渐变色\n this._updateColor();\n this.dispatchEvent(e);\n };\n\n private _updateColor() {\n const { layout = 'horizontal', colors, railWidth, railHeight } = this.attribute as ColorLegendAttributes;\n const { startHandler, endHandler, track } = this._slider;\n const { startValue, endValue, startPos, endPos } = this._slider.currentValue;\n // 计算颜色\n if (startHandler) {\n if (!startHandler.attribute.fill) {\n const startHandlerColor = this._colorScale.scale(startValue);\n startHandler.setAttribute('fill', startHandlerColor);\n }\n }\n\n if (endHandler) {\n if (!endHandler.attribute.fill) {\n const endHandlerColor = this._colorScale.scale(endValue);\n endHandler.setAttribute('fill', endHandlerColor);\n }\n }\n\n const isHorizontal = layout === 'horizontal';\n const railLen = isHorizontal ? railWidth : railHeight;\n const trackLength = Math.abs((startPos as number) - (endPos as number));\n\n // 计算渐变色\n if (trackLength !== railLen && colors && colors.length > 1) {\n const stops = (this._color as ILinearGradient).stops;\n const start = Math.min(startPos as number, endPos as number);\n const end = Math.max(startPos as number, endPos as number);\n const startRatio = start / railLen;\n const endRatio = end / railLen;\n const range = endRatio - startRatio;\n const betweenStops = stops.filter(stop => stop.offset > startRatio && stop.offset < endRatio);\n\n const minValue = Math.min(startValue, endValue);\n const maxValue = Math.max(startValue, endValue);\n const startColor = this._colorScale.scale(minValue);\n const endColor = this._colorScale.scale(maxValue);\n const newStops = [{ offset: 0, color: startColor }];\n betweenStops.forEach(stop => {\n newStops.push({\n offset: (stop.offset - startRatio) / range,\n color: stop.color\n });\n });\n newStops.push({\n offset: 1,\n color: endColor\n });\n track.setAttribute('fill', {\n ...(this._color as ILinearGradient),\n stops: newStops\n });\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-components",
3
- "version": "0.19.8-beta.2",
3
+ "version": "0.19.8",
4
4
  "description": "components library for dp visualization",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -12,8 +12,8 @@
12
12
  "dist"
13
13
  ],
14
14
  "dependencies": {
15
- "@visactor/vrender-core": "0.19.8-beta.2",
16
- "@visactor/vrender-kits": "0.19.8-beta.2",
15
+ "@visactor/vrender-core": "0.19.8",
16
+ "@visactor/vrender-kits": "0.19.8",
17
17
  "@visactor/vutils": "~0.18.9",
18
18
  "@visactor/vscale": "~0.18.9"
19
19
  },