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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/cjs/axis/circle.d.ts +2 -1
  2. package/cjs/axis/circle.js +2 -2
  3. package/cjs/axis/circle.js.map +1 -1
  4. package/cjs/axis/grid/base.js +2 -2
  5. package/cjs/axis/grid/base.js.map +1 -1
  6. package/cjs/axis/grid/circle.d.ts +2 -1
  7. package/cjs/axis/grid/circle.js +2 -2
  8. package/cjs/axis/grid/circle.js.map +1 -1
  9. package/cjs/axis/grid/line.d.ts +2 -1
  10. package/cjs/axis/grid/line.js +2 -3
  11. package/cjs/axis/grid/line.js.map +1 -1
  12. package/cjs/axis/line.d.ts +2 -1
  13. package/cjs/axis/line.js +2 -2
  14. package/cjs/axis/line.js.map +1 -1
  15. package/cjs/brush/brush.d.ts +2 -1
  16. package/cjs/brush/brush.js +3 -3
  17. package/cjs/brush/brush.js.map +1 -1
  18. package/cjs/checkbox/checkbox.d.ts +2 -1
  19. package/cjs/checkbox/checkbox.js +3 -3
  20. package/cjs/checkbox/checkbox.js.map +1 -1
  21. package/cjs/checkbox/index.js +1 -2
  22. package/cjs/core/base.d.ts +4 -2
  23. package/cjs/core/base.js +4 -2
  24. package/cjs/core/base.js.map +1 -1
  25. package/cjs/core/type.js +2 -1
  26. package/cjs/crosshair/circle.d.ts +2 -1
  27. package/cjs/crosshair/circle.js +2 -2
  28. package/cjs/crosshair/circle.js.map +1 -1
  29. package/cjs/crosshair/line.d.ts +2 -1
  30. package/cjs/crosshair/line.js +2 -2
  31. package/cjs/crosshair/line.js.map +1 -1
  32. package/cjs/crosshair/polygon.d.ts +2 -1
  33. package/cjs/crosshair/polygon.js +2 -2
  34. package/cjs/crosshair/polygon.js.map +1 -1
  35. package/cjs/crosshair/rect.d.ts +2 -1
  36. package/cjs/crosshair/rect.js +2 -2
  37. package/cjs/crosshair/rect.js.map +1 -1
  38. package/cjs/crosshair/sector.d.ts +2 -1
  39. package/cjs/crosshair/sector.js +2 -2
  40. package/cjs/crosshair/sector.js.map +1 -1
  41. package/cjs/data-zoom/data-zoom.d.ts +2 -1
  42. package/cjs/data-zoom/data-zoom.js +3 -3
  43. package/cjs/data-zoom/data-zoom.js.map +1 -1
  44. package/cjs/index.d.ts +1 -1
  45. package/cjs/index.js +1 -1
  46. package/cjs/index.js.map +1 -1
  47. package/cjs/interface.d.ts +4 -0
  48. package/cjs/interface.js.map +1 -1
  49. package/cjs/label/arc.d.ts +2 -1
  50. package/cjs/label/arc.js +3 -3
  51. package/cjs/label/arc.js.map +1 -1
  52. package/cjs/label/base.d.ts +2 -1
  53. package/cjs/label/base.js +3 -3
  54. package/cjs/label/base.js.map +1 -1
  55. package/cjs/label/dataLabel.d.ts +2 -1
  56. package/cjs/label/dataLabel.js +3 -2
  57. package/cjs/label/dataLabel.js.map +1 -1
  58. package/cjs/label/line-data.d.ts +2 -1
  59. package/cjs/label/line-data.js +3 -2
  60. package/cjs/label/line-data.js.map +1 -1
  61. package/cjs/label/line.d.ts +2 -1
  62. package/cjs/label/line.js +3 -2
  63. package/cjs/label/line.js.map +1 -1
  64. package/cjs/label/polygon.d.ts +2 -1
  65. package/cjs/label/polygon.js +3 -2
  66. package/cjs/label/polygon.js.map +1 -1
  67. package/cjs/label/rect.d.ts +2 -1
  68. package/cjs/label/rect.js +2 -2
  69. package/cjs/label/rect.js.map +1 -1
  70. package/cjs/label/symbol.d.ts +2 -1
  71. package/cjs/label/symbol.js +3 -2
  72. package/cjs/label/symbol.js.map +1 -1
  73. package/cjs/legend/color/color.d.ts +2 -1
  74. package/cjs/legend/color/color.js +2 -2
  75. package/cjs/legend/color/color.js.map +1 -1
  76. package/cjs/legend/discrete/discrete.d.ts +2 -1
  77. package/cjs/legend/discrete/discrete.js +4 -4
  78. package/cjs/legend/discrete/discrete.js.map +1 -1
  79. package/cjs/legend/size/size.d.ts +2 -2
  80. package/cjs/legend/size/size.js +2 -2
  81. package/cjs/legend/size/size.js.map +1 -1
  82. package/cjs/link-path/link-path.d.ts +2 -1
  83. package/cjs/link-path/link-path.js +2 -2
  84. package/cjs/link-path/link-path.js.map +1 -1
  85. package/cjs/marker/area.d.ts +2 -1
  86. package/cjs/marker/area.js +3 -2
  87. package/cjs/marker/area.js.map +1 -1
  88. package/cjs/marker/line.d.ts +2 -1
  89. package/cjs/marker/line.js +3 -2
  90. package/cjs/marker/line.js.map +1 -1
  91. package/cjs/marker/point.d.ts +2 -1
  92. package/cjs/marker/point.js +3 -2
  93. package/cjs/marker/point.js.map +1 -1
  94. package/cjs/pager/pager.d.ts +2 -1
  95. package/cjs/pager/pager.js +3 -3
  96. package/cjs/pager/pager.js.map +1 -1
  97. package/cjs/player/base-player.d.ts +2 -1
  98. package/cjs/player/base-player.js +3 -3
  99. package/cjs/player/base-player.js.map +1 -1
  100. package/cjs/player/controller/controller.d.ts +2 -1
  101. package/cjs/player/controller/controller.js +3 -3
  102. package/cjs/player/controller/controller.js.map +1 -1
  103. package/cjs/player/discrete-player.d.ts +2 -1
  104. package/cjs/player/discrete-player.js +3 -3
  105. package/cjs/player/discrete-player.js.map +1 -1
  106. package/cjs/poptip/poptip.d.ts +2 -1
  107. package/cjs/poptip/poptip.js +3 -3
  108. package/cjs/poptip/poptip.js.map +1 -1
  109. package/cjs/scrollbar/scrollbar.d.ts +2 -1
  110. package/cjs/scrollbar/scrollbar.js +3 -3
  111. package/cjs/scrollbar/scrollbar.js.map +1 -1
  112. package/cjs/segment/segment.d.ts +2 -1
  113. package/cjs/segment/segment.js +3 -2
  114. package/cjs/segment/segment.js.map +1 -1
  115. package/cjs/slider/slider.d.ts +2 -1
  116. package/cjs/slider/slider.js +5 -5
  117. package/cjs/slider/slider.js.map +1 -1
  118. package/cjs/tag/tag.d.ts +2 -1
  119. package/cjs/tag/tag.js +3 -2
  120. package/cjs/tag/tag.js.map +1 -1
  121. package/cjs/title/title.d.ts +2 -1
  122. package/cjs/title/title.js +3 -2
  123. package/cjs/title/title.js.map +1 -1
  124. package/cjs/tooltip/tooltip.d.ts +2 -1
  125. package/cjs/tooltip/tooltip.js +4 -3
  126. package/cjs/tooltip/tooltip.js.map +1 -1
  127. package/dist/index.js +644 -1758
  128. package/dist/index.min.js +1 -1
  129. package/es/axis/circle.d.ts +2 -1
  130. package/es/axis/circle.js +2 -2
  131. package/es/axis/circle.js.map +1 -1
  132. package/es/axis/grid/base.js +2 -2
  133. package/es/axis/grid/base.js.map +1 -1
  134. package/es/axis/grid/circle.d.ts +2 -1
  135. package/es/axis/grid/circle.js +2 -2
  136. package/es/axis/grid/circle.js.map +1 -1
  137. package/es/axis/grid/line.d.ts +2 -1
  138. package/es/axis/grid/line.js +2 -2
  139. package/es/axis/grid/line.js.map +1 -1
  140. package/es/axis/line.d.ts +2 -1
  141. package/es/axis/line.js +2 -2
  142. package/es/axis/line.js.map +1 -1
  143. package/es/brush/brush.d.ts +2 -1
  144. package/es/brush/brush.js +6 -6
  145. package/es/brush/brush.js.map +1 -1
  146. package/es/checkbox/checkbox.d.ts +2 -1
  147. package/es/checkbox/checkbox.js +3 -2
  148. package/es/checkbox/checkbox.js.map +1 -1
  149. package/es/checkbox/index.js +1 -2
  150. package/es/core/base.d.ts +4 -2
  151. package/es/core/base.js +4 -2
  152. package/es/core/base.js.map +1 -1
  153. package/es/core/type.js +2 -1
  154. package/es/crosshair/circle.d.ts +2 -1
  155. package/es/crosshair/circle.js +2 -2
  156. package/es/crosshair/circle.js.map +1 -1
  157. package/es/crosshair/line.d.ts +2 -1
  158. package/es/crosshair/line.js +2 -2
  159. package/es/crosshair/line.js.map +1 -1
  160. package/es/crosshair/polygon.d.ts +2 -1
  161. package/es/crosshair/polygon.js +2 -2
  162. package/es/crosshair/polygon.js.map +1 -1
  163. package/es/crosshair/rect.d.ts +2 -1
  164. package/es/crosshair/rect.js +2 -2
  165. package/es/crosshair/rect.js.map +1 -1
  166. package/es/crosshair/sector.d.ts +2 -1
  167. package/es/crosshair/sector.js +2 -2
  168. package/es/crosshair/sector.js.map +1 -1
  169. package/es/data-zoom/data-zoom.d.ts +2 -1
  170. package/es/data-zoom/data-zoom.js +3 -3
  171. package/es/data-zoom/data-zoom.js.map +1 -1
  172. package/es/index.d.ts +1 -1
  173. package/es/index.js +1 -1
  174. package/es/index.js.map +1 -1
  175. package/es/interface.d.ts +4 -0
  176. package/es/interface.js.map +1 -1
  177. package/es/label/arc.d.ts +2 -1
  178. package/es/label/arc.js +3 -3
  179. package/es/label/arc.js.map +1 -1
  180. package/es/label/base.d.ts +2 -1
  181. package/es/label/base.js +3 -3
  182. package/es/label/base.js.map +1 -1
  183. package/es/label/dataLabel.d.ts +2 -1
  184. package/es/label/dataLabel.js +3 -2
  185. package/es/label/dataLabel.js.map +1 -1
  186. package/es/label/line-data.d.ts +2 -1
  187. package/es/label/line-data.js +3 -2
  188. package/es/label/line-data.js.map +1 -1
  189. package/es/label/line.d.ts +2 -1
  190. package/es/label/line.js +3 -2
  191. package/es/label/line.js.map +1 -1
  192. package/es/label/polygon.d.ts +2 -1
  193. package/es/label/polygon.js +3 -2
  194. package/es/label/polygon.js.map +1 -1
  195. package/es/label/rect.d.ts +2 -1
  196. package/es/label/rect.js +2 -2
  197. package/es/label/rect.js.map +1 -1
  198. package/es/label/symbol.d.ts +2 -1
  199. package/es/label/symbol.js +3 -2
  200. package/es/label/symbol.js.map +1 -1
  201. package/es/legend/color/color.d.ts +2 -1
  202. package/es/legend/color/color.js +3 -3
  203. package/es/legend/color/color.js.map +1 -1
  204. package/es/legend/discrete/discrete.d.ts +2 -1
  205. package/es/legend/discrete/discrete.js +4 -4
  206. package/es/legend/discrete/discrete.js.map +1 -1
  207. package/es/legend/size/size.d.ts +2 -2
  208. package/es/legend/size/size.js +3 -3
  209. package/es/legend/size/size.js.map +1 -1
  210. package/es/link-path/link-path.d.ts +2 -1
  211. package/es/link-path/link-path.js +2 -2
  212. package/es/link-path/link-path.js.map +1 -1
  213. package/es/marker/area.d.ts +2 -1
  214. package/es/marker/area.js +3 -2
  215. package/es/marker/area.js.map +1 -1
  216. package/es/marker/line.d.ts +2 -1
  217. package/es/marker/line.js +3 -2
  218. package/es/marker/line.js.map +1 -1
  219. package/es/marker/point.d.ts +2 -1
  220. package/es/marker/point.js +3 -2
  221. package/es/marker/point.js.map +1 -1
  222. package/es/pager/pager.d.ts +2 -1
  223. package/es/pager/pager.js +3 -3
  224. package/es/pager/pager.js.map +1 -1
  225. package/es/player/base-player.d.ts +2 -1
  226. package/es/player/base-player.js +3 -3
  227. package/es/player/base-player.js.map +1 -1
  228. package/es/player/controller/controller.d.ts +2 -1
  229. package/es/player/controller/controller.js +3 -3
  230. package/es/player/controller/controller.js.map +1 -1
  231. package/es/player/discrete-player.d.ts +2 -1
  232. package/es/player/discrete-player.js +3 -2
  233. package/es/player/discrete-player.js.map +1 -1
  234. package/es/poptip/poptip.d.ts +2 -1
  235. package/es/poptip/poptip.js +3 -2
  236. package/es/poptip/poptip.js.map +1 -1
  237. package/es/scrollbar/scrollbar.d.ts +2 -1
  238. package/es/scrollbar/scrollbar.js +3 -3
  239. package/es/scrollbar/scrollbar.js.map +1 -1
  240. package/es/segment/segment.d.ts +2 -1
  241. package/es/segment/segment.js +3 -2
  242. package/es/segment/segment.js.map +1 -1
  243. package/es/slider/slider.d.ts +2 -1
  244. package/es/slider/slider.js +5 -5
  245. package/es/slider/slider.js.map +1 -1
  246. package/es/tag/tag.d.ts +2 -1
  247. package/es/tag/tag.js +3 -2
  248. package/es/tag/tag.js.map +1 -1
  249. package/es/title/title.d.ts +2 -1
  250. package/es/title/title.js +3 -2
  251. package/es/title/title.js.map +1 -1
  252. package/es/tooltip/tooltip.d.ts +2 -1
  253. package/es/tooltip/tooltip.js +5 -4
  254. package/es/tooltip/tooltip.js.map +1 -1
  255. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport type { FederatedPointerEvent, IGroup, IPolygon } from '@visactor/vrender-core';\nimport { createPolygon } from '@visactor/vrender-core';\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, DEFAULT_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 _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 if (this.attribute.disableTriggerEvent) {\n return;\n }\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener(trigger, this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.addEventListener(resetTrigger, 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 e.stopPropagation();\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 e.stopPropagation();\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 e.preventDefault();\n const { removeOnClick = true } = this.attribute as BrushAttributes;\n if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {\n this._container.incrementalClearChild();\n this._brushMaskAABBBoundsDict = {};\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._brushMaskAABBBoundsDict = {};\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 const { sizeThreshold = DEFAULT_SIZE_THRESHOLD, brushType } = this.attribute as BrushAttributes;\n\n const cacheLength = this._cacheDrawPoints.length;\n this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (cacheLength > 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 if (brushType === 'polygon' || cacheLength <= 1) {\n this._cacheDrawPoints.push(pos);\n } else {\n this._cacheDrawPoints[cacheLength - 1] = pos;\n }\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, hasMask } = this.attribute as BrushAttributes;\n const brushMask = createPolygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle,\n opacity: hasMask ? brushStyle.opacity ?? 1 : 0\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 releaseBrushEvents(): void {\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n this.stage.removeEventListener(trigger, this._onBrushStart as EventListener);\n this.stage.removeEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n this.stage.removeEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.removeEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport type { FederatedPointerEvent, IGroup, IPolygon } from '@visactor/vrender-core';\nimport { createPolygon } from '@visactor/vrender-core';\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, DEFAULT_SIZE_THRESHOLD } from './config';\nimport type { ComponentOptions } from '../interface';\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 _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, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Brush.defaultAttributes, attributes));\n }\n\n protected bindBrushEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener(trigger, this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.addEventListener(resetTrigger, 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 e.stopPropagation();\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 e.stopPropagation();\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 e.preventDefault();\n const { removeOnClick = true } = this.attribute as BrushAttributes;\n if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {\n this._container.incrementalClearChild();\n this._brushMaskAABBBoundsDict = {};\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._brushMaskAABBBoundsDict = {};\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 const { sizeThreshold = DEFAULT_SIZE_THRESHOLD, brushType } = this.attribute as BrushAttributes;\n\n const cacheLength = this._cacheDrawPoints.length;\n this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (cacheLength > 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 if (brushType === 'polygon' || cacheLength <= 1) {\n this._cacheDrawPoints.push(pos);\n } else {\n this._cacheDrawPoints[cacheLength - 1] = pos;\n }\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, hasMask } = this.attribute as BrushAttributes;\n const brushMask = createPolygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle,\n opacity: hasMask ? brushStyle.opacity ?? 1 : 0\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 releaseBrushEvents(): void {\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n this.stage.removeEventListener(trigger, this._onBrushStart as EventListener);\n this.stage.removeEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n this.stage.removeEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.removeEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n}\n"]}
@@ -1,13 +1,14 @@
1
1
  import { AbstractComponent } from '../core/base';
2
2
  import type { CheckboxAttributes } from './type';
3
3
  import { Image, Rect, WrapText } from '@visactor/vrender-core';
4
+ import type { ComponentOptions } from '../interface';
4
5
  export declare class CheckBox extends AbstractComponent<Required<CheckboxAttributes>> {
5
6
  static defaultAttributes: Partial<CheckboxAttributes>;
6
7
  _box: Rect;
7
8
  _checkIcon: Image;
8
9
  _indeterminateIcon: Image;
9
10
  _text: WrapText;
10
- constructor(attributes: CheckboxAttributes);
11
+ constructor(attributes: CheckboxAttributes, options?: ComponentOptions);
11
12
  render(): void;
12
13
  renderBox(): void;
13
14
  renderIcon(): void;
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), vrender_core_1 = require("@visactor/vrender-core"), checkSvg = '<svg width="200" height="200" viewBox="0 0 1024 1024" fill="#fff" xmlns="http://www.w3.org/2000/svg"><path d="M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z"></path></svg>', indeterminateSvg = '<svg width="200" height="200" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none"><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" d="M5 12h14"/></svg>';
8
8
 
9
9
  class CheckBox extends base_1.AbstractComponent {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, CheckBox.defaultAttributes, attributes)), this.renderGroup(),
12
- this.onBeforeAttributeUpdate = (val, attributes, key) => {
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, CheckBox.defaultAttributes, attributes)),
12
+ this.renderGroup(), this.onBeforeAttributeUpdate = (val, attributes, key) => {
13
13
  "interactive" in val && this.setAttribute("pickable", val.interactive), "disabled" in val && this.setAttribute("cursor", val.disable ? this.attribute.disableCursor : this.attribute.cursor);
14
14
  }, this.addEventListener("click", this.handleClick);
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { CheckboxAttributes } from './type';\nimport { CustomEvent, Image, Rect, WrapText } from '@visactor/vrender-core';\n\nconst checkSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 1024 1024\" fill=\"#fff\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z\"></path></svg>';\n\nconst indeterminateSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"5\" d=\"M5 12h14\"/></svg>';\n\nexport class CheckBox extends AbstractComponent<Required<CheckboxAttributes>> {\n static defaultAttributes: Partial<CheckboxAttributes> = {\n interactive: true,\n disabled: false,\n checked: false,\n indeterminate: false,\n cursor: 'pointer',\n disableCursor: 'not-allowed',\n spaceBetweenTextAndIcon: 8,\n text: {\n text: 'text',\n fontSize: 14,\n fill: '#000',\n disableFill: 'rgb(201,205,212)',\n textBaseline: 'top',\n pickable: false\n },\n icon: {\n checkIconImage: checkSvg,\n indeterminateIconImage: indeterminateSvg,\n width: 10,\n height: 10,\n pickable: false\n },\n box: {\n width: 14,\n height: 14,\n cornerRadius: 2,\n fill: '#fff',\n stroke: 'rgb(229,230,235)',\n disableFill: 'rgb(242,243,245)',\n checkedFill: 'rgb(22, 93, 255)',\n checkedStroke: 'rgb(22, 93, 255)',\n disableCheckedFill: 'rgb(148, 191, 255)',\n disableCheckedStroke: 'rgb(148, 191, 255)',\n pickable: false\n }\n };\n _box: Rect;\n _checkIcon: Image;\n _indeterminateIcon: Image;\n _text: WrapText;\n\n constructor(attributes: CheckboxAttributes) {\n super(merge({}, CheckBox.defaultAttributes, attributes));\n this.renderGroup();\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ('interactive' in val) {\n this.setAttribute('pickable', val.interactive);\n }\n if ('disabled' in val) {\n this.setAttribute('cursor', val.disable ? this.attribute.disableCursor : this.attribute.cursor);\n }\n return undefined;\n };\n\n this.addEventListener('click', this.handleClick);\n }\n\n render() {\n this.removeAllChild();\n\n this.renderBox();\n this.renderIcon();\n this.renderText();\n this.layout();\n }\n\n renderBox() {\n this._box = new Rect(merge({}, this.attribute.box));\n const isCheckedOrIndeterminate = this.attribute.checked || this.attribute.indeterminate;\n if (isCheckedOrIndeterminate && this.attribute.disabled) {\n this._box.setAttributes({\n fill: this.attribute.box.disableCheckedFill,\n stroke: this.attribute.box.disableCheckedStroke\n });\n } else if (isCheckedOrIndeterminate) {\n this._box.setAttributes({\n fill: this.attribute.box.checkedFill,\n stroke: this.attribute.box.checkedStroke\n });\n }\n this.appendChild(this._box);\n }\n\n renderIcon() {\n this._checkIcon = new Image(merge({ image: this.attribute.icon.checkIconImage }, this.attribute.icon));\n this.appendChild(this._checkIcon);\n this._indeterminateIcon = new Image(\n merge(\n {\n image: this.attribute.icon.indeterminateIconImage\n },\n this.attribute.icon\n )\n );\n this.appendChild(this._indeterminateIcon);\n\n if (this.attribute.checked) {\n this._checkIcon.setAttribute('visible', true);\n this._indeterminateIcon.setAttribute('visible', false);\n } else if (this.attribute.indeterminate) {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', true);\n } else {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', false);\n }\n }\n\n renderText() {\n this._text = new WrapText(merge({}, this.attribute.text));\n if (this.attribute.disabled) {\n this._text.setAttribute('fill', this.attribute.text.disableFill);\n }\n this.appendChild(this._text);\n }\n\n renderGroup() {\n if (!this.attribute.interactive) {\n this.setAttribute('pickable', false);\n }\n if (this.attribute.disabled) {\n this.setAttribute('cursor', this.attribute.disableCursor);\n }\n }\n\n layout() {\n const boxHeight = this.attribute.box.height;\n const iconHeight = this.attribute.icon.height;\n const textHeight = this._text.AABBBounds.height();\n const maxHeight = Math.max(boxHeight, iconHeight, textHeight);\n const boxY = maxHeight / 2 - boxHeight / 2;\n const iconY = maxHeight / 2 - iconHeight / 2;\n const textY = maxHeight / 2 - textHeight / 2;\n\n const boxWidth = this.attribute.box.width;\n const iconWidth = this.attribute.icon.width;\n const maxWidth = Math.max(boxWidth, iconWidth);\n const boxX = maxWidth / 2 - boxWidth / 2;\n const iconX = maxWidth / 2 - iconWidth / 2;\n const textX = maxWidth + this.attribute.spaceBetweenTextAndIcon;\n\n this._box.setAttributes({\n x: boxX,\n y: boxY\n });\n this._checkIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._indeterminateIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._text.setAttributes({\n x: textX,\n y: textY\n });\n }\n\n handleClick() {\n if (this.attribute.disabled) {\n return;\n } else if (this.attribute.checked) {\n this.setAttribute('checked', false);\n this.setAttribute('indeterminate', false);\n } else {\n this.setAttribute('checked', true);\n this.setAttribute('indeterminate', false);\n }\n const changeEvent = new CustomEvent('checkbox_state_change', {\n eventType: 'checkbox_state_change',\n checked: this.attribute.checked\n } as unknown) as any;\n changeEvent.manager = (this.stage as any)?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { CheckboxAttributes } from './type';\nimport { CustomEvent, Image, Rect, WrapText } from '@visactor/vrender-core';\nimport type { ComponentOptions } from '../interface';\n\nconst checkSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 1024 1024\" fill=\"#fff\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z\"></path></svg>';\n\nconst indeterminateSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"5\" d=\"M5 12h14\"/></svg>';\n\nexport class CheckBox extends AbstractComponent<Required<CheckboxAttributes>> {\n static defaultAttributes: Partial<CheckboxAttributes> = {\n interactive: true,\n disabled: false,\n checked: false,\n indeterminate: false,\n cursor: 'pointer',\n disableCursor: 'not-allowed',\n spaceBetweenTextAndIcon: 8,\n text: {\n text: 'text',\n fontSize: 14,\n fill: '#000',\n disableFill: 'rgb(201,205,212)',\n textBaseline: 'top',\n pickable: false\n },\n icon: {\n checkIconImage: checkSvg,\n indeterminateIconImage: indeterminateSvg,\n width: 10,\n height: 10,\n pickable: false\n },\n box: {\n width: 14,\n height: 14,\n cornerRadius: 2,\n fill: '#fff',\n stroke: 'rgb(229,230,235)',\n disableFill: 'rgb(242,243,245)',\n checkedFill: 'rgb(22, 93, 255)',\n checkedStroke: 'rgb(22, 93, 255)',\n disableCheckedFill: 'rgb(148, 191, 255)',\n disableCheckedStroke: 'rgb(148, 191, 255)',\n pickable: false\n }\n };\n _box: Rect;\n _checkIcon: Image;\n _indeterminateIcon: Image;\n _text: WrapText;\n\n constructor(attributes: CheckboxAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CheckBox.defaultAttributes, attributes));\n this.renderGroup();\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ('interactive' in val) {\n this.setAttribute('pickable', val.interactive);\n }\n if ('disabled' in val) {\n this.setAttribute('cursor', val.disable ? this.attribute.disableCursor : this.attribute.cursor);\n }\n return undefined;\n };\n\n this.addEventListener('click', this.handleClick);\n }\n\n render() {\n this.removeAllChild();\n\n this.renderBox();\n this.renderIcon();\n this.renderText();\n this.layout();\n }\n\n renderBox() {\n this._box = new Rect(merge({}, this.attribute.box));\n const isCheckedOrIndeterminate = this.attribute.checked || this.attribute.indeterminate;\n if (isCheckedOrIndeterminate && this.attribute.disabled) {\n this._box.setAttributes({\n fill: this.attribute.box.disableCheckedFill,\n stroke: this.attribute.box.disableCheckedStroke\n });\n } else if (isCheckedOrIndeterminate) {\n this._box.setAttributes({\n fill: this.attribute.box.checkedFill,\n stroke: this.attribute.box.checkedStroke\n });\n }\n this.appendChild(this._box);\n }\n\n renderIcon() {\n this._checkIcon = new Image(merge({ image: this.attribute.icon.checkIconImage }, this.attribute.icon));\n this.appendChild(this._checkIcon);\n this._indeterminateIcon = new Image(\n merge(\n {\n image: this.attribute.icon.indeterminateIconImage\n },\n this.attribute.icon\n )\n );\n this.appendChild(this._indeterminateIcon);\n\n if (this.attribute.checked) {\n this._checkIcon.setAttribute('visible', true);\n this._indeterminateIcon.setAttribute('visible', false);\n } else if (this.attribute.indeterminate) {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', true);\n } else {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', false);\n }\n }\n\n renderText() {\n this._text = new WrapText(merge({}, this.attribute.text));\n if (this.attribute.disabled) {\n this._text.setAttribute('fill', this.attribute.text.disableFill);\n }\n this.appendChild(this._text);\n }\n\n renderGroup() {\n if (!this.attribute.interactive) {\n this.setAttribute('pickable', false);\n }\n if (this.attribute.disabled) {\n this.setAttribute('cursor', this.attribute.disableCursor);\n }\n }\n\n layout() {\n const boxHeight = this.attribute.box.height;\n const iconHeight = this.attribute.icon.height;\n const textHeight = this._text.AABBBounds.height();\n const maxHeight = Math.max(boxHeight, iconHeight, textHeight);\n const boxY = maxHeight / 2 - boxHeight / 2;\n const iconY = maxHeight / 2 - iconHeight / 2;\n const textY = maxHeight / 2 - textHeight / 2;\n\n const boxWidth = this.attribute.box.width;\n const iconWidth = this.attribute.icon.width;\n const maxWidth = Math.max(boxWidth, iconWidth);\n const boxX = maxWidth / 2 - boxWidth / 2;\n const iconX = maxWidth / 2 - iconWidth / 2;\n const textX = maxWidth + this.attribute.spaceBetweenTextAndIcon;\n\n this._box.setAttributes({\n x: boxX,\n y: boxY\n });\n this._checkIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._indeterminateIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._text.setAttributes({\n x: textX,\n y: textY\n });\n }\n\n handleClick() {\n if (this.attribute.disabled) {\n return;\n } else if (this.attribute.checked) {\n this.setAttribute('checked', false);\n this.setAttribute('indeterminate', false);\n } else {\n this.setAttribute('checked', true);\n this.setAttribute('indeterminate', false);\n }\n const changeEvent = new CustomEvent('checkbox_state_change', {\n eventType: 'checkbox_state_change',\n checked: this.attribute.checked\n } as unknown) as any;\n changeEvent.manager = (this.stage as any)?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
@@ -17,5 +17,4 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), __exportStar(require("./checkbox"), exports), __exportStar(require("./type"), exports);
21
- //# sourceMappingURL=index.js.map
20
+ }), __exportStar(require("./checkbox"), exports), __exportStar(require("./type"), exports);
@@ -1,9 +1,11 @@
1
1
  import type { IGroupGraphicAttribute } from '@visactor/vrender-core';
