@visactor/vchart 1.7.2 → 1.7.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 (271) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +17262 -14085
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.d.ts +1 -0
  6. package/cjs/animation/utils.js +16 -8
  7. package/cjs/animation/utils.js.map +1 -1
  8. package/cjs/chart/bar/bar-3d.d.ts +2 -2
  9. package/cjs/chart/bar/bar-3d.js +2 -2
  10. package/cjs/chart/bar/bar-3d.js.map +1 -1
  11. package/cjs/chart/base-chart.js +3 -1
  12. package/cjs/chart/base-chart.js.map +1 -1
  13. package/cjs/chart/cartesian/interface.d.ts +1 -1
  14. package/cjs/chart/cartesian/interface.js.map +1 -1
  15. package/cjs/chart/sequence/sequence.js +1 -0
  16. package/cjs/chart/sequence/sequence.js.map +1 -1
  17. package/cjs/component/axis/cartesian/axis.js +4 -2
  18. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  19. package/cjs/component/axis/cartesian/band-axis.js +2 -2
  20. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  21. package/cjs/component/axis/cartesian/util/common.d.ts +0 -2
  22. package/cjs/component/axis/cartesian/util/common.js +2 -14
  23. package/cjs/component/axis/cartesian/util/common.js.map +1 -1
  24. package/cjs/component/axis/interface/common.d.ts +1 -0
  25. package/cjs/component/axis/interface/common.js.map +1 -1
  26. package/cjs/component/axis/polar/axis.js +3 -1
  27. package/cjs/component/axis/polar/axis.js.map +1 -1
  28. package/cjs/component/axis/polar/interface/common.d.ts +2 -3
  29. package/cjs/component/axis/polar/interface/common.js.map +1 -1
  30. package/cjs/component/base/base-component.js +1 -1
  31. package/cjs/component/base/base-component.js.map +1 -1
  32. package/cjs/component/crosshair/base.d.ts +4 -5
  33. package/cjs/component/crosshair/base.js +38 -25
  34. package/cjs/component/crosshair/base.js.map +1 -1
  35. package/cjs/component/crosshair/cartesian.d.ts +11 -34
  36. package/cjs/component/crosshair/cartesian.js +118 -109
  37. package/cjs/component/crosshair/cartesian.js.map +1 -1
  38. package/cjs/component/crosshair/config.d.ts +6 -0
  39. package/cjs/component/crosshair/config.js +8 -2
  40. package/cjs/component/crosshair/config.js.map +1 -1
  41. package/cjs/component/crosshair/interface/spec.d.ts +7 -3
  42. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  43. package/cjs/component/crosshair/polar.d.ts +12 -54
  44. package/cjs/component/crosshair/polar.js +109 -82
  45. package/cjs/component/crosshair/polar.js.map +1 -1
  46. package/cjs/component/label/label.d.ts +2 -1
  47. package/cjs/component/label/label.js +13 -8
  48. package/cjs/component/label/label.js.map +1 -1
  49. package/cjs/component/label/util.d.ts +1 -8
  50. package/cjs/component/label/util.js +6 -11
  51. package/cjs/component/label/util.js.map +1 -1
  52. package/cjs/component/legend/continuous/interface.d.ts +1 -0
  53. package/cjs/component/legend/continuous/interface.js.map +1 -1
  54. package/cjs/component/legend/continuous/legend.js +5 -3
  55. package/cjs/component/legend/continuous/legend.js.map +1 -1
  56. package/cjs/component/marker/base-marker.d.ts +22 -24
  57. package/cjs/component/marker/base-marker.js +39 -50
  58. package/cjs/component/marker/base-marker.js.map +1 -1
  59. package/cjs/component/marker/interface.d.ts +19 -9
  60. package/cjs/component/marker/interface.js.map +1 -1
  61. package/cjs/component/marker/mark-area/interface/spec.d.ts +10 -12
  62. package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
  63. package/cjs/component/marker/mark-area/mark-area.d.ts +3 -2
  64. package/cjs/component/marker/mark-area/mark-area.js +12 -22
  65. package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
  66. package/cjs/component/marker/mark-line/interface/spec.d.ts +20 -9
  67. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  68. package/cjs/component/marker/mark-line/mark-line.d.ts +4 -2
  69. package/cjs/component/marker/mark-line/mark-line.js +60 -60
  70. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  71. package/cjs/component/marker/mark-point/interface/spec.d.ts +8 -6
  72. package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
  73. package/cjs/component/marker/mark-point/mark-point.d.ts +3 -2
  74. package/cjs/component/marker/mark-point/mark-point.js +15 -19
  75. package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
  76. package/cjs/component/marker/utils.d.ts +13 -2
  77. package/cjs/component/marker/utils.js +108 -39
  78. package/cjs/component/marker/utils.js.map +1 -1
  79. package/cjs/component/tooltip/tooltip.js +3 -2
  80. package/cjs/component/tooltip/tooltip.js.map +1 -1
  81. package/cjs/constant/index.d.ts +2 -1
  82. package/cjs/constant/index.js +1 -1
  83. package/cjs/constant/index.js.map +1 -1
  84. package/cjs/core/index.d.ts +1 -1
  85. package/cjs/core/index.js +1 -1
  86. package/cjs/core/index.js.map +1 -1
  87. package/cjs/core/vchart.js +1 -0
  88. package/cjs/core/vchart.js.map +1 -1
  89. package/cjs/data/transforms/aggregation.d.ts +3 -3
  90. package/cjs/data/transforms/aggregation.js +5 -7
  91. package/cjs/data/transforms/aggregation.js.map +1 -1
  92. package/cjs/event/events/dimension/util/polar.js +2 -2
  93. package/cjs/event/events/dimension/util/polar.js.map +1 -1
  94. package/cjs/event/events/index.d.ts +1 -0
  95. package/cjs/event/events/index.js +16 -1
  96. package/cjs/event/events/index.js.map +1 -1
  97. package/cjs/event/index.d.ts +2 -0
  98. package/cjs/event/index.js +21 -0
  99. package/cjs/event/index.js.map +1 -0
  100. package/cjs/index.d.ts +1 -0
  101. package/cjs/index.js +2 -1
  102. package/cjs/index.js.map +1 -1
  103. package/cjs/interaction/interface.js +1 -1
  104. package/cjs/layout/layout3d/index.js +1 -1
  105. package/cjs/layout/layout3d/index.js.map +1 -1
  106. package/cjs/model/base-model.js +4 -4
  107. package/cjs/model/base-model.js.map +1 -1
  108. package/cjs/model/interface.d.ts +1 -0
  109. package/cjs/model/interface.js.map +1 -1
  110. package/cjs/region/interface.d.ts +1 -0
  111. package/cjs/region/interface.js.map +1 -1
  112. package/cjs/region/region.d.ts +3 -0
  113. package/cjs/region/region.js +30 -16
  114. package/cjs/region/region.js.map +1 -1
  115. package/cjs/series/bar/bar.js +6 -11
  116. package/cjs/series/bar/bar.js.map +1 -1
  117. package/cjs/series/base/base-series.js +8 -7
  118. package/cjs/series/base/base-series.js.map +1 -1
  119. package/cjs/series/box-plot/box-plot.js +4 -12
  120. package/cjs/series/box-plot/box-plot.js.map +1 -1
  121. package/cjs/series/heatmap/heatmap.js +4 -9
  122. package/cjs/series/heatmap/heatmap.js.map +1 -1
  123. package/cjs/series/mixin/line-mixin.js +1 -0
  124. package/cjs/series/mixin/line-mixin.js.map +1 -1
  125. package/cjs/series/pie/pie.js +1 -1
  126. package/cjs/series/pie/pie.js.map +1 -1
  127. package/cjs/series/range-column/range-column.js +7 -15
  128. package/cjs/series/range-column/range-column.js.map +1 -1
  129. package/cjs/series/util/utils.d.ts +5 -0
  130. package/cjs/series/util/utils.js +18 -2
  131. package/cjs/series/util/utils.js.map +1 -1
  132. package/cjs/series/waterfall/waterfall.js +8 -12
  133. package/cjs/series/waterfall/waterfall.js.map +1 -1
  134. package/cjs/theme/builtin/common/component/crosshair.js +0 -8
  135. package/cjs/theme/builtin/common/component/crosshair.js.map +1 -1
  136. package/cjs/typings/visual.d.ts +3 -2
  137. package/cjs/typings/visual.js.map +1 -1
  138. package/esm/animation/utils.d.ts +1 -0
  139. package/esm/animation/utils.js +12 -7
  140. package/esm/animation/utils.js.map +1 -1
  141. package/esm/chart/bar/bar-3d.d.ts +2 -2
  142. package/esm/chart/bar/bar-3d.js +3 -3
  143. package/esm/chart/bar/bar-3d.js.map +1 -1
  144. package/esm/chart/base-chart.js +3 -1
  145. package/esm/chart/base-chart.js.map +1 -1
  146. package/esm/chart/cartesian/interface.d.ts +1 -1
  147. package/esm/chart/cartesian/interface.js.map +1 -1
  148. package/esm/chart/sequence/sequence.js +1 -0
  149. package/esm/chart/sequence/sequence.js.map +1 -1
  150. package/esm/component/axis/cartesian/axis.js +4 -2
  151. package/esm/component/axis/cartesian/axis.js.map +1 -1
  152. package/esm/component/axis/cartesian/band-axis.js +1 -3
  153. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  154. package/esm/component/axis/cartesian/util/common.d.ts +0 -2
  155. package/esm/component/axis/cartesian/util/common.js +0 -11
  156. package/esm/component/axis/cartesian/util/common.js.map +1 -1
  157. package/esm/component/axis/interface/common.d.ts +1 -0
  158. package/esm/component/axis/interface/common.js.map +1 -1
  159. package/esm/component/axis/polar/axis.js +3 -1
  160. package/esm/component/axis/polar/axis.js.map +1 -1
  161. package/esm/component/axis/polar/interface/common.d.ts +2 -3
  162. package/esm/component/axis/polar/interface/common.js.map +1 -1
  163. package/esm/component/base/base-component.js +1 -1
  164. package/esm/component/base/base-component.js.map +1 -1
  165. package/esm/component/crosshair/base.d.ts +4 -5
  166. package/esm/component/crosshair/base.js +37 -25
  167. package/esm/component/crosshair/base.js.map +1 -1
  168. package/esm/component/crosshair/cartesian.d.ts +11 -34
  169. package/esm/component/crosshair/cartesian.js +111 -102
  170. package/esm/component/crosshair/cartesian.js.map +1 -1
  171. package/esm/component/crosshair/config.d.ts +6 -0
  172. package/esm/component/crosshair/config.js +7 -0
  173. package/esm/component/crosshair/config.js.map +1 -1
  174. package/esm/component/crosshair/interface/spec.d.ts +7 -3
  175. package/esm/component/crosshair/interface/spec.js.map +1 -1
  176. package/esm/component/crosshair/polar.d.ts +12 -54
  177. package/esm/component/crosshair/polar.js +109 -78
  178. package/esm/component/crosshair/polar.js.map +1 -1
  179. package/esm/component/label/label.d.ts +2 -1
  180. package/esm/component/label/label.js +12 -8
  181. package/esm/component/label/label.js.map +1 -1
  182. package/esm/component/label/util.d.ts +1 -8
  183. package/esm/component/label/util.js +2 -8
  184. package/esm/component/label/util.js.map +1 -1
  185. package/esm/component/legend/continuous/interface.d.ts +1 -0
  186. package/esm/component/legend/continuous/interface.js.map +1 -1
  187. package/esm/component/legend/continuous/legend.js +5 -3
  188. package/esm/component/legend/continuous/legend.js.map +1 -1
  189. package/esm/component/marker/base-marker.d.ts +22 -24
  190. package/esm/component/marker/base-marker.js +41 -52
  191. package/esm/component/marker/base-marker.js.map +1 -1
  192. package/esm/component/marker/interface.d.ts +19 -9
  193. package/esm/component/marker/interface.js.map +1 -1
  194. package/esm/component/marker/mark-area/interface/spec.d.ts +10 -12
  195. package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
  196. package/esm/component/marker/mark-area/mark-area.d.ts +3 -2
  197. package/esm/component/marker/mark-area/mark-area.js +10 -22
  198. package/esm/component/marker/mark-area/mark-area.js.map +1 -1
  199. package/esm/component/marker/mark-line/interface/spec.d.ts +20 -9
  200. package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
  201. package/esm/component/marker/mark-line/mark-line.d.ts +4 -2
  202. package/esm/component/marker/mark-line/mark-line.js +58 -54
  203. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  204. package/esm/component/marker/mark-point/interface/spec.d.ts +8 -6
  205. package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
  206. package/esm/component/marker/mark-point/mark-point.d.ts +3 -2
  207. package/esm/component/marker/mark-point/mark-point.js +12 -20
  208. package/esm/component/marker/mark-point/mark-point.js.map +1 -1
  209. package/esm/component/marker/utils.d.ts +13 -2
  210. package/esm/component/marker/utils.js +103 -35
  211. package/esm/component/marker/utils.js.map +1 -1
  212. package/esm/component/tooltip/tooltip.js +3 -1
  213. package/esm/component/tooltip/tooltip.js.map +1 -1
  214. package/esm/constant/index.d.ts +2 -1
  215. package/esm/constant/index.js +1 -1
  216. package/esm/constant/index.js.map +1 -1
  217. package/esm/core/index.d.ts +1 -1
  218. package/esm/core/index.js +1 -1
  219. package/esm/core/index.js.map +1 -1
  220. package/esm/core/vchart.js +1 -0
  221. package/esm/core/vchart.js.map +1 -1
  222. package/esm/data/transforms/aggregation.d.ts +3 -3
  223. package/esm/data/transforms/aggregation.js +6 -8
  224. package/esm/data/transforms/aggregation.js.map +1 -1
  225. package/esm/event/events/dimension/util/polar.js +2 -2
  226. package/esm/event/events/dimension/util/polar.js.map +1 -1
  227. package/esm/event/events/index.d.ts +1 -0
  228. package/esm/event/events/index.js +2 -0
  229. package/esm/event/events/index.js.map +1 -1
  230. package/esm/event/index.d.ts +2 -0
  231. package/esm/event/index.js +4 -0
  232. package/esm/event/index.js.map +1 -0
  233. package/esm/index.d.ts +1 -0
  234. package/esm/index.js +2 -0
  235. package/esm/index.js.map +1 -1
  236. package/esm/interaction/interface.js +1 -1
  237. package/esm/layout/layout3d/index.js +1 -1
  238. package/esm/layout/layout3d/index.js.map +1 -1
  239. package/esm/model/base-model.js +4 -5
  240. package/esm/model/base-model.js.map +1 -1
  241. package/esm/model/interface.d.ts +1 -0
  242. package/esm/model/interface.js.map +1 -1
  243. package/esm/region/interface.d.ts +1 -0
  244. package/esm/region/interface.js.map +1 -1
  245. package/esm/region/region.d.ts +3 -0
  246. package/esm/region/region.js +31 -15
  247. package/esm/region/region.js.map +1 -1
  248. package/esm/series/bar/bar.js +5 -9
  249. package/esm/series/bar/bar.js.map +1 -1
  250. package/esm/series/base/base-series.js +6 -5
  251. package/esm/series/base/base-series.js.map +1 -1
  252. package/esm/series/box-plot/box-plot.js +5 -11
  253. package/esm/series/box-plot/box-plot.js.map +1 -1
  254. package/esm/series/heatmap/heatmap.js +4 -8
  255. package/esm/series/heatmap/heatmap.js.map +1 -1
  256. package/esm/series/mixin/line-mixin.js +1 -0
  257. package/esm/series/mixin/line-mixin.js.map +1 -1
  258. package/esm/series/pie/pie.js +1 -1
  259. package/esm/series/pie/pie.js.map +1 -1
  260. package/esm/series/range-column/range-column.js +6 -12
  261. package/esm/series/range-column/range-column.js.map +1 -1
  262. package/esm/series/util/utils.d.ts +5 -0
  263. package/esm/series/util/utils.js +15 -0
  264. package/esm/series/util/utils.js.map +1 -1
  265. package/esm/series/waterfall/waterfall.js +7 -12
  266. package/esm/series/waterfall/waterfall.js.map +1 -1
  267. package/esm/theme/builtin/common/component/crosshair.js +0 -8
  268. package/esm/theme/builtin/common/component/crosshair.js.map +1 -1
  269. package/esm/typings/visual.d.ts +3 -2
  270. package/esm/typings/visual.js.map +1 -1
  271. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IComponent } from '../../../interface';\nimport type {\n IAggrType,\n IMarkerPositionsSpec,\n IDataPointSpec,\n IMarkerSpec,\n IMarkerAxisSpec,\n IDataPos,\n IDataPosCallback,\n IMarkerLabelSpec\n} from '../../interface';\nimport type { IRegressType } from '../../mark-area/interface';\nimport type { IMarkLineTheme } from './theme';\nimport type { ILineMarkSpec, IPoint } from '../../../../typings';\n\nexport type IMarkLine = IComponent;\n\nexport type IMarkLineSpec =\n | (IMarkerSpec &\n (\n | IMarkLineXSpec // 标注目标:笛卡尔坐标系坐标空间\n | IMarkLineYSpec // 标注目标:笛卡尔坐标系坐标空间\n // | IMarkLineAngleSpec // TODO: 标注目标:极坐标系坐标空间\n // | IMarkLineRadiusSpec // TODO: 标注目标:极坐标系坐标空间\n | IMarkLineCoordinateSpec // 标注目标:数据元素\n | IMarkLinePositionsSpec\n ) &\n IMarkLineTheme)\n | IStepMarkLineSpec; // 标注目标:任意位置\n\nexport interface IMarkLineXSpec extends IMarkerAxisSpec {\n /**\n * x轴上的参考线。可以配置参考线在x轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 横轴(从左往右)的百分之 15 位置处\n */\n x: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYSpec extends IMarkerAxisSpec {\n /**\n * y轴上的参考线。可以配置参考线在y轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n * 可以将 y 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 纵轴(从上到下)的百分之 15 位置处\n */\n y: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngleSpec extends IMarkerAxisSpec {\n /**\n * todo: angle轴上的参考线。可以配置参考线在angle轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n */\n angle: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineRadiusSpec extends IMarkerAxisSpec {\n /**\n * todo: radius轴上的参考线。可以配置参考线在radius轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n */\n radius: IDataPos | IDataPosCallback;\n}\n\nexport type IMarkLineCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: IDataPointSpec[];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n};\n/**\n * 指定坐标点的参考线。基于指定坐标进行参考线的绘制\n */\nexport type IMarkLinePositionsSpec = IMarkerPositionsSpec;\n\nexport type IStepMarkLineSpec = IMarkerSpec & {\n /**\n * 指定辅助线的连接类型,step 的连接方式为由交替的水平线和处置线组成的\n */\n type: 'type-step';\n /**\n * 线的链接方向\n */\n connectDirection: 'top' | 'bottom' | 'left' | 'right';\n /**\n * 在连接方向的扩展距离。\n * number 类型为像素值\n * string 类型为百分比,相对于 region 区域宽度/高度的百分比,如 '30%'\n */\n expandDistance?: number | string;\n\n label?: IMarkerLabelSpec;\n line?: {\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 当进行多段配置时,可以通过数组的方式传入\n */\n style?: ILineMarkSpec | ILineMarkSpec[];\n };\n} & Omit<IMarkLineTheme, 'label' | 'line'> &\n (\n | {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: [IDataPointSpec, IDataPointSpec];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n }\n | {\n positions: [IPoint, IPoint];\n }\n );\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-line/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IComponent } from '../../../interface';\nimport type {\n IAggrType,\n IMarkerPositionsSpec,\n IDataPointSpec,\n IMarkerSpec,\n IDataPos,\n IDataPosCallback,\n IMarkerLabelSpec,\n IMarkerCrossSeriesSpec,\n OffsetPoint\n} from '../../interface';\nimport type { IRegressType } from '../../mark-area/interface';\nimport type { IMarkLineTheme } from './theme';\nimport type { ILineMarkSpec, IPoint } from '../../../../typings';\n\nexport type IMarkLine = IComponent;\n\nexport type IMarkLineSpec =\n | (IMarkerSpec &\n (\n | IMarkLineXSpec // 标注目标:笛卡尔坐标系坐标空间\n | IMarkLineYSpec // 标注目标:笛卡尔坐标系坐标空间\n | IMarkLineXYSpec\n | IMarkLineXYY1Spec\n | IMarkLineYXX1Spec\n | IMarkLineCoordinateSpec // 标注目标:数据元素\n | IMarkerPositionsSpec\n ) &\n IMarkLineTheme)\n | IStepMarkLineSpec; // 标注目标:任意位置\n\nexport interface IMarkLineXSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 x 属性,可以绘制一条贯穿 y 轴的标注线\n * x 轴上的参考线。可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYY1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 y 属性,可以绘制一条贯穿 x 轴的标注线\n * y轴上的参考线。可以配置参考线在y轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n * 可以将 y 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 纵轴(从上到下)的百分之 15 位置处\n */\n y: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYXX1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 y 轴上位置,可以配置参考线在 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的起点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线起始点在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线起始点在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport type IMarkLineCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: IDataPointSpec[];\n /**\n * 对每个数据点转化后的画布坐标点进行偏移,该偏移值可以是像素值,也可以是 string 类型,如 '20%' 代表百分比\n * 每个元素对应一个坐标点的偏移量\n * @since 1.7.3\n */\n coordinatesOffset?: OffsetPoint[];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n};\n\nexport type IStepMarkLineSpec = IMarkerSpec & {\n /**\n * 指定辅助线的连接类型,step 的连接方式为由交替的水平线和处置线组成的\n */\n type: 'type-step';\n /**\n * 线的链接方向\n */\n connectDirection: 'top' | 'bottom' | 'left' | 'right';\n /**\n * 在连接方向的扩展距离。\n * number 类型为像素值\n * string 类型为百分比,相对于 region 区域宽度/高度的百分比,如 '30%'\n */\n expandDistance?: number | string;\n\n label?: IMarkerLabelSpec;\n line?: {\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 当进行多段配置时,可以通过数组的方式传入\n */\n style?: ILineMarkSpec | ILineMarkSpec[];\n };\n} & Omit<IMarkLineTheme, 'label' | 'line'> &\n (\n | {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: [IDataPointSpec, IDataPointSpec];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n }\n | {\n /**\n * 画布坐标\n */\n positions: [IPoint, IPoint];\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n }\n );\n"]}
@@ -3,15 +3,17 @@ import type { IComponentOption } from '../../interface';
3
3
  import { ComponentTypeEnum } from '../../interface/type';
4
4
  import { MarkLine as MarkLineComponent } from '@visactor/vrender-components';
5
5
  import { BaseMarker } from '../base-marker';
6
- export declare class MarkLine extends BaseMarker<IMarkLineSpec & IMarkLineTheme> implements IMarkLine {
6
+ import type { IGroup } from '@visactor/vrender-core';
7
+ export declare class MarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {
7
8
  static type: ComponentTypeEnum;
8
9
  type: ComponentTypeEnum;
9
10
  name: string;
10
11
  layoutZIndex: number;
11
12
  protected _theme: IMarkLineTheme;
12
13
  protected _markerComponent: MarkLineComponent;
14
+ private _isXYLayout;
13
15
  static createComponent(spec: any, options: IComponentOption): MarkLine | MarkLine[];
14
- protected _createMarkerComponent(): void;
16
+ protected _createMarkerComponent(): IGroup;
15
17
  protected _markerLayout(): void;
16
18
  protected _initDataView(): void;
17
19
  }
@@ -23,8 +23,8 @@ class MarkLine extends base_marker_1.BaseMarker {
23
23
  })), markLines;
24
24
  }
