@visactor/vchart 1.12.0-alpha.1 → 1.12.0-alpha.4

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 (285) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +799 -379
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.d.ts +1 -0
  6. package/cjs/chart/base/base-chart.js +4 -2
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/cartesian/cartesian-transformer.d.ts +4 -0
  9. package/cjs/chart/cartesian/cartesian-transformer.js +25 -10
  10. package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
  11. package/cjs/chart/index.d.ts +5 -3
  12. package/cjs/chart/index.js +16 -2
  13. package/cjs/chart/index.js.map +1 -1
  14. package/cjs/chart/interface/type.d.ts +2 -1
  15. package/cjs/chart/interface/type.js +2 -1
  16. package/cjs/chart/interface/type.js.map +1 -1
  17. package/cjs/chart/mosaic/index.d.ts +3 -0
  18. package/cjs/chart/mosaic/index.js +22 -0
  19. package/cjs/chart/mosaic/index.js.map +1 -0
  20. package/cjs/chart/mosaic/interface.d.ts +7 -0
  21. package/cjs/chart/mosaic/interface.js +6 -0
  22. package/cjs/chart/mosaic/interface.js.map +1 -0
  23. package/cjs/chart/mosaic/mosaic-transformer.d.ts +9 -0
  24. package/cjs/chart/mosaic/mosaic-transformer.js +43 -0
  25. package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -0
  26. package/cjs/chart/mosaic/mosaic.d.ts +20 -0
  27. package/cjs/chart/mosaic/mosaic.js +39 -0
  28. package/cjs/chart/mosaic/mosaic.js.map +1 -0
  29. package/cjs/chart/stack.d.ts +11 -1
  30. package/cjs/chart/stack.js +5 -4
  31. package/cjs/chart/stack.js.map +1 -1
  32. package/cjs/compile/grammar-item.js +2 -1
  33. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  34. package/cjs/component/crosshair/cartesian.js +8 -3
  35. package/cjs/component/crosshair/cartesian.js.map +1 -1
  36. package/cjs/component/indicator/indicator.d.ts +1 -1
  37. package/cjs/component/indicator/indicator.js +4 -2
  38. package/cjs/component/indicator/indicator.js.map +1 -1
  39. package/cjs/component/indicator/interface.d.ts +3 -1
  40. package/cjs/component/indicator/interface.js.map +1 -1
  41. package/cjs/component/label/interface.d.ts +2 -1
  42. package/cjs/component/label/interface.js.map +1 -1
  43. package/cjs/component/label/label.js +8 -5
  44. package/cjs/component/label/label.js.map +1 -1
  45. package/cjs/component/label/util.d.ts +9 -0
  46. package/cjs/component/label/util.js +35 -8
  47. package/cjs/component/label/util.js.map +1 -1
  48. package/cjs/component/marker/base-marker.d.ts +4 -3
  49. package/cjs/component/marker/base-marker.js +6 -45
  50. package/cjs/component/marker/base-marker.js.map +1 -1
  51. package/cjs/component/marker/interface.d.ts +3 -3
  52. package/cjs/component/marker/interface.js.map +1 -1
  53. package/cjs/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  54. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  55. package/cjs/component/marker/mark-area/interface/spec.d.ts +3 -2
  56. package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
  57. package/cjs/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  58. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
  59. package/cjs/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  60. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  61. package/cjs/component/marker/mark-line/interface/spec.d.ts +5 -5
  62. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  63. package/cjs/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  64. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
  65. package/cjs/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  66. package/cjs/component/marker/mark-point/cartesian-mark-point.js +1 -1
  67. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  68. package/cjs/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  69. package/cjs/component/marker/mark-point/geo-mark-point.js.map +1 -1
  70. package/cjs/component/marker/mark-point/interface/spec.d.ts +4 -3
  71. package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
  72. package/cjs/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  73. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
  74. package/cjs/component/marker/utils.d.ts +2 -3
  75. package/cjs/component/marker/utils.js +16 -14
  76. package/cjs/component/marker/utils.js.map +1 -1
  77. package/cjs/component/tooltip/interface/spec.d.ts +1 -0
  78. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  79. package/cjs/component/tooltip/tooltip.d.ts +2 -1
  80. package/cjs/component/tooltip/tooltip.js +5 -3
  81. package/cjs/component/tooltip/tooltip.js.map +1 -1
  82. package/cjs/component/util.js +1 -2
  83. package/cjs/constant/index.d.ts +5 -0
  84. package/cjs/constant/index.js +6 -2
  85. package/cjs/constant/index.js.map +1 -1
  86. package/cjs/core/index.d.ts +1 -1
  87. package/cjs/core/index.js +1 -1
  88. package/cjs/core/index.js.map +1 -1
  89. package/cjs/core/interface.d.ts +3 -2
  90. package/cjs/core/interface.js.map +1 -1
  91. package/cjs/core/vchart.d.ts +8 -6
  92. package/cjs/core/vchart.js +45 -26
  93. package/cjs/core/vchart.js.map +1 -1
  94. package/cjs/data/transforms/aggregation.d.ts +8 -3
  95. package/cjs/data/transforms/aggregation.js +62 -2
  96. package/cjs/data/transforms/aggregation.js.map +1 -1
  97. package/cjs/data/transforms/stack-split.js +2 -2
  98. package/cjs/data/transforms/stack-split.js.map +1 -1
  99. package/cjs/model/interface.d.ts +4 -0
  100. package/cjs/model/interface.js.map +1 -1
  101. package/cjs/series/bar/bar.js +7 -7
  102. package/cjs/series/bar/bar.js.map +1 -1
  103. package/cjs/series/base/base-series.js +6 -6
  104. package/cjs/series/base/base-series.js.map +1 -1
  105. package/cjs/series/base/constant.d.ts +6 -0
  106. package/cjs/series/base/constant.js +12 -2
  107. package/cjs/series/base/constant.js.map +1 -1
  108. package/cjs/series/interface/common.d.ts +2 -0
  109. package/cjs/series/interface/common.js.map +1 -1
  110. package/cjs/series/interface/series.d.ts +3 -1
  111. package/cjs/series/interface/series.js.map +1 -1
  112. package/cjs/series/interface/theme.d.ts +2 -0
  113. package/cjs/series/interface/theme.js +2 -1
  114. package/cjs/series/interface/theme.js.map +1 -1
  115. package/cjs/series/interface/type.d.ts +2 -1
  116. package/cjs/series/interface/type.js +1 -1
  117. package/cjs/series/interface/type.js.map +1 -1
  118. package/cjs/series/mosaic/interface.d.ts +16 -0
  119. package/cjs/series/mosaic/interface.js +6 -0
  120. package/cjs/series/mosaic/interface.js.map +1 -0
  121. package/cjs/series/mosaic/mosaic.d.ts +16 -0
  122. package/cjs/series/mosaic/mosaic.js +69 -0
  123. package/cjs/series/mosaic/mosaic.js.map +1 -0
  124. package/cjs/series/sankey/interface.d.ts +5 -4
  125. package/cjs/series/sankey/interface.js.map +1 -1
  126. package/cjs/series/sankey/sankey-transformer.d.ts +5 -0
  127. package/cjs/series/sankey/sankey-transformer.js +16 -0
  128. package/cjs/series/sankey/sankey-transformer.js.map +1 -0
  129. package/cjs/series/sankey/sankey.d.ts +7 -2
  130. package/cjs/series/sankey/sankey.js +47 -151
  131. package/cjs/series/sankey/sankey.js.map +1 -1
  132. package/cjs/series/word-cloud/interface.d.ts +1 -1
  133. package/cjs/series/word-cloud/interface.js.map +1 -1
  134. package/cjs/theme/builtin/common/series/index.js +3 -2
  135. package/cjs/theme/builtin/common/series/index.js.map +1 -1
  136. package/cjs/theme/builtin/common/series/mosaic.d.ts +2 -0
  137. package/cjs/theme/builtin/common/series/mosaic.js +27 -0
  138. package/cjs/theme/builtin/common/series/mosaic.js.map +1 -0
  139. package/cjs/util/data.d.ts +24 -1
  140. package/cjs/util/data.js +88 -17
  141. package/cjs/util/data.js.map +1 -1
  142. package/cjs/util/style.d.ts +1 -0
  143. package/cjs/util/style.js +11 -2
  144. package/cjs/util/style.js.map +1 -1
  145. package/esm/chart/base/base-chart.d.ts +1 -0
  146. package/esm/chart/base/base-chart.js +4 -2
  147. package/esm/chart/base/base-chart.js.map +1 -1
  148. package/esm/chart/cartesian/cartesian-transformer.d.ts +4 -0
  149. package/esm/chart/cartesian/cartesian-transformer.js +25 -10
  150. package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
  151. package/esm/chart/index.d.ts +5 -3
  152. package/esm/chart/index.js +4 -2
  153. package/esm/chart/index.js.map +1 -1
  154. package/esm/chart/interface/type.d.ts +2 -1
  155. package/esm/chart/interface/type.js +2 -1
  156. package/esm/chart/interface/type.js.map +1 -1
  157. package/esm/chart/mosaic/index.d.ts +3 -0
  158. package/esm/chart/mosaic/index.js +6 -0
  159. package/esm/chart/mosaic/index.js.map +1 -0
  160. package/esm/chart/mosaic/interface.d.ts +7 -0
  161. package/esm/chart/mosaic/interface.js +2 -0
  162. package/esm/chart/mosaic/interface.js.map +1 -0
  163. package/esm/chart/mosaic/mosaic-transformer.d.ts +9 -0
  164. package/esm/chart/mosaic/mosaic-transformer.js +37 -0
  165. package/esm/chart/mosaic/mosaic-transformer.js.map +1 -0
  166. package/esm/chart/mosaic/mosaic.d.ts +20 -0
  167. package/esm/chart/mosaic/mosaic.js +41 -0
  168. package/esm/chart/mosaic/mosaic.js.map +1 -0
  169. package/esm/chart/stack.d.ts +11 -1
  170. package/esm/chart/stack.js +5 -4
  171. package/esm/chart/stack.js.map +1 -1
  172. package/esm/compile/grammar-item.js +2 -1
  173. package/esm/component/axis/cartesian/axis.js.map +1 -1
  174. package/esm/component/crosshair/cartesian.js +8 -3
  175. package/esm/component/crosshair/cartesian.js.map +1 -1
  176. package/esm/component/indicator/indicator.d.ts +1 -1
  177. package/esm/component/indicator/indicator.js +4 -4
  178. package/esm/component/indicator/indicator.js.map +1 -1
  179. package/esm/component/indicator/interface.d.ts +3 -1
  180. package/esm/component/indicator/interface.js.map +1 -1
  181. package/esm/component/label/interface.d.ts +2 -1
  182. package/esm/component/label/interface.js.map +1 -1
  183. package/esm/component/label/label.js +9 -5
  184. package/esm/component/label/label.js.map +1 -1
  185. package/esm/component/label/util.d.ts +9 -0
  186. package/esm/component/label/util.js +34 -5
  187. package/esm/component/label/util.js.map +1 -1
  188. package/esm/component/marker/base-marker.d.ts +4 -3
  189. package/esm/component/marker/base-marker.js +6 -39
  190. package/esm/component/marker/base-marker.js.map +1 -1
  191. package/esm/component/marker/interface.d.ts +3 -3
  192. package/esm/component/marker/interface.js.map +1 -1
  193. package/esm/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  194. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  195. package/esm/component/marker/mark-area/interface/spec.d.ts +3 -2
  196. package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
  197. package/esm/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  198. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
  199. package/esm/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  200. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  201. package/esm/component/marker/mark-line/interface/spec.d.ts +5 -5
  202. package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
  203. package/esm/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  204. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
  205. package/esm/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  206. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  207. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  208. package/esm/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  209. package/esm/component/marker/mark-point/geo-mark-point.js.map +1 -1
  210. package/esm/component/marker/mark-point/interface/spec.d.ts +4 -3
  211. package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
  212. package/esm/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  213. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
  214. package/esm/component/marker/utils.d.ts +2 -3
  215. package/esm/component/marker/utils.js +16 -14
  216. package/esm/component/marker/utils.js.map +1 -1
  217. package/esm/component/tooltip/interface/spec.d.ts +1 -0
  218. package/esm/component/tooltip/interface/spec.js.map +1 -1
  219. package/esm/component/tooltip/tooltip.d.ts +2 -1
  220. package/esm/component/tooltip/tooltip.js +5 -3
  221. package/esm/component/tooltip/tooltip.js.map +1 -1
  222. package/esm/component/util.js +1 -2
  223. package/esm/constant/index.d.ts +5 -0
  224. package/esm/constant/index.js +10 -0
  225. package/esm/constant/index.js.map +1 -1
  226. package/esm/core/index.d.ts +1 -1
  227. package/esm/core/index.js +1 -1
  228. package/esm/core/index.js.map +1 -1
  229. package/esm/core/interface.d.ts +3 -2
  230. package/esm/core/interface.js.map +1 -1
  231. package/esm/core/vchart.d.ts +8 -6
  232. package/esm/core/vchart.js +45 -26
  233. package/esm/core/vchart.js.map +1 -1
  234. package/esm/data/transforms/aggregation.d.ts +8 -3
  235. package/esm/data/transforms/aggregation.js +60 -2
  236. package/esm/data/transforms/aggregation.js.map +1 -1
  237. package/esm/data/transforms/stack-split.js +2 -2
  238. package/esm/data/transforms/stack-split.js.map +1 -1
  239. package/esm/model/interface.d.ts +4 -0
  240. package/esm/model/interface.js.map +1 -1
  241. package/esm/series/bar/bar.js +8 -8
  242. package/esm/series/bar/bar.js.map +1 -1
  243. package/esm/series/base/base-series.js +7 -6
  244. package/esm/series/base/base-series.js.map +1 -1
  245. package/esm/series/base/constant.d.ts +6 -0
  246. package/esm/series/base/constant.js +13 -0
  247. package/esm/series/base/constant.js.map +1 -1
  248. package/esm/series/interface/common.d.ts +2 -0
  249. package/esm/series/interface/common.js.map +1 -1
  250. package/esm/series/interface/series.d.ts +3 -1
  251. package/esm/series/interface/series.js.map +1 -1
  252. package/esm/series/interface/theme.d.ts +2 -0
  253. package/esm/series/interface/theme.js +2 -1
  254. package/esm/series/interface/theme.js.map +1 -1
  255. package/esm/series/interface/type.d.ts +2 -1
  256. package/esm/series/interface/type.js +1 -1
  257. package/esm/series/interface/type.js.map +1 -1
  258. package/esm/series/mosaic/interface.d.ts +16 -0
  259. package/esm/series/mosaic/interface.js +2 -0
  260. package/esm/series/mosaic/interface.js.map +1 -0
  261. package/esm/series/mosaic/mosaic.d.ts +16 -0
  262. package/esm/series/mosaic/mosaic.js +78 -0
  263. package/esm/series/mosaic/mosaic.js.map +1 -0
  264. package/esm/series/sankey/interface.d.ts +5 -4
  265. package/esm/series/sankey/interface.js.map +1 -1
  266. package/esm/series/sankey/sankey-transformer.d.ts +5 -0
  267. package/esm/series/sankey/sankey-transformer.js +8 -0
  268. package/esm/series/sankey/sankey-transformer.js.map +1 -0
  269. package/esm/series/sankey/sankey.d.ts +7 -2
  270. package/esm/series/sankey/sankey.js +49 -147
  271. package/esm/series/sankey/sankey.js.map +1 -1
  272. package/esm/series/word-cloud/interface.d.ts +1 -1
  273. package/esm/series/word-cloud/interface.js.map +1 -1
  274. package/esm/theme/builtin/common/series/index.js +4 -1
  275. package/esm/theme/builtin/common/series/index.js.map +1 -1
  276. package/esm/theme/builtin/common/series/mosaic.d.ts +2 -0
  277. package/esm/theme/builtin/common/series/mosaic.js +23 -0
  278. package/esm/theme/builtin/common/series/mosaic.js.map +1 -0
  279. package/esm/util/data.d.ts +24 -1
  280. package/esm/util/data.js +86 -17
  281. package/esm/util/data.js.map +1 -1
  282. package/esm/util/style.d.ts +1 -0
  283. package/esm/util/style.js +8 -0
  284. package/esm/util/style.js.map +1 -1
  285. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { ICartesianSeries, IGeoSeries, IPolarSeries, ISeries } from '../../series/interface';\nimport type { DataView } from '@visactor/vdataset';\nimport {\n isValid,\n isNumber,\n array,\n minInArray,\n maxInArray,\n isArray,\n normalizePadding,\n isFunction,\n type IPointLike\n} from '@visactor/vutils';\nimport type { Datum, IPoint, StringOrNumber } from '../../typings';\nimport { isPercent, transformToGraphic } from '../../util';\nimport type {\n IDataPos,\n IMarkerLabelSpec,\n IMarkerState,\n IMarkerSupportSeries,\n IPolarPoint,\n MarkerPositionPoint,\n MarkerStateValue\n} from './interface';\nimport { AGGR_TYPE } from '../../constant/marker';\nimport type { IRegion } from '../../region/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { OffsetPoint } from './interface';\n\nfunction isNeedExtendDomain(domain: number[], datum: number, autoRange: boolean) {\n if (!autoRange) {\n return false;\n }\n const domainNum = domain.map((n: any) => n * 1);\n const min = minInArray(domainNum);\n const max = maxInArray(domainNum);\n if (datum < min || datum > max) {\n return true;\n }\n return false;\n}\n\nfunction getXValue(\n datum: Datum,\n xDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries },\n regionWidth: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.x) &&\n isNeedExtendDomain(xDomain, datum.x, autoRange) &&\n (relativeSeries as ICartesianSeries)?.getXAxisHelper().setExtendDomain?.('marker_xAxis_extend', datum.x);\n let x: number;\n if (isPercent(datum.x)) {\n x = convertPercentToValue(datum.x, regionWidth) + regionStartLayoutStartPoint.x;\n } else {\n x = (relativeSeries as ICartesianSeries).getXAxisHelper().dataToPosition([datum.x]) + regionStartLayoutStartPoint.x;\n }\n\n return x;\n}\n\nfunction getYValue(\n datum: Datum,\n yDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries },\n regionHeight: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.y) &&\n isNeedExtendDomain(yDomain, datum.y, autoRange) &&\n (relativeSeries as ICartesianSeries).getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', datum.y);\n\n let y: number;\n if (isPercent(datum.y)) {\n y = convertPercentToValue(datum.y, regionHeight) + regionStartLayoutStartPoint.y;\n } else {\n y = (relativeSeries as ICartesianSeries).getYAxisHelper().dataToPosition([datum.y]) + regionStartLayoutStartPoint.y;\n }\n\n return y;\n}\n\nfunction getAngleValue(\n datum: Datum,\n angleDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries }\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.angle) &&\n isNeedExtendDomain(angleDomain, datum.angle, autoRange) &&\n (relativeSeries as IPolarSeries).angleAxisHelper?.setExtendDomain?.('marker_angleAxis_extend', datum.angle);\n\n return (relativeSeries as IPolarSeries).angleAxisHelper.dataToPosition([datum.angle]);\n}\n\nfunction getRadiusValue(\n datum: Datum,\n radiusDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries }\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.radius) &&\n isNeedExtendDomain(radiusDomain, datum.radius, autoRange) &&\n (relativeSeries as IPolarSeries).radiusAxisHelper?.setExtendDomain?.('marker_radiusAxis_extend', datum.radius);\n\n return (relativeSeries as IPolarSeries).radiusAxisHelper.dataToPosition([datum.radius]);\n}\n\nfunction convertPercentToValue(percent: string, relativeLength: number) {\n return (Number(percent.substring(0, percent.length - 1)) * relativeLength) / 100;\n}\n\nexport function isAggrSpec(spec: IDataPos) {\n return AGGR_TYPE.includes(spec as any);\n}\n\nexport function xyLayout(\n data: DataView,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean\n) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n\n const lines: IPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const xDomain = (relativeSeries as ICartesianSeries).getXAxisHelper().getScale(0).domain();\n const yDomain = (relativeSeries as ICartesianSeries).getYAxisHelper().getScale(0).domain();\n dataPoints.forEach((datum: IPoint) => {\n const isValidX = isValid(datum.x);\n const isValidY = isValid(datum.y);\n if (isValidX && isValidY) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n lines.push([{ x, y }]);\n } else if (isValidX) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n );\n const y1 = Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y);\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x,\n y: y1\n }\n ]);\n } else if (isValidY) {\n const x = Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n const x1 = Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n );\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x1,\n y: y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function polarLayout(\n data: DataView,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean\n) {\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n const lines: IPolarPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n const angleDomain = (relativeSeries as IPolarSeries).angleAxisHelper.getScale(0).domain();\n const radiusDomain = (relativeSeries as IPolarSeries).radiusAxisHelper.getScale(0).domain();\n const regionRadius = Math.min(\n relativeSeries.getRegion().getLayoutRect().width / 2,\n relativeSeries.getRegion().getLayoutRect().height / 2\n );\n dataPoints.forEach((datum: IPolarPoint) => {\n const isValidAngle = isValid(datum.angle);\n const isValidRadius = isValid(datum.radius);\n if (isValidAngle && isValidRadius) {\n const angle = getAngleValue(datum, angleDomain, autoRange, refSeries);\n const radius = getRadiusValue(datum, radiusDomain, autoRange, refSeries);\n lines.push([{ angle, radius }]);\n } else if (isValidAngle) {\n const angle = getAngleValue(datum, angleDomain, autoRange, refSeries);\n lines.push([\n {\n angle,\n radius: -regionRadius\n },\n {\n angle,\n radius: regionRadius\n }\n ]);\n } else if (isValidRadius) {\n const radius = getRadiusValue(datum, radiusDomain, autoRange, refSeries);\n lines.push([\n {\n radius,\n angle: 0\n },\n {\n radius,\n angle: Math.PI * 2\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function geoLayout(data: DataView, relativeSeries: IMarkerSupportSeries) {\n const lines: IPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n dataPoints.forEach((datum: any) => {\n const isValidName = isValid(datum.areaName);\n if (isValidName) {\n lines.push([\n {\n x:\n (relativeSeries as IGeoSeries).nameValueToPosition(datum.areaName).x +\n relativeSeries.getRegion().getLayoutStartPoint().x,\n y:\n (relativeSeries as IGeoSeries).nameValueToPosition(datum.areaName).y +\n relativeSeries.getRegion().getLayoutStartPoint().y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function cartesianCoordinateLayout(\n data: DataView,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean,\n coordinatesOffset: OffsetPoint[] | OffsetPoint\n) {\n const points: IPoint[] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const isArrayCoordinatesOffset = isArray(coordinatesOffset);\n dataPoints.forEach(\n (\n datum: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n },\n index: number\n ) => {\n const refRelativeSeries = (\n datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries\n ) as ICartesianSeries;\n const regionStart = refRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n\n const { width: regionWidth, height: regionHeight } = regionStart.getLayoutRect();\n\n let offsetX = 0;\n let offsetY = 0;\n if (coordinatesOffset) {\n const currentCoordinatesOffset = isArrayCoordinatesOffset ? coordinatesOffset[index] : coordinatesOffset;\n const x = currentCoordinatesOffset.x;\n const y = currentCoordinatesOffset.y;\n if (x) {\n offsetX = isPercent(x) ? (Number(x.substring(0, x.length - 1)) * regionWidth) / 100 : (x as number);\n }\n if (y) {\n offsetY = isPercent(y) ? (Number(y.substring(0, y.length - 1)) * regionHeight) / 100 : (y as number);\n }\n }\n\n const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain();\n const xValue = array(datum.x);\n const yValue = array(datum.y);\n\n xValue.length === 1 &&\n isNumber(xValue[0]) &&\n isNeedExtendDomain(xDomain, xValue[0], autoRange) &&\n refRelativeSeries.getXAxisHelper()?.setExtendDomain?.('marker_xAxis_extend', xValue[0] as number);\n\n yValue.length === 1 &&\n isNumber(yValue[0]) &&\n isNeedExtendDomain(yDomain, yValue[0], autoRange) &&\n refRelativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', yValue[0] as number);\n points.push({\n x: refRelativeSeries.getXAxisHelper().dataToPosition(xValue) + regionStartLayoutStartPoint.x + offsetX,\n y: refRelativeSeries.getYAxisHelper().dataToPosition(yValue) + regionStartLayoutStartPoint.y + offsetY\n });\n }\n );\n return points;\n}\n\nexport function polarCoordinateLayout(data: DataView, relativeSeries: IMarkerSupportSeries, autoRange: boolean) {\n const points: IPolarPoint[] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n dataPoints.forEach(\n (datum: {\n angle: StringOrNumber[] | StringOrNumber | null;\n radius: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n }) => {\n const refRelativeSeries = (\n datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries\n ) as IPolarSeries;\n\n const angleDomain = refRelativeSeries.angleAxisHelper.getScale(0).domain();\n const radiusDomain = refRelativeSeries.radiusAxisHelper.getScale(0).domain();\n const angleValue = array(datum.angle);\n const radiusValue = array(datum.radius);\n\n angleValue.length === 1 &&\n isNumber(angleValue[0]) &&\n isNeedExtendDomain(angleDomain, angleValue[0], autoRange) &&\n refRelativeSeries.angleAxisHelper?.setExtendDomain?.('marker_xAxis_extend', angleValue[0] as number);\n\n radiusValue.length === 1 &&\n isNumber(radiusValue[0]) &&\n isNeedExtendDomain(radiusDomain, radiusValue[0], autoRange) &&\n refRelativeSeries.radiusAxisHelper?.setExtendDomain?.('marker_yAxis_extend', radiusValue[0] as number);\n points.push({\n angle: refRelativeSeries.angleAxisHelper.dataToPosition(angleValue),\n radius: refRelativeSeries.radiusAxisHelper.dataToPosition(radiusValue)\n });\n }\n );\n return points;\n}\n\nexport function positionLayout(positions: MarkerPositionPoint[], series: ISeries, regionRelative: boolean): IPoint[] {\n if (regionRelative) {\n const region = series.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n const { width: regionWidth, height: regionHeight } = region.getLayoutRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, regionWidth);\n }\n x = (x as number) + regionStartX;\n if (isPercent(y)) {\n y = convertPercentToValue(y, regionHeight);\n }\n y = (y as number) + regionStartY;\n\n return {\n x,\n y\n };\n });\n }\n\n const { width: canvasWidth, height: canvasHeight } = series.getOption().getChart().getViewRect();\n return positions.map(position => {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, canvasWidth);\n }\n if (isPercent(y)) {\n y = convertPercentToValue(y, canvasHeight);\n }\n return {\n x: x as number,\n y: y as number\n };\n });\n}\n\nexport function computeClipRange(regions: IRegion[]) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n regions.forEach((region: IRegion) => {\n const regionPos = region.getLayoutStartPoint();\n const regionRect = region.getLayoutRect();\n if (regionPos.x < minX) {\n minX = regionPos.x;\n }\n if (regionPos.x + regionRect.width > maxX) {\n maxX = regionPos.x + regionRect.width;\n }\n if (regionPos.y < minY) {\n minY = regionPos.y;\n }\n if (regionPos.y + regionRect.height > maxY) {\n maxY = regionPos.y + regionRect.height;\n }\n });\n return { minX, maxX, minY, maxY };\n}\n\nexport function transformLabelAttributes(label: IMarkerLabelSpec, markerData: any) {\n const { labelBackground = {}, style, shape, ...restLabel } = label;\n\n if (label.visible !== false) {\n const labelAttrs = restLabel as any;\n\n if (shape?.visible) {\n labelAttrs.shape = {\n visible: true,\n ...transformToGraphic(shape.style)\n };\n } else {\n labelAttrs.shape = {\n visible: false\n };\n }\n\n if (labelBackground.visible !== false) {\n labelAttrs.panel = {\n visible: true,\n ...transformStyle(transformToGraphic(labelBackground.style), markerData)\n };\n if (isValid(labelBackground.padding)) {\n labelAttrs.padding = normalizePadding(labelBackground.padding);\n }\n } else {\n labelAttrs.panel = {\n visible: false\n };\n labelAttrs.padding = 0;\n }\n\n if (style) {\n labelAttrs.textStyle = transformStyle(transformToGraphic(style), markerData);\n }\n return labelAttrs;\n }\n return {\n visible: false\n };\n}\n\nexport function transformState(state: {} | Record<MarkerStateValue, any | IMarkerState<any>>, markerData: DataView) {\n for (const stateKey in state) {\n if (isFunction(state[stateKey])) {\n state[stateKey] = state[stateKey](markerData);\n }\n }\n return state;\n}\n\nexport function transformStyle(style: any, markerData: DataView) {\n if (isFunction(style)) {\n return style(markerData);\n }\n return style;\n}\n\nexport function transformOffset(offset: string | number | Function, region: IRegion) {\n if (isFunction(offset)) {\n return offset(region);\n }\n return offset;\n}\n\nexport function computeOffsetFromRegion(point: IPointLike, offset: string | number, region: IRegion): number {\n if (!isValid(point)) {\n return offset as number;\n }\n if (offset === 'regionLeft') {\n return region.getLayoutStartPoint().x - point.x;\n } else if (offset === 'regionRight') {\n return region.getLayoutStartPoint().x + region.getLayoutRect().width - point.x;\n } else if (offset === 'regionTop') {\n return region.getLayoutStartPoint().y - point.y;\n } else if (offset === 'regionBottom') {\n return region.getLayoutStartPoint().y + region.getLayoutRect().height - point.y;\n }\n return offset as number;\n}\n\nexport function getMarkLineProcessInfo(spec: any) {\n const isXProcess = 'x' in spec;\n const isYProcess = 'y' in spec;\n const isX1Process = 'x1' in spec;\n const isY1Process = 'y1' in spec;\n const isAngleProcess = 'angle' in spec;\n const isRadiusProcess = 'radius' in spec;\n const isAngle1Process = 'angle1' in spec;\n const isRadius1Process = 'radius1' in spec;\n const isCoordinatesProcess = 'coordinates' in spec;\n const isValidProcess = 'process' in spec;\n\n return {\n doXProcess: isXProcess && !isYProcess && !isY1Process,\n doXYY1Process: isXProcess && isYProcess && isY1Process,\n doYProcess: isYProcess && !isXProcess && !isX1Process,\n doYXX1Process: isYProcess && isXProcess && isX1Process,\n doXYProcess: isXProcess && isYProcess && isX1Process && isY1Process,\n doAngleProcess: isAngleProcess && !isAngle1Process && !isRadiusProcess && !isRadius1Process,\n doRadiusProcess: isRadiusProcess && !isRadius1Process && !isAngleProcess && !isAngle1Process,\n doAngRadRad1Process: isAngleProcess && !isAngle1Process && isRadiusProcess && isRadius1Process,\n doRadAngAng1Process: isRadiusProcess && isAngleProcess && isAngle1Process && !isRadius1Process,\n doRadAngProcess: isAngleProcess && isRadiusProcess && isAngle1Process && isRadius1Process,\n doCoordinatesProcess: isCoordinatesProcess && (!isValidProcess || ('process' in spec && 'xy' in spec.process))\n };\n}\n\nexport function getMarkAreaProcessInfo(spec: any) {\n const isXProcess = 'x' in spec;\n const isX1Process = 'x1' in spec;\n const isYProcess = 'y' in spec;\n const isY1Process = 'y1' in spec;\n const isAngleProcess = 'angle' in spec;\n const isRadiusProcess = 'radius' in spec;\n const isAngle1Process = 'angle1' in spec;\n const isRadius1Process = 'radius1' in spec;\n const isCoordinatesProcess = 'coordinates' in spec;\n return {\n doXProcess: isXProcess && isX1Process && !isYProcess && !isY1Process,\n doYProcess: isYProcess && isY1Process && !isXProcess && !isX1Process,\n doXYProcess: isXProcess && isX1Process && isYProcess && isY1Process,\n doAngleProcess: isAngleProcess && isAngle1Process && !isRadiusProcess && !isRadius1Process,\n doRadiusProcess: isRadiusProcess && isRadius1Process && !isAngleProcess && !isAngle1Process,\n doRadAngProcess: isAngleProcess && isRadiusProcess && isAngle1Process && isRadius1Process,\n doCoordinatesProcess: isCoordinatesProcess\n };\n}\n\nexport function getMarkPointProcessInfo(spec: any) {\n const isXYProcess = isValid(spec.x) && isValid(spec.y);\n const isPolarProcess = isValid(spec.angle) && isValid(spec.radius);\n const isGeoProcess = isValid(spec.areaName);\n return {\n doXYProcess: isXYProcess,\n doPolarProcess: isPolarProcess,\n doGeoProcess: isGeoProcess\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { ICartesianSeries, IGeoSeries, IPolarSeries, ISeries } from '../../series/interface';\nimport type { DataView } from '@visactor/vdataset';\nimport {\n isValid,\n isNumber,\n array,\n minInArray,\n maxInArray,\n isArray,\n normalizePadding,\n isFunction,\n type IPointLike\n} from '@visactor/vutils';\nimport type { Datum, IPoint, StringOrNumber } from '../../typings';\nimport { isPercent, transformToGraphic } from '../../util';\nimport type {\n IDataPos,\n IMarkerLabelSpec,\n IMarkerState,\n IMarkerSupportSeries,\n IPolarPoint,\n MarkerPositionPoint,\n MarkerStateValue\n} from './interface';\nimport { AGGR_TYPE } from '../../constant/marker';\nimport type { IRegion } from '../../region/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { OffsetPoint } from './interface';\n\nfunction isNeedExtendDomain(domain: number[], datum: number, autoRange: boolean) {\n if (!autoRange) {\n return false;\n }\n const domainNum = domain.map((n: any) => n * 1);\n const min = minInArray(domainNum);\n const max = maxInArray(domainNum);\n if (datum < min || datum > max) {\n return true;\n }\n return false;\n}\n\nfunction getXValue(\n datum: Datum,\n xDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries },\n regionWidth: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.x) &&\n isNeedExtendDomain(xDomain, datum.x, autoRange) &&\n (relativeSeries as ICartesianSeries)?.getXAxisHelper().setExtendDomain?.('marker_xAxis_extend', datum.x);\n let x: number;\n if (isPercent(datum.x)) {\n x = convertPercentToValue(datum.x, regionWidth) + regionStartLayoutStartPoint.x;\n } else {\n x = (relativeSeries as ICartesianSeries).getXAxisHelper().dataToPosition([datum.x]) + regionStartLayoutStartPoint.x;\n }\n\n return x;\n}\n\nfunction getYValue(\n datum: Datum,\n yDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries },\n regionHeight: number,\n regionStartLayoutStartPoint: IPoint\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.y) &&\n isNeedExtendDomain(yDomain, datum.y, autoRange) &&\n (relativeSeries as ICartesianSeries).getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', datum.y);\n\n let y: number;\n if (isPercent(datum.y)) {\n y = convertPercentToValue(datum.y, regionHeight) + regionStartLayoutStartPoint.y;\n } else {\n y = (relativeSeries as ICartesianSeries).getYAxisHelper().dataToPosition([datum.y]) + regionStartLayoutStartPoint.y;\n }\n\n return y;\n}\n\nfunction getAngleValue(\n datum: Datum,\n angleDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries }\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.angle) &&\n isNeedExtendDomain(angleDomain, datum.angle, autoRange) &&\n (relativeSeries as IPolarSeries).angleAxisHelper?.setExtendDomain?.('marker_angleAxis_extend', datum.angle);\n\n return (relativeSeries as IPolarSeries).angleAxisHelper.dataToPosition([datum.angle]);\n}\n\nfunction getRadiusValue(\n datum: Datum,\n radiusDomain: number[],\n autoRange: boolean,\n refSeries: { [key: string]: IMarkerSupportSeries }\n) {\n const { relativeSeries } = refSeries;\n isNumber(datum.radius) &&\n isNeedExtendDomain(radiusDomain, datum.radius, autoRange) &&\n (relativeSeries as IPolarSeries).radiusAxisHelper?.setExtendDomain?.('marker_radiusAxis_extend', datum.radius);\n\n return (relativeSeries as IPolarSeries).radiusAxisHelper.dataToPosition([datum.radius]);\n}\n\nfunction convertPercentToValue(percent: string, relativeLength: number) {\n return (Number(percent.substring(0, percent.length - 1)) * relativeLength) / 100;\n}\n\nexport function isAggrSpec(spec: IDataPos) {\n return AGGR_TYPE.includes(spec as any);\n}\n\nexport function xyLayout(\n data: DataView,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean\n) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n\n const lines: IPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const xDomain = (relativeSeries as ICartesianSeries).getXAxisHelper().getScale(0).domain();\n const yDomain = (relativeSeries as ICartesianSeries).getYAxisHelper().getScale(0).domain();\n dataPoints.forEach((datum: IPoint) => {\n const isValidX = isValid(datum.x);\n const isValidY = isValid(datum.y);\n if (isValidX && isValidY) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n lines.push([{ x, y }]);\n } else if (isValidX) {\n const x = getXValue(datum, xDomain, autoRange, refSeries, regionWidth, regionStartLayoutStartPoint);\n const y = Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n );\n const y1 = Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y);\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x,\n y: y1\n }\n ]);\n } else if (isValidY) {\n const x = Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x);\n const y = getYValue(datum, yDomain, autoRange, refSeries, regionHeight, regionStartLayoutStartPoint);\n const x1 = Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n );\n lines.push([\n {\n x: x,\n y: y\n },\n {\n x: x1,\n y: y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function polarLayout(\n data: DataView,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean\n) {\n const refSeries = {\n relativeSeries,\n startRelativeSeries,\n endRelativeSeries\n };\n const lines: IPolarPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n const angleDomain = (relativeSeries as IPolarSeries).angleAxisHelper.getScale(0).domain();\n const radiusDomain = (relativeSeries as IPolarSeries).radiusAxisHelper.getScale(0).domain();\n const regionRadius = Math.min(\n relativeSeries.getRegion().getLayoutRect().width / 2,\n relativeSeries.getRegion().getLayoutRect().height / 2\n );\n dataPoints.forEach((datum: IPolarPoint) => {\n const isValidAngle = isValid(datum.angle);\n const isValidRadius = isValid(datum.radius);\n if (isValidAngle && isValidRadius) {\n const angle = getAngleValue(datum, angleDomain, autoRange, refSeries);\n const radius = getRadiusValue(datum, radiusDomain, autoRange, refSeries);\n lines.push([{ angle, radius }]);\n } else if (isValidAngle) {\n const angle = getAngleValue(datum, angleDomain, autoRange, refSeries);\n lines.push([\n {\n angle,\n radius: -regionRadius\n },\n {\n angle,\n radius: regionRadius\n }\n ]);\n } else if (isValidRadius) {\n const radius = getRadiusValue(datum, radiusDomain, autoRange, refSeries);\n lines.push([\n {\n radius,\n angle: 0\n },\n {\n radius,\n angle: Math.PI * 2\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function geoLayout(data: DataView, relativeSeries: IMarkerSupportSeries) {\n const lines: IPoint[][] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n dataPoints.forEach((datum: any) => {\n const isValidName = isValid(datum.areaName);\n if (isValidName) {\n lines.push([\n {\n x:\n (relativeSeries as IGeoSeries).nameValueToPosition(datum.areaName).x +\n relativeSeries.getRegion().getLayoutStartPoint().x,\n y:\n (relativeSeries as IGeoSeries).nameValueToPosition(datum.areaName).y +\n relativeSeries.getRegion().getLayoutStartPoint().y\n }\n ]);\n }\n });\n\n return lines;\n}\n\nexport function cartesianCoordinateLayout(\n data: DataView,\n relativeSeries: IMarkerSupportSeries,\n autoRange: boolean,\n coordinatesOffset: OffsetPoint[] | OffsetPoint\n) {\n const points: IPoint[] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n const isArrayCoordinatesOffset = isArray(coordinatesOffset);\n dataPoints.forEach(\n (\n datum: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n },\n index: number\n ) => {\n const refRelativeSeries = (\n datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries\n ) as ICartesianSeries;\n const regionStart = refRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n\n const { width: regionWidth, height: regionHeight } = regionStart.getLayoutRect();\n\n let offsetX = 0;\n let offsetY = 0;\n if (coordinatesOffset) {\n const currentCoordinatesOffset = isArrayCoordinatesOffset ? coordinatesOffset[index] : coordinatesOffset;\n const x = currentCoordinatesOffset.x;\n const y = currentCoordinatesOffset.y;\n if (x) {\n offsetX = isPercent(x) ? (Number(x.substring(0, x.length - 1)) * regionWidth) / 100 : (x as number);\n }\n if (y) {\n offsetY = isPercent(y) ? (Number(y.substring(0, y.length - 1)) * regionHeight) / 100 : (y as number);\n }\n }\n\n const xDomain = refRelativeSeries.getXAxisHelper().getScale(0).domain();\n const yDomain = refRelativeSeries.getYAxisHelper().getScale(0).domain();\n const xValue = array(datum.x);\n const yValue = array(datum.y);\n\n xValue.length === 1 &&\n isNumber(xValue[0]) &&\n isNeedExtendDomain(xDomain, xValue[0], autoRange) &&\n refRelativeSeries.getXAxisHelper()?.setExtendDomain?.('marker_xAxis_extend', xValue[0] as number);\n\n yValue.length === 1 &&\n isNumber(yValue[0]) &&\n isNeedExtendDomain(yDomain, yValue[0], autoRange) &&\n refRelativeSeries.getYAxisHelper()?.setExtendDomain?.('marker_yAxis_extend', yValue[0] as number);\n points.push({\n x: refRelativeSeries.getXAxisHelper().dataToPosition(xValue) + regionStartLayoutStartPoint.x + offsetX,\n y: refRelativeSeries.getYAxisHelper().dataToPosition(yValue) + regionStartLayoutStartPoint.y + offsetY\n });\n }\n );\n return points;\n}\n\nexport function polarCoordinateLayout(data: DataView, relativeSeries: IMarkerSupportSeries, autoRange: boolean) {\n const points: IPolarPoint[] = [];\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n dataPoints.forEach(\n (datum: {\n angle: StringOrNumber[] | StringOrNumber | null;\n radius: StringOrNumber[] | StringOrNumber | null;\n getRefRelativeSeries?: () => ICartesianSeries;\n }) => {\n const refRelativeSeries = (\n datum?.getRefRelativeSeries ? datum.getRefRelativeSeries() : relativeSeries\n ) as IPolarSeries;\n\n const angleDomain = refRelativeSeries.angleAxisHelper.getScale(0).domain();\n const radiusDomain = refRelativeSeries.radiusAxisHelper.getScale(0).domain();\n const angleValue = array(datum.angle);\n const radiusValue = array(datum.radius);\n\n angleValue.length === 1 &&\n isNumber(angleValue[0]) &&\n isNeedExtendDomain(angleDomain, angleValue[0], autoRange) &&\n refRelativeSeries.angleAxisHelper?.setExtendDomain?.('marker_xAxis_extend', angleValue[0] as number);\n\n radiusValue.length === 1 &&\n isNumber(radiusValue[0]) &&\n isNeedExtendDomain(radiusDomain, radiusValue[0], autoRange) &&\n refRelativeSeries.radiusAxisHelper?.setExtendDomain?.('marker_yAxis_extend', radiusValue[0] as number);\n points.push({\n angle: refRelativeSeries.angleAxisHelper.dataToPosition(angleValue),\n radius: refRelativeSeries.radiusAxisHelper.dataToPosition(radiusValue)\n });\n }\n );\n return points;\n}\n\nfunction convertPosition(position: MarkerPositionPoint, relativeWidth: number, relativeHeight: number): IPoint {\n let { x, y } = position;\n if (isPercent(x)) {\n x = convertPercentToValue(x, relativeWidth);\n }\n if (isPercent(y)) {\n y = convertPercentToValue(y, relativeHeight);\n }\n\n return {\n x: x as number,\n y: y as number\n };\n}\n\nexport function positionLayout(\n positions:\n | MarkerPositionPoint\n | MarkerPositionPoint[]\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => MarkerPositionPoint)\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => MarkerPositionPoint[]),\n series: IMarkerSupportSeries,\n regionRelative: boolean\n): IPoint[] {\n let transformPositions;\n if (isFunction(positions)) {\n transformPositions = array(positions(series.getData().getLatestData(), series));\n } else {\n transformPositions = array(positions);\n }\n\n if (regionRelative) {\n const region = series.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n const { width: regionWidth, height: regionHeight } = region.getLayoutRect();\n return transformPositions.map(position => {\n let { x, y } = convertPosition(position, regionWidth, regionHeight);\n\n x = (x as number) + regionStartX;\n y = (y as number) + regionStartY;\n\n return {\n x,\n y\n };\n });\n }\n\n const { width: canvasWidth, height: canvasHeight } = series.getOption().getChart().getViewRect();\n return transformPositions.map(position => {\n return convertPosition(position, canvasWidth, canvasHeight);\n });\n}\n\nexport function computeClipRange(regions: IRegion[]) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n regions.forEach((region: IRegion) => {\n const regionPos = region.getLayoutStartPoint();\n const regionRect = region.getLayoutRect();\n if (regionPos.x < minX) {\n minX = regionPos.x;\n }\n if (regionPos.x + regionRect.width > maxX) {\n maxX = regionPos.x + regionRect.width;\n }\n if (regionPos.y < minY) {\n minY = regionPos.y;\n }\n if (regionPos.y + regionRect.height > maxY) {\n maxY = regionPos.y + regionRect.height;\n }\n });\n return { minX, maxX, minY, maxY };\n}\n\nexport function transformLabelAttributes(label: IMarkerLabelSpec, markerData: any) {\n const { labelBackground = {}, style, shape, ...restLabel } = label;\n\n if (label.visible !== false) {\n const labelAttrs = restLabel as any;\n\n if (shape?.visible) {\n labelAttrs.shape = {\n visible: true,\n ...transformToGraphic(shape.style)\n };\n } else {\n labelAttrs.shape = {\n visible: false\n };\n }\n\n if (labelBackground.visible !== false) {\n labelAttrs.panel = {\n visible: true,\n ...transformStyle(transformToGraphic(labelBackground.style), markerData)\n };\n if (isValid(labelBackground.padding)) {\n labelAttrs.padding = normalizePadding(labelBackground.padding);\n }\n } else {\n labelAttrs.panel = {\n visible: false\n };\n labelAttrs.padding = 0;\n }\n\n if (style) {\n labelAttrs.textStyle = transformStyle(transformToGraphic(style), markerData);\n }\n return labelAttrs;\n }\n return {\n visible: false\n };\n}\n\nexport function transformState(state: {} | Record<MarkerStateValue, any | IMarkerState<any>>, markerData: DataView) {\n for (const stateKey in state) {\n if (isFunction(state[stateKey])) {\n state[stateKey] = state[stateKey](markerData);\n }\n }\n return state;\n}\n\nexport function transformStyle(style: any, markerData: DataView) {\n if (isFunction(style)) {\n return style(markerData);\n }\n return style;\n}\n\nexport function transformOffset(offset: string | number | Function, region: IRegion) {\n if (isFunction(offset)) {\n return offset(region);\n }\n return offset;\n}\n\nexport function computeOffsetFromRegion(point: IPointLike, offset: string | number, region: IRegion): number {\n if (!isValid(point)) {\n return offset as number;\n }\n if (offset === 'regionLeft') {\n return region.getLayoutStartPoint().x - point.x;\n } else if (offset === 'regionRight') {\n return region.getLayoutStartPoint().x + region.getLayoutRect().width - point.x;\n } else if (offset === 'regionTop') {\n return region.getLayoutStartPoint().y - point.y;\n } else if (offset === 'regionBottom') {\n return region.getLayoutStartPoint().y + region.getLayoutRect().height - point.y;\n }\n return offset as number;\n}\n\nexport function getMarkLineProcessInfo(spec: any) {\n const isXProcess = 'x' in spec;\n const isYProcess = 'y' in spec;\n const isX1Process = 'x1' in spec;\n const isY1Process = 'y1' in spec;\n const isAngleProcess = 'angle' in spec;\n const isRadiusProcess = 'radius' in spec;\n const isAngle1Process = 'angle1' in spec;\n const isRadius1Process = 'radius1' in spec;\n const isCoordinatesProcess = 'coordinates' in spec;\n const isValidProcess = 'process' in spec;\n\n return {\n doXProcess: isXProcess && !isYProcess && !isY1Process,\n doXYY1Process: isXProcess && isYProcess && isY1Process,\n doYProcess: isYProcess && !isXProcess && !isX1Process,\n doYXX1Process: isYProcess && isXProcess && isX1Process,\n doXYProcess: isXProcess && isYProcess && isX1Process && isY1Process,\n doAngleProcess: isAngleProcess && !isAngle1Process && !isRadiusProcess && !isRadius1Process,\n doRadiusProcess: isRadiusProcess && !isRadius1Process && !isAngleProcess && !isAngle1Process,\n doAngRadRad1Process: isAngleProcess && !isAngle1Process && isRadiusProcess && isRadius1Process,\n doRadAngAng1Process: isRadiusProcess && isAngleProcess && isAngle1Process && !isRadius1Process,\n doRadAngProcess: isAngleProcess && isRadiusProcess && isAngle1Process && isRadius1Process,\n doCoordinatesProcess: isCoordinatesProcess && (!isValidProcess || ('process' in spec && 'xy' in spec.process))\n };\n}\n\nexport function getMarkAreaProcessInfo(spec: any) {\n const isXProcess = 'x' in spec;\n const isX1Process = 'x1' in spec;\n const isYProcess = 'y' in spec;\n const isY1Process = 'y1' in spec;\n const isAngleProcess = 'angle' in spec;\n const isRadiusProcess = 'radius' in spec;\n const isAngle1Process = 'angle1' in spec;\n const isRadius1Process = 'radius1' in spec;\n const isCoordinatesProcess = 'coordinates' in spec;\n return {\n doXProcess: isXProcess && isX1Process && !isYProcess && !isY1Process,\n doYProcess: isYProcess && isY1Process && !isXProcess && !isX1Process,\n doXYProcess: isXProcess && isX1Process && isYProcess && isY1Process,\n doAngleProcess: isAngleProcess && isAngle1Process && !isRadiusProcess && !isRadius1Process,\n doRadiusProcess: isRadiusProcess && isRadius1Process && !isAngleProcess && !isAngle1Process,\n doRadAngProcess: isAngleProcess && isRadiusProcess && isAngle1Process && isRadius1Process,\n doCoordinatesProcess: isCoordinatesProcess\n };\n}\n\nexport function getMarkPointProcessInfo(spec: any) {\n const isXYProcess = isValid(spec.x) && isValid(spec.y);\n const isPolarProcess = isValid(spec.angle) && isValid(spec.radius);\n const isGeoProcess = isValid(spec.areaName);\n return {\n doXYProcess: isXYProcess,\n doPolarProcess: isPolarProcess,\n doGeoProcess: isGeoProcess\n };\n}\n"]}
@@ -6,6 +6,7 @@ export interface ITooltipSpec extends Partial<ITooltipActiveTypeAsKeys<ITooltipP
6
6
  activeType?: TooltipActiveType | TooltipActiveType[];
7
7
  trigger?: MaybeArray<'hover' | 'click'> | 'none';
8
8
  triggerOff?: MaybeArray<'hover' | 'click'> | 'none';
9
+ hideTimer?: number;
9
10
  lockAfterClick?: boolean;
10
11
  style?: Omit<ITooltipTheme<string>, 'offset'>;
11
12
  handler?: Partial<ITooltipHandlerSpec>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type {\n IGroupTooltipPattern,\n ITooltipActual,\n ITooltipPattern,\n Maybe,\n MaybeArray,\n TooltipActiveType,\n TooltipData\n} from '../../../typings';\nimport type { ITooltipActiveTypeAsKeys, TooltipHandlerParams, TooltipResult } from './common';\nimport type { ITooltipTheme } from './theme';\n\nexport interface ITooltipSpec\n extends Partial<\n /**\n * mark tooltip pattern\n * & dimension tooltip pattern\n * (*支持在series上设置)\n */\n ITooltipActiveTypeAsKeys<ITooltipPattern, ITooltipPattern, IGroupTooltipPattern>\n > {\n /**\n * 是否显示\n * (*支持在series上设置)\n * (*会影响自定义handler)\n */\n visible?: boolean;\n /**\n * 受支持的激活类型\n * (*支持在series上设置)\n * (*会影响自定义handler)\n */\n activeType?: TooltipActiveType | TooltipActiveType[];\n /**\n * tooltip触发方式\n * (*会影响自定义handler)\n */\n trigger?: MaybeArray<'hover' | 'click'> | 'none';\n /**\n * 隐藏tooltip的触发方式(目前仅支持和trigger一致的设置以及none)\n * (*会影响自定义handler)\n */\n triggerOff?: MaybeArray<'hover' | 'click'> | 'none';\n /**\n * 点击后锁定,只有点击才可以更新位置或者解锁,通常用于 trigger 为 `['hover', 'click']` 的场景\n * (*会影响自定义handler)\n * @since 1.10.0\n */\n lockAfterClick?: boolean;\n /**\n * tooltip样式\n */\n style?: Omit<ITooltipTheme<string>, 'offset'>;\n\n /**\n * 自定义handler方法\n */\n handler?: Partial<ITooltipHandlerSpec>;\n\n /**\n * tooltip 渲染方式,默认为 html\n */\n renderMode?: 'html' | 'canvas';\n /**\n * 是否将 tooltip 框限制在画布区域内,renderMode 为 canvas 时,默认开启。\n */\n confine?: boolean;\n\n /**\n * tooltip dom元素的 className,仅当 renderMode: 'html' 时生效\n */\n className?: string;\n /**\n * tooltip dom 元素的挂载点,可传 id 或 dom 对象\n */\n parentElement?: Maybe<string | HTMLElement | HTMLCanvasElement>;\n /**\n * 鼠标是否可进入提示框浮层中,默认为false,如需详情内交互,如添加链接,按钮,可设置为 true。\n * 该属性目前只对 renderMode 为 html 时生效\n * TODO: 支持 renderMode: canvas\n */\n enterable?: boolean;\n\n /**\n * 浮层移动动画过渡时间,单位是 ms,设置为 0 的时候会紧跟着鼠标移动(目前仅影响 dom tooltip)\n */\n transitionDuration?: number;\n\n /**\n * 更新 tooltip 的防抖动时间间隔,单位是 ms\n */\n throttleInterval?: number;\n\n /**\n * 更新 tooltip dom 元素,仅当 renderMode: 'html' 时生效\n * @since 1.6.0\n */\n updateElement?: (tooltipElement: HTMLElement, actualTooltip: ITooltipActual, params: TooltipHandlerParams) => void;\n\n offset?: {\n x?: number;\n y?: number;\n };\n}\n\nexport interface ITooltipHandlerSpec {\n /** 显示 tooltip,可以选择返回是否遇到异常 */\n showTooltip: (\n activeType: TooltipActiveType,\n tooltipData: TooltipData,\n params: TooltipHandlerParams\n ) => Maybe<TooltipResult>;\n /** 隐藏 tooltip,可以选择返回是否遇到异常 */\n hideTooltip: (params: TooltipHandlerParams) => Maybe<TooltipResult>;\n /** 释放 tooltip */\n release: () => void;\n /** 可选,判断 tooltip 是否正在显示 */\n isTooltipShown?: () => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type {\n IGroupTooltipPattern,\n ITooltipActual,\n ITooltipPattern,\n Maybe,\n MaybeArray,\n TooltipActiveType,\n TooltipData\n} from '../../../typings';\nimport type { ITooltipActiveTypeAsKeys, TooltipHandlerParams, TooltipResult } from './common';\nimport type { ITooltipTheme } from './theme';\n\nexport interface ITooltipSpec\n extends Partial<\n /**\n * mark tooltip pattern\n * & dimension tooltip pattern\n * (*支持在series上设置)\n */\n ITooltipActiveTypeAsKeys<ITooltipPattern, ITooltipPattern, IGroupTooltipPattern>\n > {\n /**\n * 是否显示\n * (*支持在series上设置)\n * (*会影响自定义handler)\n */\n visible?: boolean;\n /**\n * 受支持的激活类型\n * (*支持在series上设置)\n * (*会影响自定义handler)\n */\n activeType?: TooltipActiveType | TooltipActiveType[];\n /**\n * tooltip触发方式\n * (*会影响自定义handler)\n */\n trigger?: MaybeArray<'hover' | 'click'> | 'none';\n /**\n * 隐藏tooltip的触发方式(目前仅支持和trigger一致的设置以及none)\n * (*会影响自定义handler)\n */\n triggerOff?: MaybeArray<'hover' | 'click'> | 'none';\n /**\n * 隐藏计时器\n * @since 1.11.7\n */\n hideTimer?: number;\n /**\n * 点击后锁定,只有点击才可以更新位置或者解锁,通常用于 trigger 为 `['hover', 'click']` 的场景\n * (*会影响自定义handler)\n * @since 1.10.0\n */\n lockAfterClick?: boolean;\n /**\n * tooltip样式\n */\n style?: Omit<ITooltipTheme<string>, 'offset'>;\n\n /**\n * 自定义handler方法\n */\n handler?: Partial<ITooltipHandlerSpec>;\n\n /**\n * tooltip 渲染方式,默认为 html\n */\n renderMode?: 'html' | 'canvas';\n /**\n * 是否将 tooltip 框限制在画布区域内,renderMode 为 canvas 时,默认开启。\n */\n confine?: boolean;\n\n /**\n * tooltip dom元素的 className,仅当 renderMode: 'html' 时生效\n */\n className?: string;\n /**\n * tooltip dom 元素的挂载点,可传 id 或 dom 对象\n */\n parentElement?: Maybe<string | HTMLElement | HTMLCanvasElement>;\n /**\n * 鼠标是否可进入提示框浮层中,默认为false,如需详情内交互,如添加链接,按钮,可设置为 true。\n * 该属性目前只对 renderMode 为 html 时生效\n * TODO: 支持 renderMode: canvas\n */\n enterable?: boolean;\n\n /**\n * 浮层移动动画过渡时间,单位是 ms,设置为 0 的时候会紧跟着鼠标移动(目前仅影响 dom tooltip)\n */\n transitionDuration?: number;\n\n /**\n * 更新 tooltip 的防抖动时间间隔,单位是 ms\n */\n throttleInterval?: number;\n\n /**\n * 更新 tooltip dom 元素,仅当 renderMode: 'html' 时生效\n * @since 1.6.0\n */\n updateElement?: (tooltipElement: HTMLElement, actualTooltip: ITooltipActual, params: TooltipHandlerParams) => void;\n\n offset?: {\n x?: number;\n y?: number;\n };\n}\n\nexport interface ITooltipHandlerSpec {\n /** 显示 tooltip,可以选择返回是否遇到异常 */\n showTooltip: (\n activeType: TooltipActiveType,\n tooltipData: TooltipData,\n params: TooltipHandlerParams\n ) => Maybe<TooltipResult>;\n /** 隐藏 tooltip,可以选择返回是否遇到异常 */\n hideTooltip: (params: TooltipHandlerParams) => Maybe<TooltipResult>;\n /** 释放 tooltip */\n release: () => void;\n /** 可选,判断 tooltip 是否正在显示 */\n isTooltipShown?: () => boolean;\n}\n"]}
@@ -21,6 +21,7 @@ export declare class Tooltip extends BaseComponent<any> implements ITooltip {
21
21
  static specKey: string;
22
22
  specKey: string;
23
23
  layoutType: 'none';
24
+ private _timer?;
24
25
  protected _spec: ITooltipSpec;
25
26
  static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
26
27
  tooltipHandler?: ITooltipHandler;
@@ -48,7 +49,7 @@ export declare class Tooltip extends BaseComponent<any> implements ITooltip {
48
49
  protected _initEvent(): void;
49
50
  protected _mountEvent: (eType: EventType, query: EventQuery, callback: EventCallback<any>) => void;
50
51
  protected _getMouseOutHandler: (needPointerDetection?: boolean) => (params: BaseEventParams) => void;
51
- protected _handleChartMouseOut: (params: BaseEventParams) => void;
52
+ protected _handleChartMouseOut: (params?: BaseEventParams) => void;
52
53
  protected _getMouseMoveHandler: (isClick: boolean) => (params: BaseEventParams) => void;
53
54
  protected _showTooltipByMouseEvent: (activeType: TooltipActiveType, mouseEventData: TotalMouseEventData, params: BaseEventParams, isClick: boolean, useCache?: boolean) => boolean;
54
55
  protected _getMouseEventData: (params: BaseEventParams) => TotalMouseEventData;
@@ -75,12 +75,14 @@ export class Tooltip extends BaseComponent {
75
75
  ignore: mouseEventData.ignore[activeType]
76
76
  })) return !1;
77
77
  let success;
78
- if (useCache) success = !processor.showTooltip(this._cacheInfo, params, !0); else {
78
+ if (this._timer && clearTimeout(this._timer), useCache) success = !processor.showTooltip(this._cacheInfo, params, !0); else {
79
79
  const tooltipInfo = mouseEventData.tooltipInfo[activeType], isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType);
80
80
  success = !processor.showTooltip(tooltipInfo, params, isSameAsCache), success && (this._cacheInfo = tooltipInfo,
81
81
  this._cacheParams = params, this._cacheActiveType = activeType);
82
82
  }
83
- success && (this._isTooltipShown = !0, isClick && this._spec.lockAfterClick && !this._clickLock && (this._clickLock = !0));
83
+ success && (this._isTooltipShown = !0, isClick && this._spec.lockAfterClick && !this._clickLock ? this._clickLock = !0 : Number.isFinite(this._spec.hideTimer) && (this._timer = setTimeout((() => {
84
+ this._handleChartMouseOut();
85
+ }), this._spec.hideTimer)));
84
86
  const vchart = null === (_a = this._option) || void 0 === _a ? void 0 : _a.globalInstance;
85
87
  return success && VChart.globalConfig.uniqueTooltip && vchart && VChart.hideTooltip(vchart.id),
86
88
  success;
@@ -151,7 +153,7 @@ export class Tooltip extends BaseComponent {
151
153
  }
152
154
  release() {
153
155
  var _a, _b;
154
- super.release(), this._eventList.forEach((({eventType: eventType, handler: handler}) => {
156
+ super.release(), this._timer && clearTimeout(this._timer), this._eventList.forEach((({eventType: eventType, handler: handler}) => {
155
157
  this.event.off(eventType, handler);
156
158
  })), this._eventList = [], null === (_b = null === (_a = this.tooltipHandler) || void 0 === _a ? void 0 : _a.release) || void 0 === _b || _b.call(_a),
157
159
  this._isTooltipShown = !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';\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\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\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 }\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 _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow) {\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 if (!isClick && this._clickLock) {\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 if (isClick && this._clickLock) {\n this._clickLock = false;\n }\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\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 }\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';\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 }\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 _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow) {\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 if (!isClick && this._clickLock) {\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 if (isClick && this._clickLock) {\n this._clickLock = false;\n }\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"]}
@@ -16,5 +16,4 @@ export function getFormatFunction(formatMethod, formatter, text, datum) {
16
16
  formatFunc: formatterImpl,
17
17
  args: [ text, datum, formatter ]
18
18
  } : {};
19
- }
20
- //# sourceMappingURL=util.js.map
19
+ }
@@ -25,6 +25,11 @@ export declare const STACK_FIELD_END_OffsetSilhouette: string;
25
25
  export declare const STACK_FIELD_TOTAL: string;
26
26
  export declare const STACK_FIELD_TOTAL_PERCENT: string;
27
27
  export declare const STACK_FIELD_TOTAL_TOP: string;
28
+ export declare const STACK_FIELD_TOTAL_BOTTOM: string;
29
+ export declare const MOSAIC_VALUE_START_PERCENT: string;
30
+ export declare const MOSAIC_VALUE_END_PERCENT: string;
31
+ export declare const MOSAIC_CAT_START_PERCENT: string;
32
+ export declare const MOSAIC_CAT_END_PERCENT: string;
28
33
  export declare const SEGMENT_FIELD_START: string;
29
34
  export declare const SEGMENT_FIELD_END: string;
30
35
  export declare enum LayoutZIndex {
@@ -40,6 +40,16 @@ export const STACK_FIELD_TOTAL_PERCENT = `${PREFIX}_STACK_TOTAL_PERCENT`;
40
40
 
41
41
  export const STACK_FIELD_TOTAL_TOP = `${PREFIX}_STACK_TOTAL_TOP`;
42
42
 
43
+ export const STACK_FIELD_TOTAL_BOTTOM = `${PREFIX}_STACK_TOTAL_BOTTOM`;
44
+
45
+ export const MOSAIC_VALUE_START_PERCENT = `${PREFIX}_MOSAIC_VALUE_START_PERCENT`;
46
+
47
+ export const MOSAIC_VALUE_END_PERCENT = `${PREFIX}_MOSAIC_VALUE_END_PERCENT`;
48
+
49
+ export const MOSAIC_CAT_START_PERCENT = `${PREFIX}_MOSAIC_CAT_START_PERCENT`;
50
+
51
+ export const MOSAIC_CAT_END_PERCENT = `${PREFIX}_MOSAIC_CAT_END_PERCENT`;
52
+
43
53
  export const SEGMENT_FIELD_START = `${PREFIX}_SEGMENT_START`;
44
54
 
45
55
  export const SEGMENT_FIELD_END = `${PREFIX}_SEGMENT_END`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constant/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { PREFIX } from './base';\n\nexport const DEFAULT_MEASURE_CANVAS_ID = `${PREFIX}_MEASURE_CANVAS_ID`;\n\nexport const DEFAULT_DATA_INDEX = `${PREFIX}_DEFAULT_DATA_INDEX`;\n\nexport const DEFAULT_DATA_KEY = `${PREFIX}_DEFAULT_DATA_KEY`;\n\nexport const DEFAULT_DATA_SERIES_FIELD = `${PREFIX}_DEFAULT_DATA_SERIES_FIELD`;\n\nexport const DEFAULT_SERIES_STYLE_NAME = `${PREFIX}_DEFAULT_SERIES_STYLE_NAME`;\n\nexport enum AttributeLevel {\n Default = 0,\n Theme = 1,\n Chart = 2,\n Base_Series = 3, // general operation in base series\n Series = 4, // specified operation in derived series\n Mark = 5,\n User_Chart = 6,\n User_Series = 7,\n User_Mark = 8,\n Built_In = 99\n}\n\nexport const STACK_FIELD_KEY = `${PREFIX}_STACK_KEY`;\nexport const STACK_FIELD_START = `${PREFIX}_STACK_START`;\nexport const STACK_FIELD_END = `${PREFIX}_STACK_END`;\nexport const STACK_FIELD_START_PERCENT = `${PREFIX}_STACK_START_PERCENT`;\nexport const STACK_FIELD_END_PERCENT = `${PREFIX}_STACK_END_PERCENT`;\nexport const STACK_FIELD_START_OffsetSilhouette = `${PREFIX}_STACK_START_OffsetSilhouette`;\nexport const STACK_FIELD_END_OffsetSilhouette = `${PREFIX}_STACK_END_OffsetSilhouette`;\nexport const STACK_FIELD_TOTAL = `${PREFIX}_STACK_TOTAL`;\nexport const STACK_FIELD_TOTAL_PERCENT = `${PREFIX}_STACK_TOTAL_PERCENT`;\nexport const STACK_FIELD_TOTAL_TOP = `${PREFIX}_STACK_TOTAL_TOP`;\n\nexport const SEGMENT_FIELD_START = `${PREFIX}_SEGMENT_START`;\nexport const SEGMENT_FIELD_END = `${PREFIX}_SEGMENT_END`;\n\nexport enum LayoutZIndex {\n Axis_Grid = 50,\n CrossHair_Grid = 100,\n Region = 450,\n\n Mark = 300,\n\n Node = 400,\n\n Axis = 100,\n\n MarkLine = 500,\n\n MarkArea = 100,\n\n MarkPoint = 500,\n\n DataZoom = 500,\n\n ScrollBar = 500,\n\n Player = 500,\n\n Legend = 500,\n\n CrossHair = 500,\n\n Indicator = 500,\n\n Title = 500,\n\n Label = 500,\n\n Brush = 500,\n\n CustomMark = 500,\n\n Interaction = 700\n}\n/**\n * 数值越大,越先布局\n */\nexport enum LayoutLevel {\n Indicator = 10,\n\n Region = 20,\n\n Axis = 30,\n\n DataZoom = 40,\n\n Player = 40,\n\n ScrollBar = 40,\n\n Legend = 50,\n\n Title = 70,\n\n CustomMark = 70\n}\n\nexport const GradientType = ['linear', 'radial', 'conical'];\n\nexport const DEFAULT_LINEAR_GRADIENT_CONFIG = {\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 1\n};\n\nexport const DEFAULT_RADIAL_GRADIENT_CONFIG = {\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 1,\n r0: 0,\n r1: 1\n};\n\nexport const DEFAULT_CONICAL_GRADIENT_CONFIG = {\n x: 0.5,\n y: 0.5,\n startAngle: 0,\n endAngle: Math.PI * 2\n};\n\nexport const DEFAULT_GRADIENT_CONFIG = {\n linear: DEFAULT_LINEAR_GRADIENT_CONFIG,\n radial: DEFAULT_RADIAL_GRADIENT_CONFIG,\n conical: DEFAULT_CONICAL_GRADIENT_CONFIG\n};\n\nexport * from './base';\nexport * from './label';\nexport * from './polar';\nexport * from './layout';\nexport * from './event';\nexport * from './waterfall';\nexport * from './correlation';\n"]}
1
+ {"version":3,"sources":["../src/constant/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { PREFIX } from './base';\n\nexport const DEFAULT_MEASURE_CANVAS_ID = `${PREFIX}_MEASURE_CANVAS_ID`;\n\nexport const DEFAULT_DATA_INDEX = `${PREFIX}_DEFAULT_DATA_INDEX`;\n\nexport const DEFAULT_DATA_KEY = `${PREFIX}_DEFAULT_DATA_KEY`;\n\nexport const DEFAULT_DATA_SERIES_FIELD = `${PREFIX}_DEFAULT_DATA_SERIES_FIELD`;\n\nexport const DEFAULT_SERIES_STYLE_NAME = `${PREFIX}_DEFAULT_SERIES_STYLE_NAME`;\n\nexport enum AttributeLevel {\n Default = 0,\n Theme = 1,\n Chart = 2,\n Base_Series = 3, // general operation in base series\n Series = 4, // specified operation in derived series\n Mark = 5,\n User_Chart = 6,\n User_Series = 7,\n User_Mark = 8,\n Built_In = 99\n}\n\nexport const STACK_FIELD_KEY = `${PREFIX}_STACK_KEY`;\nexport const STACK_FIELD_START = `${PREFIX}_STACK_START`;\nexport const STACK_FIELD_END = `${PREFIX}_STACK_END`;\nexport const STACK_FIELD_START_PERCENT = `${PREFIX}_STACK_START_PERCENT`;\nexport const STACK_FIELD_END_PERCENT = `${PREFIX}_STACK_END_PERCENT`;\nexport const STACK_FIELD_START_OffsetSilhouette = `${PREFIX}_STACK_START_OffsetSilhouette`;\nexport const STACK_FIELD_END_OffsetSilhouette = `${PREFIX}_STACK_END_OffsetSilhouette`;\nexport const STACK_FIELD_TOTAL = `${PREFIX}_STACK_TOTAL`;\nexport const STACK_FIELD_TOTAL_PERCENT = `${PREFIX}_STACK_TOTAL_PERCENT`;\nexport const STACK_FIELD_TOTAL_TOP = `${PREFIX}_STACK_TOTAL_TOP`;\nexport const STACK_FIELD_TOTAL_BOTTOM = `${PREFIX}_STACK_TOTAL_BOTTOM`;\n\nexport const MOSAIC_VALUE_START_PERCENT = `${PREFIX}_MOSAIC_VALUE_START_PERCENT`;\nexport const MOSAIC_VALUE_END_PERCENT = `${PREFIX}_MOSAIC_VALUE_END_PERCENT`;\nexport const MOSAIC_CAT_START_PERCENT = `${PREFIX}_MOSAIC_CAT_START_PERCENT`;\nexport const MOSAIC_CAT_END_PERCENT = `${PREFIX}_MOSAIC_CAT_END_PERCENT`;\n\nexport const SEGMENT_FIELD_START = `${PREFIX}_SEGMENT_START`;\nexport const SEGMENT_FIELD_END = `${PREFIX}_SEGMENT_END`;\n\nexport enum LayoutZIndex {\n Axis_Grid = 50,\n CrossHair_Grid = 100,\n Region = 450,\n\n Mark = 300,\n\n Node = 400,\n\n Axis = 100,\n\n MarkLine = 500,\n\n MarkArea = 100,\n\n MarkPoint = 500,\n\n DataZoom = 500,\n\n ScrollBar = 500,\n\n Player = 500,\n\n Legend = 500,\n\n CrossHair = 500,\n\n Indicator = 500,\n\n Title = 500,\n\n Label = 500,\n\n Brush = 500,\n\n CustomMark = 500,\n\n Interaction = 700\n}\n/**\n * 数值越大,越先布局\n */\nexport enum LayoutLevel {\n Indicator = 10,\n\n Region = 20,\n\n Axis = 30,\n\n DataZoom = 40,\n\n Player = 40,\n\n ScrollBar = 40,\n\n Legend = 50,\n\n Title = 70,\n\n CustomMark = 70\n}\n\nexport const GradientType = ['linear', 'radial', 'conical'];\n\nexport const DEFAULT_LINEAR_GRADIENT_CONFIG = {\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 1\n};\n\nexport const DEFAULT_RADIAL_GRADIENT_CONFIG = {\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 1,\n r0: 0,\n r1: 1\n};\n\nexport const DEFAULT_CONICAL_GRADIENT_CONFIG = {\n x: 0.5,\n y: 0.5,\n startAngle: 0,\n endAngle: Math.PI * 2\n};\n\nexport const DEFAULT_GRADIENT_CONFIG = {\n linear: DEFAULT_LINEAR_GRADIENT_CONFIG,\n radial: DEFAULT_RADIAL_GRADIENT_CONFIG,\n conical: DEFAULT_CONICAL_GRADIENT_CONFIG\n};\n\nexport * from './base';\nexport * from './label';\nexport * from './polar';\nexport * from './layout';\nexport * from './event';\nexport * from './waterfall';\nexport * from './correlation';\n"]}
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "1.12.0-alpha.1";
4
+ export declare const version = "1.12.0-alpha.4";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export * from '../typings/spec/common';
package/esm/core/index.js CHANGED
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
4
4
 
5
5
  export { VChart, Factory };
6
6
 
7
- export const version = "1.12.0-alpha.1";
7
+ export const version = "1.12.0-alpha.4";
8
8
 
9
9
  export * from "../typings/spec/common";
10
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAMxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.12.0-alpha.1\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAMxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.12.0-alpha.4\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n"]}
@@ -14,6 +14,7 @@ import type { IChart, IChartSpecInfo } from '../chart/interface';
14
14
  import type { Stage } from '@visactor/vrender-core';
15
15
  import type { IContainerSize } from '@visactor/vrender-components';
16
16
  import type { IBaseScale } from '@visactor/vscale';
17
+ import type { IUpdateSpecResult } from '../model/interface';
17
18
  export type DataLinkSeries = {
18
19
  seriesId?: StringOrNumber;
19
20
  seriesIndex?: number;
@@ -38,8 +39,8 @@ export interface IVChart {
38
39
  }[]) => Promise<IVChart>;
39
40
  updateDataSync: (id: StringOrNumber, data: Datum[], options?: IParserOptions) => IVChart;
40
41
  updateFullDataSync: (data: IDataValues | IDataValues[], reRender?: boolean) => IVChart;
41
- updateSpec: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig, resetMediaQuery?: boolean) => Promise<IVChart>;
42
- updateSpecSync: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig, resetMediaQuery?: boolean) => void;
42
+ updateSpec: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig, userUpdateOptions?: IUpdateSpecResult) => Promise<IVChart>;
43
+ updateSpecSync: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig, userUpdateOptions?: IUpdateSpecResult) => void;
43
44
  updateModelSpecSync: (filter: string | {
44
45
  type: string;
45
46
  index: number;