@visactor/vrender-components 0.13.9 → 0.13.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/axis/base.js +2 -2
- package/cjs/axis/base.js.map +1 -1
- package/cjs/axis/line.js +1 -1
- package/cjs/axis/line.js.map +1 -1
- package/cjs/axis/overlap/auto-limit.js +6 -2
- package/cjs/axis/overlap/auto-limit.js.map +1 -1
- package/cjs/axis/type.d.ts +2 -2
- package/cjs/axis/type.js.map +1 -1
- package/cjs/brush/brush.d.ts +5 -3
- package/cjs/brush/brush.js +27 -17
- package/cjs/brush/brush.js.map +1 -1
- package/cjs/brush/config.d.ts +1 -0
- package/cjs/brush/config.js +2 -2
- package/cjs/brush/config.js.map +1 -1
- package/cjs/brush/type.d.ts +10 -1
- package/cjs/brush/type.js +7 -1
- package/cjs/brush/type.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/tooltip/util.js.map +1 -1
- package/dist/index.js +70 -28
- package/dist/index.min.js +1 -1
- package/es/axis/base.js +2 -2
- package/es/axis/base.js.map +1 -1
- package/es/axis/line.js +1 -1
- package/es/axis/line.js.map +1 -1
- package/es/axis/overlap/auto-limit.js +5 -2
- package/es/axis/overlap/auto-limit.js.map +1 -1
- package/es/axis/type.d.ts +2 -2
- package/es/axis/type.js.map +1 -1
- package/es/brush/brush.d.ts +5 -3
- package/es/brush/brush.js +27 -15
- package/es/brush/brush.js.map +1 -1
- package/es/brush/config.d.ts +1 -0
- package/es/brush/config.js +2 -0
- package/es/brush/config.js.map +1 -1
- package/es/brush/type.d.ts +10 -1
- package/es/brush/type.js +7 -1
- package/es/brush/type.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/tooltip/util.js.map +1 -1
- package/package.json +2 -2
package/cjs/brush/brush.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport { FederatedPointerEvent, IGroup, IPolygon, global, createPolygon, Polygon, point } from '@visactor/vrender';\nimport {\n cloneDeep,\n debounce,\n IBounds,\n IPointLike,\n isFunction,\n merge,\n polygonContainPoint,\n throttle\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { BrushAttributes } from './type';\nimport { DEFAULT_BRUSH_ATTRIBUTES } from './config';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport class Brush extends AbstractComponent<Required<BrushAttributes>> {\n name = 'brush';\n static defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;\n\n private _container!: IGroup;\n\n // 绘制mask时的相关属性\n private _activeDrawState = false; // 用于标记绘制状态\n private _cacheDrawPoints: IPointLike[] = []; // 用于维护鼠标走过的路径,主要用于绘制mask的点\n\n // 移动mask时的相关属性\n private _activeMoveState = false; // 用于标记移动状态\n private _operatingMaskMoveDx = 0; // 用于标记移动的位移量\n private _operatingMaskMoveDy = 0;\n private _operatingMaskMoveRangeX: [number, number] = [-Infinity, Infinity];\n private _operatingMaskMoveRangeY: [number, number] = [-Infinity, Infinity];\n private _cacheMovePoint!: IPointLike; // 用于维护鼠标所在位置,主要用于计算位移量\n\n private _operatingMask!: IPolygon; // 用于标记正在绘制的mask 或 正在移动的mask\n\n // 透出给上层的属性(主要是所有mask的AABBBounds,这里用的是dict存储方便添加和修改)\n private _brushMaskAABBBoundsDict: { [name: string]: IBounds } = {};\n private _updateDragMaskCallback!: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void;\n\n constructor(attributes: BrushAttributes) {\n super(merge({}, Brush.defaultAttributes, attributes));\n }\n\n protected bindBrushEvents(): void {\n const { delayType = 'throttle', delayTime = 0 } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener('pointerdown', this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener('pointermove', delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener('pointerup', this._onBrushEnd as EventListener);\n this.stage.addEventListener('pointerupoutside', this._onBrushEnd as EventListener);\n }\n\n private _isPosInBrushMask(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const brushMasks = this._container.getChildren();\n for (let i = 0; i < brushMasks.length; i++) {\n const { points = [], dx = 0, dy = 0 } = (brushMasks[i] as IPolygon).attribute;\n const pointsConsiderOffset: IPointLike[] = points.map((point: IPointLike) => {\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n });\n if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {\n this._operatingMask = brushMasks[i] as IPolygon;\n return true;\n }\n }\n return false;\n }\n\n /**\n * 开始绘制 或 移动\n * @description\n * 1. 判断状态: 如果在brushMask中,则属于移动状态; 否则属于绘制状态\n *(移动状态和绘制状态互斥, 且移动状态考虑brushMoved配置, 如果在brush点内但brushMoved为false, 则走绘制状态, 而非两个状态都不响应, 此效果与echarts保持一致)\n * 2. 判断坐标是否在有效交互范围内\n * 2. 如果是移动状态: 标记移动状态 & 标记正在移动的mask & 初始化mask的dx和dy\n * 3. 如果是绘制状态: 标记绘制状态 & 标记正在绘制的mask & 清除之前的mask & 添加新的mask\n */\n private _onBrushStart = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n const brushMoved = this.attribute?.brushMoved ?? true;\n this._activeMoveState = brushMoved && this._isPosInBrushMask(e); // 如果是移动状态,在这里会标记operatingMask为正在移动的mask\n this._activeDrawState = !this._activeMoveState;\n\n this._activeDrawState && this._initDraw(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._initMove(e);\n };\n\n /**\n * 绘制 或 移动 中\n * @description\n * 1. 如果是绘制状态: 更新_cacheDrawPoints 和 mask的points属性\n * 2. 如果是移动状态: 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _onBrushing = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n\n this._activeDrawState && this._drawing(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._moving(e);\n };\n\n /**\n * 结束绘制 和 移动\n * @description 取消绘制 和 移动 状态\n */\n private _onBrushEnd = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: this._activeDrawState ? 'brushEnd' : 'brushMaskUp',\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n\n this._activeDrawState = false;\n this._activeMoveState = false;\n this._operatingMask.setAttribute('pickable', false);\n };\n\n /**\n * 初始化绘制状态\n * @description 清除之前的mask & 添加新的mask\n */\n private _initDraw(e: FederatedPointerEvent) {\n const { brushMode, removeOnClick } = this.attribute as BrushAttributes;\n const pos = this.eventPosToStagePos(e);\n this._cacheDrawPoints = [pos];\n\n if (!this._operatingMask) {\n this._addBrushMask();\n }\n if (brushMode === 'single' && removeOnClick) {\n this._container.incrementalClearChild();\n this._addBrushMask();\n } else if (brushMode === 'multiple') {\n this._addBrushMask();\n }\n\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: 'brushStart',\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 初始化移动状态\n * @description 初始化mask的dx和dy\n */\n private _initMove(e: FederatedPointerEvent) {\n this._cacheMovePoint = this.eventPosToStagePos(e);\n\n this._operatingMaskMoveDx = this._operatingMask.attribute.dx ?? 0;\n this._operatingMaskMoveDy = this._operatingMask.attribute.dy ?? 0;\n\n // 计算最大移动范围, 为了将brushMask限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n\n const { x1, x2, y1, y2 } = this._operatingMask.globalAABBBounds;\n const minMoveStepX = minX - x1;\n const maxMoveStepX = maxX - x2;\n const minMoveStepY = minY - y1;\n const maxMoveStepY = maxY - y2;\n\n this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];\n this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];\n\n this._operatingMask.setAttribute('pickable', true);\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: 'brushMaskDown',\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 绘制中\n * @description 更新_cacheDrawPoints 和 mask的points属性\n */\n private _drawing(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (this._cacheDrawPoints.length > 0) {\n const lastPos = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n if (pos.x === lastPos?.x && pos.y === lastPos?.y) {\n return;\n }\n }\n // 更新交互位置\n this._cacheDrawPoints.push(pos);\n // 更新mask形状\n const maskPoints = this._computeMaskPoints();\n this._operatingMask.setAttribute('points', maskPoints);\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: 'brushing',\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 移动中\n * @description 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _moving(e: FederatedPointerEvent) {\n const startPos = this._cacheMovePoint;\n const pos = this.eventPosToStagePos(e);\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (pos.x === startPos?.x && pos.y === startPos?.y) {\n return;\n }\n\n const moveStepX = pos.x - startPos.x;\n const moveStepY = pos.y - startPos.y;\n const moveX =\n Math.min(this._operatingMaskMoveRangeX[1], Math.max(this._operatingMaskMoveRangeX[0], moveStepX)) +\n this._operatingMaskMoveDx;\n const moveY =\n Math.min(this._operatingMaskMoveRangeY[1], Math.max(this._operatingMaskMoveRangeY[0], moveStepY)) +\n this._operatingMaskMoveDy;\n\n this._operatingMask.setAttributes({\n dx: moveX,\n dy: moveY\n });\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: 'brushMaskMove',\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 构造brushMask的points属性\n * @description 根据不同的brushType从_cacheDrawPoints中取points\n * 1. 'rect': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点\n * 2. 'x': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的x坐标\n * 3. 'y': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的y坐标\n * 4. 'polygon': 取鼠标轨迹_cacheDrawPoints的所有点\n */\n private _computeMaskPoints() {\n const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute as BrushAttributes;\n let maskPoints: IPointLike[] = [];\n const startPoint = this._cacheDrawPoints[0];\n const endPoint = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n\n if (brushType === 'rect') {\n maskPoints = [\n startPoint,\n {\n x: endPoint.x,\n y: startPoint.y\n },\n endPoint,\n {\n x: startPoint.x,\n y: endPoint.y\n }\n ];\n } else if (brushType === 'x') {\n maskPoints = [\n {\n x: startPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[1]\n },\n {\n x: startPoint.x,\n y: yRange[1]\n }\n ];\n } else if (brushType === 'y') {\n maskPoints = [\n {\n x: xRange[0],\n y: startPoint.y\n },\n {\n x: xRange[0],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: startPoint.y\n }\n ];\n } else {\n maskPoints = cloneDeep(this._cacheDrawPoints); // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n }\n return maskPoints;\n }\n\n protected _addBrushMask() {\n const { brushStyle } = this.attribute as BrushAttributes;\n const brushMask = createPolygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle\n });\n brushMask.name = `brush-${Date.now()}`; // 用Data给mask唯一标记\n this._operatingMask = brushMask;\n this._container.add(brushMask);\n this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;\n }\n\n private _outOfInteractiveRange(e: FederatedPointerEvent) {\n // 在返回坐标时,将其限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n const pos = this.eventPosToStagePos(e);\n if (pos.x > maxX || pos.x < minX || pos.y > maxY || pos.y < minY) {\n return true;\n }\n return false;\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n const stagePosition = this.stage?.window.getBoundingClientRect();\n return {\n x: e.clientX - (stagePosition?.left || 0) - (this.stage?.x || 0),\n y: e.clientY - (stagePosition?.top || 0) - (this.stage?.y || 0)\n };\n }\n\n protected render() {\n this.bindBrushEvents();\n const group = this.createOrUpdateChild('brush-container', {}, 'group') as unknown as IGroup;\n this._container = group;\n }\n\n setUpdateDragMaskCallback(\n callback: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void\n ) {\n isFunction(callback) && (this._updateDragMaskCallback = callback);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport type { FederatedPointerEvent, IGroup, IPolygon } from '@visactor/vrender';\nimport { global, createPolygon, Polygon, point } from '@visactor/vrender';\nimport type { IBounds, IPointLike } from '@visactor/vutils';\nimport { cloneDeep, debounce, isFunction, merge, polygonContainPoint, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BrushAttributes } from './type';\nimport { IOperateType } from './type';\nimport { DEFAULT_BRUSH_ATTRIBUTES, SIZE_THRESHOLD } from './config';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport class Brush extends AbstractComponent<Required<BrushAttributes>> {\n name = 'brush';\n static defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;\n\n private _container!: IGroup;\n\n // 绘制mask时的相关属性\n private _activeDrawState = false; // 用于标记绘制状态\n private _cacheDrawPoints: IPointLike[] = []; // 用于维护鼠标走过的路径,主要用于绘制mask的点\n private _cacheStartTime: number; // 用于记录鼠标前后的点击时间,以此判断是否为双击\n private _isDrawedBeforeEnd = false;\n // 移动mask时的相关属性\n private _activeMoveState = false; // 用于标记移动状态\n private _operatingMaskMoveDx = 0; // 用于标记移动的位移量\n private _operatingMaskMoveDy = 0;\n private _operatingMaskMoveRangeX: [number, number] = [-Infinity, Infinity];\n private _operatingMaskMoveRangeY: [number, number] = [-Infinity, Infinity];\n private _cacheMovePoint!: IPointLike; // 用于维护鼠标所在位置,主要用于计算位移量\n\n private _operatingMask!: IPolygon; // 用于标记正在绘制的mask 或 正在移动的mask\n\n // 透出给上层的属性(主要是所有mask的AABBBounds,这里用的是dict存储方便添加和修改)\n private _brushMaskAABBBoundsDict: { [name: string]: IBounds } = {};\n private _updateDragMaskCallback!: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void;\n\n constructor(attributes: BrushAttributes) {\n super(merge({}, Brush.defaultAttributes, attributes));\n }\n\n protected bindBrushEvents(): void {\n const { delayType = 'throttle', delayTime = 0 } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener('pointerdown', this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener('pointermove', delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener('pointerup', this._onBrushEnd as EventListener);\n this.stage.addEventListener('pointerupoutside', this._onBrushEnd as EventListener);\n }\n\n private _isPosInBrushMask(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const brushMasks = this._container.getChildren();\n for (let i = 0; i < brushMasks.length; i++) {\n const { points = [], dx = 0, dy = 0 } = (brushMasks[i] as IPolygon).attribute;\n const pointsConsiderOffset: IPointLike[] = points.map((point: IPointLike) => {\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n });\n if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {\n this._operatingMask = brushMasks[i] as IPolygon;\n return true;\n }\n }\n return false;\n }\n\n /**\n * 开始绘制 或 移动\n * @description\n * 1. 判断状态: 如果在brushMask中,则属于移动状态; 否则属于绘制状态\n *(移动状态和绘制状态互斥, 且移动状态考虑brushMoved配置, 如果在brush点内但brushMoved为false, 则走绘制状态, 而非两个状态都不响应, 此效果与echarts保持一致)\n * 2. 判断坐标是否在有效交互范围内\n * 2. 如果是移动状态: 标记移动状态 & 标记正在移动的mask & 初始化mask的dx和dy\n * 3. 如果是绘制状态: 标记绘制状态 & 标记正在绘制的mask & 清除之前的mask & 添加新的mask\n */\n private _onBrushStart = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n const brushMoved = this.attribute?.brushMoved ?? true;\n this._activeMoveState = brushMoved && this._isPosInBrushMask(e); // 如果是移动状态,在这里会标记operatingMask为正在移动的mask\n this._activeDrawState = !this._activeMoveState;\n\n this._activeDrawState && this._initDraw(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._initMove(e);\n };\n\n /**\n * 绘制 或 移动 中\n * @description\n * 1. 如果是绘制状态: 更新_cacheDrawPoints 和 mask的points属性\n * 2. 如果是移动状态: 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _onBrushing = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n\n this._activeDrawState && this._drawing(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._moving(e);\n };\n\n /**\n * 结束绘制 和 移动\n * @description 取消绘制 和 移动 状态\n */\n private _onBrushEnd = (e: FederatedPointerEvent) => {\n const { removeOnClick = true } = this.attribute as BrushAttributes;\n if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {\n this._container.incrementalClearChild();\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.brushClear,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n } else if (!this._outOfInteractiveRange(e)) {\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: this._activeDrawState ? IOperateType.drawEnd : IOperateType.moveEnd,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n this._activeDrawState = false;\n this._activeMoveState = false;\n this._isDrawedBeforeEnd = false;\n this._operatingMask?.setAttribute('pickable', false);\n };\n\n /**\n * 初始化绘制状态\n * @description 清除之前的mask & 添加新的mask\n */\n private _initDraw(e: FederatedPointerEvent) {\n const { brushMode } = this.attribute as BrushAttributes;\n const pos = this.eventPosToStagePos(e);\n this._cacheDrawPoints = [pos];\n this._isDrawedBeforeEnd = false;\n if (brushMode === 'single') {\n this._container.incrementalClearChild();\n }\n this._addBrushMask();\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 初始化移动状态\n * @description 初始化mask的dx和dy\n */\n private _initMove(e: FederatedPointerEvent) {\n this._cacheMovePoint = this.eventPosToStagePos(e);\n\n this._operatingMaskMoveDx = this._operatingMask.attribute.dx ?? 0;\n this._operatingMaskMoveDy = this._operatingMask.attribute.dy ?? 0;\n\n // 计算最大移动范围, 为了将brushMask限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n\n const { x1, x2, y1, y2 } = this._operatingMask.globalAABBBounds;\n const minMoveStepX = minX - x1;\n const maxMoveStepX = maxX - x2;\n const minMoveStepY = minY - y1;\n const maxMoveStepY = maxY - y2;\n\n this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];\n this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];\n\n this._operatingMask.setAttribute('pickable', true);\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moveStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 绘制中\n * @description 更新_cacheDrawPoints 和 mask的points属性\n */\n private _drawing(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const { x1 = 0, x2 = 0, y1 = 0, y2 = 0 } = this._operatingMask?._AABBBounds;\n this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > SIZE_THRESHOLD || Math.abs(y1 - y2) > SIZE_THRESHOLD);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (this._cacheDrawPoints.length > 0) {\n const lastPos = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n if (pos.x === lastPos?.x && pos.y === lastPos?.y) {\n return;\n }\n }\n // 更新交互位置\n this._cacheDrawPoints.push(pos);\n // 更新mask形状\n const maskPoints = this._computeMaskPoints();\n this._operatingMask.setAttribute('points', maskPoints);\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawing,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 移动中\n * @description 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _moving(e: FederatedPointerEvent) {\n const startPos = this._cacheMovePoint;\n const pos = this.eventPosToStagePos(e);\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (pos.x === startPos?.x && pos.y === startPos?.y) {\n return;\n }\n\n const moveStepX = pos.x - startPos.x;\n const moveStepY = pos.y - startPos.y;\n const moveX =\n Math.min(this._operatingMaskMoveRangeX[1], Math.max(this._operatingMaskMoveRangeX[0], moveStepX)) +\n this._operatingMaskMoveDx;\n const moveY =\n Math.min(this._operatingMaskMoveRangeY[1], Math.max(this._operatingMaskMoveRangeY[0], moveStepY)) +\n this._operatingMaskMoveDy;\n\n this._operatingMask.setAttributes({\n dx: moveX,\n dy: moveY\n });\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moving,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 构造brushMask的points属性\n * @description 根据不同的brushType从_cacheDrawPoints中取points\n * 1. 'rect': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点\n * 2. 'x': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的x坐标\n * 3. 'y': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的y坐标\n * 4. 'polygon': 取鼠标轨迹_cacheDrawPoints的所有点\n */\n private _computeMaskPoints() {\n const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute as BrushAttributes;\n let maskPoints: IPointLike[] = [];\n const startPoint = this._cacheDrawPoints[0];\n const endPoint = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n\n if (brushType === 'rect') {\n maskPoints = [\n startPoint,\n {\n x: endPoint.x,\n y: startPoint.y\n },\n endPoint,\n {\n x: startPoint.x,\n y: endPoint.y\n }\n ];\n } else if (brushType === 'x') {\n maskPoints = [\n {\n x: startPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[1]\n },\n {\n x: startPoint.x,\n y: yRange[1]\n }\n ];\n } else if (brushType === 'y') {\n maskPoints = [\n {\n x: xRange[0],\n y: startPoint.y\n },\n {\n x: xRange[0],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: startPoint.y\n }\n ];\n } else {\n maskPoints = cloneDeep(this._cacheDrawPoints); // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n }\n return maskPoints;\n }\n\n protected _addBrushMask() {\n const { brushStyle } = this.attribute as BrushAttributes;\n const brushMask = createPolygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle\n });\n brushMask.name = `brush-${Date.now()}`; // 用Date给mask唯一标记\n this._operatingMask = brushMask;\n this._container.add(brushMask);\n this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;\n }\n\n private _outOfInteractiveRange(e: FederatedPointerEvent) {\n // 在返回坐标时,将其限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n const pos = this.eventPosToStagePos(e);\n if (pos.x > maxX || pos.x < minX || pos.y > maxY || pos.y < minY) {\n return true;\n }\n return false;\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n const stagePosition = this.stage?.window.getBoundingClientRect();\n return {\n x: e.clientX - (stagePosition?.left || 0) - (this.stage?.x || 0),\n y: e.clientY - (stagePosition?.top || 0) - (this.stage?.y || 0)\n };\n }\n\n protected render() {\n this.bindBrushEvents();\n const group = this.createOrUpdateChild('brush-container', {}, 'group') as unknown as IGroup;\n this._container = group;\n }\n\n setUpdateDragMaskCallback(\n callback: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void\n ) {\n isFunction(callback) && (this._updateDragMaskCallback = callback);\n }\n}\n"]}
|
package/cjs/brush/config.d.ts
CHANGED
package/cjs/brush/config.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.DEFAULT_BRUSH_ATTRIBUTES = void 0, exports.DEFAULT_BRUSH_ATTRIBUTES = {
|
|
5
|
+
}), exports.SIZE_THRESHOLD = exports.DEFAULT_BRUSH_ATTRIBUTES = void 0, exports.DEFAULT_BRUSH_ATTRIBUTES = {
|
|
6
6
|
brushMode: "single",
|
|
7
7
|
brushType: "rect",
|
|
8
8
|
brushStyle: {
|
|
@@ -21,5 +21,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
21
21
|
x1: -1 / 0,
|
|
22
22
|
x2: 1 / 0
|
|
23
23
|
}
|
|
24
|
-
};
|
|
24
|
+
}, exports.SIZE_THRESHOLD = 5;
|
|
25
25
|
//# sourceMappingURL=config.js.map
|
package/cjs/brush/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["brush/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG;IACtC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;KACf;IACD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,QAAQ;QACb,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,CAAC,QAAQ;QACb,EAAE,EAAE,QAAQ;KACb;CACF,CAAC","file":"config.js","sourcesContent":["export const DEFAULT_BRUSH_ATTRIBUTES = {\n brushMode: 'single',\n brushType: 'rect',\n brushStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.2,\n stroke: '#B0C8F9',\n strokeWidth: 2\n },\n brushMoved: true,\n removeOnClick: true,\n delayType: 'throttle',\n delayTime: 10,\n interactiveRange: {\n y1: -Infinity,\n y2: Infinity,\n x1: -Infinity,\n x2: Infinity\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["brush/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG;IACtC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,CAAC;KACf;IACD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,QAAQ;QACb,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,CAAC,QAAQ;QACb,EAAE,EAAE,QAAQ;KACb;CACF,CAAC;AAEW,QAAA,cAAc,GAAG,CAAC,CAAC","file":"config.js","sourcesContent":["export const DEFAULT_BRUSH_ATTRIBUTES = {\n brushMode: 'single',\n brushType: 'rect',\n brushStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.2,\n stroke: '#B0C8F9',\n strokeWidth: 2\n },\n brushMoved: true,\n removeOnClick: true,\n delayType: 'throttle',\n delayTime: 10,\n interactiveRange: {\n y1: -Infinity,\n y2: Infinity,\n x1: -Infinity,\n x2: Infinity\n }\n};\n\nexport const SIZE_THRESHOLD = 5;\n"]}
|
package/cjs/brush/type.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IGroupGraphicAttribute, IPolygonGraphicAttribute } from '@visactor/vrender';
|
|
1
|
+
import type { IGroupGraphicAttribute, IPolygonGraphicAttribute } from '@visactor/vrender';
|
|
2
2
|
export interface BrushAttributes extends IGroupGraphicAttribute {
|
|
3
3
|
interactiveRange?: {
|
|
4
4
|
minX: number;
|
|
@@ -19,3 +19,12 @@ export interface BrushAttributes extends IGroupGraphicAttribute {
|
|
|
19
19
|
export type IBrushType = 'x' | 'y' | 'rect' | 'polygon';
|
|
20
20
|
export type IBrushMode = 'single' | 'multiple';
|
|
21
21
|
export type IDelayType = 'debounce' | 'throttle';
|
|
22
|
+
export declare enum IOperateType {
|
|
23
|
+
drawStart = "drawStart",
|
|
24
|
+
drawEnd = "drawEnd",
|
|
25
|
+
drawing = "drawing",
|
|
26
|
+
moving = "moving",
|
|
27
|
+
moveStart = "moveStart",
|
|
28
|
+
moveEnd = "moveEnd",
|
|
29
|
+
brushClear = "brushClear"
|
|
30
|
+
}
|
package/cjs/brush/type.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var IOperateType;
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: !0
|
|
5
|
-
})
|
|
7
|
+
}), exports.IOperateType = void 0, function(IOperateType) {
|
|
8
|
+
IOperateType.drawStart = "drawStart", IOperateType.drawEnd = "drawEnd", IOperateType.drawing = "drawing",
|
|
9
|
+
IOperateType.moving = "moving", IOperateType.moveStart = "moveStart", IOperateType.moveEnd = "moveEnd",
|
|
10
|
+
IOperateType.brushClear = "brushClear";
|
|
11
|
+
}(IOperateType = exports.IOperateType || (exports.IOperateType = {}));
|
|
6
12
|
//# sourceMappingURL=type.js.map
|
package/cjs/brush/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["brush/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import { IGroupGraphicAttribute, IPolygonGraphicAttribute } from '@visactor/vrender';\n\nexport interface BrushAttributes extends IGroupGraphicAttribute {\n /**\n * 可交互范围\n */\n interactiveRange?: {\n minX: number;\n maxX: number;\n minY: number;\n maxY: number;\n };\n /**\n * 框选模式\n * @default 'single'\n */\n brushMode?: IBrushMode;\n /**\n * 框选类型\n * @default 'rect'\n */\n brushType?: IBrushType;\n /**\n * brushType为'y'时, x的左右边界位置, 不配置的话不会生效\n * @default [0,0]\n */\n xRange?: [number, number];\n /**\n * brushType为'x'时, y的左右边界位置, 不配置的话不会生效\n * @default [0,0]\n */\n yRange?: [number, number];\n /**\n * 框选区域的样式\n */\n brushStyle?: IPolygonGraphicAttribute;\n /**\n * 是否可被平移\n * @default true\n */\n brushMoved?: boolean;\n /**\n * brushMode为'single'时,是否单击清除选框\n * @default true\n */\n removeOnClick?: boolean;\n /**\n * 事件触发延迟类型\n * @default 'throttle'\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 0\n */\n delayTime?: number;\n}\n\nexport type IBrushType = 'x' | 'y' | 'rect' | 'polygon';\nexport type IBrushMode = 'single' | 'multiple';\n\nexport type IDelayType = 'debounce' | 'throttle';\n"]}
|
|
1
|
+
{"version":3,"sources":["brush/type.ts"],"names":[],"mappings":";;;AA+DA,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;AAC3B,CAAC,EARW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAQvB","file":"type.js","sourcesContent":["import type { IGroupGraphicAttribute, IPolygonGraphicAttribute } from '@visactor/vrender';\n\nexport interface BrushAttributes extends IGroupGraphicAttribute {\n /**\n * 可交互范围\n */\n interactiveRange?: {\n minX: number;\n maxX: number;\n minY: number;\n maxY: number;\n };\n /**\n * 框选模式\n * @default 'single'\n */\n brushMode?: IBrushMode;\n /**\n * 框选类型\n * @default 'rect'\n */\n brushType?: IBrushType;\n /**\n * brushType为'y'时, x的左右边界位置, 不配置的话不会生效\n * @default [0,0]\n */\n xRange?: [number, number];\n /**\n * brushType为'x'时, y的左右边界位置, 不配置的话不会生效\n * @default [0,0]\n */\n yRange?: [number, number];\n /**\n * 框选区域的样式\n */\n brushStyle?: IPolygonGraphicAttribute;\n /**\n * 是否可被平移\n * @default true\n */\n brushMoved?: boolean;\n /**\n * brushMode为'single'时,是否单击清除选框\n * @default true\n */\n removeOnClick?: boolean;\n /**\n * 事件触发延迟类型\n * @default 'throttle'\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 0\n */\n delayTime?: number;\n}\n\nexport type IBrushType = 'x' | 'y' | 'rect' | 'polygon';\nexport type IBrushMode = 'single' | 'multiple';\n\nexport type IDelayType = 'debounce' | 'throttle';\n\nexport enum IOperateType {\n drawStart = 'drawStart',\n drawEnd = 'drawEnd',\n drawing = 'drawing',\n moving = 'moving',\n moveStart = 'moveStart',\n moveEnd = 'moveEnd',\n brushClear = 'brushClear'\n}\n"]}
|
package/cjs/index.d.ts
CHANGED
package/cjs/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), exports.version = void 0, exports.version = "0.13.
|
|
20
|
+
}), exports.version = void 0, exports.version = "0.13.10", __exportStar(require("./core/base"), exports),
|
|
21
21
|
__exportStar(require("./scrollbar"), exports), __exportStar(require("./tag"), exports),
|
|
22
22
|
__exportStar(require("./poptip"), exports), __exportStar(require("./crosshair"), exports),
|
|
23
23
|
__exportStar(require("./label"), exports), __exportStar(require("./axis"), exports),
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,SAAS,CAAC;AAEjC,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.13.10\";\n\nexport * from './core/base';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\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';\n"]}
|
package/cjs/tooltip/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tooltip/util.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAIhD,MAAM,aAAa,GAAG,CAC3B,MAA8C,EAC9C,GAAG,OAAmD,EACd,EAAE;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,OAAO,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,OAAO,EAAE;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;QACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,OAAO,CAAC;QAC7D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;KACpE,CAA2C,CAAC;AAC/C,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAsB,EAA6B,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACxF,OAAO;QACL,KAAK;QACL,MAAM;QACN,SAAS,EAAE,SAAgB;QAC3B,SAAS,EAAE,SAAgB;QAC3B,YAAY,EAAE,YAAmB;QACjC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,GAAG,CACzB,IAAI,CAAC,EAAE,CACL,
|
|
1
|
+
{"version":3,"sources":["tooltip/util.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAIhD,MAAM,aAAa,GAAG,CAC3B,MAA8C,EAC9C,GAAG,OAAmD,EACd,EAAE;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,OAAO,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,OAAO,EAAE;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;QACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,OAAO,CAAC;QAC7D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;KACpE,CAA2C,CAAC;AAC/C,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAsB,EAA6B,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACxF,OAAO;QACL,KAAK;QACL,MAAM;QACN,SAAS,EAAE,SAAgB;QAC3B,SAAS,EAAE,SAAgB;QAC3B,YAAY,EAAE,YAAmB;QACjC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,GAAG,CACzB,IAAI,CAAC,EAAE,CACL,iCACK,IAAI,KACP,IAAI,IACG,CACZ;KACF,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,oBAAoB,wBAiB/B","file":"util.js","sourcesContent":["import { array, isNil, merge } from '@visactor/vutils';\nimport type { IRichTextGraphicAttribute } from '@visactor/vrender';\nimport type { TooltipRowAttrs, TooltipRowStyleAttrs, TooltipTextAttrs } from './type';\n\nexport const mergeRowAttrs = (\n target: TooltipRowAttrs | TooltipRowStyleAttrs,\n ...sources: (TooltipRowAttrs | TooltipRowStyleAttrs)[]\n): TooltipRowAttrs | TooltipRowStyleAttrs => {\n const shapeList = [target.shape, ...sources.map(s => s?.shape)];\n const keyList = [target.key, ...sources.map(s => s?.key)];\n const valueList = [target.value, ...sources.map(s => s?.value)];\n\n return merge(target, ...sources, {\n shape: shapeList.every(isNil) ? undefined : merge({}, ...shapeList),\n key: keyList.every(isNil) ? undefined : merge({}, ...keyList),\n value: valueList.every(isNil) ? undefined : merge({}, ...valueList)\n }) as TooltipRowAttrs | TooltipRowStyleAttrs;\n};\n\nexport const getRichTextAttribute = (attr: TooltipTextAttrs): IRichTextGraphicAttribute => {\n const { width, height, wordBreak = 'break-word', textAlign, textBaseline, text } = attr;\n return {\n width,\n height,\n wordBreak: wordBreak as any,\n textAlign: textAlign as any,\n textBaseline: textBaseline as any,\n singleLine: false,\n textConfig: array(text).map(\n text =>\n ({\n ...attr,\n text\n }) as any\n )\n };\n};\n"]}
|
package/dist/index.js
CHANGED
|
@@ -2965,7 +2965,17 @@
|
|
|
2965
2965
|
getTextAlign(vector) {
|
|
2966
2966
|
let align = 'center';
|
|
2967
2967
|
if (vutils.isNumberClose(vector[0], 0)) {
|
|
2968
|
-
|
|
2968
|
+
if (vutils.isNumberClose(vector[1], 0)) {
|
|
2969
|
+
if (Object.is(vector[1], -0)) {
|
|
2970
|
+
align = 'start';
|
|
2971
|
+
}
|
|
2972
|
+
else if (Object.is(vector[0], -0)) {
|
|
2973
|
+
align = 'end';
|
|
2974
|
+
}
|
|
2975
|
+
}
|
|
2976
|
+
else {
|
|
2977
|
+
align = 'center';
|
|
2978
|
+
}
|
|
2969
2979
|
}
|
|
2970
2980
|
else if (vector[0] > 0) {
|
|
2971
2981
|
align = 'start';
|
|
@@ -3093,7 +3103,7 @@
|
|
|
3093
3103
|
}
|
|
3094
3104
|
const point = this.getVerticalCoord(tickDatum.point, offset, inside);
|
|
3095
3105
|
const vector = this.getVerticalVector(offset, inside, point);
|
|
3096
|
-
const text = formatMethod ? formatMethod(tickDatum.label
|
|
3106
|
+
const text = formatMethod ? formatMethod(`${tickDatum.label}`, tickDatum, index, tickData, layer) : tickDatum.label;
|
|
3097
3107
|
let { style: textStyle } = tagAttributes;
|
|
3098
3108
|
textStyle = vutils.isFunction(textStyle)
|
|
3099
3109
|
? vutils.merge({}, DEFAULT_AXIS_THEME.label.style, textStyle(tickDatum, index, tickData, layer))
|
|
@@ -3354,14 +3364,25 @@
|
|
|
3354
3364
|
return;
|
|
3355
3365
|
}
|
|
3356
3366
|
labels.forEach(label => {
|
|
3357
|
-
|
|
3367
|
+
if ((orient === 'top' || orient === 'bottom') && Math.floor(label.AABBBounds.height()) <= limitLength) {
|
|
3368
|
+
return;
|
|
3369
|
+
}
|
|
3370
|
+
if ((orient === 'left' || orient === 'right') && Math.floor(label.AABBBounds.width()) <= limitLength) {
|
|
3371
|
+
return;
|
|
3372
|
+
}
|
|
3373
|
+
let limitLabelLength = label.attribute.angle === 0 || vutils.isNil(label.attribute.angle)
|
|
3358
3374
|
? orient === 'top' || orient === 'bottom'
|
|
3359
3375
|
? null
|
|
3360
3376
|
: limitLength
|
|
3361
3377
|
: Math.abs(limitLength / Math.sin(label.attribute.angle));
|
|
3378
|
+
if (vutils.isValidNumber(label.attribute.maxLineWidth)) {
|
|
3379
|
+
limitLabelLength = vutils.isValidNumber(limitLabelLength)
|
|
3380
|
+
? Math.min(label.attribute.maxLineWidth, limitLabelLength)
|
|
3381
|
+
: label.attribute.maxLineWidth;
|
|
3382
|
+
}
|
|
3362
3383
|
label.setAttributes({
|
|
3363
3384
|
maxLineWidth: limitLabelLength,
|
|
3364
|
-
ellipsis
|
|
3385
|
+
ellipsis: label.attribute.ellipsis || ellipsis
|
|
3365
3386
|
});
|
|
3366
3387
|
});
|
|
3367
3388
|
}
|
|
@@ -3675,7 +3696,7 @@
|
|
|
3675
3696
|
const { verticalFactor = 1 } = this.attribute;
|
|
3676
3697
|
const factor = (inside ? 1 : -1) * verticalFactor;
|
|
3677
3698
|
if (vutils.isNumberClose(vector[1], 0)) {
|
|
3678
|
-
if (vutils.isNumberClose(vector[0], 0)) {
|
|
3699
|
+
if (vutils.isNumberClose(vector[0], 0) && !Object.is(vector[0], -0) && !Object.is(vector[1], -0)) {
|
|
3679
3700
|
base = factor === 1 ? 'bottom' : 'top';
|
|
3680
3701
|
}
|
|
3681
3702
|
else {
|
|
@@ -8896,6 +8917,17 @@
|
|
|
8896
8917
|
}
|
|
8897
8918
|
}
|
|
8898
8919
|
|
|
8920
|
+
exports.IOperateType = void 0;
|
|
8921
|
+
(function (IOperateType) {
|
|
8922
|
+
IOperateType["drawStart"] = "drawStart";
|
|
8923
|
+
IOperateType["drawEnd"] = "drawEnd";
|
|
8924
|
+
IOperateType["drawing"] = "drawing";
|
|
8925
|
+
IOperateType["moving"] = "moving";
|
|
8926
|
+
IOperateType["moveStart"] = "moveStart";
|
|
8927
|
+
IOperateType["moveEnd"] = "moveEnd";
|
|
8928
|
+
IOperateType["brushClear"] = "brushClear";
|
|
8929
|
+
})(exports.IOperateType || (exports.IOperateType = {}));
|
|
8930
|
+
|
|
8899
8931
|
const DEFAULT_BRUSH_ATTRIBUTES = {
|
|
8900
8932
|
brushMode: 'single',
|
|
8901
8933
|
brushType: 'rect',
|
|
@@ -8916,6 +8948,7 @@
|
|
|
8916
8948
|
x2: Infinity
|
|
8917
8949
|
}
|
|
8918
8950
|
};
|
|
8951
|
+
const SIZE_THRESHOLD = 5;
|
|
8919
8952
|
|
|
8920
8953
|
const delayMap = {
|
|
8921
8954
|
debounce: vutils.debounce,
|
|
@@ -8927,6 +8960,8 @@
|
|
|
8927
8960
|
_container;
|
|
8928
8961
|
_activeDrawState = false;
|
|
8929
8962
|
_cacheDrawPoints = [];
|
|
8963
|
+
_cacheStartTime;
|
|
8964
|
+
_isDrawedBeforeEnd = false;
|
|
8930
8965
|
_activeMoveState = false;
|
|
8931
8966
|
_operatingMaskMoveDx = 0;
|
|
8932
8967
|
_operatingMaskMoveDy = 0;
|
|
@@ -8982,36 +9017,41 @@
|
|
|
8982
9017
|
this._activeMoveState && this._moving(e);
|
|
8983
9018
|
};
|
|
8984
9019
|
_onBrushEnd = (e) => {
|
|
8985
|
-
|
|
8986
|
-
|
|
9020
|
+
const { removeOnClick = true } = this.attribute;
|
|
9021
|
+
if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {
|
|
9022
|
+
this._container.incrementalClearChild();
|
|
9023
|
+
this._updateDragMaskCallback &&
|
|
9024
|
+
this._updateDragMaskCallback({
|
|
9025
|
+
operateType: exports.IOperateType.brushClear,
|
|
9026
|
+
operateMask: this._operatingMask,
|
|
9027
|
+
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9028
|
+
});
|
|
9029
|
+
}
|
|
9030
|
+
else if (!this._outOfInteractiveRange(e)) {
|
|
9031
|
+
this._updateDragMaskCallback &&
|
|
9032
|
+
this._updateDragMaskCallback({
|
|
9033
|
+
operateType: this._activeDrawState ? exports.IOperateType.drawEnd : exports.IOperateType.moveEnd,
|
|
9034
|
+
operateMask: this._operatingMask,
|
|
9035
|
+
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9036
|
+
});
|
|
8987
9037
|
}
|
|
8988
|
-
this._updateDragMaskCallback &&
|
|
8989
|
-
this._updateDragMaskCallback({
|
|
8990
|
-
operateType: this._activeDrawState ? 'brushEnd' : 'brushMaskUp',
|
|
8991
|
-
operateMask: this._operatingMask,
|
|
8992
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
8993
|
-
});
|
|
8994
9038
|
this._activeDrawState = false;
|
|
8995
9039
|
this._activeMoveState = false;
|
|
8996
|
-
this.
|
|
9040
|
+
this._isDrawedBeforeEnd = false;
|
|
9041
|
+
this._operatingMask?.setAttribute('pickable', false);
|
|
8997
9042
|
};
|
|
8998
9043
|
_initDraw(e) {
|
|
8999
|
-
const { brushMode
|
|
9044
|
+
const { brushMode } = this.attribute;
|
|
9000
9045
|
const pos = this.eventPosToStagePos(e);
|
|
9001
9046
|
this._cacheDrawPoints = [pos];
|
|
9002
|
-
|
|
9003
|
-
|
|
9004
|
-
}
|
|
9005
|
-
if (brushMode === 'single' && removeOnClick) {
|
|
9047
|
+
this._isDrawedBeforeEnd = false;
|
|
9048
|
+
if (brushMode === 'single') {
|
|
9006
9049
|
this._container.incrementalClearChild();
|
|
9007
|
-
this._addBrushMask();
|
|
9008
|
-
}
|
|
9009
|
-
else if (brushMode === 'multiple') {
|
|
9010
|
-
this._addBrushMask();
|
|
9011
9050
|
}
|
|
9051
|
+
this._addBrushMask();
|
|
9012
9052
|
this._updateDragMaskCallback &&
|
|
9013
9053
|
this._updateDragMaskCallback({
|
|
9014
|
-
operateType:
|
|
9054
|
+
operateType: exports.IOperateType.drawStart,
|
|
9015
9055
|
operateMask: this._operatingMask,
|
|
9016
9056
|
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9017
9057
|
});
|
|
@@ -9032,13 +9072,15 @@
|
|
|
9032
9072
|
this._operatingMask.setAttribute('pickable', true);
|
|
9033
9073
|
this._updateDragMaskCallback &&
|
|
9034
9074
|
this._updateDragMaskCallback({
|
|
9035
|
-
operateType:
|
|
9075
|
+
operateType: exports.IOperateType.moveStart,
|
|
9036
9076
|
operateMask: this._operatingMask,
|
|
9037
9077
|
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9038
9078
|
});
|
|
9039
9079
|
}
|
|
9040
9080
|
_drawing(e) {
|
|
9041
9081
|
const pos = this.eventPosToStagePos(e);
|
|
9082
|
+
const { x1 = 0, x2 = 0, y1 = 0, y2 = 0 } = this._operatingMask?._AABBBounds;
|
|
9083
|
+
this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > SIZE_THRESHOLD || Math.abs(y1 - y2) > SIZE_THRESHOLD);
|
|
9042
9084
|
if (this._cacheDrawPoints.length > 0) {
|
|
9043
9085
|
const lastPos = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];
|
|
9044
9086
|
if (pos.x === lastPos?.x && pos.y === lastPos?.y) {
|
|
@@ -9051,7 +9093,7 @@
|
|
|
9051
9093
|
this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
|
|
9052
9094
|
this._updateDragMaskCallback &&
|
|
9053
9095
|
this._updateDragMaskCallback({
|
|
9054
|
-
operateType:
|
|
9096
|
+
operateType: exports.IOperateType.drawing,
|
|
9055
9097
|
operateMask: this._operatingMask,
|
|
9056
9098
|
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9057
9099
|
});
|
|
@@ -9075,7 +9117,7 @@
|
|
|
9075
9117
|
this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
|
|
9076
9118
|
this._updateDragMaskCallback &&
|
|
9077
9119
|
this._updateDragMaskCallback({
|
|
9078
|
-
operateType:
|
|
9120
|
+
operateType: exports.IOperateType.moving,
|
|
9079
9121
|
operateMask: this._operatingMask,
|
|
9080
9122
|
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict
|
|
9081
9123
|
});
|
|
@@ -9602,7 +9644,7 @@
|
|
|
9602
9644
|
}
|
|
9603
9645
|
}
|
|
9604
9646
|
|
|
9605
|
-
const version = "0.13.
|
|
9647
|
+
const version = "0.13.10";
|
|
9606
9648
|
|
|
9607
9649
|
exports.AbstractComponent = AbstractComponent;
|
|
9608
9650
|
exports.BasePlayer = BasePlayer;
|