@visactor/vrender-components 0.14.0-alpha.0 → 0.14.0-alpha.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.
Files changed (159) hide show
  1. package/cjs/axis/base.d.ts +4 -2
  2. package/cjs/axis/base.js +9 -18
  3. package/cjs/axis/base.js.map +1 -1
  4. package/cjs/axis/circle.d.ts +3 -1
  5. package/cjs/axis/circle.js +7 -5
  6. package/cjs/axis/circle.js.map +1 -1
  7. package/cjs/axis/constant.d.ts +2 -1
  8. package/cjs/axis/constant.js +1 -1
  9. package/cjs/axis/constant.js.map +1 -1
  10. package/cjs/axis/line.d.ts +6 -2
  11. package/cjs/axis/line.js +70 -13
  12. package/cjs/axis/line.js.map +1 -1
  13. package/cjs/axis/overlap/auto-limit.js +1 -1
  14. package/cjs/axis/overlap/auto-limit.js.map +1 -1
  15. package/cjs/axis/overlap/auto-rotate.d.ts +2 -0
  16. package/cjs/axis/overlap/auto-rotate.js +2 -2
  17. package/cjs/axis/overlap/auto-rotate.js.map +1 -1
  18. package/cjs/axis/type.d.ts +11 -7
  19. package/cjs/axis/type.js.map +1 -1
  20. package/cjs/brush/brush.d.ts +3 -3
  21. package/cjs/brush/brush.js.map +1 -1
  22. package/cjs/data-zoom/config.d.ts +2 -0
  23. package/cjs/data-zoom/config.js +3 -1
  24. package/cjs/data-zoom/config.js.map +1 -1
  25. package/cjs/data-zoom/data-zoom.d.ts +2 -0
  26. package/cjs/data-zoom/data-zoom.js +21 -11
  27. package/cjs/data-zoom/data-zoom.js.map +1 -1
  28. package/cjs/data-zoom/type.d.ts +4 -3
  29. package/cjs/data-zoom/type.js.map +1 -1
  30. package/cjs/index.d.ts +1 -1
  31. package/cjs/index.js +1 -1
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/label/base.d.ts +12 -11
  34. package/cjs/label/base.js +83 -62
  35. package/cjs/label/base.js.map +1 -1
  36. package/cjs/label/overlap/bitmap.d.ts +1 -1
  37. package/cjs/label/overlap/bitmap.js +2 -0
  38. package/cjs/label/overlap/bitmap.js.map +1 -1
  39. package/cjs/label/overlap/place.d.ts +8 -4
  40. package/cjs/label/overlap/place.js +14 -2
  41. package/cjs/label/overlap/place.js.map +1 -1
  42. package/cjs/label/rect.d.ts +5 -3
  43. package/cjs/label/rect.js.map +1 -1
  44. package/cjs/label/symbol.d.ts +5 -3
  45. package/cjs/label/symbol.js.map +1 -1
  46. package/cjs/label/type.d.ts +12 -7
  47. package/cjs/label/type.js.map +1 -1
  48. package/cjs/legend/discrete/discrete.js +2 -1
  49. package/cjs/legend/discrete/discrete.js.map +1 -1
  50. package/cjs/marker/type.d.ts +4 -5
  51. package/cjs/marker/type.js.map +1 -1
  52. package/cjs/player/continuous-player.d.ts +1 -2
  53. package/cjs/player/continuous-player.js +5 -5
  54. package/cjs/player/continuous-player.js.map +1 -1
  55. package/cjs/player/discrete-player.d.ts +1 -2
  56. package/cjs/player/discrete-player.js +4 -4
  57. package/cjs/player/discrete-player.js.map +1 -1
  58. package/cjs/poptip/contribution.js +1 -1
  59. package/cjs/poptip/contribution.js.map +1 -1
  60. package/cjs/poptip/poptip.js +10 -3
  61. package/cjs/poptip/poptip.js.map +1 -1
  62. package/cjs/scrollbar/scrollbar.js +4 -4
  63. package/cjs/scrollbar/scrollbar.js.map +1 -1
  64. package/cjs/segment/segment.js +4 -1
  65. package/cjs/segment/segment.js.map +1 -1
  66. package/cjs/segment/type.d.ts +1 -0
  67. package/cjs/segment/type.js.map +1 -1
  68. package/cjs/slider/slider.d.ts +1 -1
  69. package/cjs/slider/slider.js +8 -8
  70. package/cjs/slider/slider.js.map +1 -1
  71. package/cjs/tag/type.d.ts +3 -3
  72. package/cjs/tag/type.js.map +1 -1
  73. package/cjs/util/align.d.ts +2 -0
  74. package/cjs/util/align.js +60 -0
  75. package/cjs/util/align.js.map +1 -0
  76. package/cjs/util/common.d.ts +3 -1
  77. package/cjs/util/common.js +14 -2
  78. package/cjs/util/common.js.map +1 -1
  79. package/dist/index.js +442 -177
  80. package/dist/index.min.js +1 -1
  81. package/es/axis/base.d.ts +4 -2
  82. package/es/axis/base.js +10 -19
  83. package/es/axis/base.js.map +1 -1
  84. package/es/axis/circle.d.ts +3 -1
  85. package/es/axis/circle.js +7 -5
  86. package/es/axis/circle.js.map +1 -1
  87. package/es/axis/constant.d.ts +2 -1
  88. package/es/axis/constant.js +1 -1
  89. package/es/axis/constant.js.map +1 -1
  90. package/es/axis/line.d.ts +6 -2
  91. package/es/axis/line.js +73 -14
  92. package/es/axis/line.js.map +1 -1
  93. package/es/axis/overlap/auto-limit.js +1 -1
  94. package/es/axis/overlap/auto-limit.js.map +1 -1
  95. package/es/axis/overlap/auto-rotate.d.ts +2 -0
  96. package/es/axis/overlap/auto-rotate.js +2 -2
  97. package/es/axis/overlap/auto-rotate.js.map +1 -1
  98. package/es/axis/type.d.ts +11 -7
  99. package/es/axis/type.js.map +1 -1
  100. package/es/brush/brush.d.ts +3 -3
  101. package/es/brush/brush.js.map +1 -1
  102. package/es/data-zoom/config.d.ts +2 -0
  103. package/es/data-zoom/config.js +3 -1
  104. package/es/data-zoom/config.js.map +1 -1
  105. package/es/data-zoom/data-zoom.d.ts +2 -0
  106. package/es/data-zoom/data-zoom.js +22 -12
  107. package/es/data-zoom/data-zoom.js.map +1 -1
  108. package/es/data-zoom/type.d.ts +4 -3
  109. package/es/data-zoom/type.js.map +1 -1
  110. package/es/index.d.ts +1 -1
  111. package/es/index.js +1 -1
  112. package/es/index.js.map +1 -1
  113. package/es/label/base.d.ts +12 -11
  114. package/es/label/base.js +85 -65
  115. package/es/label/base.js.map +1 -1
  116. package/es/label/overlap/bitmap.d.ts +1 -1
  117. package/es/label/overlap/bitmap.js +2 -0
  118. package/es/label/overlap/bitmap.js.map +1 -1
  119. package/es/label/overlap/place.d.ts +8 -4
  120. package/es/label/overlap/place.js +11 -0
  121. package/es/label/overlap/place.js.map +1 -1
  122. package/es/label/rect.d.ts +5 -3
  123. package/es/label/rect.js.map +1 -1
  124. package/es/label/symbol.d.ts +5 -3
  125. package/es/label/symbol.js.map +1 -1
  126. package/es/label/type.d.ts +12 -7
  127. package/es/label/type.js.map +1 -1
  128. package/es/legend/discrete/discrete.js +1 -1
  129. package/es/legend/discrete/discrete.js.map +1 -1
  130. package/es/marker/type.d.ts +4 -5
  131. package/es/marker/type.js.map +1 -1
  132. package/es/player/continuous-player.d.ts +1 -2
  133. package/es/player/continuous-player.js +5 -5
  134. package/es/player/continuous-player.js.map +1 -1
  135. package/es/player/discrete-player.d.ts +1 -2
  136. package/es/player/discrete-player.js +5 -5
  137. package/es/player/discrete-player.js.map +1 -1
  138. package/es/poptip/contribution.js +1 -1
  139. package/es/poptip/contribution.js.map +1 -1
  140. package/es/poptip/poptip.js +11 -4
  141. package/es/poptip/poptip.js.map +1 -1
  142. package/es/scrollbar/scrollbar.js +5 -5
  143. package/es/scrollbar/scrollbar.js.map +1 -1
  144. package/es/segment/segment.js +4 -1
  145. package/es/segment/segment.js.map +1 -1
  146. package/es/segment/type.d.ts +1 -0
  147. package/es/segment/type.js.map +1 -1
  148. package/es/slider/slider.d.ts +1 -1
  149. package/es/slider/slider.js +9 -9
  150. package/es/slider/slider.js.map +1 -1
  151. package/es/tag/type.d.ts +3 -3
  152. package/es/tag/type.js.map +1 -1
  153. package/es/util/align.d.ts +2 -0
  154. package/es/util/align.js +54 -0
  155. package/es/util/align.js.map +1 -0
  156. package/es/util/common.d.ts +3 -1
  157. package/es/util/common.js +12 -0
  158. package/es/util/common.js.map +1 -1
  159. package/package.json +2 -2
