@visactor/vchart 1.12.2-alpha.3 → 1.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/build/es5/index.js +2 -2
  2. package/build/index.js +426 -746
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/component/axis/base-axis.d.ts +1 -1
  6. package/cjs/component/axis/base-axis.js +3 -5
  7. package/cjs/component/axis/base-axis.js.map +1 -1
  8. package/cjs/component/axis/cartesian/axis.d.ts +2 -3
  9. package/cjs/component/axis/cartesian/axis.js +11 -19
  10. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  11. package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
  12. package/cjs/component/axis/cartesian/linear-axis.d.ts +1 -5
  13. package/cjs/component/axis/cartesian/linear-axis.js +1 -37
  14. package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
  15. package/cjs/component/axis/interface/common.js.map +1 -1
  16. package/cjs/component/axis/interface/spec.d.ts +1 -5
  17. package/cjs/component/axis/interface/spec.js.map +1 -1
  18. package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +1 -7
  19. package/cjs/component/axis/mixin/linear-axis-mixin.js +13 -37
  20. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  21. package/cjs/component/brush/brush.js +1 -4
  22. package/cjs/component/brush/brush.js.map +1 -1
  23. package/cjs/component/data-zoom/data-filter-base-component.js +7 -9
  24. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  25. package/cjs/component/data-zoom/data-zoom/data-zoom.js +1 -1
  26. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  27. package/cjs/component/data-zoom/util.js +2 -3
  28. package/cjs/component/data-zoom/util.js.map +1 -1
  29. package/cjs/component/tooltip/constant.d.ts +2 -1
  30. package/cjs/component/tooltip/constant.js +2 -2
  31. package/cjs/component/tooltip/constant.js.map +1 -1
  32. package/cjs/component/tooltip/interface/common.d.ts +3 -3
  33. package/cjs/component/tooltip/interface/common.js.map +1 -1
  34. package/cjs/component/tooltip/processor/base.d.ts +3 -4
  35. package/cjs/component/tooltip/processor/base.js +6 -39
  36. package/cjs/component/tooltip/processor/base.js.map +1 -1
  37. package/cjs/component/tooltip/processor/dimension-tooltip.d.ts +2 -1
  38. package/cjs/component/tooltip/processor/dimension-tooltip.js +37 -6
  39. package/cjs/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  40. package/cjs/component/tooltip/processor/group-tooltip.d.ts +2 -3
  41. package/cjs/component/tooltip/processor/group-tooltip.js +3 -12
  42. package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
  43. package/cjs/component/tooltip/processor/interface.d.ts +0 -1
  44. package/cjs/component/tooltip/processor/interface.js.map +1 -1
  45. package/cjs/component/tooltip/processor/mark-tooltip.d.ts +2 -3
  46. package/cjs/component/tooltip/processor/mark-tooltip.js +4 -13
  47. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  48. package/cjs/component/tooltip/tooltip-transformer.js +2 -2
  49. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  50. package/cjs/component/tooltip/tooltip.js +20 -22
  51. package/cjs/component/tooltip/tooltip.js.map +1 -1
  52. package/cjs/component/tooltip/utils/common.d.ts +3 -1
  53. package/cjs/component/tooltip/utils/common.js +19 -2
  54. package/cjs/component/tooltip/utils/common.js.map +1 -1
  55. package/cjs/component/tooltip/utils/compose.js +1 -1
  56. package/cjs/component/tooltip/utils/compose.js.map +1 -1
  57. package/cjs/component/tooltip/utils/get-spec.js +64 -81
  58. package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
  59. package/cjs/component/tooltip/utils/index.d.ts +0 -1
  60. package/cjs/component/tooltip/utils/index.js +1 -1
  61. package/cjs/component/tooltip/utils/index.js.map +1 -1
  62. package/cjs/component/tooltip/utils/show-tooltip.js +5 -6
  63. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  64. package/cjs/constant/layout.js +2 -1
  65. package/cjs/constant/polar.js +1 -2
  66. package/cjs/core/index.d.ts +1 -1
  67. package/cjs/core/index.js +1 -1
  68. package/cjs/core/index.js.map +1 -1
  69. package/cjs/event/events/dimension/util/cartesian.d.ts +1 -1
  70. package/cjs/event/events/dimension/util/cartesian.js +6 -4
  71. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  72. package/cjs/event/events/dimension/util/polar.js +4 -2
  73. package/cjs/event/events/dimension/util/polar.js.map +1 -1
  74. package/cjs/plugin/components/axis-sync/tick-align-transform.js +3 -3
  75. package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  76. package/cjs/plugin/components/axis-sync/zero-align-transform.js +3 -5
  77. package/cjs/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
  78. package/cjs/plugin/components/tooltip-handler/base.js +27 -64
  79. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  80. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -4
  81. package/cjs/plugin/components/tooltip-handler/utils/position.js +8 -11
  82. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  83. package/cjs/series/base/tooltip-helper.d.ts +1 -3
  84. package/cjs/series/base/tooltip-helper.js +5 -30
  85. package/cjs/series/base/tooltip-helper.js.map +1 -1
  86. package/cjs/series/dot/tooltip-helper.d.ts +0 -1
  87. package/cjs/series/dot/tooltip-helper.js +2 -19
  88. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  89. package/cjs/series/interface/series.d.ts +2 -0
  90. package/cjs/series/interface/series.js.map +1 -1
  91. package/cjs/series/pie/interface.d.ts +1 -1
  92. package/cjs/series/pie/interface.js.map +1 -1
  93. package/cjs/series/pie/pie-transformer.js +2 -2
  94. package/cjs/series/pie/pie-transformer.js.map +1 -1
  95. package/cjs/series/polar/polar.js.map +1 -1
  96. package/cjs/series/sankey/sankey.d.ts +1 -0
  97. package/cjs/series/sankey/sankey.js +23 -12
  98. package/cjs/series/sankey/sankey.js.map +1 -1
  99. package/cjs/util/array.d.ts +0 -1
  100. package/cjs/util/array.js +2 -11
  101. package/cjs/util/array.js.map +1 -1
  102. package/esm/component/axis/base-axis.d.ts +1 -1
  103. package/esm/component/axis/base-axis.js +2 -6
  104. package/esm/component/axis/base-axis.js.map +1 -1
  105. package/esm/component/axis/cartesian/axis.d.ts +2 -3
  106. package/esm/component/axis/cartesian/axis.js +10 -18
  107. package/esm/component/axis/cartesian/axis.js.map +1 -1
  108. package/esm/component/axis/cartesian/interface/common.js.map +1 -1
  109. package/esm/component/axis/cartesian/linear-axis.d.ts +1 -5
  110. package/esm/component/axis/cartesian/linear-axis.js +1 -40
  111. package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
  112. package/esm/component/axis/interface/common.js.map +1 -1
  113. package/esm/component/axis/interface/spec.d.ts +1 -5
  114. package/esm/component/axis/interface/spec.js.map +1 -1
  115. package/esm/component/axis/mixin/linear-axis-mixin.d.ts +1 -7
  116. package/esm/component/axis/mixin/linear-axis-mixin.js +13 -37
  117. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  118. package/esm/component/brush/brush.js +2 -2
  119. package/esm/component/brush/brush.js.map +1 -1
  120. package/esm/component/data-zoom/data-filter-base-component.js +6 -6
  121. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  122. package/esm/component/data-zoom/data-zoom/data-zoom.js +2 -2
  123. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  124. package/esm/component/data-zoom/util.js +1 -3
  125. package/esm/component/data-zoom/util.js.map +1 -1
  126. package/esm/component/tooltip/constant.d.ts +2 -1
  127. package/esm/component/tooltip/constant.js +2 -0
  128. package/esm/component/tooltip/constant.js.map +1 -1
  129. package/esm/component/tooltip/interface/common.d.ts +3 -3
  130. package/esm/component/tooltip/interface/common.js.map +1 -1
  131. package/esm/component/tooltip/processor/base.d.ts +3 -4
  132. package/esm/component/tooltip/processor/base.js +7 -44
  133. package/esm/component/tooltip/processor/base.js.map +1 -1
  134. package/esm/component/tooltip/processor/dimension-tooltip.d.ts +2 -1
  135. package/esm/component/tooltip/processor/dimension-tooltip.js +43 -6
  136. package/esm/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  137. package/esm/component/tooltip/processor/group-tooltip.d.ts +2 -3
  138. package/esm/component/tooltip/processor/group-tooltip.js +4 -13
  139. package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
  140. package/esm/component/tooltip/processor/interface.d.ts +0 -1
  141. package/esm/component/tooltip/processor/interface.js.map +1 -1
  142. package/esm/component/tooltip/processor/mark-tooltip.d.ts +2 -3
  143. package/esm/component/tooltip/processor/mark-tooltip.js +3 -14
  144. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  145. package/esm/component/tooltip/tooltip-transformer.js +1 -1
  146. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  147. package/esm/component/tooltip/tooltip.js +21 -23
  148. package/esm/component/tooltip/tooltip.js.map +1 -1
  149. package/esm/component/tooltip/utils/common.d.ts +3 -1
  150. package/esm/component/tooltip/utils/common.js +15 -1
  151. package/esm/component/tooltip/utils/common.js.map +1 -1
  152. package/esm/component/tooltip/utils/compose.js +2 -2
  153. package/esm/component/tooltip/utils/compose.js.map +1 -1
  154. package/esm/component/tooltip/utils/get-spec.js +61 -81
  155. package/esm/component/tooltip/utils/get-spec.js.map +1 -1
  156. package/esm/component/tooltip/utils/index.d.ts +0 -1
  157. package/esm/component/tooltip/utils/index.js +0 -2
  158. package/esm/component/tooltip/utils/index.js.map +1 -1
  159. package/esm/component/tooltip/utils/show-tooltip.js +5 -6
  160. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  161. package/esm/constant/layout.js +2 -1
  162. package/esm/constant/polar.js +1 -2
  163. package/esm/core/index.d.ts +1 -1
  164. package/esm/core/index.js +1 -1
  165. package/esm/core/index.js.map +1 -1
  166. package/esm/event/events/dimension/util/cartesian.d.ts +1 -1
  167. package/esm/event/events/dimension/util/cartesian.js +6 -4
  168. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  169. package/esm/event/events/dimension/util/polar.js +3 -1
  170. package/esm/event/events/dimension/util/polar.js.map +1 -1
  171. package/esm/plugin/components/axis-sync/tick-align-transform.js +2 -4
  172. package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  173. package/esm/plugin/components/axis-sync/zero-align-transform.js +4 -4
  174. package/esm/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
  175. package/esm/plugin/components/tooltip-handler/base.js +20 -57
  176. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  177. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -4
  178. package/esm/plugin/components/tooltip-handler/utils/position.js +8 -11
  179. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  180. package/esm/series/base/tooltip-helper.d.ts +1 -3
  181. package/esm/series/base/tooltip-helper.js +4 -25
  182. package/esm/series/base/tooltip-helper.js.map +1 -1
  183. package/esm/series/dot/tooltip-helper.d.ts +0 -1
  184. package/esm/series/dot/tooltip-helper.js +3 -20
  185. package/esm/series/dot/tooltip-helper.js.map +1 -1
  186. package/esm/series/interface/series.d.ts +2 -0
  187. package/esm/series/interface/series.js.map +1 -1
  188. package/esm/series/pie/interface.d.ts +1 -1
  189. package/esm/series/pie/interface.js.map +1 -1
  190. package/esm/series/pie/pie-transformer.js +1 -1
  191. package/esm/series/pie/pie-transformer.js.map +1 -1
  192. package/esm/series/polar/polar.js.map +1 -1
  193. package/esm/series/sankey/sankey.d.ts +1 -0
  194. package/esm/series/sankey/sankey.js +21 -12
  195. package/esm/series/sankey/sankey.js.map +1 -1
  196. package/esm/util/array.d.ts +0 -1
  197. package/esm/util/array.js +0 -9
  198. package/esm/util/array.js.map +1 -1
  199. package/package.json +15 -15
  200. package/cjs/component/axis/mixin/util/break-data.d.ts +0 -4
  201. package/cjs/component/axis/mixin/util/break-data.js +0 -39
  202. package/cjs/component/axis/mixin/util/break-data.js.map +0 -1
  203. package/cjs/component/tooltip/utils/pattern.d.ts +0 -4
  204. package/cjs/component/tooltip/utils/pattern.js +0 -13
  205. package/cjs/component/tooltip/utils/pattern.js.map +0 -1
  206. package/esm/component/axis/mixin/util/break-data.d.ts +0 -4
  207. package/esm/component/axis/mixin/util/break-data.js +0 -31
  208. package/esm/component/axis/mixin/util/break-data.js.map +0 -1
  209. package/esm/component/tooltip/utils/pattern.d.ts +0 -4
  210. package/esm/component/tooltip/utils/pattern.js +0 -5
  211. package/esm/component/tooltip/utils/pattern.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, TooltipActiveType } from '../../typings/tooltip';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode } from '../../util/env';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { showTooltip } from './utils/show-tooltip';\nimport { isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Source_Type } from '../../constant/event';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor } from './processor';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { hasParentElement, isArray, isValid, isNil, array } from '@visactor/vutils';\nimport { VChart } from '../../core/vchart';\nimport type { TooltipEventParams } from './interface/event';\nimport { Factory } from '../../core/factory';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport { TooltipSpecTransformer } from './tooltip-transformer';\nimport { error } from '../../util';\nimport { TooltipHandlerType } from './constant';\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent<any> implements ITooltip {\n protected layoutZIndex: number = 1;\n static type = ComponentTypeEnum.tooltip;\n static readonly transformerConstructor = TooltipSpecTransformer;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n readonly transformerConstructor = TooltipSpecTransformer;\n\n static specKey = 'tooltip';\n specKey = 'tooltip';\n\n layoutType: 'none' = 'none';\n private _timer?: number;\n protected declare _spec: ITooltipSpec;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const tooltipSpec = chartSpec[this.specKey];\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return [\n {\n spec: tooltipSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: ComponentTypeEnum.tooltip\n }\n ];\n }\n const specInfos: IModelSpecInfo[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n specInfos.push({\n spec: s,\n specPath: [this.specKey, i],\n specInfoPath: ['component', this.specKey, i],\n type: ComponentTypeEnum.tooltip\n });\n });\n return specInfos;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor, GroupTooltipProcessor>;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n private _cacheActiveType: TooltipActiveType | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _isTooltipShown: boolean = false;\n\n protected _clickLock: boolean = false;\n\n /** 当前是否正在显示 tooltip */\n isTooltipShown() {\n return this._isTooltipShown;\n }\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n this._isTooltipShown = false;\n }\n\n beforeRelease() {\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const type = renderMode === 'canvas' ? TooltipHandlerType.canvas : TooltipHandlerType.dom;\n const handlerConstructor = Factory.getComponentPluginInType(type);\n if (!handlerConstructor) {\n error('Can not find tooltip handler: ' + type);\n }\n const handler = new handlerConstructor();\n handler.name = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this.getSpecIndex()}`;\n this.pluginService?.load([handler]);\n\n this.tooltipHandler = handler as unknown as ITooltipHandler;\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n this.processor = {\n mark: new MarkTooltipProcessor(this),\n dimension: new DimensionTooltipProcessor(this),\n group: new GroupTooltipProcessor(this)\n };\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n const trigger = array(this._spec.trigger ?? 'hover');\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger.includes('hover')) {\n this._mountEvent('pointermove', { source: 'chart' }, this._getMouseMoveHandler(false));\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { source: 'chart' }, this._getMouseMoveHandler(false));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n }\n this._mountEvent('pointerout', { source: 'canvas' }, this._getMouseOutHandler(false));\n }\n if (trigger.includes('click')) {\n this._mountEvent('pointertap', { source: 'chart' }, this._getMouseMoveHandler(true));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n } else if (this._spec.lockAfterClick) {\n this._mountEvent('pointertap', { source: 'chart' }, this._handleClickToLock);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleClickToLock = (params: BaseEventParams) => {\n if (this._clickLock) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n } else {\n this._clickLock = true;\n }\n };\n\n protected _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow || this._clickLock) {\n return;\n }\n\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n return;\n }\n\n const browserEnv = isTrueBrowser(this._option?.mode);\n const { clientX, clientY } = params.event as MouseEvent;\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n if (browserEnv && this._isPointerOnTooltip(params)) {\n return;\n }\n\n // 判断鼠标是否在图表范围内\n if (browserEnv && needPointerDetection && this._isPointerInChart({ x: clientX, y: clientY })) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params?: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...(params as any),\n tooltip: this\n });\n this._cacheInfo = undefined;\n this._cacheParams = undefined;\n this._cacheActiveType = undefined;\n }\n };\n\n protected _getMouseMoveHandler = (isClick: boolean) => (params: BaseEventParams) => {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n if (this._clickLock) {\n if (isClick) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n }\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n /** tooltip 是否显示成功 */\n const success: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: false,\n dimension: false,\n group: false\n };\n\n /* 显示常规tooltip */\n success.group = this._showTooltipByMouseEvent('group', mouseEventData, params, isClick);\n if (!success.group) {\n success.mark = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick);\n }\n if (!success.mark && !success.group) {\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (Object.values(success).every(val => !val) && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n success.mark = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!success.mark && !success.group && (!success.dimension || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n isClick: boolean,\n useCache?: boolean\n ): boolean => {\n const processor = this.processor[activeType];\n // 判断是否应该触发 tooltip\n if (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n this._cacheActiveType = activeType;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n if (isClick && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n } else if (Number.isFinite(this._spec.hideTimer)) {\n this._timer = setTimeout(() => {\n this._handleChartMouseOut();\n }, this._spec.hideTimer as number) as unknown as number;\n }\n }\n // 全局唯一 tooltip\n const vchart = this._option?.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip && vchart) {\n VChart.hideTooltip(vchart.id);\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n\n let activeType: TooltipActiveType = 'dimension';\n const { tooltipInfo, ignore } = this.processor[activeType].getMouseEventData(params);\n result.tooltipInfo[activeType] = tooltipInfo as any;\n result.ignore[activeType] = ignore;\n\n const dimensionInfo = tooltipInfo as DimensionTooltipInfo;\n\n for (activeType of Object.keys(this.processor) as any) {\n if (activeType !== 'dimension') {\n const { tooltipInfo, ignore } = this.processor[activeType].getMouseEventData(params, dimensionInfo);\n result.tooltipInfo[activeType] = tooltipInfo as any;\n result.ignore[activeType] = ignore;\n }\n }\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams): TooltipResult => {\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n // 如果当前 tooltip 未显示,则提前退出\n return TooltipResult.success;\n }\n\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n\n // 删除缓存\n Object.values(this.processor).forEach((processor: BaseTooltipProcessor) => {\n processor.clearCache();\n });\n\n // 隐藏 tooltip\n let hideTooltip;\n if (this._spec.handler?.hideTooltip) {\n hideTooltip = this._spec.handler.hideTooltip.bind(this._spec.handler);\n } else if (this.tooltipHandler?.hideTooltip) {\n hideTooltip = this.tooltipHandler.hideTooltip.bind(this.tooltipHandler);\n }\n if (hideTooltip) {\n const result = hideTooltip(params);\n if (!result) {\n this._isTooltipShown = false;\n }\n return result;\n }\n return TooltipResult.failed;\n };\n\n reInit(spec?: any) {\n super.reInit(spec);\n\n if (this.tooltipHandler) {\n this.tooltipHandler.reInit?.();\n } else {\n this._initHandler();\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n /** 手动隐藏 tooltip,返回是否成功 */\n hideTooltip(): boolean {\n const params: TooltipHandlerParams = {\n changePositionOnly: false,\n tooltip: this,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any;\n\n this._alwaysShow = false;\n return !this._hideTooltipByHandler(params);\n }\n\n private _isSameAsCache(\n nextInfo?: TooltipInfo,\n nextParams?: BaseEventParams,\n nextActiveType?: TooltipActiveType\n ): boolean {\n if (nextActiveType !== this._cacheActiveType) {\n return false;\n }\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n // 判断 tooltip 信息是否一致\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n const isSameAsCacheInfo =\n prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n if (!isSameAsCacheInfo) {\n return false;\n }\n } else {\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n const isSameAsCacheInfo =\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series;\n if (!isSameAsCacheInfo) {\n return false;\n }\n }\n\n // 判断事件触发信息是否一致\n const prevParams = this._cacheParams;\n if (isNil(prevParams) || isNil(nextParams)) {\n return false;\n }\n return (\n prevParams.mark === nextParams.mark &&\n prevParams.model === nextParams.model &&\n prevParams.datum === nextParams.datum\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option?.globalInstance;\n if (!globalInstance) {\n return false;\n }\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const canvas = globalInstance.getCanvas();\n const { x: chartX, y: chartY, width: chartWidth, height: chartHeight } = canvas.getBoundingClientRect();\n // 鼠标仍在图表范围内,则不处理\n if (x >= chartX && x <= chartX + chartWidth && y >= chartY && y <= chartY + chartHeight) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let newTarget: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as any;\n newTarget = nativeEvent.relatedTarget;\n // if in shadow DOM use composedPath to access target\n // FIXME: shadow DOM 的 relatedTarget 的属性是?\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n newTarget = nativeEvent.composedPath()[0];\n }\n } else {\n newTarget = event.relatedTarget;\n }\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(newTarget) && hasParentElement(newTarget, container)) {\n return true;\n }\n }\n return false;\n }\n\n getVisible() {\n return this._spec.visible !== false;\n }\n}\n\nexport const registerTooltip = () => {\n Factory.registerComponent(Tooltip.type, Tooltip);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, TooltipActiveType } from '../../typings/tooltip';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode } from '../../util/env';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { showTooltip } from './utils/show-tooltip';\nimport { isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Source_Type } from '../../constant/event';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor } from './processor';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { hasParentElement, isArray, isValid, isNil, array } from '@visactor/vutils';\nimport { VChart } from '../../core/vchart';\nimport type { TooltipEventParams } from './interface/event';\nimport { Factory } from '../../core/factory';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport { TooltipSpecTransformer } from './tooltip-transformer';\nimport { error } from '../../util';\nimport { TOOLTIP_TYPES, TooltipHandlerType } from './constant';\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent<any> implements ITooltip {\n protected layoutZIndex: number = 1;\n static type = ComponentTypeEnum.tooltip;\n static readonly transformerConstructor = TooltipSpecTransformer;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n readonly transformerConstructor = TooltipSpecTransformer;\n\n static specKey = 'tooltip';\n specKey = 'tooltip';\n\n layoutType: 'none' = 'none';\n private _timer?: number;\n protected declare _spec: ITooltipSpec;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const tooltipSpec = chartSpec[this.specKey];\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return [\n {\n spec: tooltipSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: ComponentTypeEnum.tooltip\n }\n ];\n }\n const specInfos: IModelSpecInfo[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n specInfos.push({\n spec: s,\n specPath: [this.specKey, i],\n specInfoPath: ['component', this.specKey, i],\n type: ComponentTypeEnum.tooltip\n });\n });\n return specInfos;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor, GroupTooltipProcessor>;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n private _cacheActiveType: TooltipActiveType | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _isTooltipShown: boolean = false;\n\n protected _clickLock: boolean = false;\n\n /** 当前是否正在显示 tooltip */\n isTooltipShown() {\n return this._isTooltipShown;\n }\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n this._isTooltipShown = false;\n }\n\n beforeRelease() {\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const type = renderMode === 'canvas' ? TooltipHandlerType.canvas : TooltipHandlerType.dom;\n const handlerConstructor = Factory.getComponentPluginInType(type);\n if (!handlerConstructor) {\n error('Can not find tooltip handler: ' + type);\n }\n const handler = new handlerConstructor();\n handler.name = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this.getSpecIndex()}`;\n this.pluginService?.load([handler]);\n\n this.tooltipHandler = handler as unknown as ITooltipHandler;\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n const activeType = this._spec.activeType;\n\n this.processor = {};\n\n if (activeType.includes('dimension')) {\n this.processor.dimension = new DimensionTooltipProcessor(this);\n }\n\n if (activeType.includes('group')) {\n this.processor.group = new GroupTooltipProcessor(this);\n }\n\n if (activeType.includes('mark')) {\n this.processor.mark = new MarkTooltipProcessor(this);\n }\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n const trigger = array(this._spec.trigger ?? 'hover');\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger.includes('hover')) {\n this._mountEvent('pointermove', { source: 'chart' }, this._getMouseMoveHandler(false));\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { source: 'chart' }, this._getMouseMoveHandler(false));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n }\n this._mountEvent('pointerout', { source: 'canvas' }, this._getMouseOutHandler(false));\n }\n if (trigger.includes('click')) {\n this._mountEvent('pointertap', { source: 'chart' }, this._getMouseMoveHandler(true));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n } else if (this._spec.lockAfterClick) {\n this._mountEvent('pointertap', { source: 'chart' }, this._handleClickToLock);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleClickToLock = (params: BaseEventParams) => {\n if (this._clickLock) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n } else {\n this._clickLock = true;\n }\n };\n\n protected _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow || this._clickLock) {\n return;\n }\n\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n return;\n }\n\n const browserEnv = isTrueBrowser(this._option?.mode);\n const { clientX, clientY } = params.event as MouseEvent;\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n if (browserEnv && this._isPointerOnTooltip(params)) {\n return;\n }\n\n // 判断鼠标是否在图表范围内\n if (browserEnv && needPointerDetection && this._isPointerInChart({ x: clientX, y: clientY })) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params?: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...(params as any),\n tooltip: this\n });\n this._cacheInfo = undefined;\n this._cacheParams = undefined;\n this._cacheActiveType = undefined;\n }\n };\n\n protected _getMouseMoveHandler = (isClick: boolean) => (params: BaseEventParams) => {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n if (this._clickLock) {\n if (isClick) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n }\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n /** tooltip 是否显示成功 */\n const success: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: false,\n dimension: false,\n group: false\n };\n\n for (let i = 0, len = TOOLTIP_TYPES.length; i < len; i++) {\n const type = TOOLTIP_TYPES[i];\n const res = this.processor[type] ? this._showTooltipByMouseEvent(type, mouseEventData, params, isClick) : false;\n\n if (res) {\n success[type] = true;\n break;\n }\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (Object.values(success).every(val => !val) && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n success.mark = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!success.mark && !success.group && (!success.dimension || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n isClick: boolean,\n useCache?: boolean\n ): boolean => {\n const processor = this.processor[activeType];\n // 判断是否应该触发 tooltip\n if (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n this._cacheActiveType = activeType;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n if (isClick && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n } else if (Number.isFinite(this._spec.hideTimer)) {\n this._timer = setTimeout(() => {\n this._handleChartMouseOut();\n }, this._spec.hideTimer as number) as unknown as number;\n }\n }\n // 全局唯一 tooltip\n const vchart = this._option?.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip && vchart) {\n VChart.hideTooltip(vchart.id);\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n\n Object.keys(this.processor).forEach(activeType => {\n const { tooltipInfo, ignore } = this.processor[activeType as TooltipActiveType].getMouseEventData(params);\n result.tooltipInfo[activeType as TooltipActiveType] = tooltipInfo as any;\n result.ignore[activeType as TooltipActiveType] = ignore;\n });\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams): TooltipResult => {\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n // 如果当前 tooltip 未显示,则提前退出\n return TooltipResult.success;\n }\n\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n\n // 删除缓存\n Object.values(this.processor).forEach((processor: BaseTooltipProcessor) => {\n processor.clearCache();\n });\n\n // 隐藏 tooltip\n const handler = this._spec.handler ?? this.tooltipHandler;\n\n if (handler.hideTooltip) {\n const result = handler.hideTooltip.call(handler, params);\n if (!result) {\n this._isTooltipShown = false;\n }\n return result;\n }\n return TooltipResult.failed;\n };\n\n reInit(spec?: any) {\n super.reInit(spec);\n\n if (this.tooltipHandler) {\n this.tooltipHandler.reInit?.();\n } else {\n this._initHandler();\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n /** 手动隐藏 tooltip,返回是否成功 */\n hideTooltip(): boolean {\n const params: TooltipHandlerParams = {\n changePositionOnly: false,\n tooltip: this,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any;\n\n this._alwaysShow = false;\n return !this._hideTooltipByHandler(params);\n }\n\n private _isSameAsCache(\n nextInfo?: TooltipInfo,\n nextParams?: BaseEventParams,\n nextActiveType?: TooltipActiveType\n ): boolean {\n if (nextActiveType !== this._cacheActiveType) {\n return false;\n }\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n // 判断 tooltip 信息是否一致\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n const isSameAsCacheInfo =\n prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n if (!isSameAsCacheInfo) {\n return false;\n }\n } else {\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n const isSameAsCacheInfo =\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series;\n if (!isSameAsCacheInfo) {\n return false;\n }\n }\n\n // 判断事件触发信息是否一致\n const prevParams = this._cacheParams;\n if (isNil(prevParams) || isNil(nextParams)) {\n return false;\n }\n return (\n prevParams.mark === nextParams.mark &&\n prevParams.model === nextParams.model &&\n prevParams.datum === nextParams.datum\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option?.globalInstance;\n if (!globalInstance) {\n return false;\n }\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const canvas = globalInstance.getCanvas();\n const { x: chartX, y: chartY, width: chartWidth, height: chartHeight } = canvas.getBoundingClientRect();\n // 鼠标仍在图表范围内,则不处理\n if (x >= chartX && x <= chartX + chartWidth && y >= chartY && y <= chartY + chartHeight) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let newTarget: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as any;\n newTarget = nativeEvent.relatedTarget;\n // if in shadow DOM use composedPath to access target\n // FIXME: shadow DOM 的 relatedTarget 的属性是?\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n newTarget = nativeEvent.composedPath()[0];\n }\n } else {\n newTarget = event.relatedTarget;\n }\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(newTarget) && hasParentElement(newTarget, container)) {\n return true;\n }\n }\n return false;\n }\n\n getVisible() {\n return this._spec.visible !== false;\n }\n}\n\nexport const registerTooltip = () => {\n Factory.registerComponent(Tooltip.type, Tooltip);\n};\n"]}
