@visactor/vchart 1.13.5-vstory.3 → 1.13.6-alpha.0

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 (192) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +5715 -6456
  3. package/build/index.js +5724 -6455
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart.js +6 -8
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/index.js +2 -1
  9. package/cjs/compile/compilable-base.js +1 -2
  10. package/cjs/component/brush/brush.js +7 -3
  11. package/cjs/component/brush/brush.js.map +1 -1
  12. package/cjs/component/crosshair/base.d.ts +23 -34
  13. package/cjs/component/crosshair/base.js +90 -6
  14. package/cjs/component/crosshair/base.js.map +1 -1
  15. package/cjs/component/crosshair/cartesian.d.ts +5 -28
  16. package/cjs/component/crosshair/cartesian.js +72 -170
  17. package/cjs/component/crosshair/cartesian.js.map +1 -1
  18. package/cjs/component/crosshair/interface/common.d.ts +67 -2
  19. package/cjs/component/crosshair/interface/common.js.map +1 -1
  20. package/cjs/component/crosshair/interface/index.d.ts +0 -2
  21. package/cjs/component/crosshair/interface/index.js +0 -1
  22. package/cjs/component/crosshair/interface/index.js.map +1 -1
  23. package/cjs/component/crosshair/interface/spec.d.ts +8 -4
  24. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  25. package/cjs/component/crosshair/polar.d.ts +6 -22
  26. package/cjs/component/crosshair/polar.js +78 -143
  27. package/cjs/component/crosshair/polar.js.map +1 -1
  28. package/cjs/component/crosshair/utils/cartesian.d.ts +5 -26
  29. package/cjs/component/crosshair/utils/cartesian.js +86 -174
  30. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  31. package/cjs/component/crosshair/utils/polar.d.ts +18 -11
  32. package/cjs/component/crosshair/utils/polar.js +72 -117
  33. package/cjs/component/crosshair/utils/polar.js.map +1 -1
  34. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
  35. package/cjs/component/data-zoom/data-filter-base-component.js +8 -7
  36. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  37. package/cjs/component/data-zoom/data-zoom/data-zoom.js +2 -2
  38. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  39. package/cjs/component/data-zoom/interface.d.ts +11 -0
  40. package/cjs/component/data-zoom/interface.js.map +1 -1
  41. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
  42. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +7 -10
  43. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  44. package/cjs/component/label/interface.d.ts +2 -0
  45. package/cjs/component/label/interface.js.map +1 -1
  46. package/cjs/component/label/label.d.ts +2 -0
  47. package/cjs/component/label/label.js +15 -1
  48. package/cjs/component/label/label.js.map +1 -1
  49. package/cjs/component/tooltip/processor/mark-tooltip.js +13 -1
  50. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  51. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  52. package/cjs/component/tooltip/tooltip.js +5 -4
  53. package/cjs/component/tooltip/tooltip.js.map +1 -1
  54. package/cjs/core/index.d.ts +2 -2
  55. package/cjs/core/index.js +42 -2
  56. package/cjs/core/index.js.map +1 -1
  57. package/cjs/data/transforms/waterfall.d.ts +1 -0
  58. package/cjs/data/transforms/waterfall.js +1 -1
  59. package/cjs/data/transforms/waterfall.js.map +1 -1
  60. package/cjs/event/index.d.ts +1 -0
  61. package/cjs/event/index.js +16 -1
  62. package/cjs/event/index.js.map +1 -1
  63. package/cjs/interaction/zoom/zoomable.d.ts +1 -0
  64. package/cjs/interaction/zoom/zoomable.js +4 -3
  65. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  66. package/cjs/plugin/components/axis-sync/tick-align-transform.js +10 -5
  67. package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  68. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  69. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  70. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
  71. package/cjs/plugin/components/tooltip-handler/utils/position.js +23 -11
  72. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  73. package/cjs/plugin/components/tooltip-handler/utils/style.js +2 -1
  74. package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  75. package/cjs/scale/global-scale.js +2 -1
  76. package/cjs/scale/global-scale.js.map +1 -1
  77. package/cjs/series/area/area.js +3 -1
  78. package/cjs/series/area/area.js.map +1 -1
  79. package/cjs/series/funnel/funnel.js +1 -1
  80. package/cjs/series/funnel/funnel.js.map +1 -1
  81. package/cjs/series/pictogram/pictogram.d.ts +2 -0
  82. package/cjs/series/pictogram/pictogram.js +7 -4
  83. package/cjs/series/pictogram/pictogram.js.map +1 -1
  84. package/cjs/series/progress/circular/circular.js +5 -0
  85. package/cjs/series/progress/circular/circular.js.map +1 -1
  86. package/cjs/series/sunburst/sunburst.js.map +1 -1
  87. package/cjs/series/waterfall/waterfall.js +4 -2
  88. package/cjs/series/waterfall/waterfall.js.map +1 -1
  89. package/cjs/typings/visual.d.ts +7 -0
  90. package/cjs/typings/visual.js.map +1 -1
  91. package/cjs/util/scale.js +1 -1
  92. package/cjs/util/scale.js.map +1 -1
  93. package/esm/chart/base/base-chart.js +6 -8
  94. package/esm/chart/base/base-chart.js.map +1 -1
  95. package/esm/chart/index.js +2 -1
  96. package/esm/compile/compilable-base.js +1 -2
  97. package/esm/component/brush/brush.js +7 -3
  98. package/esm/component/brush/brush.js.map +1 -1
  99. package/esm/component/crosshair/base.d.ts +23 -34
  100. package/esm/component/crosshair/base.js +95 -5
  101. package/esm/component/crosshair/base.js.map +1 -1
  102. package/esm/component/crosshair/cartesian.d.ts +5 -28
  103. package/esm/component/crosshair/cartesian.js +73 -174
  104. package/esm/component/crosshair/cartesian.js.map +1 -1
  105. package/esm/component/crosshair/interface/common.d.ts +67 -2
  106. package/esm/component/crosshair/interface/common.js.map +1 -1
  107. package/esm/component/crosshair/interface/index.d.ts +0 -2
  108. package/esm/component/crosshair/interface/index.js +0 -4
  109. package/esm/component/crosshair/interface/index.js.map +1 -1
  110. package/esm/component/crosshair/interface/spec.d.ts +8 -4
  111. package/esm/component/crosshair/interface/spec.js.map +1 -1
  112. package/esm/component/crosshair/polar.d.ts +6 -22
  113. package/esm/component/crosshair/polar.js +75 -146
  114. package/esm/component/crosshair/polar.js.map +1 -1
  115. package/esm/component/crosshair/utils/cartesian.d.ts +5 -26
  116. package/esm/component/crosshair/utils/cartesian.js +81 -166
  117. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  118. package/esm/component/crosshair/utils/polar.d.ts +18 -11
  119. package/esm/component/crosshair/utils/polar.js +67 -112
  120. package/esm/component/crosshair/utils/polar.js.map +1 -1
  121. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
  122. package/esm/component/data-zoom/data-filter-base-component.js +8 -7
  123. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  124. package/esm/component/data-zoom/data-zoom/data-zoom.js +2 -2
  125. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  126. package/esm/component/data-zoom/interface.d.ts +11 -0
  127. package/esm/component/data-zoom/interface.js.map +1 -1
  128. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
  129. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +8 -9
  130. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  131. package/esm/component/label/interface.d.ts +2 -0
  132. package/esm/component/label/interface.js.map +1 -1
  133. package/esm/component/label/label.d.ts +2 -0
  134. package/esm/component/label/label.js +14 -1
  135. package/esm/component/label/label.js.map +1 -1
  136. package/esm/component/tooltip/processor/mark-tooltip.js +13 -1
  137. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  138. package/esm/component/tooltip/tooltip.d.ts +1 -0
  139. package/esm/component/tooltip/tooltip.js +5 -4
  140. package/esm/component/tooltip/tooltip.js.map +1 -1
  141. package/esm/core/index.d.ts +2 -2
  142. package/esm/core/index.js +2 -2
  143. package/esm/core/index.js.map +1 -1
  144. package/esm/data/transforms/waterfall.d.ts +1 -0
  145. package/esm/data/transforms/waterfall.js +1 -1
  146. package/esm/data/transforms/waterfall.js.map +1 -1
  147. package/esm/event/index.d.ts +1 -0
  148. package/esm/event/index.js +2 -0
  149. package/esm/event/index.js.map +1 -1
  150. package/esm/interaction/zoom/zoomable.d.ts +1 -0
  151. package/esm/interaction/zoom/zoomable.js +4 -3
  152. package/esm/interaction/zoom/zoomable.js.map +1 -1
  153. package/esm/plugin/components/axis-sync/tick-align-transform.js +7 -5
  154. package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  155. package/esm/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  156. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  157. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
  158. package/esm/plugin/components/tooltip-handler/utils/position.js +23 -10
  159. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  160. package/esm/plugin/components/tooltip-handler/utils/style.js +2 -1
  161. package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  162. package/esm/scale/global-scale.js +2 -1
  163. package/esm/scale/global-scale.js.map +1 -1
  164. package/esm/series/area/area.js +4 -0
  165. package/esm/series/area/area.js.map +1 -1
  166. package/esm/series/funnel/funnel.js +1 -1
  167. package/esm/series/funnel/funnel.js.map +1 -1
  168. package/esm/series/pictogram/pictogram.d.ts +2 -0
  169. package/esm/series/pictogram/pictogram.js +7 -4
  170. package/esm/series/pictogram/pictogram.js.map +1 -1
  171. package/esm/series/progress/circular/circular.js +6 -1
  172. package/esm/series/progress/circular/circular.js.map +1 -1
  173. package/esm/series/sunburst/sunburst.js.map +1 -1
  174. package/esm/series/waterfall/waterfall.js +4 -2
  175. package/esm/series/waterfall/waterfall.js.map +1 -1
  176. package/esm/typings/visual.d.ts +7 -0
  177. package/esm/typings/visual.js.map +1 -1
  178. package/esm/util/scale.js +1 -1
  179. package/esm/util/scale.js.map +1 -1
  180. package/package.json +18 -18
  181. package/cjs/component/crosshair/interface/cartesian.d.ts +0 -33
  182. package/cjs/component/crosshair/interface/cartesian.js +0 -6
  183. package/cjs/component/crosshair/interface/cartesian.js.map +0 -1
  184. package/cjs/component/crosshair/interface/polar.d.ts +0 -25
  185. package/cjs/component/crosshair/interface/polar.js +0 -6
  186. package/cjs/component/crosshair/interface/polar.js.map +0 -1
  187. package/esm/component/crosshair/interface/cartesian.d.ts +0 -33
  188. package/esm/component/crosshair/interface/cartesian.js +0 -2
  189. package/esm/component/crosshair/interface/cartesian.js.map +0 -1
  190. package/esm/component/crosshair/interface/polar.d.ts +0 -25
  191. package/esm/component/crosshair/interface/polar.js +0 -2
  192. package/esm/component/crosshair/interface/polar.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPolarSeries } from '../../series/interface/series';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { AxisCurrentValueMap, IPolarCrosshairInfo, IPolarCrosshairSpec } from './interface';\nimport { isDiscrete } from '@visactor/vscale';\nimport { Tag } from '@visactor/vrender-components';\nimport { LineCrosshair, SectorCrosshair, CircleCrosshair, PolygonCrosshair } from '@visactor/vrender-components';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport type { IAxisInfo, IHair, IHairRadius } from './base';\nimport { BaseCrossHair } from './base';\nimport type { Maybe } from '@visactor/vutils';\nimport { polarToCartesian, PointService, isArray, isNil } from '@visactor/vutils';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport { angleLabelOrientAttribute, radiusLabelOrientAttribute } from '../../util/math';\nimport { limitTagInBounds } from './utils';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutAngleCrosshair, layoutRadiusCrosshair } from './utils/polar';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\n\nexport class PolarCrossHair<T extends IPolarCrosshairSpec = IPolarCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.polarCrosshair;\n type = ComponentTypeEnum.polarCrosshair;\n name: string = ComponentTypeEnum.polarCrosshair;\n private _currValueAngle: AxisCurrentValueMap;\n private _currValueRadius: AxisCurrentValueMap;\n\n private _angleHair: IHair | undefined;\n private _radiusHair: IHairRadius | undefined;\n\n private _cacheAngleCrossHairInfo: IPolarCrosshairInfo | undefined;\n private _cacheRadiusCrossHairInfo: IPolarCrosshairInfo | undefined;\n\n private _radiusCrosshair: IGroup;\n private _radiusLabelCrosshair: Tag;\n private _angleCrosshair: IGroup;\n private _angleLabelCrosshair: Tag;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IPolarCrosshairSpec>(chartSpec, this.specKey, this.type, (s: IPolarCrosshairSpec) => {\n return (s.categoryField && s.categoryField.visible !== false) || (s.valueField && s.valueField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._currValueAngle = new Map();\n this._currValueRadius = new Map();\n }\n\n protected _showDefaultCrosshairBySpec() {\n const { categoryField, valueField } = this._spec as IPolarCrosshairSpec;\n if (categoryField?.visible && categoryField.defaultSelect) {\n const { axisIndex, datum } = categoryField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.VERTICAL);\n }\n if (valueField?.visible && valueField.defaultSelect) {\n const { axisIndex, datum } = valueField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.HORIZONTAL);\n }\n }\n\n private _defaultCrosshair(axisIndex: number, datum: StringOrNumber, tag: number) {\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IPolarAxis;\n if (!axis) {\n return;\n }\n // 横轴\n if (tag === LayoutType.VERTICAL) {\n this._currValueAngle.clear();\n // 根据数值拿到对应的坐标点\n const polarCoord = {\n angle: axis.valueToPosition(datum),\n radius: axis.getOuterRadius()\n };\n const canvasPosition = axis.coordToPoint(polarCoord);\n this._currValueAngle.set(axisIndex, this._getValueByAxis(axis, canvasPosition));\n } else {\n this._currValueRadius.clear();\n // 根据数值拿到对应的坐标点\n const polarCoord = {\n angle: axis.startAngle,\n radius: axis.valueToPosition(datum)\n };\n const canvasPosition = axis.coordToPoint(polarCoord);\n this._currValueRadius.set(axisIndex, this._getValueByAxis(axis, canvasPosition));\n }\n this.layoutByValue(LayoutType.ALL);\n }\n\n hide() {\n this._radiusCrosshair && this._radiusCrosshair.hideAll();\n this._radiusLabelCrosshair && this._radiusLabelCrosshair.hideAll();\n this._angleCrosshair && this._angleCrosshair.hideAll();\n this._angleLabelCrosshair && this._angleLabelCrosshair.hideAll();\n }\n\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const angleAxisMap = this._getAxisInfoByField<IPolarAxis>('category');\n const radiusAxisMap = this._getAxisInfoByField<IPolarAxis>('value');\n return {\n angleAxisMap: this._filterAxisByPoint<IPolarAxis>(angleAxisMap, relativeX, relativeY),\n radiusAxisMap: this._filterAxisByPoint<IPolarAxis>(radiusAxisMap, relativeX, relativeY)\n };\n }\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n private _getAllAxisValues(axisMap: IAxisInfo<IPolarAxis>, point: IPoint, currValue: AxisCurrentValueMap): boolean {\n // 首先不能存在两个离散轴\n let discrete = false;\n axisMap.forEach(item => {\n if (isDiscrete(item.axis.getScale().type)) {\n if (!discrete) {\n discrete = true;\n } else {\n this.enable = false;\n }\n }\n });\n if (!this.enable) {\n return false;\n }\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currValue.set(id, this._getValueByAxis(axis, point));\n });\n return true;\n }\n\n private _getValueByAxis(axis: IPolarAxis, point: IPoint) {\n const { x: axisStartX, y: axisStartY } = axis.getLayoutStartPoint();\n const { x, y } = this.getLayoutStartPoint();\n const value = axis.positionToData({\n x: point.x - (axisStartX - x),\n y: point.y - (axisStartY - y)\n });\n\n const center = {\n x: axis.getCenter().x + this.getLayoutStartPoint().x,\n y: axis.getCenter().y + this.getLayoutStartPoint().y\n };\n\n return {\n value,\n axis,\n center,\n innerRadius: axis.getInnerRadius(),\n radius: axis.getOuterRadius(),\n startAngle: axis.startAngle,\n endAngle: axis.endAngle,\n distance: PointService.distancePP(point, axis.getCenter()),\n coord: axis.pointToCoord(point),\n point\n };\n }\n\n protected _layoutCrosshair(\n relativeX: number,\n relativeY: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ) {\n let x = relativeX;\n let y = relativeY;\n\n if (tooltipData && tooltipData.length) {\n if (activeType === 'dimension') {\n const dimensionInfo = (tooltipData as IDimensionInfo[])[0];\n\n if (dimensionInfo.axis) {\n const triggerCoord = (dimensionInfo.axis as IPolarAxis).pointToCoord({ x, y });\n const isRadius = dimensionInfo.axis.getOrient() === 'radius';\n const coord = isRadius\n ? {\n radius: dimensionInfo.position,\n angle: triggerCoord.angle\n }\n : {\n radius: triggerCoord.radius,\n angle: dimensionInfo.position\n };\n const uniformPos = (dimensionInfo.axis as IPolarAxis).coordToPoint(coord);\n x = uniformPos.x;\n y = uniformPos.y;\n }\n } else if (activeType === 'mark') {\n const dimensionData = (tooltipData as IDimensionData[])[0];\n const pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n\n x = pos.x;\n y = pos.y;\n }\n }\n\n // 找到所有的包含这个点的轴\n const { angleAxisMap, radiusAxisMap } = this._findAllAxisContains(x, y);\n if (angleAxisMap.size === 0 && radiusAxisMap.size === 0) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n // 删除之前的currValue\n this._currValueAngle.clear();\n this._currValueRadius.clear();\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n angleAxisMap && this._getAllAxisValues(angleAxisMap, { x, y }, this._currValueAngle);\n radiusAxisMap && this._getAllAxisValues(radiusAxisMap, { x, y }, this._currValueRadius);\n\n this.layoutByValue(LayoutType.ALL);\n }\n\n layoutByValue(tag: number = LayoutType.ALL) {\n if (!this.enable) {\n return;\n }\n const series = getFirstSeries(this._regions, 'polar') as IPolarSeries;\n if (!series) {\n return;\n }\n\n const { angle, radius } = layoutByValue(\n series,\n this._currValueAngle,\n this._currValueRadius,\n this._angleHair,\n this._radiusHair,\n this.enableRemain,\n this._cacheAngleCrossHairInfo,\n this._cacheRadiusCrossHairInfo\n );\n\n if (this.enableRemain) {\n this._cacheAngleCrossHairInfo = { ...angle, _isCache: true };\n this._cacheRadiusCrossHairInfo = { ...radius, _isCache: true };\n }\n\n if (tag) {\n LayoutType.HORIZONTAL && this._layoutRadius(radius);\n LayoutType.VERTICAL && this._layoutAngle(angle);\n }\n }\n\n private _layoutAngle(crosshairInfo: IPolarCrosshairInfo) {\n if (crosshairInfo._isCache && this.enableRemain) {\n return;\n }\n\n const container = this.getContainer();\n const { angle, radius, label, center, visible } = crosshairInfo;\n if (visible) {\n const crosshairType = this._angleHair.type === 'rect' ? 'sector' : 'line';\n const positionAttrs = layoutAngleCrosshair(this._angleHair, crosshairInfo);\n\n if (this._angleCrosshair) {\n this._angleCrosshair.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n // 创建\n if (crosshairType === 'line') {\n crosshair = new LineCrosshair({\n ...(positionAttrs as { start: IPoint; end: IPoint }),\n lineStyle: this._angleHair.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n } else if (crosshairType === 'sector') {\n crosshair = new SectorCrosshair({\n ...(positionAttrs as {\n center: IPoint;\n innerRadius: number;\n radius: number;\n startAngle: number;\n endAngle: number;\n }),\n sectorStyle: this._angleHair.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n }\n this._angleCrosshair = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n // 文本\n if (label.visible) {\n const orient = angleLabelOrientAttribute(angle);\n const labelAttrs = {\n ...polarToCartesian(center, radius + label.offset, angle),\n ...this._angleHair.label,\n ...label,\n textStyle: {\n ...this._angleHair.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(this._angleLabelCrosshair, labelAttrs, label => {\n label.name = 'crosshair-angle-label';\n this._angleLabelCrosshair = label;\n });\n } else {\n this._angleLabelCrosshair && this._angleLabelCrosshair.hideAll();\n }\n }\n }\n\n private _layoutRadius(crosshairInfo: IPolarCrosshairInfo) {\n if (crosshairInfo._isCache && this.enableRemain) {\n return;\n }\n\n const { center, startAngle, label, visible } = crosshairInfo;\n const container = this.getContainer();\n if (visible) {\n const crosshairType = this._radiusHair.smooth ? 'circle' : 'polygon';\n const positionAttrs = layoutRadiusCrosshair(this._radiusHair, crosshairInfo);\n const polygonRadius = positionAttrs.radius;\n\n if (this._radiusCrosshair) {\n this._radiusCrosshair.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n if (crosshairType === 'polygon') {\n crosshair = new PolygonCrosshair({\n ...positionAttrs,\n lineStyle: this._radiusHair.style,\n zIndex: this.gridZIndex + 1 // 样式优化:线盖在面上\n });\n } else {\n crosshair = new CircleCrosshair({\n ...positionAttrs,\n lineStyle: this._radiusHair.style,\n zIndex: this.gridZIndex\n });\n }\n this._radiusCrosshair = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n // 文本\n if (label.visible) {\n const orient = radiusLabelOrientAttribute(startAngle);\n const labelAttrs = {\n ...polarToCartesian(center, polygonRadius, startAngle),\n ...this._radiusHair.label,\n ...label,\n textStyle: {\n ...this._radiusHair.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(this._radiusLabelCrosshair, labelAttrs, label => {\n label.name = 'crosshair-radius-label';\n this._radiusLabelCrosshair = label;\n });\n } else {\n this._radiusLabelCrosshair && this._radiusLabelCrosshair.hideAll();\n }\n }\n }\n\n protected _parseFieldInfo() {\n const { categoryField, valueField } = this._spec as IPolarCrosshairSpec;\n if (categoryField && categoryField.visible) {\n this._angleHair = this._parseField(categoryField, 'categoryField');\n }\n if (valueField && valueField.visible) {\n this._radiusHair = this._parseField(valueField, 'valueField');\n this._radiusHair.smooth = valueField?.line?.smooth;\n }\n }\n\n private _updateCrosshairLabel(label: Tag, labelAttrs: any, callback: (label: Tag) => void) {\n // 文本\n const container = this.getContainer();\n if (label) {\n label.setAttributes(labelAttrs);\n } else {\n label = new Tag(labelAttrs);\n container?.add(label as unknown as INode);\n callback(label);\n }\n limitTagInBounds(label, this._getLimitBounds());\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [\n this._radiusCrosshair,\n this._radiusLabelCrosshair,\n this._angleCrosshair,\n this._angleLabelCrosshair\n ] as unknown as IGroup[];\n }\n}\n\nexport const registerPolarCrossHair = () => {\n Factory.registerComponent(PolarCrossHair.type, PolarCrossHair);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/polar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGjH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,MAAM,OAAO,cAAoE,SAAQ,aAAgB;IAOvG,MAAM,CAAC,WAAW,CAAC,SAAc;QAC/B,OAAO,WAAW,CAAsB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAsB,EAAE,EAAE;YACrG,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAVvB,SAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC;QACxC,SAAI,GAAW,iBAAiB,CAAC,cAAc,CAAC;QAW9C,IAAI,CAAC,aAAa,GAAG;YACnB,aAAa,EAAE;gBACb,QAAQ,EAAE,OAAO;gBACjB,cAAc,EAAE,QAAQ;gBACxB,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,UAAU,EAAE;oBACV,GAAG,EAAE,IAAI;iBACV;aACF;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE,QAAQ;gBAClB,cAAc,EAAE,OAAO;gBACvB,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,UAAU,EAAE;oBACV,GAAG,EAAE,IAAI;iBACV;aACF;SACF,CAAC;IACJ,CAAC;IAKD,YAAY,CAAC,KAAqB,EAAE,IAAW;QAC7C,IAAK,IAAI,CAAC,SAAS,EAAkC,KAAK,QAAQ,EAAE;YAClE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBAClE,KAAK;gBACL,IAAI;aACL,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrE,KAAK;gBACL,IAAI;aACL,CAAC,CAAC;SACJ;IACH,CAAC;IAMO,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAa,UAAU,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAa,OAAO,CAAC,CAAC;QACpE,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAa,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;YACrF,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAa,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;SACxF,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,IAAgB,EAAE,KAAa;QACxD,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAChC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YAC7B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAES,gBAAgB,CACxB,SAAiB,EACjB,SAAiB,EACjB,WAAyB,EACzB,UAA8B;QAE9B,IAAI,CAAC,GAAG,SAAS,CAAC;QAClB,IAAI,CAAC,GAAG,SAAS,CAAC;QAElB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;YACrC,IAAI,UAAU,KAAK,WAAW,EAAE;gBAC9B,MAAM,aAAa,GAAI,WAAgC,CAAC,CAAC,CAAC,CAAC;gBAE3D,IAAI,aAAa,CAAC,IAAI,EAAE;oBACtB,MAAM,YAAY,GAAI,aAAa,CAAC,IAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,QAAQ,CAAC;oBAC7D,MAAM,KAAK,GAAG,QAAQ;wBACpB,CAAC,CAAC;4BACE,MAAM,EAAE,aAAa,CAAC,QAAQ;4BAC9B,KAAK,EAAE,YAAY,CAAC,KAAK;yBAC1B;wBACH,CAAC,CAAC;4BACE,MAAM,EAAE,YAAY,CAAC,MAAM;4BAC3B,KAAK,EAAE,aAAa,CAAC,QAAQ;yBAC9B,CAAC;oBACN,MAAM,UAAU,GAAI,aAAa,CAAC,IAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1E,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBACjB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;iBAClB;aACF;iBAAM,IAAI,UAAU,KAAK,MAAM,EAAE;gBAChC,MAAM,aAAa,GAAI,WAAgC,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACV,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACX;SACF;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAGtB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;YACvD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO;aACR;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO;SACR;QAGD,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAChF,aAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAE/E,IAAI,CAAC,aAAa,GAAgB,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,OAA4B;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAiB,CAAC;QACtE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,SAAiB;;QACtC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrG,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;YAC3D,OAAO;SACR;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QAC9D,IAAI,OAAO,EAAE;YACX,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,0CAAE,IAAI,0CAAE,MAAM,CAAC;YACnD,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAE/F,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,aAAa,CAAC,aAA+B,CAAC,CAAC;aAC9D;iBAAM;gBACL,IAAI,SAAS,CAAC;gBAEd,IAAI,QAAQ,KAAK,OAAO,EAAE;oBACxB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;oBAErE,IAAI,aAAa,KAAK,MAAM,EAAE;wBAC5B,SAAS,GAAG,IAAI,aAAa,iCACvB,aAAgD,KACpD,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,QAAQ,EAAE,KAAK,IACf,CAAC;qBACJ;yBAAM,IAAI,aAAa,KAAK,QAAQ,EAAE;wBACrC,SAAS,GAAG,IAAI,eAAe,iCACzB,aAMF,KACF,WAAW,EAAE,UAAU,CAAC,KAAK,EAC7B,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,QAAQ,EAAE,KAAK,IACf,CAAC;qBACJ;iBACF;qBAAM;oBACL,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;oBAEpD,IAAI,aAAa,KAAK,SAAS,EAAE;wBAC/B,SAAS,GAAG,IAAI,gBAAgB,iCAC1B,aAAuC,KAC3C,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,IAC3B,CAAC;qBACJ;yBAAM;wBACL,SAAS,GAAG,IAAI,eAAe,iCACzB,aAAsC,KAC1C,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,IACvB,CAAC;qBACJ;iBACF;gBACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa,GAAG,SAA8B,CAAC;gBAE7E,SAAS,CAAC,GAAG,CAAC,SAA6B,CAAC,CAAC;aAC9C;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;YAEzB,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,MAAM,UAAU,GAAI,IAAmB,CAAC,SAAS,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG;oBACb,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;oBACpC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;iBACrC,CAAC;gBACF,MAAM,MAAM,GACV,QAAQ,KAAK,OAAO;oBAClB,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;oBAClC,CAAC,CAAC,0BAA0B,CAAE,IAAmB,CAAC,UAAU,CAAC,CAAC;gBAClE,MAAM,KAAK,GACT,QAAQ,KAAK,OAAO;oBAClB,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;oBAC9D,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAG,IAAmB,CAAC,UAAU,CAAC,CAAC;gBAEtF,MAAM,UAAU,+DACX,KAAK,GACL,UAAU,CAAC,KAAK,GAChB,KAAK,KACR,SAAS,kCACJ,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,KAC9B,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,YAAY,EAAE,MAAM,CAAC,QAAQ,KAE/B,MAAM,EAAE,IAAI,CAAC,WAAW,GACzB,CAAC;gBACF,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE;oBAC7D,KAAK,CAAC,IAAI,GAAG,aAAa,QAAQ,QAAQ,CAAC;oBAC3C,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC5C;SACF;IACH,CAAC;;AA1PM,sBAAO,GAAG,WAAW,CAAC;AAEtB,mBAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC;AA2PjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACjE,CAAC,CAAC","file":"polar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPolarSeries } from '../../series/interface/series';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IPolarCrosshairSpec } from './interface';\nimport type { PolygonCrosshairAttrs, CircleCrosshairAttrs } from '@visactor/vrender-components';\nimport { LineCrosshair, SectorCrosshair, CircleCrosshair, PolygonCrosshair } from '@visactor/vrender-components';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IPoint, IPolarOrientType, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { BaseCrossHair } from './base';\nimport type { Maybe } from '@visactor/vutils';\nimport { polarToCartesian } from '@visactor/vutils';\nimport type { IGroup, INode } from '@visactor/vrender-core';\nimport { angleLabelOrientAttribute, radiusLabelOrientAttribute } from '../../util/math';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutCrosshair } from './utils/polar';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\nimport type { IAxis } from '../axis';\n\nexport class PolarCrossHair<T extends IPolarCrosshairSpec = IPolarCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.polarCrosshair;\n type = ComponentTypeEnum.polarCrosshair;\n name: string = ComponentTypeEnum.polarCrosshair;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IPolarCrosshairSpec>(chartSpec, this.specKey, this.type, (s: IPolarCrosshairSpec) => {\n return (s.categoryField && s.categoryField.visible !== false) || (s.valueField && s.valueField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n\n this._stateByField = {\n categoryField: {\n coordKey: 'angle',\n anotherAxisKey: 'radius',\n currentValue: new Map(),\n labelsComp: {\n all: null\n }\n },\n valueField: {\n coordKey: 'radius',\n anotherAxisKey: 'angle',\n currentValue: new Map(),\n labelsComp: {\n all: null\n }\n }\n };\n }\n\n /**\n * set axis value of crosshair\n */\n setAxisValue(datum: StringOrNumber, axis: IAxis) {\n if ((axis.getOrient() as unknown as IPolarOrientType) === 'radius') {\n this._stateByField.valueField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n } else {\n this._stateByField.categoryField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n }\n }\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const angleAxisMap = this._getAxisInfoByField<IPolarAxis>('category');\n const radiusAxisMap = this._getAxisInfoByField<IPolarAxis>('value');\n return {\n angleAxisMap: this._filterAxisByPoint<IPolarAxis>(angleAxisMap, relativeX, relativeY),\n radiusAxisMap: this._filterAxisByPoint<IPolarAxis>(radiusAxisMap, relativeX, relativeY)\n };\n }\n\n protected _getDatumAtPoint(axis: IPolarAxis, point: IPoint) {\n const { x: axisStartX, y: axisStartY } = axis.getLayoutStartPoint();\n const { x, y } = this.getLayoutStartPoint();\n const datum = axis.positionToData({\n x: point.x - (axisStartX - x),\n y: point.y - (axisStartY - y)\n });\n\n return datum;\n }\n\n protected _layoutCrosshair(\n relativeX: number,\n relativeY: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ) {\n let x = relativeX;\n let y = relativeY;\n\n if (tooltipData && tooltipData.length) {\n if (activeType === 'dimension') {\n const dimensionInfo = (tooltipData as IDimensionInfo[])[0];\n\n if (dimensionInfo.axis) {\n const triggerCoord = (dimensionInfo.axis as IPolarAxis).pointToCoord({ x, y });\n const isRadius = dimensionInfo.axis.getOrient() === 'radius';\n const coord = isRadius\n ? {\n radius: dimensionInfo.position,\n angle: triggerCoord.angle\n }\n : {\n radius: triggerCoord.radius,\n angle: dimensionInfo.position\n };\n const uniformPos = (dimensionInfo.axis as IPolarAxis).coordToPoint(coord);\n x = uniformPos.x;\n y = uniformPos.y;\n }\n } else if (activeType === 'mark') {\n const dimensionData = (tooltipData as IDimensionData[])[0];\n const pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n\n x = pos.x;\n y = pos.y;\n }\n }\n // 删除之前的currValue\n this.clearAxisValue();\n\n // 找到所有的包含这个点的轴\n const { angleAxisMap, radiusAxisMap } = this._findAllAxisContains(x, y);\n if (angleAxisMap.size === 0 && radiusAxisMap.size === 0) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n angleAxisMap && this._setAllAxisValues(angleAxisMap, { x, y }, 'categoryField');\n radiusAxisMap && this._setAllAxisValues(radiusAxisMap, { x, y }, 'valueField');\n\n this.layoutByValue(LayoutType.ALL);\n }\n\n layoutByValue(tag: number = LayoutType.ALL) {\n if (!this.enable) {\n return;\n }\n const series = getFirstSeries(this._regions, 'polar') as IPolarSeries;\n if (!series) {\n return;\n }\n\n layoutByValue(this._stateByField, series, this.enableRemain);\n\n Object.keys(this._stateByField).forEach(field => {\n this._layoutByField(field);\n });\n }\n\n private _layoutByField(fieldName: string) {\n const { cacheInfo, attributes, crosshairComp, labelsComp, coordKey } = this._stateByField[fieldName];\n if (!cacheInfo || (cacheInfo._isCache && this.enableRemain)) {\n return;\n }\n\n const container = this.getContainer();\n const { visible, labels, coord, sizeRange, axis } = cacheInfo;\n if (visible) {\n const layoutStartPoint = this.getLayoutStartPoint();\n const smooth = this._spec.valueField?.line?.smooth;\n const positionAttrs = layoutCrosshair(this._stateByField[fieldName], layoutStartPoint, smooth);\n\n if (crosshairComp) {\n crosshairComp.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n\n if (coordKey === 'angle') {\n const crosshairType = attributes.type === 'rect' ? 'sector' : 'line';\n // 创建\n if (crosshairType === 'line') {\n crosshair = new LineCrosshair({\n ...(positionAttrs as { start: IPoint; end: IPoint }),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n } else if (crosshairType === 'sector') {\n crosshair = new SectorCrosshair({\n ...(positionAttrs as {\n center: IPoint;\n innerRadius: number;\n radius: number;\n startAngle: number;\n endAngle: number;\n }),\n sectorStyle: attributes.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n }\n } else {\n const crosshairType = smooth ? 'circle' : 'polygon';\n\n if (crosshairType === 'polygon') {\n crosshair = new PolygonCrosshair({\n ...(positionAttrs as PolygonCrosshairAttrs),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex + 1 // 样式优化:线盖在面上\n });\n } else {\n crosshair = new CircleCrosshair({\n ...(positionAttrs as CircleCrosshairAttrs),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex\n });\n }\n }\n this._stateByField[fieldName].crosshairComp = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n const label = labels.all;\n // 文本\n if (label.visible) {\n const axisCenter = (axis as IPolarAxis).getCenter();\n const center = {\n x: axisCenter.x + layoutStartPoint.x,\n y: axisCenter.y + layoutStartPoint.y\n };\n const orient =\n coordKey === 'angle'\n ? angleLabelOrientAttribute(coord)\n : radiusLabelOrientAttribute((axis as IPolarAxis).startAngle);\n const point =\n coordKey === 'angle'\n ? polarToCartesian(center, sizeRange[1] + label.offset, coord)\n : polarToCartesian(center, positionAttrs.radius, (axis as IPolarAxis).startAngle);\n\n const labelAttrs = {\n ...point,\n ...attributes.label,\n ...label,\n textStyle: {\n ...attributes.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(labelsComp.all, labelAttrs, label => {\n label.name = `crosshair-${coordKey}-label`;\n labelsComp.all = label;\n });\n } else {\n labelsComp.all && labelsComp.all.hideAll();\n }\n }\n }\n}\n\nexport const registerPolarCrossHair = () => {\n Factory.registerComponent(PolarCrossHair.type, PolarCrossHair);\n};\n"]}
@@ -1,34 +1,13 @@
1
1
  import type { ICartesianSeries } from '../../../series';
2
2
  import type { ILayoutPoint } from '../../../typings';
3
- import type { IHair } from '../base';
4
- import type { AxisCurrentValueMap, ICrosshairInfoX, ICrosshairInfoY } from '../interface';
5
- export declare const layoutByValue: (tag: number, series: ICartesianSeries, layoutStartPoint: ILayoutPoint, currValueX: AxisCurrentValueMap, currValueY: AxisCurrentValueMap, xHair: IHair, yHair: IHair, enableRemain?: boolean, cacheXCrossHairInfo?: ICrosshairInfoX, cacheYCrossHairInfo?: ICrosshairInfoY) => {
6
- x: ICrosshairInfoX;
7
- y: ICrosshairInfoY;
8
- offsetWidth: number;
9
- offsetHeight: number;
10
- bandWidth: number;
11
- bandHeight: number;
12
- };
13
- export declare const layoutVerticalCrosshair: (xHair: IHair, crosshairInfo: ICrosshairInfoX, bandWidth: number, offsetWidth: number) => {
14
- visible: boolean;
15
- start: {
16
- x: number;
17
- y: number;
18
- };
19
- end: {
20
- x: number;
21
- y: number;
22
- };
23
- };
24
- export declare const layoutHorizontalCrosshair: (yHair: IHair, crosshairInfo: ICrosshairInfoY, bandHeight: number, offsetHeight: number) => {
3
+ import type { CrossHairStateByField, CrossHairStateItem } from '../interface';
4
+ export declare const layoutByValue: (stateByField: CrossHairStateByField, series: ICartesianSeries, layoutStartPoint: ILayoutPoint, enableRemain?: boolean) => CrossHairStateByField;
5
+ export declare const layoutCrosshair: (stateItem: CrossHairStateItem) => {
25
6
  visible: boolean;
26
7
  start: {
27
- x: number;
28
- y: number;
8
+ [x: string]: number;
29
9
  };
30
10
  end: {
31
- x: number;
32
- y: number;
11
+ [x: string]: number;
33
12
  };
34
13
  };
@@ -8,146 +8,88 @@ import { isValid } from "@visactor/vutils";
8
8
 
9
9
  import { getFormatFunction } from "../../util";
10
10
 
11
- export const layoutByValue = (tag = 3, series, layoutStartPoint, currValueX, currValueY, xHair, yHair, enableRemain = !1, cacheXCrossHairInfo, cacheYCrossHairInfo) => {
12
- const layoutX = 1 & tag, layoutY = 2 & tag;
13
- layoutStartPoint || (layoutStartPoint = {
14
- x: 0,
15
- y: 0
16
- });
17
- let xAxis = null, yAxis = null, x = 0, y = 0;
18
- if (currValueX.size) {
19
- const item = Array.from(currValueX.values())[0];
20
- x = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().x - layoutStartPoint.x,
21
- xAxis = item.axis;
22
- }
23
- if (currValueY.size) {
24
- const item = Array.from(currValueY.values())[0];
25
- y = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().y - layoutStartPoint.y,
26
- yAxis = item.axis;
11
+ export const layoutByValue = (stateByField, series, layoutStartPoint, enableRemain = !1) => (layoutStartPoint || (layoutStartPoint = {
12
+ x: 0,
13
+ y: 0
14
+ }), Object.keys(stateByField).forEach((field => {
15
+ const {currentValue: currentValue, cacheInfo: cacheInfo, labelsComp: labelsComp, attributes: attributes, coordKey: coordKey} = stateByField[field];
16
+ let axis = null, coord = 0;
17
+ if (currentValue.size) {
18
+ const item = Array.from(currentValue.values())[0];
19
+ coord = item.axis.getScale().scale(item.datum) + item.axis.getLayoutStartPoint()[coordKey] - layoutStartPoint[coordKey],
20
+ axis = item.axis;
27
21
  }
28
- const xVisible = !!currValueX.size && Number.isFinite(x), yVisible = !!currValueY.size && Number.isFinite(y), xUseCache = enableRemain && !xVisible && isValid(cacheXCrossHairInfo), yUseCache = enableRemain && !yVisible && isValid(cacheYCrossHairInfo);
29
- let xCrossHairInfo, yCrossHairInfo, bandWidth;
30
- layoutX && (xCrossHairInfo = xUseCache ? cacheXCrossHairInfo : {
31
- height: 0,
32
- leftPos: 0,
33
- rightPos: 0,
34
- topPos: 0,
35
- x: 0,
36
- bottom: {
37
- visible: !1,
38
- text: "",
39
- dx: 0,
40
- dy: 0
41
- },
42
- top: {
22
+ const isVisible = !!currentValue.size && Number.isFinite(coord), useCache = enableRemain && !isVisible && isValid(cacheInfo), newCacheInfo = useCache ? cacheInfo : {
23
+ coordRange: [ 0, 0 ],
24
+ sizeRange: [ 0, 0 ],
25
+ coord: coord,
26
+ labelsTextStyle: {},
27
+ labels: labelsComp ? Object.keys(labelsComp).reduce(((res, labelKey) => (res[labelKey] = {
43
28
  visible: !1,
44
29
  text: "",
45
30
  dx: 0,
46
31
  dy: 0
47
- },
48
- visible: xVisible,
49
- axis: xAxis
50
- }), layoutY && (yCrossHairInfo = yUseCache ? cacheYCrossHairInfo : {
51
- width: 0,
52
- leftPos: 0,
53
- topPos: 0,
54
- bottomPos: 0,
55
- y: 0,
56
- left: {
57
- visible: !1,
58
- text: "",
59
- dx: 0,
60
- dy: 0
61
- },
62
- right: {
63
- visible: !1,
64
- text: "",
65
- dx: 0,
66
- dy: 0
67
- },
68
- visible: yVisible,
69
- axis: yAxis
70
- });
71
- let bandHeight, offsetWidth = 0, offsetHeight = 0;
72
- if (xHair && currValueX.forEach((({axis: axis, value: value}) => {
73
- var _a;
74
- value = null != value ? value : "";
75
- let niceLabelFormatter = null;
76
- const xScale = axis.getScale();
77
- if (isDiscrete(xScale.type)) bandWidth = xScale.bandwidth(), 0 === bandWidth && xScale.step && (offsetWidth = xScale.step()); else if (isContinuous(xScale.type)) {
78
- const fieldX = series.fieldX[0], fieldX2 = series.fieldX2, datum = getDatumByValue(series.getViewData().latestData, +value, fieldX, fieldX2);
79
- if (datum) {
80
- const startX = series.dataToPositionX(datum);
81
- fieldX2 ? (bandWidth = Math.abs(startX - series.dataToPositionX1(datum)), value = `${datum[fieldX]} ~ ${datum[fieldX2]}`) : bandWidth = 1,
82
- x = startX;
83
- }
84
- niceLabelFormatter = axis.niceLabelFormatter;
85
- }
86
- if (xCrossHairInfo && (null === (_a = xHair.label) || void 0 === _a ? void 0 : _a.visible) && !xUseCache) {
87
- const labelOffset = getAxisLabelOffset(axis.getSpec());
88
- "bottom" === axis.getOrient() ? (xCrossHairInfo.bottom.visible = !0, xCrossHairInfo.bottom.defaultFormatter = niceLabelFormatter,
89
- xCrossHairInfo.bottom.text = value, xCrossHairInfo.bottom.dx = 0, xCrossHairInfo.bottom.dy = labelOffset) : "top" === axis.getOrient() && (xCrossHairInfo.top.visible = !0,
90
- xCrossHairInfo.top.defaultFormatter = niceLabelFormatter, xCrossHairInfo.top.text = value,
91
- xCrossHairInfo.top.dx = 0, xCrossHairInfo.top.dy = -labelOffset);
92
- }
93
- })), yHair && currValueY.forEach((({axis: axis, value: value}) => {
32
+ }, res)), {}) : null,
33
+ visible: isVisible,
34
+ axis: axis
35
+ };
36
+ let bandSize;
37
+ newCacheInfo && (newCacheInfo._isCache = useCache);
38
+ let offsetSize = 0;
39
+ if (attributes && currentValue.forEach((({axis: axis, datum: value = ""}) => {
94
40
  var _a;
95
- value = null != value ? value : "";
96
41
  let niceLabelFormatter = null;
97
- const yScale = axis.getScale();
98
- if (isDiscrete(yScale.type)) bandHeight = yScale.bandwidth(), 0 === bandHeight && yScale.step && (offsetHeight = yScale.step()); else if (isContinuous(yScale.type)) {
99
- const fieldY = series.fieldY[0], fieldY2 = series.fieldY2, datum = getDatumByValue(series.getViewData().latestData, +value, fieldY, fieldY2);
42
+ const scale = axis.getScale();
43
+ if (isDiscrete(scale.type)) bandSize = scale.bandwidth(), 0 === bandSize && scale.step && (offsetSize = scale.step()); else if (isContinuous(scale.type)) {
44
+ const field1 = "xField" === field ? series.fieldX[0] : series.fieldY[0], field2 = "xField" === field ? series.fieldX2 : series.fieldY2, datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);
100
45
  if (datum) {
101
- const startY = series.dataToPositionY(datum);
102
- fieldY2 ? (bandHeight = Math.abs(startY - series.dataToPositionY1(datum)), value = `${datum[fieldY]} ~ ${datum[fieldY2]}`) : bandHeight = 1,
103
- y = startY;
46
+ const startX = "xField" === field ? series.dataToPositionX(datum) : series.dataToPositionY(datum);
47
+ field2 ? (bandSize = Math.abs(startX - ("xField" === field ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))),
48
+ value = `${datum[field1]} ~ ${datum[field2]}`) : bandSize = 1, coord = startX;
104
49
  }
105
50
  niceLabelFormatter = axis.niceLabelFormatter;
106
51
  }
107
- if (yCrossHairInfo && (null === (_a = yHair.label) || void 0 === _a ? void 0 : _a.visible) && !yUseCache) {
108
- const labelOffset = getAxisLabelOffset(axis.getSpec());
109
- "left" === axis.getOrient() ? (yCrossHairInfo.left.visible = !0, yCrossHairInfo.left.defaultFormatter = niceLabelFormatter,
110
- yCrossHairInfo.left.text = value, yCrossHairInfo.left.dx = -labelOffset, yCrossHairInfo.left.dy = 0) : "right" === axis.getOrient() && (yCrossHairInfo.right.visible = !0,
111
- yCrossHairInfo.right.defaultFormatter = niceLabelFormatter, yCrossHairInfo.right.text = value,
112
- yCrossHairInfo.right.dx = labelOffset, yCrossHairInfo.right.dy = 0);
113
- }
114
- })), xCrossHairInfo && !xUseCache) {
115
- const xRegion = {
116
- x1: 1 / 0,
117
- y1: 1 / 0,
118
- x2: -1 / 0,
119
- y2: -1 / 0
120
- };
121
- if (setRegionArea(xRegion, currValueX), xCrossHairInfo.leftPos = xRegion.x1, xCrossHairInfo.rightPos = xRegion.x2,
122
- xCrossHairInfo.topPos = xRegion.y1, xCrossHairInfo.height = xRegion.y2 - xRegion.y1,
123
- xCrossHairInfo.x = x + layoutStartPoint.x, xHair && xHair.label) {
124
- const {top: top, bottom: bottom} = xCrossHairInfo;
125
- top.visible && setFormattedCrosshairLabel(top, "top", xHair.label), bottom.visible && setFormattedCrosshairLabel(bottom, "bottom", xHair.label);
52
+ if (newCacheInfo && (null === (_a = attributes.label) || void 0 === _a ? void 0 : _a.visible) && !useCache) {
53
+ const labelOffset = getAxisLabelOffset(axis.getSpec()), axisOrient = axis.getOrient();
54
+ newCacheInfo.labels[axisOrient] && (newCacheInfo.labels[axisOrient].visible = !0,
55
+ newCacheInfo.labels[axisOrient].text = value, "left" === axisOrient ? (newCacheInfo.labels[axisOrient].dx = -labelOffset,
56
+ newCacheInfo.labelsTextStyle[axisOrient] = {
57
+ textAlign: "right",
58
+ textBaseline: "middle"
59
+ }) : "right" === axisOrient ? (newCacheInfo.labels[axisOrient].dx = labelOffset,
60
+ newCacheInfo.labelsTextStyle[axisOrient] = {
61
+ textAlign: "left",
62
+ textBaseline: "middle"
63
+ }) : "top" === axisOrient ? (newCacheInfo.labels[axisOrient].y = 0, newCacheInfo.labels[axisOrient].dy = -labelOffset,
64
+ newCacheInfo.labelsTextStyle[axisOrient] = {
65
+ textAlign: "center",
66
+ textBaseline: "bottom"
67
+ }) : "bottom" === axisOrient && (newCacheInfo.labels[axisOrient].dy = labelOffset,
68
+ newCacheInfo.labelsTextStyle[axisOrient] = {
69
+ textAlign: "center",
70
+ textBaseline: "top"
71
+ }), newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter);
126
72
  }
127
- }
128
- if (yCrossHairInfo && !yUseCache) {
129
- const yRegion = {
73
+ })), newCacheInfo && !useCache) {
74
+ const region = {
130
75
  x1: 1 / 0,
131
76
  y1: 1 / 0,
132
77
  x2: -1 / 0,
133
78
  y2: -1 / 0
134
79
  };
135
- if (setRegionArea(yRegion, currValueY), yCrossHairInfo.leftPos = yRegion.x1, yCrossHairInfo.topPos = yRegion.y1,
136
- yCrossHairInfo.bottomPos = yRegion.y2, yCrossHairInfo.width = yRegion.x2 - yRegion.x1,
137
- yCrossHairInfo.y = y + layoutStartPoint.y, yHair && yHair.label) {
138
- const {left: left, right: right} = yCrossHairInfo;
139
- left.visible && setFormattedCrosshairLabel(left, "left", yHair.label), right.visible && setFormattedCrosshairLabel(right, "right", yHair.label);
140
- }
80
+ setRegionArea(region, currentValue), "xField" === field ? (newCacheInfo.coordRange = [ region.x1, region.x2 ],
81
+ newCacheInfo.sizeRange = [ region.y1, region.y2 ], newCacheInfo.coord = coord + layoutStartPoint.x,
82
+ newCacheInfo.labels && (newCacheInfo.labels.top.y = region.y1, newCacheInfo.labels.bottom.y = region.y2)) : (newCacheInfo.coordRange = [ region.y1, region.y2 ],
83
+ newCacheInfo.sizeRange = [ region.x1, region.x2 ], newCacheInfo.coord = coord + layoutStartPoint.y,
84
+ newCacheInfo.labels && (newCacheInfo.labels.left.x = region.x1, newCacheInfo.labels.right.x = region.x2)),
85
+ (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) && (newCacheInfo.visible = !1),
86
+ attributes && attributes.label && Object.keys(newCacheInfo.labels).forEach((labelKey => {
87
+ newCacheInfo.labels[labelKey].visible && setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);
88
+ }));
141
89
  }
142
- return {
143
- x: layoutX && xCrossHairInfo ? xCrossHairInfo : void 0,
144
- y: layoutY && yCrossHairInfo ? yCrossHairInfo : void 0,
145
- offsetWidth: offsetWidth,
146
- offsetHeight: offsetHeight,
147
- bandWidth: null != bandWidth ? bandWidth : 0,
148
- bandHeight: null != bandHeight ? bandHeight : 0
149
- };
150
- };
90
+ stateByField[field].bandSize = null != bandSize ? bandSize : 0, stateByField[field].offsetSize = offsetSize,
91
+ stateByField[field].cacheInfo = newCacheInfo;
92
+ })), stateByField);
151
93
 
152
94
  const setFormattedCrosshairLabel = (labelInfo, position, labelSpec) => {
153
95
  const {formatMethod: formatMethod, formatter: formatter} = labelSpec, {formatFunc: formatFunc, args: args} = getFormatFunction(formatMethod, formatter, labelInfo.text, {
@@ -158,67 +100,40 @@ const setFormattedCrosshairLabel = (labelInfo, position, labelSpec) => {
158
100
  }, setRegionArea = (outRegion, currentValue) => {
159
101
  currentValue.forEach((({axis: axis}) => {
160
102
  axis.getRegions().forEach((r => {
161
- outRegion.x1 = Math.min(outRegion.x1, r.getLayoutStartPoint().x), outRegion.y1 = Math.min(outRegion.y1, r.getLayoutStartPoint().y),
162
- outRegion.x2 = Math.max(outRegion.x2, r.getLayoutStartPoint().x + r.getLayoutRect().width),
163
- outRegion.y2 = Math.max(outRegion.y2, r.getLayoutStartPoint().y + r.getLayoutRect().height);
103
+ const {x: x, y: y} = r.getLayoutStartPoint(), {width: width, height: height} = r.getLayoutRect();
104
+ outRegion.x1 = Math.min(outRegion.x1, x), outRegion.y1 = Math.min(outRegion.y1, y),
105
+ outRegion.x2 = Math.max(outRegion.x2, x + width), outRegion.y2 = Math.max(outRegion.y2, y + height);
164
106
  }));
165
107
  }));
166
108
  };
167
109
 
168
- export const layoutVerticalCrosshair = (xHair, crosshairInfo, bandWidth, offsetWidth) => {
169
- const {x: x, topPos: topPos, height: height} = crosshairInfo, type = xHair.type;
110
+ export const layoutCrosshair = stateItem => {
111
+ const {cacheInfo: cacheInfo, attributes: attributes, bandSize: bandSize, offsetSize: offsetSize, coordKey: coordKey, anotherAxisKey: anotherAxisKey} = stateItem, {coord: coord, sizeRange: sizeRange} = cacheInfo, type = attributes.type;
170
112
  let positionAttribute;
171
- if ("line" === type) positionAttribute = {
172
- visible: !0,
173
- start: {
174
- x: x + bandWidth / 2,
175
- y: topPos
176
- },
177
- end: {
178
- x: x + bandWidth / 2,
179
- y: topPos + height
180
- }
181
- }; else if ("rect" === type) {
182
- const extend = getRectSize(xHair, bandWidth, crosshairInfo.axis), {leftPos: leftPos, rightPos: rightPos} = crosshairInfo;
113
+ if ("line" === type) {
114
+ const pos = coord + bandSize / 2;
183
115
  positionAttribute = {
184
116
  visible: !0,
185
117
  start: {
186
- x: Math.max(x - extend / 2 - offsetWidth / 2, leftPos),
187
- y: topPos
118
+ [coordKey]: pos,
119
+ [anotherAxisKey]: sizeRange[0]
188
120
  },
189
121
  end: {
190
- x: Math.min(x + bandWidth + extend / 2 + offsetWidth / 2, rightPos),
191
- y: topPos + height
122
+ [coordKey]: pos,
123
+ [anotherAxisKey]: sizeRange[1]
192
124
  }
193
125
  };
194
- }
195
- return positionAttribute;
196
- };
197
-
198
- export const layoutHorizontalCrosshair = (yHair, crosshairInfo, bandHeight, offsetHeight) => {
199
- const {leftPos: leftPos, width: width, y: y} = crosshairInfo, type = yHair.type;
200
- let positionAttribute;
201
- if ("line" === type) positionAttribute = {
202
- visible: !0,
203
- start: {
204
- x: leftPos,
205
- y: y + bandHeight / 2
206
- },
207
- end: {
208
- x: leftPos + width,
209
- y: y + bandHeight / 2
210
- }
211
- }; else if ("rect" === type) {
212
- const extend = getRectSize(yHair, bandHeight, crosshairInfo.axis), {topPos: topPos, bottomPos: bottomPos} = crosshairInfo;
126
+ } else if ("rect" === type) {
127
+ const extend = getRectSize(attributes, bandSize, cacheInfo.axis), {coordRange: coordRange} = cacheInfo;
213
128
  positionAttribute = {
214
129
  visible: !0,
215
130
  start: {
216
- x: leftPos,
217
- y: Math.max(y - extend / 2 - offsetHeight / 2, topPos)
131
+ [coordKey]: Math.max(coord - extend / 2 - offsetSize / 2, coordRange[0]),
132
+ [anotherAxisKey]: sizeRange[0]
218
133
  },
219
134
  end: {
220
- x: leftPos + width,
221
- y: Math.min(y + bandHeight + extend / 2 + offsetHeight / 2, bottomPos)
135
+ [coordKey]: Math.min(coord + bandSize + extend / 2 + offsetSize / 2, coordRange[1]),
136
+ [anotherAxisKey]: sizeRange[1]
222
137
  }
223
138
  };
224
139
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type { IBound, IHair } from '../base';\nimport { LayoutType } from '../config';\nimport type { AxisCurrentValueMap, ICrosshairInfoX, ICrosshairInfoY, ICrosshairLabelInfo } from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n tag: number = LayoutType.ALL,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n currValueX: AxisCurrentValueMap,\n currValueY: AxisCurrentValueMap,\n xHair: IHair,\n yHair: IHair,\n enableRemain: boolean = false,\n cacheXCrossHairInfo?: ICrosshairInfoX,\n cacheYCrossHairInfo?: ICrosshairInfoY\n) => {\n const layoutX = tag & LayoutType.VERTICAL;\n const layoutY = tag & LayoutType.HORIZONTAL;\n\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n // 计算x和y的坐标\n let xAxis = null;\n let yAxis = null;\n let x = 0;\n let y = 0;\n if (currValueX.size) {\n const item = Array.from(currValueX.values())[0];\n x = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().x - layoutStartPoint.x;\n xAxis = item.axis;\n }\n if (currValueY.size) {\n const item = Array.from(currValueY.values())[0];\n y = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().y - layoutStartPoint.y;\n yAxis = item.axis;\n }\n\n const xVisible = !!currValueX.size && Number.isFinite(x);\n const yVisible = !!currValueY.size && Number.isFinite(y);\n const xUseCache = enableRemain && !xVisible && isValid(cacheXCrossHairInfo);\n const yUseCache = enableRemain && !yVisible && isValid(cacheYCrossHairInfo);\n\n let xCrossHairInfo: ICrosshairInfoX;\n if (layoutX) {\n xCrossHairInfo = xUseCache\n ? cacheXCrossHairInfo\n : {\n height: 0,\n leftPos: 0,\n rightPos: 0,\n topPos: 0,\n x: 0,\n bottom: { visible: false, text: '', dx: 0, dy: 0 },\n top: { visible: false, text: '', dx: 0, dy: 0 },\n visible: xVisible,\n axis: xAxis\n };\n }\n\n let yCrossHairInfo: ICrosshairInfoY;\n if (layoutY) {\n yCrossHairInfo = yUseCache\n ? cacheYCrossHairInfo\n : {\n width: 0,\n leftPos: 0,\n topPos: 0,\n bottomPos: 0,\n y: 0,\n left: { visible: false, text: '', dx: 0, dy: 0 },\n right: { visible: false, text: '', dx: 0, dy: 0 },\n visible: yVisible,\n axis: yAxis\n };\n }\n\n let bandWidth;\n let offsetWidth: number = 0;\n let bandHeight;\n let offsetHeight: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (xHair) {\n currValueX.forEach(({ axis, value }) => {\n value = value ?? '';\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const xScale = axis.getScale();\n if (isDiscrete(xScale.type)) {\n bandWidth = (xScale as BandScale).bandwidth();\n\n if (bandWidth === 0 && (xScale as BandScale).step) {\n offsetWidth = (xScale as BandScale).step();\n }\n } else if (isContinuous(xScale.type)) {\n const fieldX = series.fieldX[0];\n const fieldX2 = series.fieldX2;\n const datum = getDatumByValue(series.getViewData().latestData, +value, fieldX, fieldX2);\n if (datum) {\n const startX = series.dataToPositionX(datum);\n if (fieldX2) {\n bandWidth = Math.abs(startX - series.dataToPositionX1(datum));\n value = `${datum[fieldX]} ~ ${datum[fieldX2]}`;\n } else {\n bandWidth = 1;\n }\n x = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (xCrossHairInfo && xHair.label?.visible && !xUseCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n if (axis.getOrient() === 'bottom') {\n xCrossHairInfo.bottom.visible = true;\n xCrossHairInfo.bottom.defaultFormatter = niceLabelFormatter;\n xCrossHairInfo.bottom.text = value;\n xCrossHairInfo.bottom.dx = 0;\n xCrossHairInfo.bottom.dy = labelOffset;\n } else if (axis.getOrient() === 'top') {\n xCrossHairInfo.top.visible = true;\n xCrossHairInfo.top.defaultFormatter = niceLabelFormatter;\n xCrossHairInfo.top.text = value;\n xCrossHairInfo.top.dx = 0;\n xCrossHairInfo.top.dy = -labelOffset;\n }\n }\n });\n }\n\n if (yHair) {\n currValueY.forEach(({ axis, value }) => {\n value = value ?? '';\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const yScale = axis.getScale();\n if (isDiscrete(yScale.type)) {\n bandHeight = (yScale as BandScale).bandwidth();\n\n if (bandHeight === 0 && (yScale as BandScale).step) {\n offsetHeight = (yScale as BandScale).step();\n }\n } else if (isContinuous(yScale.type)) {\n const fieldY = series.fieldY[0];\n const fieldY2 = series.fieldY2;\n const datum = getDatumByValue(series.getViewData().latestData, +value, fieldY, fieldY2);\n if (datum) {\n const startY = series.dataToPositionY(datum);\n if (fieldY2) {\n bandHeight = Math.abs(startY - series.dataToPositionY1(datum));\n value = `${datum[fieldY]} ~ ${datum[fieldY2]}`;\n } else {\n bandHeight = 1;\n }\n y = startY;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (yCrossHairInfo && yHair.label?.visible && !yUseCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n if (axis.getOrient() === 'left') {\n yCrossHairInfo.left.visible = true;\n yCrossHairInfo.left.defaultFormatter = niceLabelFormatter;\n yCrossHairInfo.left.text = value;\n yCrossHairInfo.left.dx = -labelOffset;\n yCrossHairInfo.left.dy = 0;\n } else if (axis.getOrient() === 'right') {\n yCrossHairInfo.right.visible = true;\n yCrossHairInfo.right.defaultFormatter = niceLabelFormatter;\n yCrossHairInfo.right.text = value;\n yCrossHairInfo.right.dx = labelOffset;\n yCrossHairInfo.right.dy = 0;\n }\n }\n });\n }\n\n if (xCrossHairInfo && !xUseCache) {\n const xRegion = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(xRegion, currValueX);\n xCrossHairInfo.leftPos = xRegion.x1;\n xCrossHairInfo.rightPos = xRegion.x2;\n xCrossHairInfo.topPos = xRegion.y1;\n xCrossHairInfo.height = xRegion.y2 - xRegion.y1;\n xCrossHairInfo.x = x + layoutStartPoint.x;\n\n if (xHair && xHair.label) {\n const { top, bottom } = xCrossHairInfo;\n if (top.visible) {\n setFormattedCrosshairLabel(top, 'top', xHair.label);\n }\n if (bottom.visible) {\n setFormattedCrosshairLabel(bottom, 'bottom', xHair.label);\n }\n }\n }\n\n if (yCrossHairInfo && !yUseCache) {\n const yRegion = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(yRegion, currValueY);\n yCrossHairInfo.leftPos = yRegion.x1;\n yCrossHairInfo.topPos = yRegion.y1;\n yCrossHairInfo.bottomPos = yRegion.y2;\n yCrossHairInfo.width = yRegion.x2 - yRegion.x1;\n yCrossHairInfo.y = y + layoutStartPoint.y;\n\n if (yHair && yHair.label) {\n const { left, right } = yCrossHairInfo;\n if (left.visible) {\n setFormattedCrosshairLabel(left, 'left', yHair.label);\n }\n if (right.visible) {\n setFormattedCrosshairLabel(right, 'right', yHair.label);\n }\n }\n }\n\n return {\n x: layoutX && xCrossHairInfo ? xCrossHairInfo : undefined,\n y: layoutY && yCrossHairInfo ? yCrossHairInfo : undefined,\n offsetWidth,\n offsetHeight,\n bandWidth: bandWidth ?? 0,\n bandHeight: bandHeight ?? 0\n };\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n outRegion.x1 = Math.min(outRegion.x1, r.getLayoutStartPoint().x);\n outRegion.y1 = Math.min(outRegion.y1, r.getLayoutStartPoint().y);\n outRegion.x2 = Math.max(outRegion.x2, r.getLayoutStartPoint().x + r.getLayoutRect().width);\n outRegion.y2 = Math.max(outRegion.y2, r.getLayoutStartPoint().y + r.getLayoutRect().height);\n });\n });\n};\n\nexport const layoutVerticalCrosshair = (\n xHair: IHair,\n crosshairInfo: ICrosshairInfoX,\n bandWidth: number,\n offsetWidth: number\n) => {\n const { x, topPos, height } = crosshairInfo;\n\n // 外部设置的size\n const type = xHair.type;\n let positionAttribute;\n if (type === 'line') {\n positionAttribute = {\n visible: true,\n start: { x: x + bandWidth / 2, y: topPos },\n end: { x: x + bandWidth / 2, y: topPos + height }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(xHair, bandWidth, crosshairInfo.axis);\n const { leftPos, rightPos } = crosshairInfo;\n\n positionAttribute = {\n visible: true,\n start: { x: Math.max(x - extend / 2 - offsetWidth / 2, leftPos), y: topPos },\n end: { x: Math.min(x + bandWidth + extend / 2 + offsetWidth / 2, rightPos), y: topPos + height }\n };\n }\n\n return positionAttribute;\n};\n\nexport const layoutHorizontalCrosshair = (\n yHair: IHair,\n crosshairInfo: ICrosshairInfoY,\n bandHeight: number,\n offsetHeight: number\n) => {\n const { leftPos, width, y } = crosshairInfo;\n\n // 外部设置的size\n const type = yHair.type;\n let positionAttribute;\n if (type === 'line') {\n positionAttribute = {\n visible: true,\n start: { x: leftPos, y: y + bandHeight / 2 },\n end: { x: leftPos + width, y: y + bandHeight / 2 }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(yHair, bandHeight, crosshairInfo.axis);\n const { topPos, bottomPos } = crosshairInfo;\n\n positionAttribute = {\n visible: true,\n start: { x: leftPos, y: Math.max(y - extend / 2 - offsetHeight / 2, topPos) },\n end: { x: leftPos + width, y: Math.min(y + bandHeight + extend / 2 + offsetHeight / 2, bottomPos) }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, axis: IAxis) => {\n // 外部设置的size\n let extend = 0;\n if (hair.style?.sizePercent) {\n extend = (hair.style.sizePercent - 1) * bandSize;\n } else if (typeof hair.style?.size === 'number') {\n extend = hair.style.size - bandSize;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n extend = hair.style.size(axisRect, axis) - bandSize;\n }\n\n return extend;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,YAAmC,EACnC,MAAwB,EACxB,gBAA8B,EAC9B,eAAwB,KAAK,EAC7B,EAAE;IACF,IAAI,CAAC,gBAAgB,EAAE;QACrB,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACnC;IAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,YAAY,CAAC,IAAI,EAAE;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,KAAK;gBACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;oBACtC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAqB,CAAC;oBACtD,gBAAgB,CAAC,QAAqB,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,YAAY,GAAmB,QAAQ;YAC3C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjB,KAAK;gBACL,eAAe,EAAE,EAAE;gBACnB,MAAM,EAAE,UAAU;oBAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAwC,EAAE,QAAgB,EAAE,EAAE;wBAC5F,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;wBAE3D,OAAO,GAAG,CAAC;oBACb,CAAC,EAAE,EAAE,CAAC;oBACR,CAAC,CAAC,IAAI;gBACR,OAAO,EAAE,SAAS;gBAClB,IAAI;aACL,CAAC;QACN,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAClC;QACD,IAAI,QAAQ,CAAC;QACb,IAAI,UAAU,GAAW,CAAC,CAAC;QAG3B,IAAI,UAAU,EAAE;YACd,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE;;gBACnD,IAAI,kBAAkB,GAA8C,IAAI,CAAC;gBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAC1B,QAAQ,GAAI,KAAmB,CAAC,SAAS,EAAE,CAAC;oBAE5C,IAAI,QAAQ,KAAK,CAAC,IAAK,KAAmB,CAAC,IAAI,EAAE;wBAC/C,UAAU,GAAI,KAAmB,CAAC,IAAI,EAAE,CAAC;qBAC1C;iBACF;qBAAM,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACxE,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBACpE,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBACvF,IAAI,KAAK,EAAE;wBACT,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAClG,IAAI,MAAM,EAAE;4BACV,QAAQ,GAAG,IAAI,CAAC,GAAG,CACjB,MAAM,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAChG,CAAC;4BACF,KAAK,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;yBAC/C;6BAAM;4BACL,QAAQ,GAAG,CAAC,CAAC;yBACd;wBACD,KAAK,GAAG,MAAM,CAAC;qBAChB;oBACD,kBAAkB,GAAI,IAAoB,CAAC,kBAAkB,CAAC;iBAC/D;gBACD,IAAI,YAAY,KAAI,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,CAAA,IAAI,CAAC,QAAQ,EAAE;oBAC1D,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAEpC,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;wBACnC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC/C,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;wBAC7C,IAAI,UAAU,KAAK,MAAM,EAAE;4BACzB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;4BAClD,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG;gCACzC,SAAS,EAAE,OAAO;gCAClB,YAAY,EAAE,QAAQ;6BACvB,CAAC;yBACH;6BAAM,IAAI,UAAU,KAAK,OAAO,EAAE;4BACjC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC;4BACjD,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG;gCACzC,SAAS,EAAE,MAAM;gCACjB,YAAY,EAAE,QAAQ;6BACvB,CAAC;yBACH;6BAAM,IAAI,UAAU,KAAK,KAAK,EAAE;4BAC/B,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACtC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;4BAClD,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG;gCACzC,SAAS,EAAE,QAAQ;gCACnB,YAAY,EAAE,QAAQ;6BACvB,CAAC;yBACH;6BAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;4BAClC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC;4BACjD,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG;gCACzC,SAAS,EAAE,QAAQ;gCACnB,YAAY,EAAE,KAAK;6BACpB,CAAC;yBACH;wBACD,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;qBACvE;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,YAAY,IAAI,CAAC,QAAQ,EAAE;YAC7B,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5E,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACtB,YAAY,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,YAAY,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChD,YAAY,CAAC,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC;gBAChD,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;oBACtC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;iBAC1C;aACF;iBAAM;gBACL,YAAY,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,YAAY,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChD,YAAY,CAAC,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC;gBAEhD,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;oBACvC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;iBACzC;aACF;YAED,IAAI,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBACtG,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;aAC9B;YAED,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClD,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;wBACzC,0BAA0B,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;qBACvF;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;QAED,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,CAAC;QAC7C,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAC5C,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,SAA8B,EAAE,QAAgB,EAAE,SAAyB,EAAE,EAAE;IACjH,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAC9C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QACtF,KAAK,EAAE,SAAS,CAAC,IAAI;QACrB,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,UAAU,EAAE;QACd,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;KACtC;SAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE;QACrC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7D;AACH,CAAC,CAAC;AAGF,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,YAAiC,EAAE,EAAE;IAC7E,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACzC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAE5C,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACjD,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAA6B,EAAE,EAAE;IAC/D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC5F,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAGvC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,IAAI,iBAAiB,CAAC;IACtB,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;QAEjC,iBAAiB,GAAG;YAClB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;YAC1D,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;SACzD,CAAC;KACH;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAEjC,iBAAiB,GAAG;YAClB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxE,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;aAC/B;YACD,GAAG,EAAE;gBACH,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnF,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;aAC/B;SACF,CAAC;KACH;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAW,EAAE,QAAgB,EAAE,IAAW,EAAE,EAAE;;IAEjE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE;QAC3B,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;KAClD;SAAM,IAAI,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,CAAA,KAAK,QAAQ,EAAE;QAC/C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;KACrC;SAAM,IAAI,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,CAAA,KAAK,UAAU,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC;KACrD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(attributes, bandSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord - extend / 2 - offsetSize / 2, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + bandSize + extend / 2 + offsetSize / 2, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, axis: IAxis) => {\n // 外部设置的size\n let extend = 0;\n if (hair.style?.sizePercent) {\n extend = (hair.style.sizePercent - 1) * bandSize;\n } else if (typeof hair.style?.size === 'number') {\n extend = hair.style.size - bandSize;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n extend = hair.style.size(axisRect, axis) - bandSize;\n }\n\n return extend;\n};\n"]}
@@ -1,18 +1,19 @@
1
1
  import type { IPolarSeries } from '../../../series';
2
- import type { IHair, IHairRadius } from '../base';
3
- import type { AxisCurrentValueMap, IPolarCrosshairInfo } from '../interface';
4
- export declare const layoutByValue: (series: IPolarSeries, currValueAngle: AxisCurrentValueMap, currValueRadius: AxisCurrentValueMap, angleHair: IHair, radiusHair: IHair, enableRemain?: boolean, cacheAngleCrossHairInfo?: IPolarCrosshairInfo, cacheRadiusCrossHairInfo?: IPolarCrosshairInfo) => {
5
- angle: IPolarCrosshairInfo;
6
- radius: IPolarCrosshairInfo;
7
- };
8
- export declare const layoutAngleCrosshair: (angleHair: IHair, crosshairInfo: IPolarCrosshairInfo) => {
9
- center: import("../../../typings").IPoint;
2
+ import type { CrossHairStateByField, CrossHairStateItem } from '../interface';
3
+ import type { ILayoutPoint } from '../../../typings/layout';
4
+ export declare const layoutByValue: (stateByField: CrossHairStateByField, series: IPolarSeries, enableRemain?: boolean) => void;
5
+ export declare const layoutCrosshair: (stateItem: CrossHairStateItem, layoutStartPoint: ILayoutPoint, smooth?: boolean) => {
6
+ center: {
7
+ x: number;
8
+ y: number;
9
+ };
10
10
  innerRadius: number;
11
11
  radius: number;
12
12
  startAngle: number;
13
13
  endAngle: number;
14
14
  start?: undefined;
15
15
  end?: undefined;
16
+ sides?: undefined;
16
17
  } | {
17
18
  start: {
18
19
  x: number;
@@ -27,11 +28,17 @@ export declare const layoutAngleCrosshair: (angleHair: IHair, crosshairInfo: IPo
27
28
  radius?: undefined;
28
29
  startAngle?: undefined;
29
30
  endAngle?: undefined;
30
- };
31
- export declare const layoutRadiusCrosshair: (radiusHair: IHairRadius, crosshairInfo: IPolarCrosshairInfo) => {
32
- center: import("../../../typings").IPoint;
31
+ sides?: undefined;
32
+ } | {
33
+ center: {
34
+ x: number;
35
+ y: number;
36
+ };
33
37
  startAngle: number;
34
38
  endAngle: number;
35
39
  radius: number;
36
40
  sides: number;
41
+ innerRadius?: undefined;
42
+ start?: undefined;
43
+ end?: undefined;
37
44
  };