25
25
  _createMarkerComponent() {
26
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
27
- const markLine = new vrender_components_1.MarkLine({
26
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
27
+ return new vrender_components_1.MarkLine({
28
28
  zIndex: this.layoutZIndex,
29
29
  interactive: null !== (_a = this._spec.interactive) && void 0 !== _a && _a,
30
30
  points: [ {
@@ -34,54 +34,44 @@ class MarkLine extends base_marker_1.BaseMarker {
34
34
  x: 0,
35
35
  y: 0
36
36
  } ],
37
- lineStyle: null === (_b = this._spec) || void 0 === _b ? void 0 : _b.line.style,
38
- startSymbol: Object.assign(Object.assign({}, null === (_c = this._spec) || void 0 === _c ? void 0 : _c.startSymbol), {
39
- visible: null === (_d = this._spec.startSymbol) || void 0 === _d ? void 0 : _d.visible,
40
- style: (0, style_1.transformToGraphic)(null === (_e = this._spec.startSymbol) || void 0 === _e ? void 0 : _e.style)
37
+ lineStyle: null === (_b = this._spec.line) || void 0 === _b ? void 0 : _b.style,
38
+ startSymbol: Object.assign(Object.assign({}, this._spec.startSymbol), {
39
+ visible: null === (_c = this._spec.startSymbol) || void 0 === _c ? void 0 : _c.visible,
40
+ style: (0, style_1.transformToGraphic)(null === (_d = this._spec.startSymbol) || void 0 === _d ? void 0 : _d.style)
41
41
  }),
42
- endSymbol: Object.assign(Object.assign({}, null === (_f = this._spec) || void 0 === _f ? void 0 : _f.endSymbol), {
43
- visible: null === (_g = this._spec.endSymbol) || void 0 === _g ? void 0 : _g.visible,
44
- style: (0, style_1.transformToGraphic)(null === (_h = this._spec.endSymbol) || void 0 === _h ? void 0 : _h.style)
42
+ endSymbol: Object.assign(Object.assign({}, this._spec.endSymbol), {
43
+ visible: null === (_e = this._spec.endSymbol) || void 0 === _e ? void 0 : _e.visible,
44
+ style: (0, style_1.transformToGraphic)(null === (_f = this._spec.endSymbol) || void 0 === _f ? void 0 : _f.style)
45
45
  }),
46
46
  label: Object.assign(Object.assign({}, this._spec.label), {
47
- padding: null === (_k = null === (_j = this._spec.label) || void 0 === _j ? void 0 : _j.labelBackground) || void 0 === _k ? void 0 : _k.padding,
48
- shape: Object.assign(Object.assign({}, (0, style_1.transformToGraphic)(null === (_l = this._spec.label) || void 0 === _l ? void 0 : _l.shape)), {
49
- visible: null !== (_p = null === (_o = null === (_m = this._spec.label) || void 0 === _m ? void 0 : _m.shape) || void 0 === _o ? void 0 : _o.visible) && void 0 !== _p && _p
47
+ padding: null === (_h = null === (_g = this._spec.label) || void 0 === _g ? void 0 : _g.labelBackground) || void 0 === _h ? void 0 : _h.padding,
48
+ shape: Object.assign(Object.assign({}, (0, style_1.transformToGraphic)(null === (_j = this._spec.label) || void 0 === _j ? void 0 : _j.shape)), {
49
+ visible: null !== (_m = null === (_l = null === (_k = this._spec.label) || void 0 === _k ? void 0 : _k.shape) || void 0 === _l ? void 0 : _l.visible) && void 0 !== _m && _m
50
50
  }),
51
- panel: Object.assign(Object.assign({}, (0, style_1.transformToGraphic)(null === (_q = this._spec.label) || void 0 === _q ? void 0 : _q.labelBackground.style)), {
52
- visible: null === (_t = null === (_s = null === (_r = this._spec.label) || void 0 === _r ? void 0 : _r.labelBackground) || void 0 === _s ? void 0 : _s.visible) || void 0 === _t || _t
51
+ panel: Object.assign(Object.assign({}, (0, style_1.transformToGraphic)(null === (_o = this._spec.label) || void 0 === _o ? void 0 : _o.labelBackground.style)), {
52
+ visible: null === (_r = null === (_q = null === (_p = this._spec.label) || void 0 === _p ? void 0 : _p.labelBackground) || void 0 === _q ? void 0 : _q.visible) || void 0 === _r || _r
53
53
  }),
54
- textStyle: (0, style_1.transformToGraphic)(null === (_u = this._spec.label) || void 0 === _u ? void 0 : _u.style)
54
+ textStyle: (0, style_1.transformToGraphic)(null === (_s = this._spec.label) || void 0 === _s ? void 0 : _s.style)
55
55
  }),
56
- clipInRange: null !== (_v = this._spec.clip) && void 0 !== _v && _v
56
+ clipInRange: null !== (_t = this._spec.clip) && void 0 !== _t && _t
57
57
  });
58
- this._markerComponent = markLine, this._markerComponent.name = null !== (_w = this._spec.name) && void 0 !== _w ? _w : this.type,
59
- this._markerComponent.id = null !== (_x = this._spec.id) && void 0 !== _x ? _x : `${this.type}-${this.id}`,
60
- this.getContainer().add(this._markerComponent);
61
58
  }
62
59
  _markerLayout() {
63
60
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
64
- const spec = this._spec, data = this._markerData, startRelativeSeries = this._startRelativeSeries, endRelativeSeries = this._endRelativeSeries, relativeSeries = this._relativeSeries, isXLayout = (0,
65
- vutils_1.isValid)(spec.x) || (0, vutils_1.isValid)(spec.coordinates) && (0, vutils_1.isValid)(spec.process) && (0,
66
- vutils_1.isValid)(spec.process.x), isYLayout = (0, vutils_1.isValid)(spec.y) || (0,
67
- vutils_1.isValid)(spec.coordinates) && (0, vutils_1.isValid)(spec.process) && (0,
68
- vutils_1.isValid)(spec.process.y), isCoordinateLayout = (0, vutils_1.isValid)(spec.coordinates) && (!(0,
69
- vutils_1.isValid)(spec.process) || "process" in spec && "xy" in spec.process), isPositionLayout = (0,
61
+ const spec = this._spec, data = this._markerData, startRelativeSeries = this._startRelativeSeries, endRelativeSeries = this._endRelativeSeries, relativeSeries = this._relativeSeries, isValidCoordinates = (0,
62
+ vutils_1.isValid)(spec.coordinates), isValidProcess = (0, vutils_1.isValid)(spec.process), isValidProcessX = isValidProcess && (0,
63
+ vutils_1.isValid)(spec.process.x), isValidProcessY = isValidProcess && (0, vutils_1.isValid)(spec.process.y), isCoordinateLayout = isValidCoordinates && (!isValidProcess || "process" in spec && "xy" in spec.process), isPositionLayout = (0,
70
64
  vutils_1.isValid)(spec.positions), autoRange = null !== (_a = spec.autoRange) && void 0 !== _a && _a;
71
65
  let points = [];
72
- if (isXLayout) points = (0, utils_1.xyLayout)(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange)[0]; else if (isYLayout) points = (0,
73
- utils_1.xyLayout)(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange)[0]; else if (isCoordinateLayout) points = (0,
74
- utils_1.coordinateLayout)(data, relativeSeries, autoRange); else if (isPositionLayout) if (spec.regionRelative) {
75
- const region = relativeSeries.getRegion(), {x: regionStartX, y: regionStartY} = region.getLayoutStartPoint();
76
- points = spec.positions.map((point => ({
77
- x: point.x + regionStartX,
78
- y: point.y + regionStartY
79
- })));
80
- } else points = spec.positions;
81
- const seriesData = this._relativeSeries.getViewData().latestData, dataPoints = data ? data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData : seriesData;
66
+ if (this._isXYLayout || isValidCoordinates && isValidProcessX || isValidCoordinates && isValidProcessY) {
67
+ const xyPoints = (0, utils_1.xyLayout)(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);
68
+ points = 1 === xyPoints.length ? xyPoints[0] : xyPoints.map((point => point[0]));
69
+ } else isCoordinateLayout ? points = (0, utils_1.coordinateLayout)(data, relativeSeries, autoRange, spec.coordinatesOffset) : isPositionLayout && (points = (0,
70
+ utils_1.positionLayout)(spec.positions, relativeSeries, spec.regionRelative));
71
+ const seriesData = this._relativeSeries.getViewData().latestData, dataPoints = data.latestData[0].latestData || data.latestData;
82
72
  let limitRect;
83
73
  if (spec.clip || (null === (_b = spec.label) || void 0 === _b ? void 0 : _b.confine)) {
84
- const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = this._computeClipRange([ startRelativeSeries.getRegion(), endRelativeSeries.getRegion(), relativeSeries.getRegion() ]);
74
+ const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = (0, utils_1.computeClipRange)([ startRelativeSeries.getRegion(), endRelativeSeries.getRegion(), relativeSeries.getRegion() ]);
85
75
  limitRect = {
86
76
  x: minX,
87
77
  y: minY,
@@ -141,34 +131,44 @@ class MarkLine extends base_marker_1.BaseMarker {
141
131
  });
142
132
  }
143
133
  _initDataView() {
144
- const spec = this._spec, relativeSeries = this._relativeSeries, isXProcess = "x" in spec, isYProcess = "y" in spec, isCoordinateProcess = "coordinates" in spec;
145
- if (!isXProcess && !isYProcess && !isCoordinateProcess) return;
146
- let options, processData, needAgggr = !1, needRegr = !1;
147
- if ((0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerAggregation", aggregation_1.markerAggregation),
134
+ const spec = this._spec, relativeSeries = this._relativeSeries, isXProcess = "x" in spec, isYProcess = "y" in spec, isX1Process = "x1" in spec, isY1Process = "y1" in spec, isCoordinateProcess = "coordinates" in spec, doXProcess = isXProcess && !isYProcess && !isY1Process, doXYY1Process = isXProcess && isYProcess && isY1Process, doYProcess = isYProcess && !isXProcess && !isX1Process, doYXX1Process = isYProcess && isXProcess && isX1Process, doXYProcess = isXProcess && isYProcess && isX1Process && isY1Process;
135
+ if (this._markerData = relativeSeries.getViewData(), !(doXProcess || doYProcess || doXYY1Process || doYXX1Process || doXYProcess || isCoordinateProcess)) return;
136
+ let options;
137
+ (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerAggregation", aggregation_1.markerAggregation),
148
138
  (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerRegression", regression_1.markerRegression),
149
- isXProcess) options = [ this._processSpecX(spec.x) ], processData = relativeSeries.getViewData(),
150
- needAgggr = !0; else if (isYProcess) options = [ this._processSpecY(spec.y) ], processData = relativeSeries.getViewData(),
151
- needAgggr = !0; else if (isCoordinateProcess && (options = this._processSpecCoo(spec),
152
- processData = new vdataset_1.DataView(this._option.dataSet, {
153
- name: `${this.type}_${this.id}_data`
154
- }).parse([ relativeSeries.getViewData() ], {
155
- type: "dataview"
156
- }).transform({
157
- type: "markerAggregation",
158
- options: options
159
- }), spec.process && "x" in spec.process && (options = [ this._processSpecX(spec.process.x) ],
160
- needAgggr = !0), spec.process && "y" in spec.process && (options = [ this._processSpecY(spec.process.y) ],
161
- needAgggr = !0), spec.process && "xy" in spec.process)) {
162
- const {xField: xField, yField: yField} = relativeSeries.getSpec();
163
- options = {
164
- fieldX: xField,
165
- fieldY: yField
166
- }, needRegr = !0;
167
- }
139
+ this._isXYLayout = doXProcess || doXYY1Process || doYProcess || doYXX1Process || doXYProcess;
140
+ let processData = relativeSeries.getViewData(), needAggr = !0, needRegr = !1;
141
+ if (doXYProcess) {
142
+ const {x: x, x1: x1, y: y, y1: y1} = spec;
143
+ options = [ this._processSpecXY(x, y), this._processSpecXY(x1, y1) ];
144
+ } else if (doXProcess) options = [ this._processSpecX(spec.x) ]; else if (doYProcess) options = [ this._processSpecY(spec.y) ]; else if (doXYY1Process) {
145
+ const {x: x, y: y, y1: y1} = spec;
146
+ options = [ this._processSpecXY(x, y), this._processSpecXY(x, y1) ];
147
+ } else if (doYXX1Process) {
148
+ const {x: x, x1: x1, y: y} = spec;
149
+ options = [ this._processSpecXY(x, y), this._processSpecXY(x1, y) ];
150
+ } else if (isCoordinateProcess) {
151
+ if (options = this._processSpecCoo(spec), needAggr = !1, processData = new vdataset_1.DataView(this._option.dataSet, {
152
+ name: `${this.type}_${this.id}_data`
153
+ }).parse([ relativeSeries.getViewData() ], {
154
+ type: "dataview"
155
+ }).transform({
156
+ type: "markerAggregation",
157
+ options: options
158
+ }), spec.process && "x" in spec.process && (options = [ this._processSpecX(spec.process.x) ],
159
+ needAggr = !0), spec.process && "y" in spec.process && (options = [ this._processSpecY(spec.process.y) ],
160
+ needAggr = !0), spec.process && "xy" in spec.process) {
161
+ const {xField: xField, yField: yField} = relativeSeries.getSpec();
162
+ options = {
163
+ fieldX: xField,
164
+ fieldY: yField
165
+ }, needRegr = !0;
166
+ }
167
+ } else needAggr = !1;
168
168
  const data = new vdataset_1.DataView(this._option.dataSet);
169
169
  data.parse([ processData ], {
170
170
  type: "dataview"
171
- }), needAgggr && data.transform({
171
+ }), needAggr && data.transform({
172
172
  type: "markerAggregation",
173
173
  options: options
174
174
  }), needRegr && data.transform({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/mark-line.ts"],"names":[],"mappings":"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","file":"mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkLine, IMarkLineSpec, IMarkLineTheme, IStepMarkLineSpec } from './interface';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IOptionAggr } from '../../../data/transforms/aggregation';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { coordinateLayout, xyLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkLine as MarkLineComponent } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isValid, isArray } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { INode } from '@visactor/vrender-core';\nimport type { IDataPos } from '../interface';\nimport type { IOptionRegr } from '../../../data/transforms/regression';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant';\nimport { getInsertPoints, getTextOffset } from './util';\nimport { Factory } from '../../../core/factory';\nimport { isPercent } from '../../../util';\nimport type { IPoint } from '../../../typings';\n\nexport class MarkLine extends BaseMarker<IMarkLineSpec & IMarkLineTheme> implements IMarkLine {\n static type = ComponentTypeEnum.markLine;\n type = ComponentTypeEnum.markLine;\n name: string = ComponentTypeEnum.markLine;\n\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n protected declare _theme: IMarkLineTheme;\n\n protected declare _markerComponent: MarkLineComponent;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markLineSpec = spec.markLine;\n if (isEmpty(markLineSpec)) {\n return undefined;\n }\n if (!isArray(markLineSpec) && markLineSpec.visible !== false) {\n return new MarkLine(markLineSpec, { ...options });\n }\n const markLines: MarkLine[] = [];\n markLineSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markLines.push(new MarkLine(m, { ...options, specIndex: i }));\n }\n });\n return markLines;\n }\n\n protected _createMarkerComponent() {\n const markLine = new MarkLineComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n points: [\n {\n x: 0,\n y: 0\n },\n {\n x: 0,\n y: 0\n }\n ],\n lineStyle: this._spec?.line.style as unknown as any,\n startSymbol: {\n ...this._spec?.startSymbol,\n visible: this._spec.startSymbol?.visible,\n style: transformToGraphic(this._spec.startSymbol?.style)\n },\n endSymbol: {\n ...this._spec?.endSymbol,\n visible: this._spec.endSymbol?.visible,\n style: transformToGraphic(this._spec.endSymbol?.style)\n },\n label: {\n ...this._spec.label,\n padding: this._spec.label?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.label?.shape),\n visible: this._spec.label?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.label?.labelBackground.style),\n visible: this._spec.label?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.label?.style)\n },\n clipInRange: this._spec.clip ?? false\n });\n this._markerComponent = markLine;\n this._markerComponent.name = this._spec.name ?? this.type;\n this._markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this.getContainer().add(this._markerComponent as unknown as INode);\n }\n\n protected _markerLayout() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n // eslint-disable-next-line max-len\n const isXLayout =\n isValid(spec.x) || (isValid(spec.coordinates) && isValid(spec.process) && isValid(spec.process.x));\n // eslint-disable-next-line max-len\n const isYLayout =\n isValid(spec.y) || (isValid(spec.coordinates) && isValid(spec.process) && isValid(spec.process.y));\n const isCoordinateLayout =\n isValid(spec.coordinates) && (!isValid(spec.process) || ('process' in spec && 'xy' in spec.process));\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n let points: IPoint[] = [];\n if (isXLayout) {\n points = xyLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange)[0];\n } else if (isYLayout) {\n points = xyLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange)[0];\n } else if (isCoordinateLayout) {\n points = coordinateLayout(data, relativeSeries, autoRange);\n } else if (isPositionLayout) {\n if (spec.regionRelative) {\n const region = relativeSeries.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n points = spec.positions.map((point: IPoint) => {\n return {\n x: point.x + regionStartX,\n y: point.y + regionStartY\n };\n });\n } else {\n points = spec.positions;\n }\n }\n const seriesData = this._relativeSeries.getViewData().latestData;\n const dataPoints = data\n ? data.latestData[0].latestData\n ? data.latestData[0].latestData\n : data.latestData\n : seriesData;\n\n let limitRect;\n if (spec.clip || spec.label?.confine) {\n const { minX, maxX, minY, maxY } = this._computeClipRange([\n startRelativeSeries.getRegion(),\n endRelativeSeries.getRegion(),\n relativeSeries.getRegion()\n ]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n const labelAttrs = {\n ...this._markerComponent?.attribute?.label,\n text: this._spec.label.formatMethod\n ? this._spec.label.formatMethod(dataPoints, seriesData)\n : this._markerComponent?.attribute?.label?.text\n };\n\n if ((this._spec as IStepMarkLineSpec).type === 'type-step') {\n const { multiSegment, mainSegmentIndex } = (this._spec as IStepMarkLineSpec).line || {};\n const { connectDirection, expandDistance = 0 } = this._spec as IStepMarkLineSpec;\n\n let expandDistanceValue: number;\n if (isPercent(expandDistance)) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n if (connectDirection === 'bottom' || connectDirection === 'top') {\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 expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionHeight) / 100;\n } else {\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 expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionWidth) / 100;\n }\n } else {\n expandDistanceValue = expandDistance as number;\n }\n\n const joinPoints = getInsertPoints(points[0], points[1], connectDirection, expandDistanceValue);\n\n let labelPositionAttrs: any;\n if (multiSegment && isValid(mainSegmentIndex)) {\n // 如果用户配置了主线段,则不进行 label 的偏移处理,直接显示在主线段中间\n labelPositionAttrs = {\n position: 'middle',\n autoRotate: false,\n refX: 0,\n refY: 0\n };\n } else {\n labelPositionAttrs = {\n position: 'start',\n autoRotate: false,\n ...getTextOffset(points[0], points[1], connectDirection, expandDistanceValue),\n refX: 0,\n refY: 0\n };\n }\n\n this._markerComponent?.setAttributes({\n points: multiSegment\n ? [\n [joinPoints[0], joinPoints[1]],\n [joinPoints[1], joinPoints[2]],\n [joinPoints[2], joinPoints[3]]\n ]\n : joinPoints,\n label: {\n ...labelAttrs,\n ...labelPositionAttrs,\n textStyle: {\n ...this._markerComponent?.attribute?.label.textStyle,\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n limitRect,\n multiSegment,\n mainSegmentIndex,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n } else {\n this._markerComponent?.setAttributes({\n points: points,\n label: labelAttrs,\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n }\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const relativeSeries = this._relativeSeries;\n const isXProcess = 'x' in spec;\n const isYProcess = 'y' in spec;\n const isCoordinateProcess = 'coordinates' in spec;\n\n if (!isXProcess && !isYProcess && !isCoordinateProcess) {\n return;\n }\n\n let options: IOptionAggr[] | IOptionRegr;\n let processData: DataView;\n let needAgggr: boolean = false;\n let needRegr: boolean = false;\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n // eslint-disable-next-line no-undef\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n\n if (isXProcess) {\n options = [this._processSpecX(spec.x as unknown as IDataPos)] as unknown as any;\n processData = relativeSeries.getViewData();\n needAgggr = true;\n } else if (isYProcess) {\n options = [this._processSpecY(spec.y as unknown as IDataPos)] as unknown as any;\n processData = relativeSeries.getViewData();\n needAgggr = true;\n } else if (isCoordinateProcess) {\n options = this._processSpecCoo(spec);\n\n processData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` })\n .parse([relativeSeries.getViewData()], {\n type: 'dataview'\n })\n .transform({\n type: 'markerAggregation',\n options\n });\n if (spec.process && 'x' in spec.process) {\n options = [this._processSpecX(spec.process.x as unknown as IDataPos)] as unknown as any;\n needAgggr = true;\n }\n if (spec.process && 'y' in spec.process) {\n options = [this._processSpecY(spec.process.y as unknown as IDataPos)] as unknown as any;\n needAgggr = true;\n }\n if (spec.process && 'xy' in spec.process) {\n const { xField, yField } = relativeSeries.getSpec();\n options = {\n fieldX: xField,\n fieldY: yField\n };\n needRegr = true;\n }\n }\n\n const data = new DataView(this._option.dataSet);\n data.parse([processData], {\n type: 'dataview'\n });\n if (needAgggr) {\n data.transform({\n type: 'markerAggregation',\n options\n });\n }\n if (needRegr) {\n data.transform({\n type: 'markerRegression',\n options\n });\n }\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n\nexport const registerMarkLine = () => {\n Factory.registerComponent(MarkLine.type, MarkLine);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-line/mark-line.ts"],"names":[],"mappings":"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","file":"mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type {\n IMarkLine,\n IMarkLineSpec,\n IMarkLineTheme,\n IMarkLineXYSpec,\n IMarkLineXYY1Spec,\n IMarkLineYXX1Spec,\n IStepMarkLineSpec\n} from './interface';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IOptionAggr } from '../../../data/transforms/aggregation';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { computeClipRange, coordinateLayout, positionLayout, xyLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkLine as MarkLineComponent } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isValid, isArray } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IDataPos } from '../interface';\nimport type { IOptionRegr } from '../../../data/transforms/regression';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant';\nimport { getInsertPoints, getTextOffset } from './util';\nimport { Factory } from '../../../core/factory';\nimport { isPercent } from '../../../util';\nimport type { IPoint } from '../../../typings';\n\nexport class MarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {\n static type = ComponentTypeEnum.markLine;\n type = ComponentTypeEnum.markLine;\n name: string = ComponentTypeEnum.markLine;\n\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n protected declare _theme: IMarkLineTheme;\n protected declare _markerComponent: MarkLineComponent;\n\n private _isXYLayout: boolean;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markLineSpec = spec.markLine;\n if (isEmpty(markLineSpec)) {\n return undefined;\n }\n if (!isArray(markLineSpec) && markLineSpec.visible !== false) {\n return new MarkLine(markLineSpec, { ...options });\n }\n const markLines: MarkLine[] = [];\n markLineSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markLines.push(new MarkLine(m, { ...options, specIndex: i }));\n }\n });\n return markLines;\n }\n\n protected _createMarkerComponent() {\n const markLine = new MarkLineComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n points: [\n {\n x: 0,\n y: 0\n },\n {\n x: 0,\n y: 0\n }\n ],\n lineStyle: this._spec.line?.style as unknown as any,\n startSymbol: {\n ...this._spec.startSymbol,\n visible: this._spec.startSymbol?.visible,\n style: transformToGraphic(this._spec.startSymbol?.style)\n },\n endSymbol: {\n ...this._spec.endSymbol,\n visible: this._spec.endSymbol?.visible,\n style: transformToGraphic(this._spec.endSymbol?.style)\n },\n label: {\n ...this._spec.label,\n padding: this._spec.label?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.label?.shape),\n visible: this._spec.label?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.label?.labelBackground.style),\n visible: this._spec.label?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.label?.style)\n },\n clipInRange: this._spec.clip ?? false\n });\n return markLine as unknown as IGroup;\n }\n\n protected _markerLayout() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const isValidCoordinates = isValid(spec.coordinates);\n const isValidProcess = isValid(spec.process);\n const isValidProcessX = isValidProcess && isValid(spec.process.x);\n const isValidProcessY = isValidProcess && isValid(spec.process.y);\n const isCoordinateLayout = isValidCoordinates && (!isValidProcess || ('process' in spec && 'xy' in spec.process));\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n let points: IPoint[] = [];\n if (this._isXYLayout || (isValidCoordinates && isValidProcessX) || (isValidCoordinates && isValidProcessY)) {\n const xyPoints = xyLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n // 这里不同的场景返回的值不同,如果同时声明了 x x1 y y1,会返回两个数值的数组(如 [[{}], [{}]]),所以需要分别处理下\n points = (xyPoints.length === 1 ? xyPoints[0] : xyPoints.map(point => point[0])) as IPoint[];\n } else if (isCoordinateLayout) {\n points = coordinateLayout(data, relativeSeries, autoRange, spec.coordinatesOffset);\n } else if (isPositionLayout) {\n points = positionLayout(spec.positions, relativeSeries, spec.regionRelative);\n }\n\n const seriesData = this._relativeSeries.getViewData().latestData;\n const dataPoints = data.latestData[0].latestData || data.latestData;\n\n let limitRect;\n if (spec.clip || spec.label?.confine) {\n const { minX, maxX, minY, maxY } = computeClipRange([\n startRelativeSeries.getRegion(),\n endRelativeSeries.getRegion(),\n relativeSeries.getRegion()\n ]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n const labelAttrs = {\n ...this._markerComponent?.attribute?.label,\n text: this._spec.label.formatMethod\n ? this._spec.label.formatMethod(dataPoints, seriesData)\n : this._markerComponent?.attribute?.label?.text\n };\n\n if ((this._spec as IStepMarkLineSpec).type === 'type-step') {\n const { multiSegment, mainSegmentIndex } = (this._spec as IStepMarkLineSpec).line || {};\n const { connectDirection, expandDistance = 0 } = this._spec as IStepMarkLineSpec;\n\n let expandDistanceValue: number;\n if (isPercent(expandDistance)) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n if (connectDirection === 'bottom' || connectDirection === 'top') {\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 expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionHeight) / 100;\n } else {\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 expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionWidth) / 100;\n }\n } else {\n expandDistanceValue = expandDistance as number;\n }\n\n const joinPoints = getInsertPoints(points[0], points[1], connectDirection, expandDistanceValue);\n\n let labelPositionAttrs: any;\n if (multiSegment && isValid(mainSegmentIndex)) {\n // 如果用户配置了主线段,则不进行 label 的偏移处理,直接显示在主线段中间\n labelPositionAttrs = {\n position: 'middle',\n autoRotate: false,\n refX: 0,\n refY: 0\n };\n } else {\n labelPositionAttrs = {\n position: 'start',\n autoRotate: false,\n ...getTextOffset(points[0], points[1], connectDirection, expandDistanceValue),\n refX: 0,\n refY: 0\n };\n }\n\n this._markerComponent?.setAttributes({\n points: multiSegment\n ? [\n [joinPoints[0], joinPoints[1]],\n [joinPoints[1], joinPoints[2]],\n [joinPoints[2], joinPoints[3]]\n ]\n : joinPoints,\n label: {\n ...labelAttrs,\n ...labelPositionAttrs,\n textStyle: {\n ...this._markerComponent?.attribute?.label.textStyle,\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n limitRect,\n multiSegment,\n mainSegmentIndex,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n } else {\n this._markerComponent?.setAttributes({\n points: points,\n label: labelAttrs,\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n }\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const relativeSeries = this._relativeSeries;\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 isCoordinateProcess = 'coordinates' in spec;\n\n const doXProcess = isXProcess && !isYProcess && !isY1Process;\n const doXYY1Process = isXProcess && isYProcess && isY1Process;\n const doYProcess = isYProcess && !isXProcess && !isX1Process;\n const doYXX1Process = isYProcess && isXProcess && isX1Process;\n const doXYProcess = isXProcess && isYProcess && isX1Process && isY1Process;\n\n this._markerData = relativeSeries.getViewData();\n\n if (!doXProcess && !doYProcess && !doXYY1Process && !doYXX1Process && !doXYProcess && !isCoordinateProcess) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n\n this._isXYLayout = doXProcess || doXYY1Process || doYProcess || doYXX1Process || doXYProcess;\n\n let options: IOptionAggr[] | IOptionRegr;\n let processData: DataView = relativeSeries.getViewData();\n let needAggr: boolean = true;\n let needRegr: boolean = false;\n\n if (doXYProcess) {\n const { x, x1, y, y1 } = spec as IMarkLineXYSpec;\n options = [this._processSpecXY(x, y), this._processSpecXY(x1, y1)];\n } else if (doXProcess) {\n options = [this._processSpecX(spec.x)];\n } else if (doYProcess) {\n options = [this._processSpecY(spec.y)];\n } else if (doXYY1Process) {\n const { x, y, y1 } = spec as IMarkLineXYY1Spec;\n options = [this._processSpecXY(x, y), this._processSpecXY(x, y1)];\n } else if (doYXX1Process) {\n const { x, x1, y } = spec as IMarkLineYXX1Spec;\n options = [this._processSpecXY(x, y), this._processSpecXY(x1, y)];\n } else if (isCoordinateProcess) {\n options = this._processSpecCoo(spec);\n needAggr = false;\n processData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` })\n .parse([relativeSeries.getViewData()], {\n type: 'dataview'\n })\n .transform({\n type: 'markerAggregation',\n options\n });\n if (spec.process && 'x' in spec.process) {\n options = [this._processSpecX(spec.process.x as unknown as IDataPos)] as unknown as any;\n needAggr = true;\n }\n if (spec.process && 'y' in spec.process) {\n options = [this._processSpecY(spec.process.y as unknown as IDataPos)] as unknown as any;\n needAggr = true;\n }\n if (spec.process && 'xy' in spec.process) {\n const { xField, yField } = relativeSeries.getSpec();\n options = {\n fieldX: xField,\n fieldY: yField\n };\n needRegr = true;\n }\n } else {\n needAggr = false;\n }\n\n const data = new DataView(this._option.dataSet);\n data.parse([processData], {\n type: 'dataview'\n });\n if (needAggr) {\n data.transform({\n type: 'markerAggregation',\n options\n });\n }\n if (needRegr) {\n data.transform({\n type: 'markerRegression',\n options\n });\n }\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n\nexport const registerMarkLine = () => {\n Factory.registerComponent(MarkLine.type, MarkLine);\n};\n"]}
@@ -1,15 +1,17 @@
1
- import type { IPoint } from '../../../../typings';
2
1
  import type { IComponent } from '../../../interface';
3
- import type { IDataPointSpec, IMarkerSpec, IMarkerSymbol } from '../../interface';
2
+ import type { IDataPointSpec, IDataPos, IDataPosCallback, IMarkerSpec, IMarkerSymbol, MarkerPositionPoint, OffsetPoint } from '../../interface';
4
3
  import type { IMarkPointTheme } from './theme';
5
4
  export type IMarkPoint = IComponent;
6
- export type IMarkPointSpec = IMarkerSpec & (IMarkPointCoordinateSpec | IMarkPointPositionsSpec) & IMarkPointTheme<IMarkerSymbol>;
5
+ export type IMarkPointSpec = IMarkerSpec & (IMarkPointXYSpec | IMarkPointCoordinateSpec | IMarkPointPositionsSpec) & IMarkPointTheme<IMarkerSymbol>;
6
+ export type IMarkPointXYSpec = {
7
+ y: IDataPos | IDataPosCallback;
8
+ x: IDataPos | IDataPosCallback;
9
+ };
7
10
  export type IMarkPointCoordinateSpec = {
8
11
  coordinates: IDataPointSpec;
9
- relativeRelativeSeriesIndex?: number;
10
- relativeRelativeSeriesId?: string;
12
+ coordinatesOffset?: OffsetPoint;
11
13
  };
12
14
  export type IMarkPointPositionsSpec = {
13
- position: IPoint;
15
+ position: MarkerPositionPoint;
14
16
  regionRelative?: boolean;
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-point/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IPoint } from '../../../../typings';\nimport type { IComponent } from '../../../interface';\nimport type { IDataPointSpec, IMarkerSpec, IMarkerSymbol } from '../../interface';\nimport type { IMarkPointTheme } from './theme';\n\nexport type IMarkPoint = IComponent;\n\nexport type IMarkPointSpec = IMarkerSpec &\n (\n | IMarkPointCoordinateSpec // 标注目标:数据元素\n | IMarkPointPositionsSpec\n ) &\n IMarkPointTheme<IMarkerSymbol>; // 标注目标:任意位置\n\nexport type IMarkPointCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: IDataPointSpec;\n /**\n * 被标注数据关联的series\n */\n relativeRelativeSeriesIndex?: number;\n relativeRelativeSeriesId?: string;\n};\n\n/**\n * 指定坐标点的参考线。基于指定坐标进行参考线的绘制\n */\nexport type IMarkPointPositionsSpec = {\n position: IPoint;\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-point/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IComponent } from '../../../interface';\nimport type {\n IDataPointSpec,\n IDataPos,\n IDataPosCallback,\n IMarkerSpec,\n IMarkerSymbol,\n MarkerPositionPoint,\n OffsetPoint\n} from '../../interface';\nimport type { IMarkPointTheme } from './theme';\n\nexport type IMarkPoint = IComponent;\n\nexport type IMarkPointSpec = IMarkerSpec &\n (\n | IMarkPointXYSpec\n | IMarkPointCoordinateSpec // 标注目标:数据元素\n | IMarkPointPositionsSpec\n ) &\n IMarkPointTheme<IMarkerSymbol>; // 标注目标:任意位置\n\nexport type IMarkPointXYSpec = {\n /**\n * 参考点在 y 轴上位置,可以配置参考线在 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 参考点在 x 轴的起点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n};\n\nexport type IMarkPointCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n */\n coordinates: IDataPointSpec;\n /**\n * 对每个数据点转化后的画布坐标点进行偏移,该偏移值可以是像素值,也可以是 string 类型,如 '20%' 代表百分比\n * 每个元素对应一个坐标点的偏移量\n * @since 1.7.3\n */\n coordinatesOffset?: OffsetPoint;\n};\n\n/**\n * 指定坐标点的参考线。基于指定坐标进行参考线的绘制\n */\nexport type IMarkPointPositionsSpec = {\n position: MarkerPositionPoint;\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n};\n"]}
@@ -3,7 +3,8 @@ import type { IComponentOption } from '../../interface';
3
3
  import { ComponentTypeEnum } from '../../interface/type';
4
4
  import { MarkPoint as MarkPointComponent } from '@visactor/vrender-components';
5
5
  import { BaseMarker } from '../base-marker';
6
- export declare class MarkPoint extends BaseMarker<IMarkPointSpec & IMarkPointTheme> implements IMarkPoint {
6
+ import type { IGroup } from '@visactor/vrender-core';
7
+ export declare class MarkPoint extends BaseMarker<IMarkPointSpec> implements IMarkPoint {
7
8
  static type: ComponentTypeEnum;
8
9
  type: ComponentTypeEnum;
9
10
  name: string;
@@ -11,7 +12,7 @@ export declare class MarkPoint extends BaseMarker<IMarkPointSpec & IMarkPointThe
11
12
  protected _theme: IMarkPointTheme;
12
13
  protected _markerComponent: MarkPointComponent;
13
14
  static createComponent(spec: any, options: IComponentOption): MarkPoint | MarkPoint[];
14
- protected _createMarkerComponent(): void;
15
+ protected _createMarkerComponent(): IGroup;
15
16
  protected _markerLayout(): void;
16
17
  protected _initDataView(): void;
17
18
  }
@@ -23,8 +23,8 @@ class MarkPoint extends base_marker_1.BaseMarker {
23
23
  })), markPoints;
24
24
  }
25
25
  _createMarkerComponent() {
26
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
27
- const markPoint = new vrender_components_1.MarkPoint({
26
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
27
+ return new vrender_components_1.MarkPoint({
28
28
  zIndex: this.layoutZIndex,
29
29
  interactive: null !== (_a = this._spec.interactive) && void 0 !== _a && _a,
30
30
  position: {
@@ -51,26 +51,18 @@ class MarkPoint extends base_marker_1.BaseMarker {
51
51
  }, this._spec.itemContent),
52
52
  clipInRange: null !== (_4 = this._spec.clip) && void 0 !== _4 && _4
53
53
  });
54
- this._markerComponent = markPoint, this._markerComponent.name = null !== (_5 = this._spec.name) && void 0 !== _5 ? _5 : this.type,
55
- this._markerComponent.id = null !== (_6 = this._spec.id) && void 0 !== _6 ? _6 : `${this.type}-${this.id}`,
56
- this.getContainer().add(this._markerComponent);
57
54
  }
58
55
  _markerLayout() {
59
56
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
60
- const spec = this._spec, data = this._markerData, relativeSeries = this._relativeSeries, isCoordinateLayout = "coordinate" in spec, isPositionLayout = "position" in spec, autoRange = null !== (_a = null == spec ? void 0 : spec.autoRange) && void 0 !== _a && _a;
57
+ const spec = this._spec, data = this._markerData, relativeSeries = this._relativeSeries, isXYLayout = "x" in spec && "y" in spec, isCoordinateLayout = "coordinate" in spec, isPositionLayout = "position" in spec, autoRange = null !== (_a = null == spec ? void 0 : spec.autoRange) && void 0 !== _a && _a;
61
58
  let point;
62
- if (isCoordinateLayout) point = (0, utils_1.coordinateLayout)(data, relativeSeries, autoRange)[0]; else if (isPositionLayout) if (point = spec.position,
63
- spec.regionRelative) {
64
- const region = relativeSeries.getRegion(), {x: regionStartX, y: regionStartY} = region.getLayoutStartPoint();
65
- point = {
66
- x: point.x + regionStartX,
67
- y: point.y + regionStartY
68
- };
69
- } else point = spec.position;
59
+ isXYLayout ? point = (0, utils_1.xyLayout)(data, relativeSeries, relativeSeries, relativeSeries, autoRange)[0][0] : isCoordinateLayout ? point = (0,
60
+ utils_1.coordinateLayout)(data, relativeSeries, autoRange, spec.coordinatesOffset)[0] : isPositionLayout && (point = (0,
61
+ utils_1.positionLayout)([ spec.position ], relativeSeries, spec.regionRelative)[0]);
70
62
  const seriesData = this._relativeSeries.getViewData().latestData, dataPoints = data ? data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData : seriesData;
71
63
  let limitRect;
72
64
  if (spec.clip) {
73
- const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = this._computeClipRange([ relativeSeries.getRegion() ]);
65
+ const {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = (0, utils_1.computeClipRange)([ relativeSeries.getRegion() ]);
74
66
  limitRect = {
75
67
  x: minX,
76
68
  y: minY,
@@ -91,10 +83,14 @@ class MarkPoint extends base_marker_1.BaseMarker {
91
83
  });
92
84
  }
93
85
  _initDataView() {
94
- const spec = this._spec, relativeSeries = this._relativeSeries;
95
- if (!(0, vutils_1.isValid)(spec.coordinate)) return;
96
- (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerAggregation", aggregation_1.markerAggregation);
97
- const options = this._processSpecCoo(spec), data = new vdataset_1.DataView(this._option.dataSet, {
86
+ const spec = this._spec, relativeSeries = this._relativeSeries, isXYProcess = (0,
87
+ vutils_1.isValid)(spec.x) && (0, vutils_1.isValid)(spec.y), isCoordinateProcess = (0,
88
+ vutils_1.isValid)(spec.coordinate);
89
+ if (!isCoordinateProcess && !isXYProcess) return;
90
+ let options;
91
+ (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerAggregation", aggregation_1.markerAggregation),
92
+ isXYProcess ? options = [ this._processSpecXY(spec.x, spec.y) ] : isCoordinateProcess && (options = this._processSpecCoo(spec));
93
+ const data = new vdataset_1.DataView(this._option.dataSet, {
98
94
  name: `${this.type}_${this.id}_data`
99
95
  });
100
96
  data.parse([ relativeSeries.getViewData() ], {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-point/mark-point.ts"],"names":[],"mappings":"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","file":"mark-point.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkPoint, IMarkPointSpec, IMarkPointTheme } from './interface';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\n// eslint-disable-next-line no-duplicate-imports\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { coordinateLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkPoint as MarkPointComponent } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isValid, isArray } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant';\nimport { Factory } from '../../../core/factory';\nimport type { INode } from '@visactor/vrender-core';\nimport type { IPoint } from '../../../typings';\n\nexport class MarkPoint extends BaseMarker<IMarkPointSpec & IMarkPointTheme> implements IMarkPoint {\n static type = ComponentTypeEnum.markPoint;\n type = ComponentTypeEnum.markPoint;\n name: string = ComponentTypeEnum.markPoint;\n\n layoutZIndex: number = LayoutZIndex.MarkPoint;\n\n protected declare _theme: IMarkPointTheme;\n\n // markPoint组件\n protected declare _markerComponent: MarkPointComponent;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markPointSpec = spec.markPoint;\n if (isEmpty(markPointSpec)) {\n return undefined;\n }\n if (!isArray(markPointSpec) && markPointSpec.visible !== false) {\n return new MarkPoint(markPointSpec, options);\n }\n const markPoints: MarkPoint[] = [];\n markPointSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markPoints.push(new MarkPoint(m, { ...options, specIndex: i }));\n }\n });\n return markPoints;\n }\n\n protected _createMarkerComponent() {\n const markPoint = new MarkPointComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n position: { x: 0, y: 0 },\n itemLine: {\n lineStyle: transformToGraphic(this._spec.itemLine?.line?.style),\n ...this._spec.itemLine\n },\n itemContent: {\n symbolStyle: transformToGraphic(this._spec.itemContent?.symbol?.style),\n imageStyle: this._spec.itemContent?.image?.style,\n textStyle: {\n ...this._spec.itemContent?.text,\n padding: this._spec.itemContent?.text?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.itemContent?.text?.shape),\n visible: this._spec.itemContent?.text?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.itemContent?.text?.labelBackground?.style),\n visible: this._spec.itemContent?.text?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.itemContent?.text?.style)\n },\n richTextStyle: this._spec.itemContent?.richText?.style,\n ...this._spec.itemContent\n },\n clipInRange: this._spec.clip ?? false\n });\n this._markerComponent = markPoint;\n this._markerComponent.name = this._spec.name ?? this.type;\n this._markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this.getContainer().add(this._markerComponent as unknown as INode);\n }\n\n protected _markerLayout() {\n const spec = this._spec;\n const data = this._markerData;\n const relativeSeries = this._relativeSeries;\n const isCoordinateLayout = 'coordinate' in spec;\n const isPositionLayout = 'position' in spec;\n const autoRange = spec?.autoRange ?? false;\n\n let point: IPoint;\n if (isCoordinateLayout) {\n point = coordinateLayout(data, relativeSeries, autoRange)[0];\n } else if (isPositionLayout) {\n point = spec.position;\n\n if (spec.regionRelative) {\n const region = relativeSeries.getRegion();\n const { x: regionStartX, y: regionStartY } = region.getLayoutStartPoint();\n point = {\n x: point.x + regionStartX,\n y: point.y + regionStartY\n };\n } else {\n point = spec.position;\n }\n }\n\n const seriesData = this._relativeSeries.getViewData().latestData;\n const dataPoints = data\n ? data.latestData[0].latestData\n ? data.latestData[0].latestData\n : data.latestData\n : seriesData;\n\n let limitRect;\n if (spec.clip) {\n const { minX, maxX, minY, maxY } = this._computeClipRange([relativeSeries.getRegion()]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n this._markerComponent?.setAttributes({\n position: point,\n itemContent: {\n ...this._markerComponent?.attribute?.itemContent,\n textStyle: {\n ...this._markerComponent?.attribute?.itemContent?.textStyle,\n text: this._spec.itemContent.text?.formatMethod\n ? this._spec.itemContent.text.formatMethod(dataPoints, seriesData)\n : this._markerComponent?.attribute?.itemContent?.textStyle?.text\n }\n },\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const relativeSeries = this._relativeSeries;\n const isCoordinateProcess = isValid(spec.coordinate);\n if (!isCoordinateProcess) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n\n const options = this._processSpecCoo(spec);\n\n const data = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` });\n data.parse([relativeSeries.getViewData()], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n\nexport const registerMarkPoint = () => {\n Factory.registerComponent(MarkPoint.type, MarkPoint);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-point/mark-point.ts"],"names":[],"mappings":"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","file":"mark-point.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkPoint, IMarkPointCoordinateSpec, IMarkPointSpec, IMarkPointTheme } from './interface';\nimport type { IComponentOption } from '../../interface';\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport { computeClipRange, coordinateLayout, positionLayout, xyLayout } from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport { MarkPoint as MarkPointComponent } from '@visactor/vrender-components';\nimport { isEmpty, isValid, isArray } from '@visactor/vutils';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport { LayoutZIndex } from '../../../constant';\nimport { Factory } from '../../../core/factory';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IPoint } from '../../../typings';\n\nexport class MarkPoint extends BaseMarker<IMarkPointSpec> implements IMarkPoint {\n static type = ComponentTypeEnum.markPoint;\n type = ComponentTypeEnum.markPoint;\n name: string = ComponentTypeEnum.markPoint;\n\n layoutZIndex: number = LayoutZIndex.MarkPoint;\n\n protected declare _theme: IMarkPointTheme;\n\n // markPoint组件\n protected declare _markerComponent: MarkPointComponent;\n\n static createComponent(spec: any, options: IComponentOption) {\n const markPointSpec = spec.markPoint;\n if (isEmpty(markPointSpec)) {\n return undefined;\n }\n if (!isArray(markPointSpec) && markPointSpec.visible !== false) {\n return new MarkPoint(markPointSpec, options);\n }\n const markPoints: MarkPoint[] = [];\n markPointSpec.forEach((m: any, i: number) => {\n if (m.visible !== false) {\n markPoints.push(new MarkPoint(m, { ...options, specIndex: i }));\n }\n });\n return markPoints;\n }\n\n protected _createMarkerComponent() {\n const markPoint = new MarkPointComponent({\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? false,\n position: { x: 0, y: 0 },\n itemLine: {\n lineStyle: transformToGraphic(this._spec.itemLine?.line?.style),\n ...this._spec.itemLine\n },\n itemContent: {\n symbolStyle: transformToGraphic(this._spec.itemContent?.symbol?.style),\n imageStyle: this._spec.itemContent?.image?.style,\n textStyle: {\n ...this._spec.itemContent?.text,\n padding: this._spec.itemContent?.text?.labelBackground?.padding,\n shape: {\n ...transformToGraphic(this._spec.itemContent?.text?.shape),\n visible: this._spec.itemContent?.text?.shape?.visible ?? false\n },\n panel: {\n ...transformToGraphic(this._spec.itemContent?.text?.labelBackground?.style),\n visible: this._spec.itemContent?.text?.labelBackground?.visible ?? true\n },\n textStyle: transformToGraphic(this._spec.itemContent?.text?.style)\n },\n richTextStyle: this._spec.itemContent?.richText?.style,\n ...this._spec.itemContent\n },\n clipInRange: this._spec.clip ?? false\n });\n return markPoint as unknown as IGroup;\n }\n\n protected _markerLayout() {\n const spec = this._spec;\n const data = this._markerData;\n const relativeSeries = this._relativeSeries;\n const isXYLayout = 'x' in spec && 'y' in spec;\n const isCoordinateLayout = 'coordinate' in spec;\n const isPositionLayout = 'position' in spec;\n const autoRange = spec?.autoRange ?? false;\n\n let point: IPoint;\n if (isXYLayout) {\n point = xyLayout(data, relativeSeries, relativeSeries, relativeSeries, autoRange)[0][0];\n } else if (isCoordinateLayout) {\n point = coordinateLayout(\n data,\n relativeSeries,\n autoRange,\n (spec as IMarkPointCoordinateSpec).coordinatesOffset\n )[0];\n } else if (isPositionLayout) {\n point = positionLayout([spec.position], relativeSeries, spec.regionRelative)[0];\n }\n\n const seriesData = this._relativeSeries.getViewData().latestData;\n const dataPoints = data\n ? data.latestData[0].latestData\n ? data.latestData[0].latestData\n : data.latestData\n : seriesData;\n\n let limitRect;\n if (spec.clip) {\n const { minX, maxX, minY, maxY } = computeClipRange([relativeSeries.getRegion()]);\n limitRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n\n this._markerComponent?.setAttributes({\n position: point,\n itemContent: {\n ...this._markerComponent?.attribute?.itemContent,\n textStyle: {\n ...this._markerComponent?.attribute?.itemContent?.textStyle,\n text: this._spec.itemContent.text?.formatMethod\n ? this._spec.itemContent.text.formatMethod(dataPoints, seriesData)\n : this._markerComponent?.attribute?.itemContent?.textStyle?.text\n }\n },\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n });\n }\n\n protected _initDataView(): void {\n const spec = this._spec as any;\n const relativeSeries = this._relativeSeries;\n const isXYProcess = isValid(spec.x) && isValid(spec.y);\n const isCoordinateProcess = isValid(spec.coordinate);\n if (!isCoordinateProcess && !isXYProcess) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n\n let options;\n if (isXYProcess) {\n options = [this._processSpecXY(spec.x, spec.y)];\n } else if (isCoordinateProcess) {\n options = this._processSpecCoo(spec);\n }\n\n const data = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` });\n data.parse([relativeSeries.getViewData()], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n\nexport const registerMarkPoint = () => {\n Factory.registerComponent(MarkPoint.type, MarkPoint);\n};\n"]}
@@ -1,5 +1,16 @@
1
- import type { ICartesianSeries } from '../../series/interface';
1
+ import type { ICartesianSeries, ISeries } from '../../series/interface';
2
2
  import type { DataView } from '@visactor/vdataset';
3
3
  import type { IPoint } from '../../typings';
4
+ import type { IDataPos, MarkerPositionPoint } from './interface';
5
+ import type { IRegion } from '../../region/interface';
6
+ import type { OffsetPoint } from './interface';
7
+ export declare function isAggrSpec(spec: IDataPos): boolean;
4
8
  export declare function xyLayout(data: DataView, startRelativeSeries: ICartesianSeries, endRelativeSeries: ICartesianSeries, relativeSeries: ICartesianSeries, autoRange: boolean): IPoint[][];
5
- export declare function coordinateLayout(data: DataView, relativeSeries: ICartesianSeries, autoRange: boolean): IPoint[];
9
+ export declare function coordinateLayout(data: DataView, relativeSeries: ICartesianSeries, autoRange: boolean, coordinatesOffset: OffsetPoint[] | OffsetPoint): IPoint[];
10
+ export declare function positionLayout(positions: MarkerPositionPoint[], series: ISeries, regionRelative: boolean): IPoint[];
11
+ export declare function computeClipRange(regions: IRegion[]): {
12
+ minX: number;
13
+ maxX: number;
14
+ minY: number;
15
+ maxY: number;
16
+ };