@@ -1,5 +1,7 @@
1
- import type { TooltipActiveType } from '../../../typings';
1
+ import type { ITooltipPattern, TooltipActiveType } from '../../../typings';
2
2
  import type { ITooltipSpec } from '../interface';
3
3
  import type { BaseEventParams } from '../../../event/interface';
4
4
  export declare const getTooltipActualActiveType: (spec?: ITooltipSpec) => TooltipActiveType[];
5
+ export declare const isActiveTypeVisible: (type: TooltipActiveType, spec?: ITooltipSpec) => boolean;
5
6
  export declare function isEmptyPos(params: BaseEventParams): boolean;
7
+ export declare function combinePattern(patternList: ITooltipPattern[]): ITooltipPattern;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.isEmptyPos = exports.getTooltipActualActiveType = void 0;
5
+ }), exports.combinePattern = exports.isEmptyPos = exports.isActiveTypeVisible = exports.getTooltipActualActiveType = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils"), getTooltipActualActiveType = spec => {
8
8
  var _a, _b, _c;
@@ -18,10 +18,27 @@ const vutils_1 = require("@visactor/vutils"), getTooltipActualActiveType = spec
18
18
  })), Object.keys(activeTypeMap).filter((t => activeTypeMap[t]));
19
19
  };
20
20
 