@@ -1 +1 @@
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 { 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 { 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":"AAGA,OAAO,EAAmD,aAAa,EAAkB,MAAM,mBAAmB,CAAC;AACnH,OAAO,EACL,SAAS,EACT,QAAQ,EAGR,UAAU,EACV,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,QAAQ,GAAG;IACf,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAM,OAAO,KAAM,SAAQ,iBAA4C;IA4BrE,YAAY,UAA2B;QACrC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QA5BxD,SAAI,GAAG,OAAO,CAAC;QAMP,qBAAgB,GAAG,KAAK,CAAC;QACzB,qBAAgB,GAAiB,EAAE,CAAC;QAGpC,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,CAAC,CAAC;QACzB,yBAAoB,GAAG,CAAC,CAAC;QACzB,6BAAwB,GAAqB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnE,6BAAwB,GAAqB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAMnE,6BAAwB,GAAgC,EAAE,CAAC;QAkD3D,kBAAa,GAAG,CAAC,CAAwB,EAAE,EAAE;;YACnD,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;gBAClC,OAAO;aACR;YACD,MAAM,UAAU,GAAG,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,UAAU,mCAAI,IAAI,CAAC;YACtD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAE/C,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC;QAQM,gBAAW,GAAG,CAAC,CAAwB,EAAE,EAAE;YACjD,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;gBAClC,OAAO;aACR;YAED,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;QAMM,gBAAW,GAAG,CAAC,CAAwB,EAAE,EAAE;YACjD,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;gBAClC,OAAO;aACR;YACD,IAAI,CAAC,uBAAuB;gBAC1B,IAAI,CAAC,uBAAuB,CAAC;oBAC3B,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;oBAC/D,WAAW,EAAE,IAAI,CAAC,cAAc;oBAChC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB;iBACtD,CAAC,CAAC;YAEL,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;IAtFF,CAAC;IAES,eAAe;QACvB,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QAEpF,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAA8B,CAAC,CAAC;QAEhF,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAkB,CAAC,CAAC;QAE9G,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAA4B,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAA4B,CAAC,CAAC;IACrF,CAAC;IAEO,iBAAiB,CAAC,CAAwB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAI,UAAU,CAAC,CAAC,CAAc,CAAC,SAAS,CAAC;YAC9E,MAAM,oBAAoB,GAAiB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAiB,EAAE,EAAE;gBAC1E,OAAO;oBACL,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE;oBACf,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE;iBAChB,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,mBAAmB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC3D,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAa,CAAC;gBAChD,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IA8DO,SAAS,CAAC,CAAwB;QACxC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,SAAS,KAAK,QAAQ,IAAI,aAAa,EAAE;YAC3C,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM,IAAI,SAAS,KAAK,UAAU,EAAE;YACnC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,uBAAuB,CAAC;gBAC3B,WAAW,EAAE,YAAY;gBACzB,WAAW,EAAE,IAAI,CAAC,cAAc;gBAChC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB;aACtD,CAAC,CAAC;IACP,CAAC;IAMO,SAAS,CAAC,CAAwB;;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,oBAAoB,GAAG,MAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,GAAG,MAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC;QAGlE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QAC/D,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,gBAAgB,CAAC;QAElG,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAE/B,IAAI,CAAC,wBAAwB,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,wBAAwB,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAE7D,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,uBAAuB,CAAC;gBAC3B,WAAW,EAAE,eAAe;gBAC5B,WAAW,EAAE,IAAI,CAAC,cAAc;gBAChC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB;aACtD,CAAC,CAAC;IACP,CAAC;IAMO,QAAQ,CAAC,CAAwB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAGvC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,GAAG,CAAC,CAAC,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,CAAC,CAAA,IAAI,GAAG,CAAC,CAAC,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,CAAC,CAAA,EAAE;gBAChD,OAAO;aACR;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QACzF,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,uBAAuB,CAAC;gBAC3B,WAAW,EAAE,UAAU;gBACvB,WAAW,EAAE,IAAI,CAAC,cAAc;gBAChC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB;aACtD,CAAC,CAAC;IACP,CAAC;IAMO,OAAO,CAAC,CAAwB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,GAAG,CAAC,CAAC,MAAK,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,CAAA,IAAI,GAAG,CAAC,CAAC,MAAK,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,CAAA,EAAE;YAClD,OAAO;SACR;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACrC,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACjG,IAAI,CAAC,oBAAoB,CAAC;QAC5B,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACjG,IAAI,CAAC,oBAAoB,CAAC;QAE5B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAChC,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,KAAK;SACV,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QACzF,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,uBAAuB,CAAC;gBAC3B,WAAW,EAAE,eAAe;gBAC5B,WAAW,EAAE,IAAI,CAAC,cAAc;gBAChC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB;aACtD,CAAC,CAAC;IACP,CAAC;IAUO,kBAAkB;QACxB,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QAC1F,IAAI,UAAU,GAAiB,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEzE,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,UAAU,GAAG;gBACX,UAAU;gBACV;oBACE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,CAAC,EAAE,UAAU,CAAC,CAAC;iBAChB;gBACD,QAAQ;gBACR;oBACE,CAAC,EAAE,UAAU,CAAC,CAAC;oBACf,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACd;aACF,CAAC;SACH;aAAM,IAAI,SAAS,KAAK,GAAG,EAAE;YAC5B,UAAU,GAAG;gBACX;oBACE,CAAC,EAAE,UAAU,CAAC,CAAC;oBACf,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;iBACb;gBACD;oBACE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;iBACb;gBACD;oBACE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;iBACb;gBACD;oBACE,CAAC,EAAE,UAAU,CAAC,CAAC;oBACf,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;iBACb;aACF,CAAC;SACH;aAAM,IAAI,SAAS,KAAK,GAAG,EAAE;YAC5B,UAAU,GAAG;gBACX;oBACE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBACZ,CAAC,EAAE,UAAU,CAAC,CAAC;iBAChB;gBACD;oBACE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBACZ,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACd;gBACD;oBACE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBACZ,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACd;gBACD;oBACE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBACZ,CAAC,EAAE,UAAU,CAAC,CAAC;iBAChB;aACF,CAAC;SACH;aAAM;YACL,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC/C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,aAAa;QACrB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QACzD,MAAM,SAAS,GAAG,aAAa,iBAC7B,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,KAAK,IACZ,UAAU,EACb,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;IACvE,CAAC;IAEO,sBAAsB,CAAC,CAAwB;QAErD,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAA4B,CAAC;QAC/D,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,gBAAgB,CAAC;QAClG,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;YAChE,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGS,kBAAkB,CAAC,CAAwB;;QACnD,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjE,OAAO;YACL,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,KAAI,CAAC,CAAC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,CAAC,KAAI,CAAC,CAAC;YAChE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,KAAI,CAAC,CAAC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,CAAC,KAAI,CAAC,CAAC;SAChE,CAAC;IACJ,CAAC;IAES,MAAM;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,EAAE,EAAE,OAAO,CAAsB,CAAC;QAC5F,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,yBAAyB,CACvB,QAIU;QAEV,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,CAAC;IACpE,CAAC;;AApWM,uBAAiB,GAAG,wBAAwB,CAAC","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"]}
@@ -67,12 +67,14 @@ export declare const DEFAULT_DATA_ZOOM_ATTRIBUTES: {
67
67
  };
68
68
  };
69
69
  startHandlerStyle: {
70
+ visible: boolean;
70
71
  symbolType: string;
71
72
  fill: string;
72
73
  stroke: string;
73
74
  lineWidth: number;
74
75
  };
75
76
  endHandlerStyle: {
77
+ visible: boolean;
76
78
  symbolType: string;
77
79
  fill: string;
78
80
  stroke: string;
@@ -50,7 +50,7 @@ export const DEFAULT_DATA_ZOOM_ATTRIBUTES = {
50
50
  }
51
51
  },
52
52
  middleHandlerStyle: {
53
- visible: !1,
53
+ visible: !0,
54
54
  background: {
55
55
  size: 8,
56
56
  style: {
@@ -68,12 +68,14 @@ export const DEFAULT_DATA_ZOOM_ATTRIBUTES = {
68
68
  }
69
69
  },
70
70
  startHandlerStyle: {
71
+ visible: !0,
71
72
  symbolType: "M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z",
72
73
  fill: "white",
73
74
  stroke: "#B0C8F9",
74
75
  lineWidth: .5
75
76
  },
76
77
  endHandlerStyle: {
78
+ visible: !0,
77
79
  symbolType: "M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z",
78
80
  fill: "white",
79
81
  stroke: "#B0C8F9",
@@ -1 +1 @@
1
- {"version":3,"sources":["data-zoom/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,8CAAyB,CAAA;AAC3B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AACD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE;QACf,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;KAChB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;KACjB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,SAAS;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;SACb;KACF;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;KACjB;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,SAAS;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;SACb;KACF;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE;YACV,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC;aAChB;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,SAAS;YACjB,UAAU,EAER,8PAA8P;YAChQ,SAAS,EAAE,GAAG;SACf;KACF;IACD,iBAAiB,EAAE;QACjB,UAAU,EAER,yiBAAyiB;QAE3iB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,UAAU,EAER,yiBAAyiB;QAE3iB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;KACf;IACD,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAC","file":"config.js","sourcesContent":["export enum DataZoomActiveTag {\n startHandler = 'startHandler',\n endHandler = 'endHandler',\n middleHandler = 'middleHandler',\n background = 'background'\n}\nexport const DEFAULT_DATA_ZOOM_ATTRIBUTES = {\n orient: 'bottom',\n showDetail: 'auto',\n brushSelect: true,\n backgroundStyle: {\n fill: 'white',\n stroke: '#D1DBEE',\n lineWidth: 1,\n cornerRadius: 2\n },\n dragMaskStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.2\n },\n backgroundChartStyle: {\n area: {\n visible: true,\n stroke: '#D1DBEE',\n lineWidth: 1,\n fill: '#F6F8FC'\n },\n line: {\n visible: true,\n stroke: '#D1DBEE',\n lineWidth: 1\n }\n },\n selectedBackgroundStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.5\n },\n selectedBackgroundChartStyle: {\n area: {\n visible: true,\n stroke: '#B0C8F9',\n lineWidth: 1,\n fill: '#fbb934'\n },\n line: {\n visible: true,\n stroke: '#fbb934',\n lineWidth: 1\n }\n },\n middleHandlerStyle: {\n visible: false,\n background: {\n size: 8,\n style: {\n fill: 'white',\n stroke: '#B0C8F9',\n cornerRadius: 2\n }\n },\n icon: {\n size: 6,\n fill: 'white',\n stroke: '#B0C8F9',\n symbolType:\n // eslint-disable-next-line max-len\n 'M 0.3 -0.5 C 0.41 -0.5 0.5 -0.41 0.5 -0.3 C 0.5 -0.3 0.5 0.3 0.5 0.3 C 0.5 0.41 0.41 0.5 0.3 0.5 C 0.3 0.5 -0.3 0.5 -0.3 0.5 C -0.41 0.5 -0.5 0.41 -0.5 0.3 C -0.5 0.3 -0.5 -0.3 -0.5 -0.3 C -0.5 -0.41 -0.41 -0.5 -0.3 -0.5 C -0.3 -0.5 0.3 -0.5 0.3 -0.5 Z',\n lineWidth: 0.5\n }\n },\n startHandlerStyle: {\n symbolType:\n // eslint-disable-next-line max-len\n 'M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z',\n // size: 40,\n fill: 'white',\n stroke: '#B0C8F9',\n lineWidth: 0.5\n },\n endHandlerStyle: {\n symbolType:\n // eslint-disable-next-line max-len\n 'M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z',\n // size: 40,\n fill: 'white',\n stroke: '#B0C8F9',\n lineWidth: 0.5\n },\n startTextStyle: {\n padding: 4,\n textStyle: {\n fontSize: 10,\n fill: '#6F6F6F'\n }\n },\n endTextStyle: {\n padding: 4,\n textStyle: {\n fontSize: 10,\n fill: '#6F6F6F'\n }\n }\n};\n"]}
1
+ {"version":3,"sources":["data-zoom/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,8CAAyB,CAAA;AAC3B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AACD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE;QACf,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;KAChB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;KACjB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,SAAS;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;SACb;KACF;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,GAAG;KACjB;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,SAAS;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;SACb;KACF;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE;YACV,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC;aAChB;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,SAAS;YACjB,UAAU,EAER,8PAA8P;YAChQ,SAAS,EAAE,GAAG;SACf;KACF;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,UAAU,EAER,yiBAAyiB;QAE3iB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,OAAO,EAAE,IAAI;QACb,UAAU,EAER,yiBAAyiB;QAE3iB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;KACf;IACD,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAC","file":"config.js","sourcesContent":["export enum DataZoomActiveTag {\n startHandler = 'startHandler',\n endHandler = 'endHandler',\n middleHandler = 'middleHandler',\n background = 'background'\n}\nexport const DEFAULT_DATA_ZOOM_ATTRIBUTES = {\n orient: 'bottom',\n showDetail: 'auto',\n brushSelect: true,\n backgroundStyle: {\n fill: 'white',\n stroke: '#D1DBEE',\n lineWidth: 1,\n cornerRadius: 2\n },\n dragMaskStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.2\n },\n backgroundChartStyle: {\n area: {\n visible: true,\n stroke: '#D1DBEE',\n lineWidth: 1,\n fill: '#F6F8FC'\n },\n line: {\n visible: true,\n stroke: '#D1DBEE',\n lineWidth: 1\n }\n },\n selectedBackgroundStyle: {\n fill: '#B0C8F9',\n fillOpacity: 0.5\n },\n selectedBackgroundChartStyle: {\n area: {\n visible: true,\n stroke: '#B0C8F9',\n lineWidth: 1,\n fill: '#fbb934'\n },\n line: {\n visible: true,\n stroke: '#fbb934',\n lineWidth: 1\n }\n },\n middleHandlerStyle: {\n visible: true,\n background: {\n size: 8,\n style: {\n fill: 'white',\n stroke: '#B0C8F9',\n cornerRadius: 2\n }\n },\n icon: {\n size: 6,\n fill: 'white',\n stroke: '#B0C8F9',\n symbolType:\n // eslint-disable-next-line max-len\n 'M 0.3 -0.5 C 0.41 -0.5 0.5 -0.41 0.5 -0.3 C 0.5 -0.3 0.5 0.3 0.5 0.3 C 0.5 0.41 0.41 0.5 0.3 0.5 C 0.3 0.5 -0.3 0.5 -0.3 0.5 C -0.41 0.5 -0.5 0.41 -0.5 0.3 C -0.5 0.3 -0.5 -0.3 -0.5 -0.3 C -0.5 -0.41 -0.41 -0.5 -0.3 -0.5 C -0.3 -0.5 0.3 -0.5 0.3 -0.5 Z',\n lineWidth: 0.5\n }\n },\n startHandlerStyle: {\n visible: true,\n symbolType:\n // eslint-disable-next-line max-len\n 'M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z',\n // size: 40,\n fill: 'white',\n stroke: '#B0C8F9',\n lineWidth: 0.5\n },\n endHandlerStyle: {\n visible: true,\n symbolType:\n // eslint-disable-next-line max-len\n 'M -0.0544 0.25 C -0.0742 0.25 -0.0901 0.234 -0.0901 0.2143 L -0.0901 -0.1786 C -0.0901 -0.1983 -0.0742 -0.2143 -0.0544 -0.2143 L -0.0187 -0.2143 L -0.0187 -0.5 L 0.017 -0.5 L 0.017 -0.2143 L 0.0527 -0.2143 C 0.0724 -0.2143 0.0884 -0.1983 0.0884 -0.1786 L 0.0884 0.2143 C 0.0884 0.234 0.0724 0.25 0.0527 0.25 L 0.017 0.25 L 0.017 0.5 L -0.0187 0.5 L -0.0187 0.25 L -0.0544 0.25 Z M -0.0187 -0.1429 L -0.0544 -0.1429 L -0.0544 0.1786 L -0.0187 0.1786 L -0.0187 -0.1429 Z M 0.0527 -0.1429 L 0.017 -0.1429 L 0.017 0.1786 L 0.0527 0.1786 L 0.0527 -0.1429 Z',\n // size: 40,\n fill: 'white',\n stroke: '#B0C8F9',\n lineWidth: 0.5\n },\n startTextStyle: {\n padding: 4,\n textStyle: {\n fontSize: 10,\n fill: '#6F6F6F'\n }\n },\n endTextStyle: {\n padding: 4,\n textStyle: {\n fontSize: 10,\n fill: '#6F6F6F'\n }\n }\n};\n"]}
@@ -69,12 +69,14 @@ export declare class DataZoom extends AbstractComponent<Required<DataZoomAttribu
69
69
  };
70
70
  };
71
71
  startHandlerStyle: {
72
+ visible: boolean;
72
73
  symbolType: string;
73
74
  fill: string;
74
75
  stroke: string;
75
76
  lineWidth: number;
76
77
  };
77
78
  endHandlerStyle: {
79
+ visible: boolean;
78
80
  symbolType: string;
79
81
  fill: string;
80
82
  stroke: string;
@@ -8,7 +8,7 @@ var __rest = this && this.__rest || function(s, e) {
8
8
  return t;
9
9
  };
10
10
 
11
- import { vglobal } from "@visactor/vrender";
11
+ import { global } from "@visactor/vrender";
12
12
 
13
13
  import { array, clamp, isFunction, isValid, merge } from "@visactor/vutils";
14
14
 
@@ -55,14 +55,15 @@ export class DataZoom extends AbstractComponent {
55
55
  end: this.state.end
56
56
  }), this._updateStateCallback && this._updateStateCallback(this.state.start, this.state.end));
57
57
  };
58
- const {start: start, end: end, size: size, orient: orient, showDetail: showDetail, position: position, previewData: previewData, previewCallbackX: previewCallbackX, previewCallbackY: previewCallbackY, previewCallbackX1: previewCallbackX1, previewCallbackY1: previewCallbackY1} = this.attribute, {width: width, height: height} = size;
58
+ const {start: start, end: end, size: size, orient: orient, showDetail: showDetail, position: position, previewData: previewData, previewCallbackX: previewCallbackX, previewCallbackY: previewCallbackY, previewCallbackX1: previewCallbackX1, previewCallbackY1: previewCallbackY1, updateStateCallback: updateStateCallback} = this.attribute, {width: width, height: height} = size;
59
59
  start && (this.state.start = start), end && (this.state.end = end), this._isHorizontal = "top" === orient || "bottom" === orient,
60
60
  this._layoutCache.max = this._isHorizontal ? width : height, this._layoutCache.attPos = this._isHorizontal ? "x" : "y",
61
61
  this._layoutCache.attSize = this._isHorizontal ? "width" : "height", this._activeCache.startPos = position,
62
62
  this._activeCache.lastPos = position, this._showText = "auto" !== showDetail && showDetail,
63
63
  previewData && (this._previewData = previewData), isFunction(previewCallbackX) && (this._previewCallbackX = previewCallbackX),
64
64
  isFunction(previewCallbackY) && (this._previewCallbackY = previewCallbackY), isFunction(previewCallbackX1) && (this._previewCallbackX1 = previewCallbackX1),
65
- isFunction(previewCallbackY1) && (this._previewCallbackY1 = previewCallbackY1);
65
+ isFunction(previewCallbackY1) && (this._previewCallbackY1 = previewCallbackY1),
66
+ isFunction(updateStateCallback) && (this._updateStateCallback = updateStateCallback);
66
67
  }
67
68
  bindEvents() {
68
69
  const {showDetail: showDetail, brushSelect: brushSelect} = this.attribute;
@@ -75,8 +76,8 @@ export class DataZoom extends AbstractComponent {
75
76
  brushSelect && this._background && this._background.addEventListener("pointerdown", (e => this._onHandlerPointerDown(e, "background"))),
76
77
  brushSelect && this._previewGroup && this._previewGroup.addEventListener("pointerdown", (e => this._onHandlerPointerDown(e, "background"))),
77
78
  this._selectedPreviewGroup && this._selectedPreviewGroup.addEventListener("pointerdown", (e => this._onHandlerPointerDown(e, selectedTag))),
78
- "browser" === vglobal.env && (vglobal.addEventListener("pointermove", this._onHandlerPointerMove.bind(this)),
79
- vglobal.addEventListener("pointerup", this._onHandlerPointerUp.bind(this))), this.addEventListener("pointermove", this._onHandlerPointerMove),
79
+ "browser" === global.env && (global.addEventListener("pointermove", this._onHandlerPointerMove.bind(this)),
80
+ global.addEventListener("pointerup", this._onHandlerPointerUp.bind(this))), this.addEventListener("pointermove", this._onHandlerPointerMove),
80
81
  this.addEventListener("pointerup", this._onHandlerPointerUp), this.addEventListener("pointerupoutside", this._onHandlerPointerUp),
81
82
  "auto" === showDetail && (this.addEventListener("pointerenter", this._onHandlerPointerEnter),
82
83
  this.addEventListener("pointerleave", this._onHandlerPointerLeave));
@@ -185,18 +186,27 @@ export class DataZoom extends AbstractComponent {
185
186
  }), `data-zoom-end-text-${position}`));