2
2
  import { Group } from '@visactor/vrender-core';
3
+ import type { ComponentOptions } from '../interface';
3
4
  export declare abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {
4
5
  attribute: Partial<T>;
5
- protected mode: '2d' | '3d';
6
- constructor(attributes: T, mode?: '2d' | '3d');
6
+ protected mode?: '2d' | '3d';
7
+ protected skipDefault?: boolean;
8
+ constructor(attributes: T, options?: ComponentOptions);
7
9
  setAttribute(key: keyof T, value: any, forceUpdateTag?: boolean | undefined): void;
8
10
  setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined): void;
9
11
  protected _mergeAttributes(params: Partial<T>, keys?: (keyof T)[]): void;
package/cjs/core/base.js CHANGED
@@ -7,8 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), GROUP_ATTRIBUTES = [ "x", "y", "dx", "dy", "scaleX", "scaleY", "angle", "anchor", "postMatrix", "visible", "clip", "pickable", "childrenPickable", "zIndex", "cursor" ];
8
8
 
9
9
  class AbstractComponent extends vrender_core_1.Group {
10
- constructor(attributes, mode = "2d") {
11
- super(attributes), this.mode = mode, this.setTheme({
10
+ constructor(attributes, options) {
11
+ super(attributes), (null == options ? void 0 : options.mode) && (this.mode = options.mode,
12
+ this.setMode(options.mode)), (null == options ? void 0 : options.skipDefault) && (this.skipDefault = !0),
13
+ this.setTheme({
12
14
  common: {
13
15
  strokeBoundsBuffer: 0
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description 组件基类\n */\nimport type { IGroupGraphicAttribute } from '@visactor/vrender-core';\nimport { Group } from '@visactor/vrender-core';\nimport { merge, isFunction, isPlainObject, isNil } from '@visactor/vutils';\n\nconst GROUP_ATTRIBUTES = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'visible',\n 'clip',\n 'pickable',\n 'childrenPickable',\n 'zIndex',\n 'cursor'\n];\n\nexport abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {\n declare attribute: Partial<T>;\n\n protected mode: '2d' | '3d';\n\n constructor(attributes: T, mode: '2d' | '3d' = '2d') {\n super(attributes);\n this.mode = mode;\n // 组件需要精准 bounds,所以将这个 strokeBoundsBuffer 设置为 0,否则会影响包围盒的获取\n this.setTheme({\n common: {\n strokeBoundsBuffer: 0\n }\n });\n this.attribute = attributes;\n // 这里调用渲染和事件绑定逻辑\n this.onSetStage(() => {\n this.render();\n this.bindEvents();\n });\n }\n\n /**\n * @override\n * 更新单个属性值\n * @param key\n * @param value\n * @param forceUpdateTag\n */\n // @ts-ignore\n setAttribute(key: keyof T, value: any, forceUpdateTag?: boolean | undefined): void {\n // overwrite when previous or next attribute is function\n if (\n isPlainObject(this.attribute[key]) &&\n isPlainObject(value) &&\n !isFunction(this.attribute[key]) &&\n !isFunction(value)\n ) {\n merge(this.attribute[key], value);\n } else {\n this.attribute[key] = value;\n }\n\n // HACK: 待优化\n if (!GROUP_ATTRIBUTES.includes(key as string)) {\n this.render();\n }\n\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key as string))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n // @ts-ignore\n setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof T)[];\n this._mergeAttributes(params, keys);\n\n // HACK: 待优化\n if (!keys.every(key => GROUP_ATTRIBUTES.includes(key as string))) {\n this.render();\n }\n\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys as string[]))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n protected _mergeAttributes(params: Partial<T>, keys?: (keyof T)[]) {\n if (isNil(keys)) {\n keys = Object.keys(params) as (keyof T)[];\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof Partial<T>;\n // overwrite when previous or next attribute is function\n if (isPlainObject(this.attribute[key]) && !isFunction(this.attribute[key]) && !isFunction(params[key])) {\n merge(this.attribute[key], params[key]);\n } else {\n this.attribute[key] = params[key];\n }\n }\n }\n\n protected bindEvents() {\n // please override\n }\n\n protected abstract render(): void;\n\n // 图形元素 id\n protected _getNodeId(id: string) {\n return `${this.id}-${this.name}-${id}`;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description 组件基类\n */\nimport type { IGroupGraphicAttribute } from '@visactor/vrender-core';\nimport { Group } from '@visactor/vrender-core';\nimport { merge, isFunction, isPlainObject, isNil } from '@visactor/vutils';\nimport type { ComponentOptions } from '../interface';\n\nconst GROUP_ATTRIBUTES = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'visible',\n 'clip',\n 'pickable',\n 'childrenPickable',\n 'zIndex',\n 'cursor'\n];\n\nexport abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {\n declare attribute: Partial<T>;\n\n protected mode?: '2d' | '3d';\n\n protected skipDefault?: boolean;\n\n constructor(attributes: T, options?: ComponentOptions) {\n super(attributes);\n\n if (options?.mode) {\n this.mode = options.mode;\n\n this.setMode(options.mode);\n }\n\n if (options?.skipDefault) {\n this.skipDefault = true;\n }\n // 组件需要精准 bounds,所以将这个 strokeBoundsBuffer 设置为 0,否则会影响包围盒的获取\n this.setTheme({\n common: {\n strokeBoundsBuffer: 0\n }\n });\n this.attribute = attributes;\n // 这里调用渲染和事件绑定逻辑\n this.onSetStage(() => {\n this.render();\n this.bindEvents();\n });\n }\n\n /**\n * @override\n * 更新单个属性值\n * @param key\n * @param value\n * @param forceUpdateTag\n */\n // @ts-ignore\n setAttribute(key: keyof T, value: any, forceUpdateTag?: boolean | undefined): void {\n // overwrite when previous or next attribute is function\n if (\n isPlainObject(this.attribute[key]) &&\n isPlainObject(value) &&\n !isFunction(this.attribute[key]) &&\n !isFunction(value)\n ) {\n merge(this.attribute[key], value);\n } else {\n this.attribute[key] = value;\n }\n\n // HACK: 待优化\n if (!GROUP_ATTRIBUTES.includes(key as string)) {\n this.render();\n }\n\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key as string))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n // @ts-ignore\n setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof T)[];\n this._mergeAttributes(params, keys);\n\n // HACK: 待优化\n if (!keys.every(key => GROUP_ATTRIBUTES.includes(key as string))) {\n this.render();\n }\n\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys as string[]))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n protected _mergeAttributes(params: Partial<T>, keys?: (keyof T)[]) {\n if (isNil(keys)) {\n keys = Object.keys(params) as (keyof T)[];\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof Partial<T>;\n // overwrite when previous or next attribute is function\n if (isPlainObject(this.attribute[key]) && !isFunction(this.attribute[key]) && !isFunction(params[key])) {\n merge(this.attribute[key], params[key]);\n } else {\n this.attribute[key] = params[key];\n }\n }\n }\n\n protected bindEvents() {\n // please override\n }\n\n protected abstract render(): void;\n\n // 图形元素 id\n protected _getNodeId(id: string) {\n return `${this.id}-${this.name}-${id}`;\n }\n}\n"]}
package/cjs/core/type.js CHANGED
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
5
+ });
6
+ //# sourceMappingURL=type.js.map
@@ -2,6 +2,7 @@ import type { IGroup } from '@visactor/vrender-core';
2
2
  import type { PointLocationCfg } from '../core/type';
3
3
  import { CrosshairBase } from './base';
4
4
  import type { CircleCrosshairAttrs } from './type';
5
+ import type { ComponentOptions } from '../interface';
5
6
  export declare class CircleCrosshair extends CrosshairBase<CircleCrosshairAttrs> {
6
7
  static defaultAttributes: {
7
8
  lineStyle: {
@@ -10,7 +11,7 @@ export declare class CircleCrosshair extends CrosshairBase<CircleCrosshairAttrs>
10
11
  lineDash: number[];
11
12
  };
12
13
  };
13
- constructor(attributes: CircleCrosshairAttrs);
14
+ constructor(attributes: CircleCrosshairAttrs, options?: ComponentOptions);
14
15
  protected renderCrosshair(container: IGroup): import("@visactor/vrender-core").INode;
15
16
  setLocation(point: PointLocationCfg): void;
16
17
  }
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), base_1 = require("./base");
8
8
 
9
9
  class CircleCrosshair extends base_1.CrosshairBase {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, CircleCrosshair.defaultAttributes, attributes));
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, CircleCrosshair.defaultAttributes, attributes));
12
12
  }
13
13
  renderCrosshair(container) {
14
14
  const {center: center, radius: radius, lineStyle: lineStyle} = this.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/crosshair/circle.ts"],"names":[],"mappings":";;;AAIA,6CAAuD;AAEvD,iCAAuC;AAGvC,MAAa,eAAgB,SAAQ,oBAAmC;IAStE,YAAY,UAAgC;QAC1C,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAE7E,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAC1C,kBAAkB,8DAEb,MAAM,KACT,WAAW,EAAE,MAAM,KAEf,IAAI,CAAC,SAAiB,GACvB,SAAS,GAEd,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAC1D,MAAM,MAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AAnCH,0CAoCC;AAnCQ,iCAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACxC,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"circle.js","sourcesContent":["/**\n * @description circle 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, PointService } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { CircleCrosshairAttrs } from './type';\n\nexport class CircleCrosshair extends CrosshairBase<CircleCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: ['#b2bacf', false, false, false],\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: CircleCrosshairAttrs) {\n super(merge({}, CircleCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, lineStyle } = this.attribute as CircleCrosshairAttrs;\n\n const circle = container.createOrUpdateChild(\n 'crosshair-circle',\n {\n ...center,\n outerRadius: radius,\n // TODO: group的cornerRadius支持数组,arc的不支持数组,此处会有类型转换问题\n ...(this.attribute as any),\n ...lineStyle\n },\n 'arc'\n );\n return circle;\n }\n\n setLocation(point: PointLocationCfg) {\n const { center } = this.attribute as CircleCrosshairAttrs;\n const radius = PointService.distancePP(point, center);\n\n this.setAttribute('radius', radius);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/crosshair/circle.ts"],"names":[],"mappings":";;;AAIA,6CAAuD;AAEvD,iCAAuC;AAIvC,MAAa,eAAgB,SAAQ,oBAAmC;IAStE,YAAY,UAAgC,EAAE,OAA0B;QACtE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACtG,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAE7E,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAC1C,kBAAkB,8DAEb,MAAM,KACT,WAAW,EAAE,MAAM,KAEf,IAAI,CAAC,SAAiB,GACvB,SAAS,GAEd,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAC1D,MAAM,MAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AAnCH,0CAoCC;AAnCQ,iCAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACxC,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"circle.js","sourcesContent":["/**\n * @description circle 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, PointService } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { CircleCrosshairAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport class CircleCrosshair extends CrosshairBase<CircleCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: ['#b2bacf', false, false, false],\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: CircleCrosshairAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CircleCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, lineStyle } = this.attribute as CircleCrosshairAttrs;\n\n const circle = container.createOrUpdateChild(\n 'crosshair-circle',\n {\n ...center,\n outerRadius: radius,\n // TODO: group的cornerRadius支持数组,arc的不支持数组,此处会有类型转换问题\n ...(this.attribute as any),\n ...lineStyle\n },\n 'arc'\n );\n return circle;\n }\n\n setLocation(point: PointLocationCfg) {\n const { center } = this.attribute as CircleCrosshairAttrs;\n const radius = PointService.distancePP(point, center);\n\n this.setAttribute('radius', radius);\n }\n}\n"]}
@@ -2,6 +2,7 @@ import type { IGroup } from '@visactor/vrender-core';
2
2
  import type { RegionLocationCfg } from '../core/type';
3
3
  import { CrosshairBase } from './base';
4
4
  import type { LineCrosshairAttrs } from './type';
5
+ import type { ComponentOptions } from '../interface';
5
6
  export declare class LineCrosshair extends CrosshairBase<LineCrosshairAttrs> {
6
7
  static defaultAttributes: {
7
8
  lineStyle: {
@@ -10,7 +11,7 @@ export declare class LineCrosshair extends CrosshairBase<LineCrosshairAttrs> {
10
11
  lineDash: number[];
11
12
  };
12
13
  };
13
- constructor(attributes: LineCrosshairAttrs);
14
+ constructor(attributes: LineCrosshairAttrs, options?: ComponentOptions);
14
15
  protected renderCrosshair(container: IGroup): import("@visactor/vrender-core").INode;
15
16
  setLocation(region: RegionLocationCfg): void;
16
17
  }
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), base_1 = require("./base");
8
8
 
9
9
  class LineCrosshair extends base_1.CrosshairBase {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, LineCrosshair.defaultAttributes, attributes));
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, LineCrosshair.defaultAttributes, attributes));
12
12
  }
13
13
  renderCrosshair(container) {
14
14
  const {start: start, end: end, lineStyle: lineStyle} = this.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/crosshair/line.ts"],"names":[],"mappings":";;;AAIA,6CAAyC;AAEzC,iCAAuC;AAGvC,MAAa,aAAc,SAAQ,oBAAiC;IASlE,YAAY,UAA8B;QACxC,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAA+B,CAAC;QAEvE,MAAM,IAAI,GAAG,SAAS,CAAC,mBAAmB,CACxC,gBAAgB,kBAEd,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IACjB,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAyB;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC;YACjB,KAAK;YACL,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;;AAjCH,sCAkCC;AAjCQ,+BAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"line.js","sourcesContent":["/**\n * @description 直线类型 crosshair\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { RegionLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { LineCrosshairAttrs } from './type';\n\nexport class LineCrosshair extends CrosshairBase<LineCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: '#b2bacf',\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: LineCrosshairAttrs) {\n super(merge({}, LineCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { start, end, lineStyle } = this.attribute as LineCrosshairAttrs;\n\n const line = container.createOrUpdateChild(\n 'crosshair-line',\n {\n points: [start, end],\n ...lineStyle\n },\n 'line'\n );\n return line;\n }\n\n setLocation(region: RegionLocationCfg) {\n const { start, end } = region;\n this.setAttributes({\n start,\n end\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/crosshair/line.ts"],"names":[],"mappings":";;;AAIA,6CAAyC;AAEzC,iCAAuC;AAIvC,MAAa,aAAc,SAAQ,oBAAiC;IASlE,YAAY,UAA8B,EAAE,OAA0B;QACpE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACpG,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAA+B,CAAC;QAEvE,MAAM,IAAI,GAAG,SAAS,CAAC,mBAAmB,CACxC,gBAAgB,kBAEd,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IACjB,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAyB;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC;YACjB,KAAK;YACL,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;;AAjCH,sCAkCC;AAjCQ,+BAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"line.js","sourcesContent":["/**\n * @description 直线类型 crosshair\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { RegionLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { LineCrosshairAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport class LineCrosshair extends CrosshairBase<LineCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: '#b2bacf',\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: LineCrosshairAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LineCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { start, end, lineStyle } = this.attribute as LineCrosshairAttrs;\n\n const line = container.createOrUpdateChild(\n 'crosshair-line',\n {\n points: [start, end],\n ...lineStyle\n },\n 'line'\n );\n return line;\n }\n\n setLocation(region: RegionLocationCfg) {\n const { start, end } = region;\n this.setAttributes({\n start,\n end\n });\n }\n}\n"]}
@@ -2,6 +2,7 @@ import type { IGroup } from '@visactor/vrender-core';
2
2
  import type { PointLocationCfg } from '../core/type';
3
3
  import { CrosshairBase } from './base';
4
4
  import type { PolygonCrosshairAttrs } from './type';
5
+ import type { ComponentOptions } from '../interface';
5
6
  export declare class PolygonCrosshair extends CrosshairBase<PolygonCrosshairAttrs> {
6
7
  static defaultAttributes: {
7
8
  lineStyle: {
@@ -10,7 +11,7 @@ export declare class PolygonCrosshair extends CrosshairBase<PolygonCrosshairAttr
10
11
  lineDash: number[];
11
12
  };
12
13
  };
13
- constructor(attributes: PolygonCrosshairAttrs);
14
+ constructor(attributes: PolygonCrosshairAttrs, options?: ComponentOptions);
14
15
  protected renderCrosshair(container: IGroup): import("@visactor/vrender-core").INode;
15
16
  setLocation(point: PointLocationCfg): void;
16
17
  }
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), base_1 = require("./base");
8
8
 
9
9
  class PolygonCrosshair extends base_1.CrosshairBase {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, PolygonCrosshair.defaultAttributes, attributes));
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, PolygonCrosshair.defaultAttributes, attributes));
12
12
  }
13
13
  renderCrosshair(container) {
14
14
  const {center: center, radius: radius, sides: sides = 6, lineStyle: lineStyle} = this.attribute, {startAngle: startAngle, endAngle: endAngle} = this.attribute, isClose = (endAngle - startAngle) % (2 * Math.PI) == 0, eachAngle = (endAngle - startAngle) / sides;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/crosshair/polygon.ts"],"names":[],"mappings":";;;AAIA,6CAAyE;AAEzE,iCAAuC;AAGvC,MAAa,gBAAiB,SAAQ,oBAAoC;IASxE,YAAY,UAAiC;QAC3C,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAkC,CAAC;QACzF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhD,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;QAClD,IAAI,IAAI,CAAC;QACT,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAA,yBAAgB,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aACjC;iBAAM;gBACL,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aAClC;YACD,IAAI,KAAK,KAAK,KAAK,IAAI,OAAO,EAAE;gBAC9B,IAAI,IAAI,GAAG,CAAC;aACb;SACF;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAC3C,mBAAmB,kBAEjB,IAAI,IACD,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAkC,CAAC;QAC3D,MAAM,MAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AAjDH,4CAkDC;AAjDQ,kCAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"polygon.js","sourcesContent":["/**\n * @description polygon 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, polarToCartesian, PointService } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { PolygonCrosshairAttrs } from './type';\n\nexport class PolygonCrosshair extends CrosshairBase<PolygonCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: '#b2bacf',\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: PolygonCrosshairAttrs) {\n super(merge({}, PolygonCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, sides = 6, lineStyle } = this.attribute as PolygonCrosshairAttrs;\n const { startAngle, endAngle } = this.attribute;\n\n const isClose = (endAngle - startAngle) % (Math.PI * 2) === 0;\n const eachAngle = (endAngle - startAngle) / sides;\n let path;\n for (let index = 0; index <= sides; index++) {\n const angle = startAngle + eachAngle * index;\n const point = polarToCartesian(center, radius, angle);\n if (index === 0) {\n path = `M${point.x},${point.y}`;\n } else {\n path += `L${point.x},${point.y}`;\n }\n if (index === sides && isClose) {\n path += 'Z';\n }\n }\n\n const polygon = container.createOrUpdateChild(\n 'crosshair-polygon',\n {\n path,\n ...lineStyle\n },\n 'path'\n );\n return polygon;\n }\n\n setLocation(point: PointLocationCfg) {\n const { center } = this.attribute as PolygonCrosshairAttrs;\n const radius = PointService.distancePP(point, center);\n\n this.setAttribute('radius', radius);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/crosshair/polygon.ts"],"names":[],"mappings":";;;AAIA,6CAAyE;AAEzE,iCAAuC;AAIvC,MAAa,gBAAiB,SAAQ,oBAAoC;IASxE,YAAY,UAAiC,EAAE,OAA0B;QACvE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACvG,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAkC,CAAC;QACzF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhD,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;QAClD,IAAI,IAAI,CAAC;QACT,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAA,yBAAgB,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aACjC;iBAAM;gBACL,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aAClC;YACD,IAAI,KAAK,KAAK,KAAK,IAAI,OAAO,EAAE;gBAC9B,IAAI,IAAI,GAAG,CAAC;aACb;SACF;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAC3C,mBAAmB,kBAEjB,IAAI,IACD,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAkC,CAAC;QAC3D,MAAM,MAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AAjDH,4CAkDC;AAjDQ,kCAAiB,GAAG;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd;CACF,CAAC","file":"polygon.js","sourcesContent":["/**\n * @description polygon 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, polarToCartesian, PointService } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { CrosshairBase } from './base';\nimport type { PolygonCrosshairAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport class PolygonCrosshair extends CrosshairBase<PolygonCrosshairAttrs> {\n static defaultAttributes = {\n lineStyle: {\n stroke: '#b2bacf',\n lineWidth: 1,\n lineDash: [2]\n }\n };\n\n constructor(attributes: PolygonCrosshairAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, PolygonCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, sides = 6, lineStyle } = this.attribute as PolygonCrosshairAttrs;\n const { startAngle, endAngle } = this.attribute;\n\n const isClose = (endAngle - startAngle) % (Math.PI * 2) === 0;\n const eachAngle = (endAngle - startAngle) / sides;\n let path;\n for (let index = 0; index <= sides; index++) {\n const angle = startAngle + eachAngle * index;\n const point = polarToCartesian(center, radius, angle);\n if (index === 0) {\n path = `M${point.x},${point.y}`;\n } else {\n path += `L${point.x},${point.y}`;\n }\n if (index === sides && isClose) {\n path += 'Z';\n }\n }\n\n const polygon = container.createOrUpdateChild(\n 'crosshair-polygon',\n {\n path,\n ...lineStyle\n },\n 'path'\n );\n return polygon;\n }\n\n setLocation(point: PointLocationCfg) {\n const { center } = this.attribute as PolygonCrosshairAttrs;\n const radius = PointService.distancePP(point, center);\n\n this.setAttribute('radius', radius);\n }\n}\n"]}
@@ -3,6 +3,7 @@ import type { RegionLocationCfg } from '../core/type';
3
3
  import type { Tag } from '../tag';
4
4
  import { CrosshairBase } from './base';
5
5
  import type { RectCrosshairAttrs } from './type';
6
+ import type { ComponentOptions } from '../interface';
6
7
  export declare class RectCrosshair extends CrosshairBase<RectCrosshairAttrs> {
7
8
  static defaultAttributes: {
8
9
  rectStyle: {
@@ -14,7 +15,7 @@ export declare class RectCrosshair extends CrosshairBase<RectCrosshairAttrs> {
14
15
  protected bottomLabelShape?: Tag;
15
16
  protected leftLabelShape?: Tag;
16
17
  protected rightLabelShape?: Tag;
17
- constructor(attributes: RectCrosshairAttrs);
18
+ constructor(attributes: RectCrosshairAttrs, options?: ComponentOptions);
18
19
  protected renderCrosshair(container: IGroup): import("@visactor/vrender-core").INode;
19
20
  setLocation(region: RegionLocationCfg): void;
20
21
  }
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), base_1 = require("./base");
8
8
 
9
9
  class RectCrosshair extends base_1.CrosshairBase {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, RectCrosshair.defaultAttributes, attributes));
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, RectCrosshair.defaultAttributes, attributes));
12
12
  }
13
13
  renderCrosshair(container) {
14
14
  const {start: start, end: end, rectStyle: rectStyle} = this.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/crosshair/rect.ts"],"names":[],"mappings":";;;AAIA,6CAAyC;AAGzC,iCAAuC;AAGvC,MAAa,aAAc,SAAQ,oBAAiC;IAalE,YAAY,UAA8B;QACxC,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAA+B,CAAC;QAEvE,MAAM,IAAI,GAAG,SAAS,CAAC,mBAAmB,CACxC,gBAAgB,kBAEd,CAAC,EAAE,KAAK,CAAC,CAAC,EACV,CAAC,EAAE,KAAK,CAAC,CAAC,EACV,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IACpB,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAyB;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC;YACjB,KAAK;YACL,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;;AAxCH,sCAyCC;AAxCQ,+BAAiB,GAAG;IACzB,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;KACb;CACF,CAAC","file":"rect.js","sourcesContent":["/**\n * @description 矩形类型 crosshair\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { RegionLocationCfg } from '../core/type';\nimport type { Tag } from '../tag';\nimport { CrosshairBase } from './base';\nimport type { RectCrosshairAttrs } from './type';\n\nexport class RectCrosshair extends CrosshairBase<RectCrosshairAttrs> {\n static defaultAttributes = {\n rectStyle: {\n fill: '#b2bacf',\n opacity: 0.2\n }\n };\n\n protected topLabelShape?: Tag;\n protected bottomLabelShape?: Tag;\n protected leftLabelShape?: Tag;\n protected rightLabelShape?: Tag;\n\n constructor(attributes: RectCrosshairAttrs) {\n super(merge({}, RectCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { start, end, rectStyle } = this.attribute as RectCrosshairAttrs;\n\n const rect = container.createOrUpdateChild(\n 'crosshair-rect',\n {\n x: start.x,\n y: start.y,\n width: end.x - start.x,\n height: end.y - start.y,\n ...rectStyle\n },\n 'rect'\n );\n return rect;\n }\n\n setLocation(region: RegionLocationCfg) {\n const { start, end } = region;\n this.setAttributes({\n start,\n end\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/crosshair/rect.ts"],"names":[],"mappings":";;;AAIA,6CAAyC;AAGzC,iCAAuC;AAIvC,MAAa,aAAc,SAAQ,oBAAiC;IAalE,YAAY,UAA8B,EAAE,OAA0B;QACpE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACpG,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAA+B,CAAC;QAEvE,MAAM,IAAI,GAAG,SAAS,CAAC,mBAAmB,CACxC,gBAAgB,kBAEd,CAAC,EAAE,KAAK,CAAC,CAAC,EACV,CAAC,EAAE,KAAK,CAAC,CAAC,EACV,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IACpB,SAAS,GAEd,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAyB;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC;YACjB,KAAK;YACL,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;;AAxCH,sCAyCC;AAxCQ,+BAAiB,GAAG;IACzB,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;KACb;CACF,CAAC","file":"rect.js","sourcesContent":["/**\n * @description 矩形类型 crosshair\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { RegionLocationCfg } from '../core/type';\nimport type { Tag } from '../tag';\nimport { CrosshairBase } from './base';\nimport type { RectCrosshairAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport class RectCrosshair extends CrosshairBase<RectCrosshairAttrs> {\n static defaultAttributes = {\n rectStyle: {\n fill: '#b2bacf',\n opacity: 0.2\n }\n };\n\n protected topLabelShape?: Tag;\n protected bottomLabelShape?: Tag;\n protected leftLabelShape?: Tag;\n protected rightLabelShape?: Tag;\n\n constructor(attributes: RectCrosshairAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, RectCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { start, end, rectStyle } = this.attribute as RectCrosshairAttrs;\n\n const rect = container.createOrUpdateChild(\n 'crosshair-rect',\n {\n x: start.x,\n y: start.y,\n width: end.x - start.x,\n height: end.y - start.y,\n ...rectStyle\n },\n 'rect'\n );\n return rect;\n }\n\n setLocation(region: RegionLocationCfg) {\n const { start, end } = region;\n this.setAttributes({\n start,\n end\n });\n }\n}\n"]}
@@ -2,6 +2,7 @@ import type { IGroup } from '@visactor/vrender-core';
2
2
  import type { PointLocationCfg } from '../core/type';
3
3
  import { CrosshairBase } from './base';
4
4
  import type { SectorCrosshairAttrs } from './type';
5
+ import type { ComponentOptions } from '../interface';
5
6
  export declare class SectorCrosshair extends CrosshairBase<SectorCrosshairAttrs> {
6
7
  static defaultAttributes: {
7
8
  sectorStyle: {
@@ -9,7 +10,7 @@ export declare class SectorCrosshair extends CrosshairBase<SectorCrosshairAttrs>
9
10
  opacity: number;
10
11
  };
11
12
  };
12
- constructor(attributes: SectorCrosshairAttrs);
13
+ constructor(attributes: SectorCrosshairAttrs, options?: ComponentOptions);
13
14
  protected renderCrosshair(container: IGroup): import("@visactor/vrender-core").INode;
14
15
  setLocation(point: PointLocationCfg): void;
15
16
  }
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vutils_1 = require("@visactor/vutils"), constant_1 = require("../constant"), base_1 = require("./base");
8
8
 
9
9
  class SectorCrosshair extends base_1.CrosshairBase {
10
- constructor(attributes) {
11
- super((0, vutils_1.merge)({}, SectorCrosshair.defaultAttributes, attributes));
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, SectorCrosshair.defaultAttributes, attributes));
12
12
  }
13
13
  renderCrosshair(container) {
14
14
  const {center: center, radius: radius, innerRadius: innerRadius = 0, sectorStyle: sectorStyle} = this.attribute, {startAngle: startAngle, endAngle: endAngle} = this.attribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/crosshair/sector.ts"],"names":[],"mappings":";;;AAIA,6CAA0E;AAE1E,0CAAiE;AACjE,iCAAuC;AAGvC,MAAa,eAAgB,SAAQ,oBAAmC;IAQtE,YAAY,UAAgC;QAC1C,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAChG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAChD,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAC1C,kBAAkB,gDAEb,MAAM,KACT,WAAW,EAAE,MAAM,EACnB,WAAW;YACX,UAAU;YACV,QAAQ,KACL,WAAW,GAEhB,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EACJ,MAAM,EACN,UAAU,GAAG,4BAAiB,EAC9B,QAAQ,GAAG,0BAAe,EAC3B,GAAG,IAAI,CAAC,SAAiC,CAAC;QAC3C,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAA,uBAAc,EAAC,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC;YACjB,UAAU,EAAE,UAAU,GAAG,WAAW,GAAG,CAAC;YACxC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;;AA1CH,0CA2CC;AA1CQ,iCAAiB,GAAG;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;KACb;CACF,CAAC","file":"sector.js","sourcesContent":["/**\n * @description sector 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, getAngleByPoint, radianToDegree } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { POLAR_END_ANGLE, POLAR_START_ANGLE } from '../constant';\nimport { CrosshairBase } from './base';\nimport type { SectorCrosshairAttrs } from './type';\n\nexport class SectorCrosshair extends CrosshairBase<SectorCrosshairAttrs> {\n static defaultAttributes = {\n sectorStyle: {\n fill: '#b2bacf',\n opacity: 0.2\n }\n };\n\n constructor(attributes: SectorCrosshairAttrs) {\n super(merge({}, SectorCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, innerRadius = 0, sectorStyle } = this.attribute as SectorCrosshairAttrs;\n const { startAngle, endAngle } = this.attribute;\n const circle = container.createOrUpdateChild(\n 'crosshair-sector',\n {\n ...center,\n outerRadius: radius,\n innerRadius,\n startAngle,\n endAngle,\n ...sectorStyle\n },\n 'arc'\n );\n return circle;\n }\n\n setLocation(point: PointLocationCfg) {\n const {\n center,\n startAngle = POLAR_START_ANGLE,\n endAngle = POLAR_END_ANGLE\n } = this.attribute as SectorCrosshairAttrs;\n const sectorAngle = endAngle - startAngle;\n const pointAngle = radianToDegree(getAngleByPoint(center, point));\n this.setAttributes({\n startAngle: pointAngle - sectorAngle / 2,\n endAngle: pointAngle + sectorAngle / 2\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/crosshair/sector.ts"],"names":[],"mappings":";;;AAIA,6CAA0E;AAE1E,0CAAiE;AACjE,iCAAuC;AAIvC,MAAa,eAAgB,SAAQ,oBAAmC;IAQtE,YAAY,UAAgC,EAAE,OAA0B;QACtE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IACtG,CAAC;IAES,eAAe,CAAC,SAAiB;QACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAiC,CAAC;QAChG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAChD,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAC1C,kBAAkB,gDAEb,MAAM,KACT,WAAW,EAAE,MAAM,EACnB,WAAW;YACX,UAAU;YACV,QAAQ,KACL,WAAW,GAEhB,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,EACJ,MAAM,EACN,UAAU,GAAG,4BAAiB,EAC9B,QAAQ,GAAG,0BAAe,EAC3B,GAAG,IAAI,CAAC,SAAiC,CAAC;QAC3C,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAA,uBAAc,EAAC,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC;YACjB,UAAU,EAAE,UAAU,GAAG,WAAW,GAAG,CAAC;YACxC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;;AA1CH,0CA2CC;AA1CQ,iCAAiB,GAAG;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;KACb;CACF,CAAC","file":"sector.js","sourcesContent":["/**\n * @description sector 类型 crosshair,用于极坐标系下\n */\nimport type { IGroup } from '@visactor/vrender-core';\nimport { merge, getAngleByPoint, radianToDegree } from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { POLAR_END_ANGLE, POLAR_START_ANGLE } from '../constant';\nimport { CrosshairBase } from './base';\nimport type { SectorCrosshairAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport class SectorCrosshair extends CrosshairBase<SectorCrosshairAttrs> {\n static defaultAttributes = {\n sectorStyle: {\n fill: '#b2bacf',\n opacity: 0.2\n }\n };\n\n constructor(attributes: SectorCrosshairAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, SectorCrosshair.defaultAttributes, attributes));\n }\n\n protected renderCrosshair(container: IGroup) {\n const { center, radius, innerRadius = 0, sectorStyle } = this.attribute as SectorCrosshairAttrs;\n const { startAngle, endAngle } = this.attribute;\n const circle = container.createOrUpdateChild(\n 'crosshair-sector',\n {\n ...center,\n outerRadius: radius,\n innerRadius,\n startAngle,\n endAngle,\n ...sectorStyle\n },\n 'arc'\n );\n return circle;\n }\n\n setLocation(point: PointLocationCfg) {\n const {\n center,\n startAngle = POLAR_START_ANGLE,\n endAngle = POLAR_END_ANGLE\n } = this.attribute as SectorCrosshairAttrs;\n const sectorAngle = endAngle - startAngle;\n const pointAngle = radianToDegree(getAngleByPoint(center, point));\n this.setAttributes({\n startAngle: pointAngle - sectorAngle / 2,\n endAngle: pointAngle + sectorAngle / 2\n });\n }\n}\n"]}
@@ -4,6 +4,7 @@ import { AbstractComponent } from '../core/base';
4
4
  import type { TagAttributes } from '../tag';
5
5
  import { Tag } from '../tag';
6
6
  import type { DataZoomAttributes } from './type';
7
+ import type { ComponentOptions } from '../interface';
7
8
  export declare class DataZoom extends AbstractComponent<Required<DataZoomAttributes>> {
8
9
  name: string;
9
10
  static defaultAttributes: {
@@ -149,7 +150,7 @@ export declare class DataZoom extends AbstractComponent<Required<DataZoomAttribu
149
150
  private _updateStateCallback;
150
151
  private _statePointToData;
151
152
  private _layoutAttrFromConfig;
152
- constructor(attributes: DataZoomAttributes);
153
+ constructor(attributes: DataZoomAttributes, options?: ComponentOptions);
153
154
  protected bindEvents(): void;
154
155
  protected dragMaskSize(): number;
155
156
  protected setStateAttr(start: number, end: number, shouldRender: boolean): void;
@@ -20,9 +20,9 @@ const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@v
20
20
  };
21
21
 
22
22
  class DataZoom extends base_1.AbstractComponent {
23
- constructor(attributes) {
24
- super((0, vutils_1.merge)({}, DataZoom.defaultAttributes, attributes)), this.name = "dataZoom",
25
- this._previewData = [], this._activeState = !1, this._activeCache = {
23
+ constructor(attributes, options) {
24
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, DataZoom.defaultAttributes, attributes)),
25
+ this.name = "dataZoom", this._previewData = [], this._activeState = !1, this._activeCache = {
26
26
  startPos: {
27
27
  x: 0,
28
28
  y: 0