@visactor/vchart 2.0.2 → 2.0.3-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 (214) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +412 -435
  3. package/build/index.js +411 -435
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/animate-manager.d.ts +1 -0
  7. package/cjs/animation/animate-manager.js +2 -0
  8. package/cjs/animation/animate-manager.js.map +1 -0
  9. package/cjs/animation/index.js +1 -2
  10. package/cjs/animation/interface.js +2 -1
  11. package/cjs/chart/base/base-chart.d.ts +0 -1
  12. package/cjs/chart/base/base-chart.js +8 -5
  13. package/cjs/chart/base/base-chart.js.map +1 -1
  14. package/cjs/chart/interface/chart.d.ts +0 -1
  15. package/cjs/chart/interface/chart.js.map +1 -1
  16. package/cjs/chart/util.js +1 -2
  17. package/cjs/compile/compiler.d.ts +0 -1
  18. package/cjs/compile/compiler.js +5 -13
  19. package/cjs/compile/compiler.js.map +1 -1
  20. package/cjs/compile/interface/compilable-item.d.ts +0 -1
  21. package/cjs/compile/interface/compilable-item.js.map +1 -1
  22. package/cjs/compile/interface/compiler.d.ts +0 -5
  23. package/cjs/compile/interface/compiler.js.map +1 -1
  24. package/cjs/component/axis/base-axis.js.map +1 -1
  25. package/cjs/component/axis/cartesian/band-axis.d.ts +0 -8
  26. package/cjs/component/axis/cartesian/band-axis.js +0 -9
  27. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  28. package/cjs/component/axis/interface/common.js.map +1 -1
  29. package/cjs/component/axis/mixin/band-axis-mixin.d.ts +0 -2
  30. package/cjs/component/axis/mixin/band-axis-mixin.js +1 -15
  31. package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
  32. package/cjs/component/brush/brush.js +6 -6
  33. package/cjs/component/brush/brush.js.map +1 -1
  34. package/cjs/component/brush/interface.d.ts +0 -1
  35. package/cjs/component/brush/interface.js.map +1 -1
  36. package/cjs/component/crosshair/base.d.ts +1 -1
  37. package/cjs/component/crosshair/base.js +1 -1
  38. package/cjs/component/crosshair/base.js.map +1 -1
  39. package/cjs/component/crosshair/utils/cartesian.js +2 -2
  40. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  41. package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -0
  42. package/cjs/component/data-zoom/data-filter-base-component.js +19 -13
  43. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  44. package/cjs/component/data-zoom/interface.d.ts +3 -0
  45. package/cjs/component/data-zoom/interface.js.map +1 -1
  46. package/cjs/component/data-zoom/util.d.ts +1 -0
  47. package/cjs/component/data-zoom/util.js +4 -3
  48. package/cjs/component/data-zoom/util.js.map +1 -1
  49. package/cjs/component/player/player.js +1 -2
  50. package/cjs/component/player/player.js.map +1 -1
  51. package/cjs/component/tooltip/tooltip.js +3 -8
  52. package/cjs/component/tooltip/tooltip.js.map +1 -1
  53. package/cjs/constant/attribute.js +2 -1
  54. package/cjs/constant/sunburst.js +1 -2
  55. package/cjs/constant/waterfall.js +2 -1
  56. package/cjs/core/index.d.ts +1 -1
  57. package/cjs/core/index.js +1 -1
  58. package/cjs/core/index.js.map +1 -1
  59. package/cjs/core/util.js +1 -1
  60. package/cjs/core/vchart.d.ts +0 -1
  61. package/cjs/core/vchart.js +17 -36
  62. package/cjs/core/vchart.js.map +1 -1
  63. package/cjs/data/transforms/obj-flat.js +4 -1
  64. package/cjs/data/transforms/obj-flat.js.map +1 -1
  65. package/cjs/mark/base/base-mark.d.ts +2 -6
  66. package/cjs/mark/base/base-mark.js +51 -69
  67. package/cjs/mark/base/base-mark.js.map +1 -1
  68. package/cjs/mark/group.d.ts +2 -3
  69. package/cjs/mark/group.js +13 -15
  70. package/cjs/mark/group.js.map +1 -1
  71. package/cjs/mark/interface/common.d.ts +2 -5
  72. package/cjs/mark/interface/common.js.map +1 -1
  73. package/cjs/model/base-model.d.ts +1 -5
  74. package/cjs/model/base-model.js +0 -7
  75. package/cjs/model/base-model.js.map +1 -1
  76. package/cjs/model/interface.d.ts +1 -4
  77. package/cjs/model/interface.js.map +1 -1
  78. package/cjs/plugin/components/tooltip-handler/utils/style.js +4 -4
  79. package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  80. package/cjs/region/region.js.map +1 -1
  81. package/cjs/series/base/base-series.js +3 -2
  82. package/cjs/series/base/base-series.js.map +1 -1
  83. package/cjs/series/dot/dot.d.ts +1 -0
  84. package/cjs/series/dot/dot.js +29 -6
  85. package/cjs/series/dot/dot.js.map +1 -1
  86. package/cjs/series/dot/interface.d.ts +1 -0
  87. package/cjs/series/dot/interface.js.map +1 -1
  88. package/cjs/series/dot/tooltip-helper.js +3 -2
  89. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  90. package/cjs/series/funnel/funnel.js +2 -0
  91. package/cjs/series/funnel/funnel.js.map +1 -1
  92. package/cjs/series/interface/type.d.ts +3 -0
  93. package/cjs/series/interface/type.js +5 -3
  94. package/cjs/series/interface/type.js.map +1 -1
  95. package/cjs/series/link/constant.js +8 -0
  96. package/cjs/series/link/constant.js.map +1 -1
  97. package/cjs/series/link/interface.d.ts +10 -1
  98. package/cjs/series/link/interface.js +5 -1
  99. package/cjs/series/link/interface.js.map +1 -1
  100. package/cjs/series/link/link.d.ts +3 -1
  101. package/cjs/series/link/link.js +46 -16
  102. package/cjs/series/link/link.js.map +1 -1
  103. package/cjs/series/map/map.js +2 -1
  104. package/cjs/series/map/map.js.map +1 -1
  105. package/cjs/series/pie/pie.js +1 -0
  106. package/cjs/series/pie/pie.js.map +1 -1
  107. package/cjs/util/mark.d.ts +0 -1
  108. package/cjs/util/mark.js +1 -10
  109. package/cjs/util/mark.js.map +1 -1
  110. package/esm/animation/animate-manager.d.ts +1 -0
  111. package/esm/animation/animate-manager.js +2 -0
  112. package/esm/animation/animate-manager.js.map +1 -0
  113. package/esm/animation/index.js +1 -2
  114. package/esm/animation/interface.js +2 -1
  115. package/esm/chart/base/base-chart.d.ts +0 -1
  116. package/esm/chart/base/base-chart.js +8 -5
  117. package/esm/chart/base/base-chart.js.map +1 -1
  118. package/esm/chart/interface/chart.d.ts +0 -1
  119. package/esm/chart/interface/chart.js.map +1 -1
  120. package/esm/chart/util.js +1 -2
  121. package/esm/compile/compiler.d.ts +0 -1
  122. package/esm/compile/compiler.js +6 -13
  123. package/esm/compile/compiler.js.map +1 -1
  124. package/esm/compile/interface/compilable-item.d.ts +0 -1
  125. package/esm/compile/interface/compilable-item.js.map +1 -1
  126. package/esm/compile/interface/compiler.d.ts +0 -5
  127. package/esm/compile/interface/compiler.js.map +1 -1
  128. package/esm/component/axis/base-axis.js.map +1 -1
  129. package/esm/component/axis/cartesian/band-axis.d.ts +0 -8
  130. package/esm/component/axis/cartesian/band-axis.js +1 -9
  131. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  132. package/esm/component/axis/interface/common.js.map +1 -1
  133. package/esm/component/axis/mixin/band-axis-mixin.d.ts +0 -2
  134. package/esm/component/axis/mixin/band-axis-mixin.js +1 -15
  135. package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
  136. package/esm/component/brush/brush.js +6 -6
  137. package/esm/component/brush/brush.js.map +1 -1
  138. package/esm/component/brush/interface.d.ts +0 -1
  139. package/esm/component/brush/interface.js.map +1 -1
  140. package/esm/component/crosshair/base.d.ts +1 -1
  141. package/esm/component/crosshair/base.js +1 -1
  142. package/esm/component/crosshair/base.js.map +1 -1
  143. package/esm/component/crosshair/utils/cartesian.js +2 -2
  144. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  145. package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -0
  146. package/esm/component/data-zoom/data-filter-base-component.js +18 -13
  147. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  148. package/esm/component/data-zoom/interface.d.ts +3 -0
  149. package/esm/component/data-zoom/interface.js.map +1 -1
  150. package/esm/component/data-zoom/util.d.ts +1 -0
  151. package/esm/component/data-zoom/util.js +5 -2
  152. package/esm/component/data-zoom/util.js.map +1 -1
  153. package/esm/component/player/player.js +1 -2
  154. package/esm/component/player/player.js.map +1 -1
  155. package/esm/component/tooltip/tooltip.js +3 -8
  156. package/esm/component/tooltip/tooltip.js.map +1 -1
  157. package/esm/constant/attribute.js +2 -1
  158. package/esm/constant/sunburst.js +1 -2
  159. package/esm/constant/waterfall.js +2 -1
  160. package/esm/core/index.d.ts +1 -1
  161. package/esm/core/index.js +1 -1
  162. package/esm/core/index.js.map +1 -1
  163. package/esm/core/util.js +1 -1
  164. package/esm/core/vchart.d.ts +0 -1
  165. package/esm/core/vchart.js +16 -35
  166. package/esm/core/vchart.js.map +1 -1
  167. package/esm/data/transforms/obj-flat.js +4 -1
  168. package/esm/data/transforms/obj-flat.js.map +1 -1
  169. package/esm/mark/base/base-mark.d.ts +2 -6
  170. package/esm/mark/base/base-mark.js +50 -69
  171. package/esm/mark/base/base-mark.js.map +1 -1
  172. package/esm/mark/group.d.ts +2 -3
  173. package/esm/mark/group.js +12 -18
  174. package/esm/mark/group.js.map +1 -1
  175. package/esm/mark/interface/common.d.ts +2 -5
  176. package/esm/mark/interface/common.js.map +1 -1
  177. package/esm/model/base-model.d.ts +1 -5
  178. package/esm/model/base-model.js +0 -7
  179. package/esm/model/base-model.js.map +1 -1
  180. package/esm/model/interface.d.ts +1 -4
  181. package/esm/model/interface.js.map +1 -1
  182. package/esm/plugin/components/tooltip-handler/utils/style.js +4 -5
  183. package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  184. package/esm/region/region.js.map +1 -1
  185. package/esm/series/base/base-series.js +3 -2
  186. package/esm/series/base/base-series.js.map +1 -1
  187. package/esm/series/dot/dot.d.ts +1 -0
  188. package/esm/series/dot/dot.js +29 -6
  189. package/esm/series/dot/dot.js.map +1 -1
  190. package/esm/series/dot/interface.d.ts +1 -0
  191. package/esm/series/dot/interface.js.map +1 -1
  192. package/esm/series/dot/tooltip-helper.js +3 -2
  193. package/esm/series/dot/tooltip-helper.js.map +1 -1
  194. package/esm/series/funnel/funnel.js +2 -0
  195. package/esm/series/funnel/funnel.js.map +1 -1
  196. package/esm/series/interface/type.d.ts +3 -0
  197. package/esm/series/interface/type.js +5 -3
  198. package/esm/series/interface/type.js.map +1 -1
  199. package/esm/series/link/constant.js +8 -0
  200. package/esm/series/link/constant.js.map +1 -1
  201. package/esm/series/link/interface.d.ts +10 -1
  202. package/esm/series/link/interface.js +5 -1
  203. package/esm/series/link/interface.js.map +1 -1
  204. package/esm/series/link/link.d.ts +3 -1
  205. package/esm/series/link/link.js +48 -16
  206. package/esm/series/link/link.js.map +1 -1
  207. package/esm/series/map/map.js +2 -1
  208. package/esm/series/map/map.js.map +1 -1
  209. package/esm/series/pie/pie.js +1 -0
  210. package/esm/series/pie/pie.js.map +1 -1
  211. package/esm/util/mark.d.ts +0 -1
  212. package/esm/util/mark.js +0 -7
  213. package/esm/util/mark.js.map +1 -1
  214. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { Tag } from '@visactor/vrender-components';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { throttle, PointService, isEqual, isArray, isNumber, get, isBoolean, isObject, array } from '@visactor/vutils';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport type { BaseEventParams, EventType } from '../../event/interface';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPoint, Maybe, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { outOfBounds } from '../../util/math';\nimport type { IComponentOption } from '../interface';\nimport type {\n ICrossHair,\n CrossHairTrigger,\n ICartesianCrosshairSpec,\n IPolarCrosshairSpec,\n ICrosshairCategoryFieldSpec,\n IAxisInfo,\n CrossHairStateByField\n} from './interface';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { getDefaultCrosshairTriggerEventByMode } from './config';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IAxis } from '../axis/interface';\nimport type { TooltipEventParams } from '../tooltip/interface/event';\nimport { limitTagInBounds } from './utils/common';\nimport { isDiscrete } from '@visactor/vscale';\n\nconst ORIENT_MAP = {\n x: ['top', 'bottom'],\n y: ['left', 'right'],\n category: ['angle'],\n value: ['radius']\n};\n\nexport abstract class BaseCrossHair<T extends ICartesianCrosshairSpec | IPolarCrosshairSpec>\n extends BaseComponent<T>\n implements ICrossHair\n{\n static specKey = 'crosshair';\n specKey = 'crosshair';\n\n layoutType: 'none' = 'none';\n gridZIndex: number = LayoutZIndex.CrossHair_Grid;\n labelZIndex: number = LayoutZIndex.CrossHair;\n trigger: CrossHairTrigger = 'hover';\n enable: boolean;\n showDefault: boolean;\n triggerOff: 'none' | number; // 为none则不消失\n\n protected _stateByField!: CrossHairStateByField;\n\n private _timer?: number;\n private _clickLock?: boolean;\n private _hasActive?: boolean;\n private _onlyLockClick?: boolean;\n\n get enableRemain(): boolean {\n return this.triggerOff === 'none';\n }\n\n private _limitBounds: Maybe<IBoundsLike>;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this.enable = true;\n this.showDefault = true;\n }\n\n protected abstract _layoutCrosshair(\n x: number,\n y: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ): void;\n\n abstract setAxisValue(v: StringOrNumber, axis: IAxis): void;\n abstract layoutByValue(enableRemain?: boolean): void;\n protected abstract _getDatumAtPoint(axis: IAxis, point: IPoint): number | string;\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n protected _setAllAxisValues(axisMap: IAxisInfo<IAxis>, point: IPoint, field: string): 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 const { currentValue } = this._stateByField[field];\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currentValue.set(id, {\n datum: this._getDatumAtPoint(axis, point),\n axis\n });\n });\n return true;\n }\n /**\n * clear axis value of crosshair\n */\n clearAxisValue() {\n Object.keys(this._stateByField).forEach(field => {\n this._stateByField[field].currentValue.clear();\n });\n }\n\n hideCrosshair() {\n this.clearAxisValue();\n this.hide();\n }\n\n showCrosshair(dimInfo: { axis: IAxis; value: string | number }[]) {\n if (!dimInfo || !dimInfo.length) {\n return;\n }\n\n this.showDefault = false;\n this.clearAxisValue();\n dimInfo.forEach((d: { axis: IAxis; value: string | number }) => {\n const { axis, value } = d;\n this.setAxisValue(value, axis);\n });\n this.layoutByValue(false);\n }\n\n protected _getLimitBounds() {\n if (!this._limitBounds) {\n const { width, height } = this._option.globalInstance.getChart()?.getViewRect() ?? {\n width: 0,\n height: 0\n };\n this._limitBounds = {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height\n };\n }\n return this._limitBounds;\n }\n\n protected _showDefaultCrosshairBySpec() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && fieldSpec.defaultSelect) {\n const { axisIndex = 0, datum } = fieldSpec.defaultSelect;\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IAxis;\n\n if (axis) {\n this._stateByField[field].currentValue.clear();\n this._stateByField[field].currentValue.set(axisIndex, { axis, datum });\n }\n }\n });\n }\n\n protected _updateVisibleCrosshair() {\n let hasVisible = false;\n\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && this._stateByField[field].currentValue.size) {\n hasVisible = true;\n } else {\n this._hideByField(field);\n }\n });\n\n if (hasVisible) {\n this.layoutByValue(false);\n }\n }\n\n protected _showDefaultCrosshair() {\n if (this.showDefault) {\n this._showDefaultCrosshairBySpec();\n this.layoutByValue(false);\n } else {\n this._updateVisibleCrosshair();\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._parseCrosshairSpec();\n }\n\n created() {\n super.created();\n // event\n this._initEvent();\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n if (this._spec.followTooltip) {\n this._registerTooltipEvent();\n } else {\n const triggerConfig = this._getTriggerEvent();\n\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._registerEvent(cfg.in, false, cfg.click);\n cfg.out && this._registerEvent(cfg.out, true);\n });\n }\n }\n }\n\n private _registerEvent(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n const cfg = isOut ? { level: Event_Bubble_Level.chart } : { source: Event_Source_Type.chart };\n\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.on(evt, cfg, handler);\n });\n } else {\n this.event.on(eventName as EventType, cfg, handler);\n }\n }\n\n private _eventOff(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.off(evt, handler);\n });\n } else {\n this.event.off(eventName as EventType, handler);\n }\n }\n\n onBeforeRender(): void {\n this._limitBounds = null;\n this._showDefaultCrosshair();\n }\n\n protected calculateTriggerPoint(params: any) {\n const { event } = params as BaseEventParams;\n // compute layer offset\n const layer = this._option.getCompiler().getStage().getLayer(undefined);\n const point = { x: event.viewX, y: event.viewY };\n layer.globalTransMatrix.transformPoint({ x: event.viewX, y: event.viewY }, point);\n\n return {\n x: point.x - this.getLayoutStartPoint().x,\n y: point.y - this.getLayoutStartPoint().y\n };\n }\n\n private _handleIn = (params: any) => {\n if (!this._option) {\n return;\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleClickInEvent = (params: any) => {\n if (this._hasActive && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n return;\n } else if (this._clickLock) {\n this._clickLock = false;\n this._handleOutEvent();\n return;\n }\n\n if (this._onlyLockClick) {\n return;\n }\n\n this._handleIn(params);\n\n if (isNumber(this.triggerOff)) {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timer = setTimeout(() => {\n this._handleOutEvent();\n }, this.triggerOff as number) as unknown as number;\n }\n };\n\n private _handleHoverInEvent = throttle((params: any) => {\n if (this._clickLock) {\n return;\n }\n\n this._handleIn(params);\n }, 10);\n\n private _handleOutEvent = () => {\n if (this.enableRemain || this._clickLock || !this._hasActive) {\n return;\n }\n this.clearOutEvent();\n\n this.hide();\n };\n\n private _getTriggerEvent() {\n const { mode = RenderModeEnum['desktop-browser'] } = this._option;\n const triggerConfig = getDefaultCrosshairTriggerEventByMode(mode);\n if (triggerConfig) {\n const trigger: string[] = array(this.trigger || 'hover');\n const outTrigger = (inTrigger: CrossHairTrigger) => {\n if (inTrigger === 'click') {\n return this.triggerOff === 'none' ? null : triggerConfig.clickOut;\n }\n return triggerConfig.hoverOut;\n };\n\n if (this._spec.lockAfterClick && !trigger.includes('click')) {\n trigger.push('click');\n this._onlyLockClick = true;\n } else {\n this._onlyLockClick = false;\n }\n // 同时配置了多个触发事件\n const res: { in: EventType | EventType[]; out: EventType | EventType[]; click: boolean }[] = [];\n (trigger as ['click', 'hover']).forEach(item => {\n res.push({\n click: item === 'click',\n in: triggerConfig[item],\n out: outTrigger(item)\n });\n });\n return res;\n }\n return null;\n }\n\n private _registerTooltipEvent() {\n this.event.on(ChartEvent.tooltipHide, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n this.event.on(ChartEvent.tooltipShow, { source: Event_Source_Type.chart }, this._handleTooltipShow);\n this.event.on(ChartEvent.tooltipRelease, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n }\n\n private _handleTooltipShow = (params: TooltipEventParams) => {\n const tooltipData = params.tooltipData;\n\n if (params.isEmptyTooltip || !tooltipData || !tooltipData.length) {\n this._handleTooltipHideOrRelease();\n return;\n }\n\n if (isObject(this._spec.followTooltip)) {\n if (this._spec.followTooltip[params.activeType] === false) {\n this._handleTooltipHideOrRelease();\n return;\n }\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y, tooltipData, params.activeType);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleTooltipHideOrRelease = () => {\n this.clearOutEvent();\n\n this.hide();\n };\n\n protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value') {\n // 加判空防止某些特殊时刻(如 updateSpec 时)鼠标滑过图表导致报错\n const axesComponents = this._option.getComponentsByKey?.('axes') as IAxis[];\n if (!axesComponents?.length) {\n return null;\n }\n let bindingAxesIndex: number[] = get(this._spec, `${field}Field.bindingAxesIndex`);\n if (!bindingAxesIndex) {\n bindingAxesIndex = [];\n axesComponents.forEach((item, index) => {\n if (ORIENT_MAP[field].includes(item.getOrient())) {\n bindingAxesIndex.push(index);\n }\n });\n }\n if (!bindingAxesIndex.length) {\n return null;\n }\n\n const map: IAxisInfo<T> = new Map();\n let x1 = Infinity;\n let y1 = Infinity;\n let x2 = -Infinity;\n let y2 = -Infinity;\n const { x: sx, y: sy } = this.getLayoutStartPoint();\n bindingAxesIndex.forEach(idx => {\n (x1 = Infinity), (y1 = Infinity), (x2 = -Infinity), (y2 = -Infinity);\n const axis = axesComponents.find(axis => axis.getSpecIndex() === idx);\n if (!axis) {\n return;\n }\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x: regionStartX, y: regionStartY } = r.getLayoutStartPoint();\n x1 = Math.min(x1, regionStartX - sx);\n y1 = Math.min(y1, regionStartY - sy);\n x2 = Math.max(x2, regionStartX + r.getLayoutRect().width - sx);\n y2 = Math.max(y2, regionStartY + r.getLayoutRect().height - sy);\n });\n map.set(idx, { x1, y1, x2, y2, axis: axis as unknown as T });\n });\n\n return map;\n }\n\n onLayoutEnd(): void {\n const region = this._regions[0];\n this.setLayoutRect(region.getLayoutRect());\n this.setLayoutStartPosition(region.getLayoutStartPoint());\n\n super.onLayoutEnd();\n }\n\n protected _releaseEvent(): void {\n this.clearOutEvent();\n\n const triggerConfig = this._getTriggerEvent();\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._eventOff(cfg.in, false, cfg.click);\n cfg.out && this._eventOff(cfg.out, true);\n });\n }\n }\n\n protected _parseFieldInfo() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n const { crosshairComp } = this._stateByField[field];\n\n if (fieldSpec && fieldSpec.visible) {\n this._stateByField[field].attributes = this._parseField(fieldSpec, field);\n\n if (crosshairComp) {\n const { style, type } = this._stateByField[field].attributes;\n const styleKey = type === 'rect' ? 'rectStyle' : 'lineStyle';\n\n crosshairComp.setAttributes({\n [styleKey]: style\n });\n }\n } else if (crosshairComp && crosshairComp.parent) {\n crosshairComp.parent.removeChild(crosshairComp);\n }\n });\n }\n\n protected _parseCrosshairSpec() {\n this._parseFieldInfo();\n\n const { trigger, triggerOff, labelZIndex, gridZIndex } = this._spec;\n if (trigger) {\n this.trigger = trigger;\n }\n if (triggerOff === 'none' || (isNumber(triggerOff) && triggerOff > 0)) {\n this.triggerOff = triggerOff;\n }\n if (labelZIndex !== undefined) {\n this.labelZIndex = labelZIndex;\n }\n if (gridZIndex !== undefined) {\n this.gridZIndex = gridZIndex;\n }\n }\n\n protected _parseField(field: ICrosshairCategoryFieldSpec, fieldName: string) {\n const hair = {} as any;\n const { line = {}, label = {}, visible } = field;\n\n hair.visible = visible;\n hair.type = line.type || 'line';\n\n if (line.visible === false) {\n hair.style = { visible: false };\n } else {\n const style = line.style || {};\n const { stroke, fill, lineWidth } = style as any;\n const { strokeOpacity, fillOpacity, opacity, ...restStyle } = style as any;\n const isLineType = hair.type === 'line';\n let finalOpacity = isLineType ? strokeOpacity : fillOpacity;\n if (isNumber(opacity)) {\n // FIXME: 之前的兼容逻辑,去掉可能会影响现有 crosshair 的展示效果\n finalOpacity = (finalOpacity ?? 1) * opacity;\n }\n hair.style = {\n opacity: finalOpacity,\n pickable: false,\n visible: true,\n ...restStyle\n };\n\n if (isLineType) {\n hair.style.stroke = stroke || fill;\n hair.style.lineWidth = get(line, 'width', lineWidth || 2);\n } else {\n hair.style.fill = fill || stroke;\n if (field?.line?.style?.stroke) {\n hair.style.stroke = field.line.style.stroke;\n }\n const rectSize = get(line, 'width');\n if (typeof rectSize === 'string') {\n const percent = parseInt(rectSize.substring(0, rectSize.length - 1), 10) / 100;\n hair.style.sizePercent = percent;\n } else if (typeof rectSize === 'number' || typeof rectSize === 'function') {\n hair.style.size = rectSize;\n }\n }\n }\n\n if (!!label.visible) {\n const labelBackground = label.labelBackground || {};\n const syncAxisLabelAngle = label.syncAxisLabelAngle ?? false;\n const labelStyle = label.style || {};\n const {\n fill: rectFill = 'rgba(47, 59, 82, 0.9)',\n stroke: rectStroke,\n outerBorder,\n ...rectStyle\n } = labelBackground.style || {};\n hair.label = {\n visible: true,\n formatMethod: label.formatMethod,\n formatter: label.formatter,\n minWidth: labelBackground.minWidth,\n maxWidth: labelBackground.maxWidth,\n padding: labelBackground.padding,\n syncAxisLabelAngle,\n textStyle: {\n fontSize: 14,\n pickable: false,\n ...labelStyle,\n fill: labelStyle.fill || '#fff',\n stroke: get(labelStyle, 'stroke')\n },\n panel: (isBoolean(labelBackground.visible) ? labelBackground.visible : !!labelBackground)\n ? {\n visible: true,\n pickable: false,\n fill: rectFill,\n stroke: rectStroke,\n // Note: 通过这个配置可以保证 label 和 轴 label 对齐\n outerBorder: {\n stroke: rectFill,\n distance: 0,\n lineWidth: 3,\n ...outerBorder\n },\n ...rectStyle\n }\n : { visible: false },\n zIndex: this.labelZIndex,\n childrenPickable: false,\n pickable: false\n };\n } else {\n hair.label = { visible: false };\n }\n\n return hair;\n }\n\n protected _filterAxisByPoint<T>(axisMap: IAxisInfo<T>, relativeX: number, relativeY: number) {\n axisMap &&\n axisMap.forEach(item => {\n const axis = item.axis as unknown as IAxis | IPolarAxis;\n if (outOfBounds(item, relativeX, relativeY)) {\n axisMap.delete(axis.getSpecIndex());\n }\n if ((axis as IPolarAxis).type.startsWith('polarAxis')) {\n // 极坐标下需要判断是否在半径内\n const center = (axis as IPolarAxis).getCenter();\n const innerRadius = (axis as IPolarAxis).getInnerRadius();\n const outerRadius = (axis as IPolarAxis).getOuterRadius();\n const distance = PointService.distancePP({ x: relativeX, y: relativeY }, center);\n if (distance > outerRadius || distance < innerRadius) {\n axisMap.delete((axis as IPolarAxis).getSpecIndex());\n }\n }\n });\n return axisMap;\n }\n\n protected _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 clearOutEvent() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n if (this._clickLock) {\n this._clickLock = null;\n }\n\n if (this._hasActive) {\n this._hasActive = null;\n }\n }\n\n protected _hideByField(field: string) {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n crosshairComp && crosshairComp.hideAll();\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && labelsComp[key].hideAll();\n });\n }\n }\n\n hide() {\n // 隐藏\n Object.keys(this._stateByField).forEach(field => {\n this._hideByField(field);\n });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return Object.keys(this._stateByField).reduce((res, field) => {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n if (crosshairComp) {\n res.push(crosshairComp);\n }\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && res.push(labelsComp[key]);\n });\n }\n return res;\n }, []);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { Tag } from '@visactor/vrender-components';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { throttle, PointService, isEqual, isArray, isNumber, get, isBoolean, isObject, array } from '@visactor/vutils';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport type { BaseEventParams, EventType } from '../../event/interface';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPoint, Maybe, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { outOfBounds } from '../../util/math';\nimport type { IComponentOption } from '../interface';\nimport type {\n ICrossHair,\n CrossHairTrigger,\n ICartesianCrosshairSpec,\n IPolarCrosshairSpec,\n ICrosshairCategoryFieldSpec,\n IAxisInfo,\n CrossHairStateByField\n} from './interface';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { getDefaultCrosshairTriggerEventByMode } from './config';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IAxis } from '../axis/interface';\nimport type { TooltipEventParams } from '../tooltip/interface/event';\nimport { limitTagInBounds } from './utils/common';\nimport { isDiscrete } from '@visactor/vscale';\n\nconst ORIENT_MAP = {\n x: ['top', 'bottom'],\n y: ['left', 'right'],\n category: ['angle'],\n value: ['radius']\n};\n\nexport abstract class BaseCrossHair<T extends ICartesianCrosshairSpec | IPolarCrosshairSpec>\n extends BaseComponent<T>\n implements ICrossHair\n{\n static specKey = 'crosshair';\n specKey = 'crosshair';\n\n layoutType: 'none' = 'none';\n gridZIndex: number = LayoutZIndex.CrossHair_Grid;\n labelZIndex: number = LayoutZIndex.CrossHair;\n trigger: CrossHairTrigger = 'hover';\n enable: boolean;\n showDefault: boolean;\n triggerOff: 'none' | number; // 为none则不消失\n\n protected _stateByField!: CrossHairStateByField;\n\n private _timer?: number;\n private _clickLock?: boolean;\n private _hasActive?: boolean;\n private _onlyLockClick?: boolean;\n\n get enableRemain(): boolean {\n return this.triggerOff === 'none';\n }\n\n private _limitBounds: Maybe<IBoundsLike>;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this.enable = true;\n this.showDefault = true;\n }\n\n protected abstract _layoutCrosshair(\n x: number,\n y: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ): void;\n\n abstract setAxisValue(v: StringOrNumber, axis: IAxis): void;\n abstract layoutByValue(enableRemain?: boolean): void;\n protected abstract _getDatumAtPoint(axis: IAxis, point: IPoint): number | string;\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n protected _setAllAxisValues(axisMap: IAxisInfo<IAxis>, point: IPoint, field: string): 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 const { currentValue } = this._stateByField[field];\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currentValue.set(id, {\n datum: this._getDatumAtPoint(axis, point),\n axis\n });\n });\n return true;\n }\n /**\n * clear axis value of crosshair\n */\n clearAxisValue() {\n Object.keys(this._stateByField).forEach(field => {\n this._stateByField[field].currentValue.clear();\n });\n }\n\n hideCrosshair() {\n this.clearAxisValue();\n this.hide();\n }\n\n showCrosshair(dimInfo: { axis: IAxis; value: string | number }[]) {\n if (!dimInfo || !dimInfo.length) {\n return;\n }\n\n this.showDefault = false;\n this.clearAxisValue();\n dimInfo.forEach((d: { axis: IAxis; value: string | number }) => {\n const { axis, value } = d;\n this.setAxisValue(value, axis);\n });\n this.layoutByValue(false);\n }\n\n protected _getLimitBounds() {\n if (!this._limitBounds) {\n const { width, height } = this._option.globalInstance.getChart()?.getViewRect() ?? {\n width: 0,\n height: 0\n };\n this._limitBounds = {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height\n };\n }\n return this._limitBounds;\n }\n\n protected _showDefaultCrosshairBySpec() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && fieldSpec.defaultSelect) {\n const { axisIndex = 0, datum } = fieldSpec.defaultSelect;\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IAxis;\n\n if (axis) {\n this._stateByField[field].currentValue.clear();\n this._stateByField[field].currentValue.set(axisIndex, { axis, datum });\n }\n }\n });\n }\n\n protected _updateVisibleCrosshair() {\n let hasVisible = false;\n\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && this._stateByField[field].currentValue.size) {\n hasVisible = true;\n } else {\n this._hideByField(field);\n }\n });\n\n if (hasVisible) {\n this.layoutByValue(false);\n }\n }\n\n protected _showDefaultCrosshair() {\n if (this.showDefault) {\n this._showDefaultCrosshairBySpec();\n this.layoutByValue(false);\n } else {\n this._updateVisibleCrosshair();\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._parseCrosshairSpec();\n }\n\n created() {\n super.created();\n // event\n this._initEvent();\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n if (this._spec.followTooltip) {\n this._registerTooltipEvent();\n } else {\n const triggerConfig = this._getTriggerEvent();\n\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._registerEvent(cfg.in, false, cfg.click);\n cfg.out && this._registerEvent(cfg.out, true);\n });\n }\n }\n }\n\n private _registerEvent(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n const cfg = isOut ? { level: Event_Bubble_Level.chart } : { source: Event_Source_Type.chart };\n\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.on(evt, cfg, handler);\n });\n } else {\n this.event.on(eventName as EventType, cfg, handler);\n }\n }\n\n private _eventOff(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.off(evt, handler);\n });\n } else {\n this.event.off(eventName as EventType, handler);\n }\n }\n\n updateLayoutAttribute() {\n this._limitBounds = null;\n this._showDefaultCrosshair();\n }\n\n protected calculateTriggerPoint(params: any) {\n const { event } = params as BaseEventParams;\n // compute layer offset\n const layer = this._option.getCompiler().getStage().getLayer(undefined);\n const point = { x: event.viewX, y: event.viewY };\n layer.globalTransMatrix.transformPoint({ x: event.viewX, y: event.viewY }, point);\n\n return {\n x: point.x - this.getLayoutStartPoint().x,\n y: point.y - this.getLayoutStartPoint().y\n };\n }\n\n private _handleIn = (params: any) => {\n if (!this._option) {\n return;\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleClickInEvent = (params: any) => {\n if (this._hasActive && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n return;\n } else if (this._clickLock) {\n this._clickLock = false;\n this._handleOutEvent();\n return;\n }\n\n if (this._onlyLockClick) {\n return;\n }\n\n this._handleIn(params);\n\n if (isNumber(this.triggerOff)) {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timer = setTimeout(() => {\n this._handleOutEvent();\n }, this.triggerOff as number) as unknown as number;\n }\n };\n\n private _handleHoverInEvent = throttle((params: any) => {\n if (this._clickLock) {\n return;\n }\n\n this._handleIn(params);\n }, 10);\n\n private _handleOutEvent = () => {\n if (this.enableRemain || this._clickLock || !this._hasActive) {\n return;\n }\n this.clearOutEvent();\n\n this.hide();\n };\n\n private _getTriggerEvent() {\n const { mode = RenderModeEnum['desktop-browser'] } = this._option;\n const triggerConfig = getDefaultCrosshairTriggerEventByMode(mode);\n if (triggerConfig) {\n const trigger: string[] = array(this.trigger || 'hover');\n const outTrigger = (inTrigger: CrossHairTrigger) => {\n if (inTrigger === 'click') {\n return this.triggerOff === 'none' ? null : triggerConfig.clickOut;\n }\n return triggerConfig.hoverOut;\n };\n\n if (this._spec.lockAfterClick && !trigger.includes('click')) {\n trigger.push('click');\n this._onlyLockClick = true;\n } else {\n this._onlyLockClick = false;\n }\n // 同时配置了多个触发事件\n const res: { in: EventType | EventType[]; out: EventType | EventType[]; click: boolean }[] = [];\n (trigger as ['click', 'hover']).forEach(item => {\n res.push({\n click: item === 'click',\n in: triggerConfig[item],\n out: outTrigger(item)\n });\n });\n return res;\n }\n return null;\n }\n\n private _registerTooltipEvent() {\n this.event.on(ChartEvent.tooltipHide, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n this.event.on(ChartEvent.tooltipShow, { source: Event_Source_Type.chart }, this._handleTooltipShow);\n this.event.on(ChartEvent.tooltipRelease, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n }\n\n private _handleTooltipShow = (params: TooltipEventParams) => {\n const tooltipData = params.tooltipData;\n\n if (params.isEmptyTooltip || !tooltipData || !tooltipData.length) {\n this._handleTooltipHideOrRelease();\n return;\n }\n\n if (isObject(this._spec.followTooltip)) {\n if (this._spec.followTooltip[params.activeType] === false) {\n this._handleTooltipHideOrRelease();\n return;\n }\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y, tooltipData, params.activeType);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleTooltipHideOrRelease = () => {\n this.clearOutEvent();\n\n this.hide();\n };\n\n protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value') {\n // 加判空防止某些特殊时刻(如 updateSpec 时)鼠标滑过图表导致报错\n const axesComponents = this._option.getComponentsByKey?.('axes') as IAxis[];\n if (!axesComponents?.length) {\n return null;\n }\n let bindingAxesIndex: number[] = get(this._spec, `${field}Field.bindingAxesIndex`);\n if (!bindingAxesIndex) {\n bindingAxesIndex = [];\n axesComponents.forEach((item, index) => {\n if (ORIENT_MAP[field].includes(item.getOrient())) {\n bindingAxesIndex.push(index);\n }\n });\n }\n if (!bindingAxesIndex.length) {\n return null;\n }\n\n const map: IAxisInfo<T> = new Map();\n let x1 = Infinity;\n let y1 = Infinity;\n let x2 = -Infinity;\n let y2 = -Infinity;\n const { x: sx, y: sy } = this.getLayoutStartPoint();\n bindingAxesIndex.forEach(idx => {\n (x1 = Infinity), (y1 = Infinity), (x2 = -Infinity), (y2 = -Infinity);\n const axis = axesComponents.find(axis => axis.getSpecIndex() === idx);\n if (!axis) {\n return;\n }\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x: regionStartX, y: regionStartY } = r.getLayoutStartPoint();\n x1 = Math.min(x1, regionStartX - sx);\n y1 = Math.min(y1, regionStartY - sy);\n x2 = Math.max(x2, regionStartX + r.getLayoutRect().width - sx);\n y2 = Math.max(y2, regionStartY + r.getLayoutRect().height - sy);\n });\n map.set(idx, { x1, y1, x2, y2, axis: axis as unknown as T });\n });\n\n return map;\n }\n\n onLayoutEnd(): void {\n const region = this._regions[0];\n this.setLayoutRect(region.getLayoutRect());\n this.setLayoutStartPosition(region.getLayoutStartPoint());\n\n super.onLayoutEnd();\n }\n\n protected _releaseEvent(): void {\n this.clearOutEvent();\n\n const triggerConfig = this._getTriggerEvent();\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._eventOff(cfg.in, false, cfg.click);\n cfg.out && this._eventOff(cfg.out, true);\n });\n }\n }\n\n protected _parseFieldInfo() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n const { crosshairComp } = this._stateByField[field];\n\n if (fieldSpec && fieldSpec.visible) {\n this._stateByField[field].attributes = this._parseField(fieldSpec, field);\n\n if (crosshairComp) {\n const { style, type } = this._stateByField[field].attributes;\n const styleKey = type === 'rect' ? 'rectStyle' : 'lineStyle';\n\n crosshairComp.setAttributes({\n [styleKey]: style\n });\n }\n } else if (crosshairComp && crosshairComp.parent) {\n crosshairComp.parent.removeChild(crosshairComp);\n }\n });\n }\n\n protected _parseCrosshairSpec() {\n this._parseFieldInfo();\n\n const { trigger, triggerOff, labelZIndex, gridZIndex } = this._spec;\n if (trigger) {\n this.trigger = trigger;\n }\n if (triggerOff === 'none' || (isNumber(triggerOff) && triggerOff > 0)) {\n this.triggerOff = triggerOff;\n }\n if (labelZIndex !== undefined) {\n this.labelZIndex = labelZIndex;\n }\n if (gridZIndex !== undefined) {\n this.gridZIndex = gridZIndex;\n }\n }\n\n protected _parseField(field: ICrosshairCategoryFieldSpec, fieldName: string) {\n const hair = {} as any;\n const { line = {}, label = {}, visible } = field;\n\n hair.visible = visible;\n hair.type = line.type || 'line';\n\n if (line.visible === false) {\n hair.style = { visible: false };\n } else {\n const style = line.style || {};\n const { stroke, fill, lineWidth } = style as any;\n const { strokeOpacity, fillOpacity, opacity, ...restStyle } = style as any;\n const isLineType = hair.type === 'line';\n let finalOpacity = isLineType ? strokeOpacity : fillOpacity;\n if (isNumber(opacity)) {\n // FIXME: 之前的兼容逻辑,去掉可能会影响现有 crosshair 的展示效果\n finalOpacity = (finalOpacity ?? 1) * opacity;\n }\n hair.style = {\n opacity: finalOpacity,\n pickable: false,\n visible: true,\n ...restStyle\n };\n\n if (isLineType) {\n hair.style.stroke = stroke || fill;\n hair.style.lineWidth = get(line, 'width', lineWidth || 2);\n } else {\n hair.style.fill = fill || stroke;\n if (field?.line?.style?.stroke) {\n hair.style.stroke = field.line.style.stroke;\n }\n const rectSize = get(line, 'width');\n if (typeof rectSize === 'string') {\n const percent = parseInt(rectSize.substring(0, rectSize.length - 1), 10) / 100;\n hair.style.sizePercent = percent;\n } else if (typeof rectSize === 'number' || typeof rectSize === 'function') {\n hair.style.size = rectSize;\n }\n }\n }\n\n if (!!label.visible) {\n const labelBackground = label.labelBackground || {};\n const syncAxisLabelAngle = label.syncAxisLabelAngle ?? false;\n const labelStyle = label.style || {};\n const {\n fill: rectFill = 'rgba(47, 59, 82, 0.9)',\n stroke: rectStroke,\n outerBorder,\n ...rectStyle\n } = labelBackground.style || {};\n hair.label = {\n visible: true,\n formatMethod: label.formatMethod,\n formatter: label.formatter,\n minWidth: labelBackground.minWidth,\n maxWidth: labelBackground.maxWidth,\n padding: labelBackground.padding,\n syncAxisLabelAngle,\n textStyle: {\n fontSize: 14,\n pickable: false,\n ...labelStyle,\n fill: labelStyle.fill || '#fff',\n stroke: get(labelStyle, 'stroke')\n },\n panel: (isBoolean(labelBackground.visible) ? labelBackground.visible : !!labelBackground)\n ? {\n visible: true,\n pickable: false,\n fill: rectFill,\n stroke: rectStroke,\n // Note: 通过这个配置可以保证 label 和 轴 label 对齐\n outerBorder: {\n stroke: rectFill,\n distance: 0,\n lineWidth: 3,\n ...outerBorder\n },\n ...rectStyle\n }\n : { visible: false },\n zIndex: this.labelZIndex,\n childrenPickable: false,\n pickable: false\n };\n } else {\n hair.label = { visible: false };\n }\n\n return hair;\n }\n\n protected _filterAxisByPoint<T>(axisMap: IAxisInfo<T>, relativeX: number, relativeY: number) {\n axisMap &&\n axisMap.forEach(item => {\n const axis = item.axis as unknown as IAxis | IPolarAxis;\n if (outOfBounds(item, relativeX, relativeY)) {\n axisMap.delete(axis.getSpecIndex());\n }\n if ((axis as IPolarAxis).type.startsWith('polarAxis')) {\n // 极坐标下需要判断是否在半径内\n const center = (axis as IPolarAxis).getCenter();\n const innerRadius = (axis as IPolarAxis).getInnerRadius();\n const outerRadius = (axis as IPolarAxis).getOuterRadius();\n const distance = PointService.distancePP({ x: relativeX, y: relativeY }, center);\n if (distance > outerRadius || distance < innerRadius) {\n axisMap.delete((axis as IPolarAxis).getSpecIndex());\n }\n }\n });\n return axisMap;\n }\n\n protected _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 clearOutEvent() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n if (this._clickLock) {\n this._clickLock = null;\n }\n\n if (this._hasActive) {\n this._hasActive = null;\n }\n }\n\n protected _hideByField(field: string) {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n crosshairComp && crosshairComp.hideAll();\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && labelsComp[key].hideAll();\n });\n }\n }\n\n hide() {\n // 隐藏\n Object.keys(this._stateByField).forEach(field => {\n this._hideByField(field);\n });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return Object.keys(this._stateByField).reduce((res, field) => {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n if (crosshairComp) {\n res.push(crosshairComp);\n }\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && res.push(labelsComp[key]);\n });\n }\n return res;\n }, []);\n }\n}\n"]}
@@ -12,13 +12,13 @@ export const layoutByValue = (stateByField, series, layoutStartPoint, enableRema
12
12
  x: 0,
13
13
  y: 0
14
14
  }), Object.keys(stateByField).forEach((field => {
15
- var _a, _b, _c, _d, _e, _f;
15
+ var _a, _b, _c, _d, _e;
16
16
  const {currentValue: currentValue, cacheInfo: cacheInfo, labelsComp: labelsComp, attributes: attributes, coordKey: coordKey} = stateByField[field];
17
17
  let axis = null, coord = 0, axisLabel = null;
18
18
  if (currentValue.size) {
19
19
  const item = Array.from(currentValue.values())[0];
20
20
  coord = item.axis.getScale().scale(item.datum) + item.axis.getLayoutStartPoint()[coordKey] - layoutStartPoint[coordKey],
21
- axis = item.axis, axisLabel = null === (_f = null === (_e = null === (_d = null === (_c = null === (_b = null === (_a = axis.getVRenderComponents()[0]) || void 0 === _a ? void 0 : _a.children[0]) || void 0 === _b ? void 0 : _b.children[0]) || void 0 === _c ? void 0 : _c.children[0]) || void 0 === _d ? void 0 : _d.getChildByName("axis-label-container")) || void 0 === _e ? void 0 : _e.getChildByName("axis-label-container-layer-0")) || void 0 === _f ? void 0 : _f.children[0];
21
+ axis = item.axis, axisLabel = null === (_e = null === (_d = null === (_c = null === (_b = null === (_a = axis.getVRenderComponents()[0]) || void 0 === _a ? void 0 : _a.children[0]) || void 0 === _b ? void 0 : _b.children[0]) || void 0 === _c ? void 0 : _c.getChildByName("axis-label-container")) || void 0 === _d ? void 0 : _d.getChildByName("axis-label-container-layer-0")) || void 0 === _e ? void 0 : _e.children[0];
22
22
  }
23
23
  const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(coord), useCache = enableRemain && !isVisible && isValid(cacheInfo), newCacheInfo = useCache ? cacheInfo : {
24
24
  coordRange: [ 0, 0 ],
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport 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 { Direction, type ILayoutPoint, type 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';\nimport type { IDimensionData } from '../../../event/events/dimension/interface';\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 let axisLabel: IText = null;\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 axisLabel = axis\n .getVRenderComponents()[0]\n ?.children[0]?.children[0]?.children[0]?.getChildByName('axis-label-container')\n ?.getChildByName('axis-label-container-layer-0')?.children[0];\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(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 axisLabel: axisLabel\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 const syncAxisLabelAngle = attributes.label?.syncAxisLabelAngle;\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: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'right' : 'right',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'left' : 'left',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : '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: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'bottom' : 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'top' : '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 [offset0, offset1] = getRectSize(attributes, bandSize, offsetSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord + offset0, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + offset1, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, offsetSize: number, axis: IAxis) => {\n // 外部设置的size\n const visualSize = bandSize === 0 ? offsetSize : bandSize;\n let size = visualSize;\n\n if (hair.style?.sizePercent) {\n // 按照百分比设置大小\n size = visualSize * hair.style.sizePercent;\n } else if (typeof hair.style?.size === 'number') {\n size = hair.style.size;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n size = hair.style.size(axisRect, axis);\n }\n\n return bandSize === 0 ? [-size / 2, size / 2] : [bandSize / 2 - size / 2, size / 2 + bandSize / 2];\n};\n\nexport const getCartesianCrosshairRect = (dimensionData: IDimensionData, layoutStartPoint: ILayoutPoint) => {\n const currValueX: AxisCurrentValueMap = new Map();\n const currValueY: AxisCurrentValueMap = new Map();\n const { series, datum } = dimensionData;\n const isHorizontal = (series as ICartesianSeries).direction === Direction.horizontal;\n const axisHelper = isHorizontal\n ? (series as ICartesianSeries).getYAxisHelper()\n : (series as ICartesianSeries).getXAxisHelper();\n const axisId = axisHelper.getAxisId();\n const axis = series\n .getChart()\n .getComponentsByKey('axes')\n .find(axis => axis.id === axisId) as IAxis;\n\n if (!axis) {\n return undefined;\n }\n (isHorizontal ? currValueY : currValueX).set(axis.getSpecIndex(), {\n datum: series.getDatumPositionValues(datum[0], series.getDimensionField())?.[0],\n axis\n });\n\n const state: CrossHairStateByField = {\n xField: {\n coordKey: 'x',\n anotherAxisKey: 'y',\n currentValue: currValueX,\n attributes: {\n visible: !!currValueX.size,\n type: 'rect'\n }\n },\n yField: {\n coordKey: 'y',\n anotherAxisKey: 'x',\n currentValue: currValueY,\n attributes: {\n visible: !!currValueY.size,\n type: 'rect'\n }\n }\n };\n\n layoutByValue(state, series as ICartesianSeries, layoutStartPoint);\n\n if (state.xField.cacheInfo) {\n return layoutCrosshair(state.xField);\n }\n if (state.yField.cacheInfo) {\n return layoutCrosshair(state.yField);\n }\n return undefined;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport 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 { Direction, type ILayoutPoint, type 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';\nimport type { IDimensionData } from '../../../event/events/dimension/interface';\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 let axisLabel: IText = null;\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 axisLabel = axis\n .getVRenderComponents()[0]\n ?.children[0]?.children[0]?.getChildByName('axis-label-container')\n ?.getChildByName('axis-label-container-layer-0')?.children[0];\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(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 axisLabel: axisLabel\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 const syncAxisLabelAngle = attributes.label?.syncAxisLabelAngle;\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: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'right' : 'right',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'left' : 'left',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : '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: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'bottom' : 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'top' : '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 [offset0, offset1] = getRectSize(attributes, bandSize, offsetSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord + offset0, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + offset1, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, offsetSize: number, axis: IAxis) => {\n // 外部设置的size\n const visualSize = bandSize === 0 ? offsetSize : bandSize;\n let size = visualSize;\n\n if (hair.style?.sizePercent) {\n // 按照百分比设置大小\n size = visualSize * hair.style.sizePercent;\n } else if (typeof hair.style?.size === 'number') {\n size = hair.style.size;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n size = hair.style.size(axisRect, axis);\n }\n\n return bandSize === 0 ? [-size / 2, size / 2] : [bandSize / 2 - size / 2, size / 2 + bandSize / 2];\n};\n\nexport const getCartesianCrosshairRect = (dimensionData: IDimensionData, layoutStartPoint: ILayoutPoint) => {\n const currValueX: AxisCurrentValueMap = new Map();\n const currValueY: AxisCurrentValueMap = new Map();\n const { series, datum } = dimensionData;\n const isHorizontal = (series as ICartesianSeries).direction === Direction.horizontal;\n const axisHelper = isHorizontal\n ? (series as ICartesianSeries).getYAxisHelper()\n : (series as ICartesianSeries).getXAxisHelper();\n const axisId = axisHelper.getAxisId();\n const axis = series\n .getChart()\n .getComponentsByKey('axes')\n .find(axis => axis.id === axisId) as IAxis;\n\n if (!axis) {\n return undefined;\n }\n (isHorizontal ? currValueY : currValueX).set(axis.getSpecIndex(), {\n datum: series.getDatumPositionValues(datum[0], series.getDimensionField())?.[0],\n axis\n });\n\n const state: CrossHairStateByField = {\n xField: {\n coordKey: 'x',\n anotherAxisKey: 'y',\n currentValue: currValueX,\n attributes: {\n visible: !!currValueX.size,\n type: 'rect'\n }\n },\n yField: {\n coordKey: 'y',\n anotherAxisKey: 'x',\n currentValue: currValueY,\n attributes: {\n visible: !!currValueY.size,\n type: 'rect'\n }\n }\n };\n\n layoutByValue(state, series as ICartesianSeries, layoutStartPoint);\n\n if (state.xField.cacheInfo) {\n return layoutCrosshair(state.xField);\n }\n if (state.yField.cacheInfo) {\n return layoutCrosshair(state.yField);\n }\n return undefined;\n};\n"]}
@@ -22,6 +22,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
22
22
  protected _dataUpdating: boolean;
23
23
  protected _stateScale: IBaseScale;
24
24
  protected _relatedAxisComponent: IComponent;
25
+ protected _linkedAxisComponent: IComponent;
25
26
  protected _originalStateFields: Record<number, string | number>;
26
27
  protected _seriesUserId?: StringOrNumber[];
27
28
  protected _seriesIndex?: number[];
@@ -64,29 +64,31 @@ export class DataFilterBaseComponent extends BaseComponent {
64
64
  return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);
65
65
  }
66
66
  _updateRangeFactor(tag) {
67
- const axis = this._relatedAxisComponent, axisScale = axis.getScale(), reverse = this._isReverse(), newRangeFactor = reverse ? [ 1 - this._end, 1 - this._start ] : [ this._start, this._end ];
67
+ const axis = this._relatedAxisComponent, axisScale = axis.getScale(), reverse = this._isReverse(), newRangeFactor = reverse ? [ 1 - this._end, 1 - this._start ] : [ this._start, this._end ], linkedAxis = this._linkedAxisComponent;
68
68
  if (reverse) switch (tag) {
69
69
  case "startHandler":
70
- axis.scaleRangeFactorEnd(newRangeFactor[1]);
70
+ axis.scaleRangeFactorEnd(newRangeFactor[1]), null == linkedAxis || linkedAxis.scaleRangeFactorEnd(newRangeFactor[1]);
71
71
  break;
72
72
 
73
73
  case "endHandler":
74
- axis.scaleRangeFactorStart(newRangeFactor[0]);
74
+ axis.scaleRangeFactorStart(newRangeFactor[0]), null == linkedAxis || linkedAxis.scaleRangeFactorStart(newRangeFactor[0]);
75
75
  break;
76
76
 
77
77
  default:
78
- axis.scaleRangeFactorStart(newRangeFactor[0], !0), axis.scaleRangeFactorEnd(newRangeFactor[1]);
78
+ axis.scaleRangeFactorStart(newRangeFactor[0], !0), axis.scaleRangeFactorEnd(newRangeFactor[1]),
79
+ null == linkedAxis || linkedAxis.scaleRangeFactorStart(newRangeFactor[0], !0), null == linkedAxis || linkedAxis.scaleRangeFactorEnd(newRangeFactor[1]);
79
80
  } else switch (tag) {
80
81
  case "startHandler":
81
- axis.scaleRangeFactorStart(newRangeFactor[0]);
82
+ axis.scaleRangeFactorStart(newRangeFactor[0]), null == linkedAxis || linkedAxis.scaleRangeFactorStart(newRangeFactor[0]);
82
83
  break;
83
84
 
84
85
  case "endHandler":
85
- axis.scaleRangeFactorEnd(newRangeFactor[1]);
86
+ axis.scaleRangeFactorEnd(newRangeFactor[1]), null == linkedAxis || linkedAxis.scaleRangeFactorEnd(newRangeFactor[1]);
86
87
  break;
87
88
 
88
89
  default:
89
- axis.scaleRangeFactorEnd(newRangeFactor[1], !0), axis.scaleRangeFactorStart(newRangeFactor[0]);
90
+ axis.scaleRangeFactorEnd(newRangeFactor[1], !0), null == linkedAxis || linkedAxis.scaleRangeFactorEnd(newRangeFactor[1], !0),
91
+ axis.scaleRangeFactorStart(newRangeFactor[0]), null == linkedAxis || linkedAxis.scaleRangeFactorStart(newRangeFactor[0]);
90
92
  }
91
93
  const newFactor = axisScale.rangeFactor();
92
94
  newFactor ? (this._start = reverse ? 1 - newFactor[1] : newFactor[0], this._end = reverse ? 1 - newFactor[0] : newFactor[1]) : (this._start = 0,
@@ -191,6 +193,7 @@ export class DataFilterBaseComponent extends BaseComponent {
191
193
  }
192
194
  _setAxisFromSpec() {
193
195
  if (isValid(this._spec.axisId) ? this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId) : isValid(this._spec.axisIndex) && (this._relatedAxisComponent = this._option.getComponentByIndex("axes", this._spec.axisIndex)),
196
+ isValid(this._spec.linkedAxisId) ? this._linkedAxisComponent = this._option.getComponentByUserId(this._spec.linkedAxisId) : isValid(this._spec.linkedAxisIndex) && (this._linkedAxisComponent = this._option.getComponentByIndex("axes", this._spec.linkedAxisIndex)),
194
197
  isNil(this._spec.field) && !this._relatedAxisComponent) {
195
198
  const axes = this._option.getComponentsByKey("axes"), sameOrientAxis = axes.find((cm => cm._orient === this._orient));
196
199
  if (sameOrientAxis) this._relatedAxisComponent = sameOrientAxis; else {
@@ -242,22 +245,23 @@ export class DataFilterBaseComponent extends BaseComponent {
242
245
  this._initCommonEvent();
243
246
  }
244
247
  _initData() {
245
- const dataCollection = [], stateFields = [], valueFields = [];
248
+ const dataCollection = [], stateFields = [], valueFields = [], seriesTypes = [];
246
249
  let isCategoryState;
247
250
  if (this._relatedAxisComponent) {
248
251
  const originalStateFields = {};
249
252
  eachSeries(this._regions, (s => {
250
253
  var _a, _b;
254
+ if ("link" === s.type) return;
251
255
  const xAxisHelper = "cartesian" === s.coordinate ? s.getXAxisHelper() : "polar" === s.coordinate ? s.angleAxisHelper : null, yAxisHelper = "cartesian" === s.coordinate ? s.getYAxisHelper() : "polar" === s.coordinate ? s.radiusAxisHelper : null;
252
256
  if (!xAxisHelper || !yAxisHelper) return;
253
257
  const stateAxisHelper = xAxisHelper.getAxisId() === this._relatedAxisComponent.id ? xAxisHelper : yAxisHelper.getAxisId() === this._relatedAxisComponent.id ? yAxisHelper : this._isHorizontal ? xAxisHelper : yAxisHelper, valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;
254
- dataCollection.push(s.getRawData());
258
+ dataCollection.push(s.getRawData()), seriesTypes.push(s.type);
255
259
  const seriesSpec = s.getSpec(), xField = "cartesian" === s.coordinate ? array(seriesSpec.xField) : array(null !== (_a = seriesSpec.angleField) && void 0 !== _a ? _a : seriesSpec.categoryField), yField = "cartesian" === s.coordinate ? array(seriesSpec.yField) : array(null !== (_b = seriesSpec.radiusField) && void 0 !== _b ? _b : seriesSpec.valueField);
256
260
  if (originalStateFields[s.id] = "link" === s.type ? [ "from_xField" ] : stateAxisHelper === xAxisHelper ? xField : yField,
257
261
  isContinuous(stateAxisHelper.getScale(0).type) ? (isCategoryState = !1, stateFields.push(originalStateFields[s.id])) : stateFields.push(originalStateFields[s.id][0]),
258
262
  this._valueField) {
259
263
  const valueField = "link" === s.type ? [ "from_yField" ] : valueAxisHelper === xAxisHelper ? xField : yField;
260
- isContinuous(valueAxisHelper.getScale(0).type) && valueFields.push(...valueField);
264
+ (isContinuous(valueAxisHelper.getScale(0).type) || "dot" === s.type) && valueFields.push(...valueField);
261
265
  }
262
266
  }), {
263
267
  userId: this._seriesUserId,
@@ -281,15 +285,16 @@ export class DataFilterBaseComponent extends BaseComponent {
281
285
  dataCollection: dataCollection,
282
286
  stateFields: stateFields,
283
287
  valueFields: valueFields,
284
- isCategoryState: isCategoryState
288
+ isCategoryState: isCategoryState,
289
+ seriesTypes: seriesTypes
285
290
  },
286
291
  output: {
287
292
  stateField: this._stateField,
288
293
  valueField: this._valueField
289
294
  }
290
295
  }
291
- }, !1), this._data = new CompilableData(this._option, data), data.reRunAllTransform(),
292
- dataSet.multipleDataViewAddListener(dataCollection, "change", this._handleDataCollectionChange.bind(this));
296
+ }, !1), data.reRunAllTransform(), dataSet.multipleDataViewAddListener(dataCollection, "change", this._handleDataCollectionChange.bind(this)),
297
+ this._data = new CompilableData(this._option, data);
293
298
  }
294
299
  setAttrFromSpec() {
295
300
  var _a;