21
+ exports.getTooltipActualActiveType = getTooltipActualActiveType;
22
+
23
+ const isActiveTypeVisible = (type, spec) => !spec || !1 !== spec.visible && ((!spec[type] || !1 !== spec[type].visible) && !(spec.activeType && !spec.activeType.includes(type)));
24
+
21
25
  function isEmptyPos(params) {
22
26
  return (0, vutils_1.isNil)(params.mark) && (0, vutils_1.isNil)(params.model) && (0,
23
27
  vutils_1.isNil)(params.datum);
24
28
  }
25
29
 
26
- exports.getTooltipActualActiveType = getTooltipActualActiveType, exports.isEmptyPos = isEmptyPos;
30
+ function combinePattern(patternList) {
31
+ if (!patternList || !patternList.length) return null;
32
+ const defaultPatternContent = [];
33
+ return patternList.forEach((({content: content}) => {
34
+ (0, vutils_1.isFunction)(content) ? defaultPatternContent.push(content) : (0, vutils_1.isArray)(content) ? content.forEach((c => {
35
+ defaultPatternContent.push(c);
36
+ })) : content && defaultPatternContent.push(content);
37
+ })), defaultPatternContent.length ? Object.assign(Object.assign({}, patternList[0]), {
38
+ content: defaultPatternContent
39
+ }) : patternList[0];
40
+ }
41
+
42
+ exports.isActiveTypeVisible = isActiveTypeVisible, exports.isEmptyPos = isEmptyPos,
43
+ exports.combinePattern = combinePattern;
27
44
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/utils/common.ts"],"names":[],"mappings":";;;AAAA,6CAAkD;AAK3C,MAAM,0BAA0B,GAAG,CAAC,IAAmB,EAAuB,EAAE;;IACrF,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,MAAK,KAAK,EAAE;QAC3B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,aAAa,GAAwD;QACzE,IAAI,EAAE,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,OAAO,MAAK,KAAK;QACnC,SAAS,EAAE,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,0CAAE,OAAO,MAAK,KAAK;QAC7C,KAAK,EAAE,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,0CAAE,OAAO,MAAK,KAAK;KACtC,CAAC;IAEF,IAAI,IAAA,gBAAO,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YACrC,aAAa,CAAC,CAAC,CAAC,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,0CAAE,QAAQ,CAAC,CAAsB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAwB,CAAC;AACzF,CAAC,CAAC;AAlBW,QAAA,0BAA0B,8BAkBrC;AAEF,SAAgB,UAAU,CAAC,MAAuB;IAChD,OAAO,IAAA,cAAK,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,cAAK,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAA,cAAK,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAFD,gCAEC","file":"common.js","sourcesContent":["import { isNil, isValid } from '@visactor/vutils';\nimport type { TooltipActiveType } from '../../../typings';\nimport type { ITooltipActiveTypeAsKeys, ITooltipSpec } from '../interface';\nimport type { BaseEventParams } from '../../../event/interface';\n\nexport const getTooltipActualActiveType = (spec?: ITooltipSpec): TooltipActiveType[] => {\n if (spec?.visible === false) {\n return [];\n }\n\n const activeTypeMap: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: spec?.mark?.visible !== false,\n dimension: spec?.dimension?.visible !== false,\n group: spec?.group?.visible !== false\n };\n\n if (isValid(spec?.activeType)) {\n Object.keys(activeTypeMap).forEach(t => {\n activeTypeMap[t] = spec?.activeType?.includes(t as TooltipActiveType);\n });\n }\n\n return Object.keys(activeTypeMap).filter(t => activeTypeMap[t]) as TooltipActiveType[];\n};\n\nexport function isEmptyPos(params: BaseEventParams): boolean {\n return isNil(params.mark) && isNil(params.model) && isNil(params.datum);\n}\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/utils/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import { isArray, isFunction, isNil, isValid } from '@visactor/vutils';\nimport type {\n ITooltipLinePattern,\n ITooltipPattern,\n MaybeArray,\n TooltipActiveType,\n TooltipPatternProperty\n} from '../../../typings';\nimport type { ITooltipActiveTypeAsKeys, ITooltipSpec } from '../interface';\nimport type { BaseEventParams } from '../../../event/interface';\n\nexport const getTooltipActualActiveType = (spec?: ITooltipSpec): TooltipActiveType[] => {\n if (spec?.visible === false) {\n return [];\n }\n\n const activeTypeMap: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: spec?.mark?.visible !== false,\n dimension: spec?.dimension?.visible !== false,\n group: spec?.group?.visible !== false\n };\n\n if (isValid(spec?.activeType)) {\n Object.keys(activeTypeMap).forEach(t => {\n activeTypeMap[t as TooltipActiveType] = spec?.activeType?.includes(t as TooltipActiveType);\n });\n }\n\n return Object.keys(activeTypeMap).filter(t => activeTypeMap[t as TooltipActiveType]) as TooltipActiveType[];\n};\n\nexport const isActiveTypeVisible = (type: TooltipActiveType, spec?: ITooltipSpec) => {\n if (!spec) {\n return true;\n }\n\n if (spec.visible === false) {\n return false;\n }\n\n if (spec[type] && spec[type].visible === false) {\n return false;\n }\n\n if (spec.activeType && !spec.activeType.includes(type)) {\n return false;\n }\n\n return true;\n};\n\nexport function isEmptyPos(params: BaseEventParams): boolean {\n return isNil(params.mark) && isNil(params.model) && isNil(params.datum);\n}\n\nexport function combinePattern(patternList: ITooltipPattern[]) {\n if (!patternList || !patternList.length) {\n return null;\n }\n\n // 拼接默认 tooltip content\n const defaultPatternContent: Array<TooltipPatternProperty<MaybeArray<ITooltipLinePattern>>> = [];\n patternList.forEach(({ content }) => {\n if (isFunction(content)) {\n defaultPatternContent.push(content);\n } else if (isArray(content)) {\n content.forEach(c => {\n defaultPatternContent.push(c);\n });\n } else if (content) {\n defaultPatternContent.push(content);\n }\n });\n\n if (defaultPatternContent.length) {\n return {\n ...patternList[0],\n content: defaultPatternContent\n };\n }\n\n return patternList[0];\n}\n"]}
@@ -53,7 +53,7 @@ const vutils_1 = require("@visactor/vutils"), get_value_1 = require("./get-value
53
53
  case "dimension":
54
54
  for (const {data: d} of data) {
55
55
  for (const {datum: datumList, series: series} of d) {
56
- if (!(0, common_1.getTooltipActualActiveType)(null === (_c = series.tooltipHelper) || void 0 === _c ? void 0 : _c.spec).includes("dimension")) continue;
56
+ if (!(0, common_1.isActiveTypeVisible)("dimension", null === (_c = series.tooltipHelper) || void 0 === _c ? void 0 : _c.spec)) continue;
57
57
  const contentPatterns = null !== (_d = null == patternContent ? void 0 : patternContent.filter((c => (0,
58
58
  vutils_1.isNil)(c.seriesId) || c.seriesId === series.id))) && void 0 !== _d ? _d : [];
59
59
  for (const datum of datumList) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/utils/compose.ts"],"names":[],"mappings":"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","file":"compose.js","sourcesContent":["import { isValid, isNil, TimeUtil } from '@visactor/vutils';\nimport type {\n ITooltipLinePattern,\n ITooltipPattern,\n TooltipData,\n ITooltipLineActual,\n TooltipActualTitleContent\n} from '../../../typings/tooltip';\nimport {\n getFirstDatumFromTooltipData,\n getTooltipContentPattern,\n getTooltipContentValue,\n getTooltipPatternValue\n} from './get-value';\nimport type { IDimensionData, IDimensionInfo } from '../../../event';\nimport { TOOLTIP_MAX_LINE_COUNT, TOOLTIP_OTHERS_LINE } from '../constant';\nimport { getTooltipActualActiveType } from './common';\nimport type { TooltipHandlerParams } from '../interface/common';\nimport type { Datum } from '../../../typings';\n\nconst getTimeString = (value: any, timeFormat?: string, timeFormatMode?: 'local' | 'utc') => {\n if (!timeFormat && !timeFormatMode) {\n if (typeof value !== 'object') {\n return value?.toString();\n }\n return value;\n }\n\n const timeUtil = TimeUtil.getInstance();\n timeFormat = timeFormat || '%Y%m%d';\n timeFormatMode = timeFormatMode || 'local';\n const timeFormatter = timeFormatMode === 'local' ? timeUtil.timeFormat : timeUtil.timeUTCFormat;\n return timeFormatter(timeFormat, value);\n};\n\n/**\n * 获得tooltip的实际显示内容\n * @param pattern\n * @param data\n * @param event\n * @returns\n */\nexport const getShowContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n): TooltipActualTitleContent | null => {\n if (\n !data ||\n // data.key === undefined ||\n params?.event?.type === 'mouseout'\n ) {\n return null;\n }\n\n const tooltipActualTitleContent: Required<TooltipActualTitleContent> = {\n title: {},\n content: []\n };\n\n /** title */\n const patternTitle = getTooltipPatternValue(pattern.title, data, params);\n const { visible, value, valueTimeFormat, valueTimeFormatMode, valueStyle, hasShape, valueFormatter } =\n patternTitle ?? {};\n const patternTitleVisible = getTooltipContentValue(visible, data, params) !== false;\n\n if (!patternTitle || !patternTitleVisible) {\n tooltipActualTitleContent.title = {\n hasShape: false,\n visible: false\n };\n } else {\n // 找到第一个可用的datum\n const datum = getFirstDatumFromTooltipData(data);\n tooltipActualTitleContent.title = {\n value: getTimeString(\n getTooltipContentValue(value, datum, params, valueFormatter),\n valueTimeFormat,\n valueTimeFormatMode\n ),\n valueStyle: getTooltipContentValue(valueStyle, datum, params),\n hasShape\n };\n }\n\n /** content */\n const patternContent = getTooltipContentPattern(pattern.content, data, params);\n const { maxLineCount = TOOLTIP_MAX_LINE_COUNT } = pattern;\n const othersLine = pattern.othersLine\n ? {\n ...TOOLTIP_OTHERS_LINE,\n ...pattern.othersLine\n }\n : TOOLTIP_OTHERS_LINE;\n\n const getTooltipContentFromDatumList = (datumList?: Datum[]) => {\n if (datumList?.length) {\n for (const datum of datumList) {\n for (const content of patternContent ?? []) {\n const oneLineData = getOneLineData(datum, content, params);\n if (oneLineData.visible !== false) {\n if (tooltipActualTitleContent.content.length === maxLineCount - 1) {\n tooltipActualTitleContent.content.push({\n ...oneLineData,\n ...othersLine\n });\n break;\n } else if (tooltipActualTitleContent.content.length < maxLineCount) {\n tooltipActualTitleContent.content.push(oneLineData);\n } else {\n break;\n }\n }\n }\n }\n }\n };\n\n switch (pattern.activeType) {\n case 'mark':\n getTooltipContentFromDatumList((data as IDimensionData[])[0]?.datum);\n break;\n case 'group':\n getTooltipContentFromDatumList(params.groupDatum);\n break;\n case 'dimension':\n for (const { data: d } of data as IDimensionInfo[]) {\n for (const { datum: datumList, series } of d) {\n if (!getTooltipActualActiveType(series.tooltipHelper?.spec).includes('dimension')) {\n continue;\n }\n const contentPatterns =\n patternContent?.filter(\n c => isNil(c.seriesId) || c.seriesId === series.id // 匹配对应series\n ) ?? [];\n for (const datum of datumList) {\n for (const linePattern of contentPatterns) {\n const oneLineData = getOneLineData(datum, linePattern, params);\n if (oneLineData.visible === false) {\n continue;\n }\n if (tooltipActualTitleContent.content.length === maxLineCount - 1) {\n tooltipActualTitleContent.content.push({\n ...oneLineData,\n ...othersLine\n });\n break;\n } else if (tooltipActualTitleContent.content.length < maxLineCount) {\n tooltipActualTitleContent.content.push(oneLineData);\n } else {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n break;\n }\n\n if (tooltipActualTitleContent.title) {\n // TODO:对 title shape 的支持目前还不完整,尚没有相关需求\n if (tooltipActualTitleContent.content.length > 0 && tooltipActualTitleContent.content[0].shapeType) {\n if (isNil(tooltipActualTitleContent.title.shapeType)) {\n tooltipActualTitleContent.title.shapeType = tooltipActualTitleContent.content[0].shapeType;\n }\n if (isNil(tooltipActualTitleContent.title.shapeColor)) {\n tooltipActualTitleContent.title.shapeColor = tooltipActualTitleContent.content[0].shapeColor;\n }\n } else {\n tooltipActualTitleContent.title.hasShape = false;\n }\n }\n\n return tooltipActualTitleContent;\n};\n\n/**\n * 获得tooltip的单行实际显示内容\n * @param datum\n * @param config\n * @returns\n */\nexport const getOneLineData = (\n datum: any,\n config: ITooltipLinePattern,\n params: TooltipHandlerParams\n): ITooltipLineActual => {\n const key = getTimeString(\n getTooltipContentValue(config.key, datum, params, config.keyFormatter),\n config.keyTimeFormat,\n config.keyTimeFormatMode\n );\n const value = getTimeString(\n getTooltipContentValue(config.value, datum, params, config.valueFormatter),\n config.valueTimeFormat,\n config.valueTimeFormatMode\n );\n const visible: boolean =\n getTooltipContentValue(config.visible, datum, params) !== false && (isValid(key) || isValid(value));\n const isKeyAdaptive = getTooltipContentValue(config.isKeyAdaptive, datum, params);\n const spaceRow = getTooltipContentValue(config.spaceRow, datum, params);\n\n const shapeType = getTooltipContentValue(config.shapeType, datum, params);\n const shapeColor = getTooltipContentValue(config.shapeColor, datum, params);\n const shapeFill = getTooltipContentValue(config.shapeFill, datum, params);\n const shapeStroke = getTooltipContentValue(config.shapeStroke, datum, params);\n const shapeLineWidth = getTooltipContentValue(config.shapeLineWidth, datum, params);\n const shapeHollow = getTooltipContentValue(config.shapeHollow, datum, params);\n const keyStyle = getTooltipContentValue(config.keyStyle, datum, params);\n const valueStyle = getTooltipContentValue(config.valueStyle, datum, params);\n\n return {\n key,\n value,\n visible,\n isKeyAdaptive,\n hasShape: config.hasShape,\n shapeType,\n shapeFill,\n shapeStroke,\n shapeLineWidth,\n shapeHollow,\n shapeColor,\n keyStyle,\n valueStyle,\n spaceRow,\n datum\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/utils/compose.ts"],"names":[],"mappings":"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","file":"compose.js","sourcesContent":["import { isValid, isNil, TimeUtil } from '@visactor/vutils';\nimport type {\n ITooltipLinePattern,\n ITooltipPattern,\n TooltipData,\n ITooltipLineActual,\n TooltipActualTitleContent\n} from '../../../typings/tooltip';\nimport {\n getFirstDatumFromTooltipData,\n getTooltipContentPattern,\n getTooltipContentValue,\n getTooltipPatternValue\n} from './get-value';\nimport type { IDimensionData, IDimensionInfo } from '../../../event';\nimport { TOOLTIP_MAX_LINE_COUNT, TOOLTIP_OTHERS_LINE } from '../constant';\nimport { isActiveTypeVisible } from './common';\nimport type { TooltipHandlerParams } from '../interface/common';\nimport type { Datum } from '../../../typings';\n\nconst getTimeString = (value: any, timeFormat?: string, timeFormatMode?: 'local' | 'utc') => {\n if (!timeFormat && !timeFormatMode) {\n if (typeof value !== 'object') {\n return value?.toString();\n }\n return value;\n }\n\n const timeUtil = TimeUtil.getInstance();\n timeFormat = timeFormat || '%Y%m%d';\n timeFormatMode = timeFormatMode || 'local';\n const timeFormatter = timeFormatMode === 'local' ? timeUtil.timeFormat : timeUtil.timeUTCFormat;\n return timeFormatter(timeFormat, value);\n};\n\n/**\n * 获得tooltip的实际显示内容\n * @param pattern\n * @param data\n * @param event\n * @returns\n */\nexport const getShowContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n): TooltipActualTitleContent | null => {\n if (\n !data ||\n // data.key === undefined ||\n params?.event?.type === 'mouseout'\n ) {\n return null;\n }\n\n const tooltipActualTitleContent: Required<TooltipActualTitleContent> = {\n title: {},\n content: []\n };\n\n /** title */\n const patternTitle = getTooltipPatternValue(pattern.title, data, params);\n const { visible, value, valueTimeFormat, valueTimeFormatMode, valueStyle, hasShape, valueFormatter } =\n patternTitle ?? {};\n const patternTitleVisible = getTooltipContentValue(visible, data, params) !== false;\n\n if (!patternTitle || !patternTitleVisible) {\n tooltipActualTitleContent.title = {\n hasShape: false,\n visible: false\n };\n } else {\n // 找到第一个可用的datum\n const datum = getFirstDatumFromTooltipData(data);\n tooltipActualTitleContent.title = {\n value: getTimeString(\n getTooltipContentValue(value, datum, params, valueFormatter),\n valueTimeFormat,\n valueTimeFormatMode\n ),\n valueStyle: getTooltipContentValue(valueStyle, datum, params),\n hasShape\n };\n }\n\n /** content */\n const patternContent = getTooltipContentPattern(pattern.content, data, params);\n const { maxLineCount = TOOLTIP_MAX_LINE_COUNT } = pattern;\n const othersLine = pattern.othersLine\n ? {\n ...TOOLTIP_OTHERS_LINE,\n ...pattern.othersLine\n }\n : TOOLTIP_OTHERS_LINE;\n\n const getTooltipContentFromDatumList = (datumList?: Datum[]) => {\n if (datumList?.length) {\n for (const datum of datumList) {\n for (const content of patternContent ?? []) {\n const oneLineData = getOneLineData(datum, content, params);\n if (oneLineData.visible !== false) {\n if (tooltipActualTitleContent.content.length === maxLineCount - 1) {\n tooltipActualTitleContent.content.push({\n ...oneLineData,\n ...othersLine\n });\n break;\n } else if (tooltipActualTitleContent.content.length < maxLineCount) {\n tooltipActualTitleContent.content.push(oneLineData);\n } else {\n break;\n }\n }\n }\n }\n }\n };\n\n switch (pattern.activeType) {\n case 'mark':\n getTooltipContentFromDatumList((data as IDimensionData[])[0]?.datum);\n break;\n case 'group':\n getTooltipContentFromDatumList(params.groupDatum);\n break;\n case 'dimension':\n for (const { data: d } of data as IDimensionInfo[]) {\n for (const { datum: datumList, series } of d) {\n if (!isActiveTypeVisible('dimension', series.tooltipHelper?.spec)) {\n continue;\n }\n const contentPatterns =\n patternContent?.filter(\n c => isNil(c.seriesId) || c.seriesId === series.id // 匹配对应series\n ) ?? [];\n for (const datum of datumList) {\n for (const linePattern of contentPatterns) {\n const oneLineData = getOneLineData(datum, linePattern, params);\n if (oneLineData.visible === false) {\n continue;\n }\n if (tooltipActualTitleContent.content.length === maxLineCount - 1) {\n tooltipActualTitleContent.content.push({\n ...oneLineData,\n ...othersLine\n });\n break;\n } else if (tooltipActualTitleContent.content.length < maxLineCount) {\n tooltipActualTitleContent.content.push(oneLineData);\n } else {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n if (tooltipActualTitleContent.content.length >= maxLineCount) {\n break;\n }\n }\n break;\n }\n\n if (tooltipActualTitleContent.title) {\n // TODO:对 title shape 的支持目前还不完整,尚没有相关需求\n if (tooltipActualTitleContent.content.length > 0 && tooltipActualTitleContent.content[0].shapeType) {\n if (isNil(tooltipActualTitleContent.title.shapeType)) {\n tooltipActualTitleContent.title.shapeType = tooltipActualTitleContent.content[0].shapeType;\n }\n if (isNil(tooltipActualTitleContent.title.shapeColor)) {\n tooltipActualTitleContent.title.shapeColor = tooltipActualTitleContent.content[0].shapeColor;\n }\n } else {\n tooltipActualTitleContent.title.hasShape = false;\n }\n }\n\n return tooltipActualTitleContent;\n};\n\n/**\n * 获得tooltip的单行实际显示内容\n * @param datum\n * @param config\n * @returns\n */\nexport const getOneLineData = (\n datum: any,\n config: ITooltipLinePattern,\n params: TooltipHandlerParams\n): ITooltipLineActual => {\n const key = getTimeString(\n getTooltipContentValue(config.key, datum, params, config.keyFormatter),\n config.keyTimeFormat,\n config.keyTimeFormatMode\n );\n const value = getTimeString(\n getTooltipContentValue(config.value, datum, params, config.valueFormatter),\n config.valueTimeFormat,\n config.valueTimeFormatMode\n );\n const visible: boolean =\n getTooltipContentValue(config.visible, datum, params) !== false && (isValid(key) || isValid(value));\n const isKeyAdaptive = getTooltipContentValue(config.isKeyAdaptive, datum, params);\n const spaceRow = getTooltipContentValue(config.spaceRow, datum, params);\n\n const shapeType = getTooltipContentValue(config.shapeType, datum, params);\n const shapeColor = getTooltipContentValue(config.shapeColor, datum, params);\n const shapeFill = getTooltipContentValue(config.shapeFill, datum, params);\n const shapeStroke = getTooltipContentValue(config.shapeStroke, datum, params);\n const shapeLineWidth = getTooltipContentValue(config.shapeLineWidth, datum, params);\n const shapeHollow = getTooltipContentValue(config.shapeHollow, datum, params);\n const keyStyle = getTooltipContentValue(config.keyStyle, datum, params);\n const valueStyle = getTooltipContentValue(config.valueStyle, datum, params);\n\n return {\n key,\n value,\n visible,\n isKeyAdaptive,\n hasShape: config.hasShape,\n shapeType,\n shapeFill,\n shapeStroke,\n shapeLineWidth,\n shapeHollow,\n shapeColor,\n keyStyle,\n valueStyle,\n spaceRow,\n datum\n };\n};\n"]}
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.getTooltipSpecForShow = void 0;
6
6
 
7
- const vutils_extension_1 = require("@visactor/vutils-extension"), pattern_1 = require("./pattern"), vutils_1 = require("@visactor/vutils"), common_1 = require("./common"), tooltip_helper_1 = require("../../../series/base/tooltip-helper"), getTooltipSpecForShow = (activeType, globalSpec, series, dimensionInfo) => {
8
- var _a, _b, _c, _d, _e, _f, _g;
7
+ const vutils_1 = require("@visactor/vutils"), common_1 = require("./common"), getTooltipSpecForShow = (activeType, globalSpec, series, dimensionInfo) => {
8
+ var _a, _b, _c, _d, _e, _f;
9
9
  const finalSpec = Object.assign(Object.assign({}, globalSpec), {
10
10
  activeType: activeType
11
11
  }), {style: style = {}} = globalSpec;
@@ -13,12 +13,9 @@ const vutils_extension_1 = require("@visactor/vutils-extension"), pattern_1 = re
13
13
  case "mark":
14
14
  case "group":
15
15
  if (series) {
16
- const seriesSpec = null !== (_b = null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec) && void 0 !== _b ? _b : {};
17
- if ((0, vutils_1.isValid)(seriesSpec.visible) || (0, vutils_1.isValid)(seriesSpec.activeType) ? finalSpec.visible = (0,
18
- common_1.getTooltipActualActiveType)(seriesSpec).includes(activeType) : (0, vutils_1.isValid)(globalSpec.visible) || (0,
19
- vutils_1.isValid)(globalSpec.activeType) ? finalSpec.visible = (0, common_1.getTooltipActualActiveType)(globalSpec).includes(activeType) : finalSpec.visible = !0,
20
- finalSpec.handler = null !== (_d = null !== (_c = seriesSpec.handler) && void 0 !== _c ? _c : globalSpec.handler) && void 0 !== _d ? _d : void 0,
21
- null === (_e = finalSpec.handler) || void 0 === _e ? void 0 : _e.showTooltip) return finalSpec;
16
+ const seriesSpec = null === (_a = series.getSpec()) || void 0 === _a ? void 0 : _a.tooltip;
17
+ if (finalSpec.visible = !0, finalSpec.handler = null !== (_b = null == seriesSpec ? void 0 : seriesSpec.handler) && void 0 !== _b ? _b : globalSpec.handler,
18
+ null === (_c = finalSpec.handler) || void 0 === _c ? void 0 : _c.showTooltip) return finalSpec;
22
19
  }
23
20
  break;
24
21
 
@@ -26,22 +23,21 @@ const vutils_extension_1 = require("@visactor/vutils-extension"), pattern_1 = re
26
23
  if (null == dimensionInfo ? void 0 : dimensionInfo.length) {
27
24
  if (getSeriesListFromDimensionInfo(dimensionInfo).every((series => {
28
25
  var _a;
29
- return !(0, common_1.getTooltipActualActiveType)(null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec).includes("dimension");
30
- })) ? finalSpec.visible = !1 : (0, vutils_1.isValid)(globalSpec.visible) || (0,
31
- vutils_1.isValid)(globalSpec.activeType) ? finalSpec.visible = (0, common_1.getTooltipActualActiveType)(globalSpec).includes("dimension") : finalSpec.visible = !0,
32
- finalSpec.handler = null !== (_f = globalSpec.handler) && void 0 !== _f ? _f : void 0,
33
- null === (_g = finalSpec.handler) || void 0 === _g ? void 0 : _g.showTooltip) return finalSpec;
26
+ return !(0, common_1.isActiveTypeVisible)("dimension", null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec);
27
+ })) ? finalSpec.visible = !1 : finalSpec.visible = !0, finalSpec.handler = null !== (_d = globalSpec.handler) && void 0 !== _d ? _d : void 0,
28
+ null === (_e = finalSpec.handler) || void 0 === _e ? void 0 : _e.showTooltip) return finalSpec;
34
29
  }
35
30
  }
36
- const defaultPattern = getDefaultTooltipPattern(activeType, series, dimensionInfo), seriesPattern = getSeriesTooltipPattern(activeType, series, dimensionInfo), userPattern = (0,
37
- vutils_extension_1.mergeSpec)({}, (0, vutils_1.cloneDeep)(globalSpec[activeType]), seriesPattern), defaultPatternTitle = defaultPattern.title, titleShape = getShapePattern(void 0, userPattern, style.shape, void 0, defaultPatternTitle);
38
- (0, vutils_1.isValid)(userPattern.title) ? userPattern.title = (0, tooltip_helper_1.addExtraInfoToTooltipTitlePattern)(userPattern.title, Object.assign(Object.assign({}, defaultPatternTitle), titleShape)) : userPattern.title = (0,
39
- tooltip_helper_1.addExtraInfoToTooltipTitlePattern)(defaultPatternTitle, titleShape, !0);
40
- const defaultPatternContent = (0, vutils_1.array)(defaultPattern.content);
41
- if ((0, vutils_1.isValid)(userPattern.content)) {
42
- const shapePatternMap = getShapePatternMapOfEachSeries(defaultPatternContent);
43
- userPattern.content = (0, tooltip_helper_1.addExtraInfoToTooltipContentPattern)(userPattern.content, (userLine => getShapePattern(userLine, userPattern, style.shape, shapePatternMap)));
44
- } else userPattern.content = (0, tooltip_helper_1.addExtraInfoToTooltipContentPattern)(defaultPatternContent, (line => getShapePattern(void 0, userPattern, style.shape, void 0, line)), !0);
31
+ const defaultPattern = null !== (_f = getDefaultTooltipPattern(activeType, series, dimensionInfo)) && void 0 !== _f ? _f : {}, userPattern = getSeriesTooltipPattern(activeType, globalSpec, series, dimensionInfo);
32
+ if (userPattern) {
33
+ const defaultPatternTitle = defaultPattern.title, defaultTitleShape = getShapePattern(void 0, userPattern, style.shape, void 0, defaultPatternTitle);
34
+ (0, vutils_1.isValid)(userPattern.title) ? userPattern.title = addExtraInfoToTooltipTitlePattern(userPattern.title, Object.assign(Object.assign({}, defaultPatternTitle), defaultTitleShape)) : userPattern.title = addExtraInfoToTooltipTitlePattern(defaultPatternTitle, defaultTitleShape, !0);
35
+ const defaultPatternContent = (0, vutils_1.array)(defaultPattern.content);
36
+ if ((0, vutils_1.isValid)(userPattern.content)) {
37
+ const shapePatternMap = getShapePatternMapOfEachSeries(defaultPatternContent);
38
+ userPattern.content = addExtraInfoToTooltipContentPattern(userPattern.content, (userLine => getShapePattern(userLine, userPattern, style.shape, shapePatternMap)));
39
+ } else userPattern.content = addExtraInfoToTooltipContentPattern(defaultPatternContent, (line => getShapePattern(void 0, userPattern, style.shape, void 0, line)), !0);
40
+ }
45
41
  return finalSpec[activeType] = Object.assign(Object.assign(Object.assign({}, defaultPattern), userPattern), {
46
42
  activeType: activeType
47
43
  }), finalSpec;
@@ -50,81 +46,68 @@ const vutils_extension_1 = require("@visactor/vutils-extension"), pattern_1 = re
50
46
  exports.getTooltipSpecForShow = getTooltipSpecForShow;
51
47
 
52
48
  const getDefaultTooltipPattern = (activeType, series, dimensionInfo) => {
53
- var _a;
54
- let defaultPattern = {};
55
49
  switch (activeType) {
56
50
  case "mark":
57
51
  case "group":
58
- series && (defaultPattern = null !== (_a = (0, pattern_1.makeDefaultPattern)(series, activeType)) && void 0 !== _a ? _a : {});
52
+ if (series) return series.tooltipHelper.getDefaultTooltipPattern(activeType);
59
53
  break;
60
54
 
61
55
  case "dimension":
62
56
  if (null == dimensionInfo ? void 0 : dimensionInfo.length) {
63
57
  const patternList = [];
64
- dimensionInfo.forEach((({data: data}) => data.forEach((data => {
65
- const {series: series} = data, mockDimensionInfo = [ Object.assign(Object.assign({}, dimensionInfo[0]), {
66
- data: [ data ]
67
- }) ], pattern = (0, pattern_1.makeDefaultPattern)(series, "dimension", mockDimensionInfo);
58
+ return dimensionInfo.forEach((info => info.data.forEach((datum => {
59
+ const {series: series} = datum, mockDimensionInfo = [ Object.assign(Object.assign({}, info), {
60
+ data: [ datum ]
61
+ }) ], pattern = series.tooltipHelper.getDefaultTooltipPattern(activeType, mockDimensionInfo);
68
62
  pattern && patternList.push(pattern);
69
- }))));
70
- const defaultPatternContent = [];
71
- patternList.forEach((({content: content}) => {
72
- (0, vutils_1.isFunction)(content) ? defaultPatternContent.push(content) : defaultPatternContent.push(...(0,
73
- vutils_1.array)(content));
74
- })), defaultPattern = Object.assign(Object.assign({}, patternList[0]), {
75
- content: defaultPatternContent
76
- });
63
+ })))), (0, common_1.combinePattern)(patternList);
77
64
  }
78
65
  }
79
- return defaultPattern;
80
- }, getSeriesTooltipPattern = (activeType, series, dimensionInfo) => {
81
- var _a, _b;
82
- let seriesPattern = {};
83
- switch (activeType) {
84
- case "mark":
85
- case "group":
86
- if (series) {
87
- const seriesSpec = null !== (_b = null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec) && void 0 !== _b ? _b : {};
88
- seriesPattern = seriesSpec[activeType] ? (0, vutils_1.cloneDeep)(seriesSpec[activeType]) : {};
89
- }
90
- break;
91
-
92
- case "dimension":
93
- if (null == dimensionInfo ? void 0 : dimensionInfo.length) {
94
- const seriesPatternList = getSeriesListFromDimensionInfo(dimensionInfo).filter((series => {
95
- var _a;
96
- const spec = null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec;
97
- return (0, vutils_1.isValid)(null == spec ? void 0 : spec.dimension) && (0, common_1.getTooltipActualActiveType)(spec).includes("dimension");
98
- })).map((series => series.tooltipHelper.spec.dimension));
99
- if (seriesPatternList.length) {
100
- let seriesPatternContent = [];
101
- seriesPatternList.every((({content: content}) => (0, vutils_1.isNil)(content))) ? seriesPatternContent = void 0 : seriesPatternList.forEach((({content: content}) => {
102
- (0, vutils_1.isNil)(content) || ((0, vutils_1.isFunction)(content) ? null == seriesPatternContent || seriesPatternContent.push(content) : null == seriesPatternContent || seriesPatternContent.push(...(0,
103
- vutils_1.array)(content)));
104
- })), seriesPattern = Object.assign(Object.assign({}, seriesPatternList[0]), {
105
- content: seriesPatternContent
106
- });
66
+ }, getSeriesTooltipPattern = (activeType, globalSpec, series, dimensionInfo) => {
67
+ const allSeries = "dimension" === activeType && (null == dimensionInfo ? void 0 : dimensionInfo.length) ? getSeriesListFromDimensionInfo(dimensionInfo) : "mark" !== activeType && "group" !== activeType || !series ? null : [ series ];
68
+ if (allSeries && allSeries.length) {
69
+ const seriesPatternList = [];
70
+ return allSeries.forEach((s => {
71
+ var _a;
72
+ const seriesSpec = null === (_a = s.tooltipHelper) || void 0 === _a ? void 0 : _a.spec;
73
+ if ((0, common_1.isActiveTypeVisible)(activeType, seriesSpec)) {
74
+ let finalPattern = seriesSpec && seriesSpec[activeType] ? Object.assign(Object.assign({}, globalSpec[activeType]), seriesSpec[activeType]) : globalSpec[activeType];
75
+ finalPattern && (finalPattern = (0, vutils_1.cloneDeep)(finalPattern), finalPattern.title && (finalPattern.title = addExtraInfoToTooltipTitlePattern(finalPattern.title, {
76
+ seriesId: s.id
77
+ }, !0)), finalPattern.content && (finalPattern.content = addExtraInfoToTooltipContentPattern(finalPattern.content, {
78
+ seriesId: s.id
79
+ }, !0)), seriesPatternList.push(finalPattern));
107
80
  }
108
- }
81
+ })), seriesPatternList && seriesPatternList.length ? (0, common_1.combinePattern)(seriesPatternList) : null;
109
82
  }
110
- return seriesPattern;
111
- }, getSeriesListFromDimensionInfo = (0, vutils_1.memoize)((dimensionInfo => dimensionInfo.reduce(((list, cur) => list.concat(cur.data.map((data => data.series)).filter(vutils_1.isValid))), []))), getShapePatternMapOfEachSeries = content => {
83
+ }, getSeriesListFromDimensionInfo = dimensionInfo => {
84
+ const list = [];
85
+ return dimensionInfo.forEach((info => {
86
+ info.data.forEach((datum => {
87
+ (0, vutils_1.isValid)(datum.series) && list.push(datum.series);
88
+ }));
89
+ })), list;
90
+ }, getShapePatternMapOfEachSeries = content => {
112
91
  const shapePatternMap = {};
113
92
  return content.forEach((line => {
114
- var _a;
115
- const key = null !== (_a = line.seriesId) && void 0 !== _a ? _a : 0;
116
- shapePatternMap[key] || (shapePatternMap[key] = line);
93
+ const key = line.seriesId;
94
+ (0, vutils_1.isValid)(key) && !shapePatternMap[key] && (shapePatternMap[key] = line),
95
+ shapePatternMap[-1] || (shapePatternMap[-1] = line);
117
96
  })), shapePatternMap;
118
- }, getShapePattern = (userLinePattern, userPattern, userStyle, shapePatternMap, defaultShapePattern) => {
119
- var _a, _b, _c;
97
+ }, isShapeKey = key => key.toLowerCase().includes("shape"), getShapePattern = (userLinePattern, userPattern, userStyle, shapePatternMap, defaultShapePattern) => {
98
+ var _a, _b;
120
99
  userStyle && (userStyle.shapeSize = null !== (_a = userStyle.shapeSize) && void 0 !== _a ? _a : userStyle.size);
121
- const maps = [ userLinePattern, userPattern, userStyle, null !== (_c = null == shapePatternMap ? void 0 : shapePatternMap[null !== (_b = null == userLinePattern ? void 0 : userLinePattern.seriesId) && void 0 !== _b ? _b : 0]) && void 0 !== _c ? _c : null == shapePatternMap ? void 0 : shapePatternMap[0], defaultShapePattern ].filter(vutils_1.isValid), shapeKeys = new Set(maps.reduce(((keys, cur) => keys.concat(Object.keys(cur))), []).filter((key => key.toLowerCase().includes("shape")))), shapePattern = {};
122
- return shapeKeys.forEach((key => {
123
- let value, i = 0;
124
- do {
125
- value = maps[i++][key];
126
- } while (i < maps.length && (0, vutils_1.isNil)(value));
127
- void 0 !== value && (shapePattern[key] = value);
100
+ const shapePatternFromMap = shapePatternMap ? null !== (_b = shapePatternMap[null == userLinePattern ? void 0 : userLinePattern.seriesId]) && void 0 !== _b ? _b : shapePatternMap[-1] : null, shapePattern = {};
101
+ return [ userLinePattern, userPattern, userStyle, shapePatternFromMap, defaultShapePattern ].forEach((cfg => {
102
+ (0, vutils_1.isValid)(cfg) && Object.keys(cfg).forEach((key => {
103
+ isShapeKey(key) && (0, vutils_1.isNil)(shapePattern[key]) && !(0, vutils_1.isNil)(cfg[key]) && (shapePattern[key] = cfg[key]);
104
+ }));
128
105
  })), shapePattern;
129
- };
106
+ }, merge = (source, extraInfo, overwrite) => {
107
+ const info = (0, vutils_1.isFunction)(extraInfo) ? extraInfo(source) : extraInfo;
108
+ return overwrite ? Object.assign(Object.assign({}, source), info) : Object.assign(Object.assign({}, info), source);
109
+ }, addExtraInfoToTooltipTitlePattern = (pattern, extraInfo, overwrite) => (0, vutils_1.isValid)(pattern) ? (0,
110
+ vutils_1.isFunction)(pattern) ? (...args) => merge(pattern(...args), extraInfo, overwrite) : merge(pattern, extraInfo, overwrite) : void 0, addExtraInfoToTooltipContentPattern = (pattern, extraInfo, overwrite) => (0,
111
+ vutils_1.isValid)(pattern) ? (0, vutils_1.array)(pattern).map((patternItem => (0,
112
+ vutils_1.isFunction)(patternItem) ? (...args) => (0, vutils_1.array)(patternItem(...args)).map((line => merge(line, extraInfo, overwrite))) : merge(patternItem, extraInfo, overwrite))) : void 0;
130
113
  //# sourceMappingURL=get-spec.js.map