186
187
  }
187
188
  getLayoutAttrFromConfig() {
188
- var _a, _b;
189
+ var _a, _b, _c, _d;
189
190
  if (this._layoutAttrFromConfig) return this._layoutAttrFromConfig;
190
- const {position: positionConfig, size: size, orient: orient, middleHandlerStyle: middleHandlerStyle} = this.attribute, {width: widthConfig, height: heightConfig} = size, middleHandlerSize = null !== (_b = null === (_a = null == middleHandlerStyle ? void 0 : middleHandlerStyle.background) || void 0 === _a ? void 0 : _a.size) && void 0 !== _b ? _b : 10;
191
+ const {position: positionConfig, size: size, orient: orient, middleHandlerStyle: middleHandlerStyle, startHandlerStyle: startHandlerStyle, endHandlerStyle: endHandlerStyle} = this.attribute, {width: widthConfig, height: heightConfig} = size, middleHandlerSize = null !== (_b = null === (_a = null == middleHandlerStyle ? void 0 : middleHandlerStyle.background) || void 0 === _a ? void 0 : _a.size) && void 0 !== _b ? _b : 10;
191
192
  let width, height, position;
192
- return (null == middleHandlerStyle ? void 0 : middleHandlerStyle.visible) ? this._isHorizontal ? (width = widthConfig,
193
+ (null == middleHandlerStyle ? void 0 : middleHandlerStyle.visible) ? this._isHorizontal ? (width = widthConfig,
193
194
  height = heightConfig - middleHandlerSize, position = {
194
195
  x: positionConfig.x,
195
196
  y: positionConfig.y + middleHandlerSize
196
197
  }) : (width = widthConfig - middleHandlerSize, height = heightConfig, position = {
197
198
  x: positionConfig.x + ("left" === orient ? middleHandlerSize : 0),
198
199
  y: positionConfig.y
199
- }) : (width = widthConfig, height = heightConfig, position = positionConfig), this._layoutAttrFromConfig = {
200
+ }) : (width = widthConfig, height = heightConfig, position = positionConfig);
201
+ const startHandlerSize = null !== (_c = null == startHandlerStyle ? void 0 : startHandlerStyle.size) && void 0 !== _c ? _c : this._isHorizontal ? height : width, endHandlerSize = null !== (_d = null == endHandlerStyle ? void 0 : endHandlerStyle.size) && void 0 !== _d ? _d : this._isHorizontal ? height : width;
202
+ return (null == startHandlerStyle ? void 0 : startHandlerStyle.visible) && (this._isHorizontal ? (width -= (startHandlerSize + endHandlerSize) / 2,
203
+ position = {
204
+ x: position.x + startHandlerSize / 2,
205
+ y: position.y
206
+ }) : (height -= (startHandlerSize + endHandlerSize) / 2, position = {
207
+ x: position.x,
208
+ y: position.y + startHandlerSize
209
+ })), this._layoutAttrFromConfig = {
200
210
  position: position,
201
211
  width: width,
202
212
  height: height
@@ -364,7 +374,7 @@ export class DataZoom extends AbstractComponent {
364
374
  "line" === type ? this._selectedPreviewLine = this._selectedPreviewGroup.createOrUpdateChild("selectedPreviewLine", {}, "line") : this._selectedPreviewArea = this._selectedPreviewGroup.createOrUpdateChild("selectedPreviewArea", {
365
375
  curveType: "basis"
366
376
  }, "area");
367
- const {position: position, size: size, selectedBackgroundChartStyle: selectedBackgroundChartStyle} = this.attribute, {width: width, height: height} = size, {start: start, end: end} = this.state, {basePointStart: basePointStart, basePointEnd: basePointEnd} = this.computeBasePoints();
377
+ const {selectedBackgroundChartStyle: selectedBackgroundChartStyle} = this.attribute, {start: start, end: end} = this.state, {position: position, width: width, height: height} = this.getLayoutAttrFromConfig();
368
378
  this._selectedPreviewGroupClip.setAttributes({
369
379
  x: this._isHorizontal ? position.x + start * width : position.x,
370
380
  y: this._isHorizontal ? position.y : position.y + start * height,
@@ -397,10 +407,10 @@ export class DataZoom extends AbstractComponent {
397
407
  setStartAndEnd(start, end) {
398
408
  const {start: startAttr, end: endAttr} = this.attribute;
399
409
  isValid(start) && isValid(end) && (start !== this.state.start || end !== this.state.end) && (this.state.start = start,
400
- this.state.end = end, startAttr === this.state.start && endAttr === this.state.end || this.setAttributes({
410
+ this.state.end = end, startAttr === this.state.start && endAttr === this.state.end || (this.setAttributes({
401
411
  start: start,
402
412
  end: end
403
- }));
413
+ }), this._updateStateCallback && this._updateStateCallback(start, end)));
404
414
  }
405
415
  setPreviewData(data) {
406
416
  this._previewData = data;