@visactor/vchart 2.1.0-alpha.0 → 2.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/build/es5/index.js +3 -3
  2. package/build/index.es.js +2290 -473
  3. package/build/index.js +2290 -473
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart-transformer.d.ts +3 -0
  7. package/cjs/chart/base/base-chart-transformer.js +21 -1
  8. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +15 -9
  10. package/cjs/chart/base/base-chart.js +115 -24
  11. package/cjs/chart/base/base-chart.js.map +1 -1
  12. package/cjs/chart/interface/chart.d.ts +1 -0
  13. package/cjs/chart/interface/chart.js.map +1 -1
  14. package/cjs/chart/pie/base/pie-transformer.js +2 -2
  15. package/cjs/chart/pie/base/pie-transformer.js.map +1 -1
  16. package/cjs/chart/progress/circular/circular-progress-transformer.js +2 -2
  17. package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  18. package/cjs/chart/util.d.ts +4 -1
  19. package/cjs/chart/util.js +40 -4
  20. package/cjs/chart/util.js.map +1 -1
  21. package/cjs/chart/waterfall/waterfall-transformer.js +2 -1
  22. package/cjs/chart/waterfall/waterfall-transformer.js.map +1 -1
  23. package/cjs/compile/compiler.js +2 -2
  24. package/cjs/compile/compiler.js.map +1 -1
  25. package/cjs/compile/data/compilable-data.d.ts +1 -1
  26. package/cjs/compile/data/compilable-data.js +1 -1
  27. package/cjs/compile/data/compilable-data.js.map +1 -1
  28. package/cjs/compile/grammar-item.d.ts +1 -1
  29. package/cjs/compile/grammar-item.js.map +1 -1
  30. package/cjs/compile/interface/compilable-item.d.ts +1 -1
  31. package/cjs/compile/interface/compilable-item.js.map +1 -1
  32. package/cjs/component/axis/base-axis.d.ts +2 -7
  33. package/cjs/component/axis/base-axis.js +25 -3
  34. package/cjs/component/axis/base-axis.js.map +1 -1
  35. package/cjs/component/axis/cartesian/band-axis.d.ts +1 -7
  36. package/cjs/component/base/base-component.d.ts +7 -7
  37. package/cjs/component/base/base-component.js +41 -6
  38. package/cjs/component/base/base-component.js.map +1 -1
  39. package/cjs/component/base/release-vrender-component.d.ts +10 -0
  40. package/cjs/component/base/release-vrender-component.js +37 -0
  41. package/cjs/component/base/release-vrender-component.js.map +1 -0
  42. package/cjs/component/brush/brush.d.ts +2 -7
  43. package/cjs/component/brush/brush.js +3 -0
  44. package/cjs/component/brush/brush.js.map +1 -1
  45. package/cjs/component/crosshair/base.d.ts +1 -7
  46. package/cjs/component/custom-mark/custom-mark.d.ts +1 -7
  47. package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -7
  48. package/cjs/component/geo/geo-coordinate.d.ts +1 -7
  49. package/cjs/component/index.js +1 -2
  50. package/cjs/component/label/base-label.d.ts +1 -7
  51. package/cjs/component/label/label.js +1 -1
  52. package/cjs/component/label/label.js.map +1 -1
  53. package/cjs/component/legend/base-legend.d.ts +2 -7
  54. package/cjs/component/legend/base-legend.js +20 -3
  55. package/cjs/component/legend/base-legend.js.map +1 -1
  56. package/cjs/component/marker/base-marker.d.ts +7 -7
  57. package/cjs/component/marker/base-marker.js +23 -6
  58. package/cjs/component/marker/base-marker.js.map +1 -1
  59. package/cjs/component/marker/mark-line/base-mark-line.js +2 -4
  60. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  61. package/cjs/component/title/title.d.ts +1 -7
  62. package/cjs/component/title/title.js +6 -2
  63. package/cjs/component/title/title.js.map +1 -1
  64. package/cjs/constant/attribute.js +2 -1
  65. package/cjs/constant/scatter.js +1 -2
  66. package/cjs/constant/waterfall.js +2 -1
  67. package/cjs/core/factory.js +1 -1
  68. package/cjs/core/index.js +1 -1
  69. package/cjs/core/vchart.d.ts +5 -1
  70. package/cjs/core/vchart.js +28 -12
  71. package/cjs/core/vchart.js.map +1 -1
  72. package/cjs/data/data-view-utils.d.ts +5 -0
  73. package/cjs/data/data-view-utils.js +58 -0
  74. package/cjs/data/data-view-utils.js.map +1 -0
  75. package/cjs/env/env.js +1 -1
  76. package/cjs/env/index.js +1 -1
  77. package/cjs/mark/base/base-mark.d.ts +12 -2
  78. package/cjs/mark/base/base-mark.js +85 -21
  79. package/cjs/mark/base/base-mark.js.map +1 -1
  80. package/cjs/mark/component.d.ts +9 -0
  81. package/cjs/mark/component.js +51 -3
  82. package/cjs/mark/component.js.map +1 -1
  83. package/cjs/mark/group.js +1 -1
  84. package/cjs/mark/group.js.map +1 -1
  85. package/cjs/mark/interface/mark.d.ts +2 -0
  86. package/cjs/mark/interface/mark.js.map +1 -1
  87. package/cjs/model/base-model.d.ts +3 -15
  88. package/cjs/model/base-model.js.map +1 -1
  89. package/cjs/model/interface.d.ts +13 -0
  90. package/cjs/model/interface.js.map +1 -1
  91. package/cjs/region/region.d.ts +1 -7
  92. package/cjs/series/area/area.d.ts +2 -0
  93. package/cjs/series/area/area.js +6 -0
  94. package/cjs/series/area/area.js.map +1 -1
  95. package/cjs/series/bar/bar.d.ts +3 -0
  96. package/cjs/series/bar/bar.js +30 -4
  97. package/cjs/series/bar/bar.js.map +1 -1
  98. package/cjs/series/base/base-series.d.ts +8 -7
  99. package/cjs/series/base/base-series.js +54 -13
  100. package/cjs/series/base/base-series.js.map +1 -1
  101. package/cjs/series/base/constant.d.ts +3 -0
  102. package/cjs/series/base/constant.js +9 -1
  103. package/cjs/series/base/constant.js.map +1 -1
  104. package/cjs/series/box-plot/box-plot.d.ts +2 -0
  105. package/cjs/series/box-plot/box-plot.js +14 -2
  106. package/cjs/series/box-plot/box-plot.js.map +1 -1
  107. package/cjs/series/heatmap/heatmap.d.ts +2 -0
  108. package/cjs/series/heatmap/heatmap.js +10 -0
  109. package/cjs/series/heatmap/heatmap.js.map +1 -1
  110. package/cjs/series/line/line.d.ts +2 -0
  111. package/cjs/series/line/line.js +6 -0
  112. package/cjs/series/line/line.js.map +1 -1
  113. package/cjs/series/mixin/line-mixin.d.ts +1 -0
  114. package/cjs/series/mixin/line-mixin.js +6 -1
  115. package/cjs/series/mixin/line-mixin.js.map +1 -1
  116. package/cjs/series/pie/pie.d.ts +3 -7
  117. package/cjs/series/pie/pie.js +16 -1
  118. package/cjs/series/pie/pie.js.map +1 -1
  119. package/cjs/series/progress/circular/circular.d.ts +2 -0
  120. package/cjs/series/progress/circular/circular.js +9 -1
  121. package/cjs/series/progress/circular/circular.js.map +1 -1
  122. package/cjs/series/progress/linear/linear.d.ts +2 -0
  123. package/cjs/series/progress/linear/linear.js +17 -1
  124. package/cjs/series/progress/linear/linear.js.map +1 -1
  125. package/cjs/series/scatter/scatter.d.ts +2 -0
  126. package/cjs/series/scatter/scatter.js +9 -1
  127. package/cjs/series/scatter/scatter.js.map +1 -1
  128. package/cjs/series/waterfall/waterfall.d.ts +2 -0
  129. package/cjs/series/waterfall/waterfall.js +10 -0
  130. package/cjs/series/waterfall/waterfall.js.map +1 -1
  131. package/cjs/util/graphic-state.d.ts +1 -0
  132. package/cjs/util/graphic-state.js +19 -4
  133. package/cjs/util/graphic-state.js.map +1 -1
  134. package/esm/chart/base/base-chart-transformer.d.ts +3 -0
  135. package/esm/chart/base/base-chart-transformer.js +22 -0
  136. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  137. package/esm/chart/base/base-chart.d.ts +15 -9
  138. package/esm/chart/base/base-chart.js +111 -23
  139. package/esm/chart/base/base-chart.js.map +1 -1
  140. package/esm/chart/interface/chart.d.ts +1 -0
  141. package/esm/chart/interface/chart.js.map +1 -1
  142. package/esm/chart/pie/base/pie-transformer.js +2 -2
  143. package/esm/chart/pie/base/pie-transformer.js.map +1 -1
  144. package/esm/chart/progress/circular/circular-progress-transformer.js +2 -2
  145. package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  146. package/esm/chart/util.d.ts +4 -1
  147. package/esm/chart/util.js +34 -1
  148. package/esm/chart/util.js.map +1 -1
  149. package/esm/chart/waterfall/waterfall-transformer.js +2 -1
  150. package/esm/chart/waterfall/waterfall-transformer.js.map +1 -1
  151. package/esm/compile/compiler.js +2 -2
  152. package/esm/compile/compiler.js.map +1 -1
  153. package/esm/compile/data/compilable-data.d.ts +1 -1
  154. package/esm/compile/data/compilable-data.js +1 -1
  155. package/esm/compile/data/compilable-data.js.map +1 -1
  156. package/esm/compile/grammar-item.d.ts +1 -1
  157. package/esm/compile/grammar-item.js.map +1 -1
  158. package/esm/compile/interface/compilable-item.d.ts +1 -1
  159. package/esm/compile/interface/compilable-item.js.map +1 -1
  160. package/esm/component/axis/base-axis.d.ts +2 -7
  161. package/esm/component/axis/base-axis.js +25 -2
  162. package/esm/component/axis/base-axis.js.map +1 -1
  163. package/esm/component/axis/cartesian/band-axis.d.ts +1 -7
  164. package/esm/component/base/base-component.d.ts +7 -7
  165. package/esm/component/base/base-component.js +41 -5
  166. package/esm/component/base/base-component.js.map +1 -1
  167. package/esm/component/base/release-vrender-component.d.ts +10 -0
  168. package/esm/component/base/release-vrender-component.js +24 -0
  169. package/esm/component/base/release-vrender-component.js.map +1 -0
  170. package/esm/component/brush/brush.d.ts +2 -7
  171. package/esm/component/brush/brush.js +3 -0
  172. package/esm/component/brush/brush.js.map +1 -1
  173. package/esm/component/crosshair/base.d.ts +1 -7
  174. package/esm/component/custom-mark/custom-mark.d.ts +1 -7
  175. package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -7
  176. package/esm/component/geo/geo-coordinate.d.ts +1 -7
  177. package/esm/component/index.js +1 -2
  178. package/esm/component/label/base-label.d.ts +1 -7
  179. package/esm/component/label/label.js +1 -1
  180. package/esm/component/label/label.js.map +1 -1
  181. package/esm/component/legend/base-legend.d.ts +2 -7
  182. package/esm/component/legend/base-legend.js +20 -2
  183. package/esm/component/legend/base-legend.js.map +1 -1
  184. package/esm/component/marker/base-marker.d.ts +7 -7
  185. package/esm/component/marker/base-marker.js +24 -5
  186. package/esm/component/marker/base-marker.js.map +1 -1
  187. package/esm/component/marker/mark-line/base-mark-line.js +2 -4
  188. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  189. package/esm/component/title/title.d.ts +1 -7
  190. package/esm/component/title/title.js +6 -2
  191. package/esm/component/title/title.js.map +1 -1
  192. package/esm/constant/attribute.js +2 -1
  193. package/esm/constant/scatter.js +1 -2
  194. package/esm/constant/waterfall.js +2 -1
  195. package/esm/core/factory.js +1 -1
  196. package/esm/core/index.js +1 -1
  197. package/esm/core/vchart.d.ts +5 -1
  198. package/esm/core/vchart.js +29 -12
  199. package/esm/core/vchart.js.map +1 -1
  200. package/esm/data/data-view-utils.d.ts +5 -0
  201. package/esm/data/data-view-utils.js +46 -0
  202. package/esm/data/data-view-utils.js.map +1 -0
  203. package/esm/env/env.js +1 -1
  204. package/esm/env/index.js +1 -1
  205. package/esm/mark/base/base-mark.d.ts +12 -2
  206. package/esm/mark/base/base-mark.js +85 -20
  207. package/esm/mark/base/base-mark.js.map +1 -1
  208. package/esm/mark/component.d.ts +9 -0
  209. package/esm/mark/component.js +51 -2
  210. package/esm/mark/component.js.map +1 -1
  211. package/esm/mark/group.js +1 -1
  212. package/esm/mark/group.js.map +1 -1
  213. package/esm/mark/interface/mark.d.ts +2 -0
  214. package/esm/mark/interface/mark.js.map +1 -1
  215. package/esm/model/base-model.d.ts +3 -15
  216. package/esm/model/base-model.js.map +1 -1
  217. package/esm/model/interface.d.ts +13 -0
  218. package/esm/model/interface.js.map +1 -1
  219. package/esm/region/region.d.ts +1 -7
  220. package/esm/series/area/area.d.ts +2 -0
  221. package/esm/series/area/area.js +7 -1
  222. package/esm/series/area/area.js.map +1 -1
  223. package/esm/series/bar/bar.d.ts +3 -0
  224. package/esm/series/bar/bar.js +30 -4
  225. package/esm/series/bar/bar.js.map +1 -1
  226. package/esm/series/base/base-series.d.ts +8 -7
  227. package/esm/series/base/base-series.js +50 -11
  228. package/esm/series/base/base-series.js.map +1 -1
  229. package/esm/series/base/constant.d.ts +3 -0
  230. package/esm/series/base/constant.js +10 -0
  231. package/esm/series/base/constant.js.map +1 -1
  232. package/esm/series/box-plot/box-plot.d.ts +2 -0
  233. package/esm/series/box-plot/box-plot.js +13 -2
  234. package/esm/series/box-plot/box-plot.js.map +1 -1
  235. package/esm/series/heatmap/heatmap.d.ts +2 -0
  236. package/esm/series/heatmap/heatmap.js +10 -0
  237. package/esm/series/heatmap/heatmap.js.map +1 -1
  238. package/esm/series/line/line.d.ts +2 -0
  239. package/esm/series/line/line.js +7 -1
  240. package/esm/series/line/line.js.map +1 -1
  241. package/esm/series/mixin/line-mixin.d.ts +1 -0
  242. package/esm/series/mixin/line-mixin.js +5 -0
  243. package/esm/series/mixin/line-mixin.js.map +1 -1
  244. package/esm/series/pie/pie.d.ts +3 -7
  245. package/esm/series/pie/pie.js +17 -0
  246. package/esm/series/pie/pie.js.map +1 -1
  247. package/esm/series/progress/circular/circular.d.ts +2 -0
  248. package/esm/series/progress/circular/circular.js +10 -0
  249. package/esm/series/progress/circular/circular.js.map +1 -1
  250. package/esm/series/progress/linear/linear.d.ts +2 -0
  251. package/esm/series/progress/linear/linear.js +18 -0
  252. package/esm/series/progress/linear/linear.js.map +1 -1
  253. package/esm/series/scatter/scatter.d.ts +2 -0
  254. package/esm/series/scatter/scatter.js +10 -0
  255. package/esm/series/scatter/scatter.js.map +1 -1
  256. package/esm/series/waterfall/waterfall.d.ts +2 -0
  257. package/esm/series/waterfall/waterfall.js +10 -0
  258. package/esm/series/waterfall/waterfall.js.map +1 -1
  259. package/esm/util/graphic-state.d.ts +1 -0
  260. package/esm/util/graphic-state.js +16 -3
  261. package/esm/util/graphic-state.js.map +1 -1
  262. package/package.json +11 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/legend/base-legend.ts"],"names":[],"mappings":"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","file":"base-legend.js","sourcesContent":["import { isNil, isEqual, isValid, array, isValidNumber } from '@visactor/vutils';\nimport type { DataView } from '@visactor/vdataset';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect } from '../../model/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILayoutRect, ILayoutType, IOrientType, IPoint, StringOrNumber } from '../../typings';\nimport { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { ChartEvent } from '../../constant/event';\nimport { eachSeries } from '../../util/model';\nimport { isValidOrient } from '../../util/space';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { CompilableData } from '../../compile/data/compilable-data';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILegend, ILegendCommonSpec } from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\n\nexport abstract class BaseLegend<T extends ILegendCommonSpec> extends BaseComponent<T> implements ILegend {\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Legend;\n layoutLevel: number = LayoutLevel.Legend;\n\n static specKey = 'legends';\n specKey = 'legends';\n\n protected _orient: IOrientType = 'left';\n get orient() {\n return this._orient;\n }\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n protected _position: 'start' | 'middle' | 'end' = 'middle';\n get position() {\n return this._position;\n }\n\n protected _legendData!: CompilableData;\n /**\n * 获取图例数据\n * @returns 图例的数据\n */\n getLegendData() {\n return this._legendData.getLatestData();\n }\n\n private _preSelectedData: StringOrNumber[] = [];\n protected _selectedData: StringOrNumber[] = [];\n /**\n * getSelectedData\n */\n getSelectedData() {\n return this._selectedData;\n }\n\n protected _legendComponent: IGroup;\n private _cacheAttrs: any;\n\n effect: IEffect = {\n onSelectedDataChange: () => {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId?: StringOrNumber[];\n protected _regionUserIndex?: number[];\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n this._orient = isValidOrient(this._spec.orient) ? this._spec.orient : 'left';\n this._position = this._spec.position ?? 'middle';\n this._visible = this._spec.visible !== false;\n\n const { regionId, regionIndex, seriesId, seriesIndex } = this._spec;\n\n isValid(seriesId) && (this._seriesUserId = array(seriesId));\n isValid(regionId) && (this._regionUserId = array(regionId));\n isValid(seriesIndex) && (this._seriesIndex = array(seriesIndex));\n isValid(regionIndex) && (this._regionUserIndex = array(regionIndex));\n this._regions = this._option.getRegionsInUserIdOrIndex(this._regionUserId, this._regionUserIndex);\n }\n\n created() {\n super.created();\n // data\n this.initData();\n }\n\n /** Update API **/\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n result.reRender = true;\n if (spec?.orient !== prevSpec?.orient) {\n result.reMake = true;\n return result;\n }\n if (!isEqual(prevSpec, spec)) {\n result.reCompile = true;\n }\n return result;\n }\n\n protected abstract _initLegendData(): DataView;\n protected abstract _initSelectedData(): void;\n protected abstract _getLegendAttributes(rect: ILayoutRect): any;\n protected abstract _getLegendConstructor(): any;\n protected abstract _initEvent(): void;\n\n private _bindLegendDataChange() {\n this._preSelectedData = this._selectedData.slice();\n this._initSelectedData();\n this._forceLayout();\n }\n\n protected initData() {\n const legendData = this._initLegendData();\n legendData.target.addListener('change', this._bindLegendDataChange.bind(this));\n this._legendData = new CompilableData(this._option, legendData);\n\n this._initSelectedData();\n eachSeries(\n this._regions,\n s => {\n s.event.on(ChartEvent.rawDataUpdate, { filter: ({ model }) => model?.id === s.id }, () => {\n this._legendData.getDataView().reRunAllTransform({\n skipEqual: true\n });\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n setSelectedData(selectedData: StringOrNumber[]) {\n const lastData = this._selectedData;\n if (isNil(selectedData) || JSON.stringify(lastData) === JSON.stringify(selectedData)) {\n return;\n }\n\n // 更新图例筛选\n eachSeries(\n this._regions,\n s => {\n if (s.legendSelectedFilter) {\n selectedData = s.legendSelectedFilter(this, selectedData);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._selectedData = [...selectedData];\n // 更新数据\n this.effect.onSelectedDataChange?.();\n this.event.emit(ChartEvent.legendSelectedDataChange, { model: this });\n\n // 更新图例样式\n (this._legendComponent as unknown as any)?.setSelected(this._selectedData);\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n super.afterSetLayoutStartPoint(pos);\n\n if (this._legendComponent) {\n const { x, y } = pos;\n if (isValidNumber(x * y)) {\n this._legendComponent.setAttributes({ x, y });\n }\n }\n }\n\n getBoundsInRect(rect: ILayoutRect, fullSpace: ILayoutRect) {\n if (!this._visible) {\n if (this._legendComponent && this._legendComponent.parent) {\n this._legendComponent.parent.removeChild(this._legendComponent);\n this._legendComponent = null;\n }\n return { x1: 0, y1: 0, x2: 0, y2: 0 };\n }\n const result = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n const attrs = this._getLegendAttributes(rect);\n attrs.disableTriggerEvent = this._option.disableTriggerEvent;\n if (this._legendComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._legendComponent.setAttributes(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData // 图表 resize 之后应该保留上次筛选的结果\n })\n );\n }\n } else {\n const legendConstructor = this._getLegendConstructor();\n const legend = new legendConstructor(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData\n })\n );\n legend.name = 'legend';\n this._legendComponent = legend;\n const container = this.getContainer();\n container.add(legend);\n\n // 绑定事件\n if (!this._option.disableTriggerEvent) {\n this._initEvent();\n }\n\n // 代理 legend 上的事件\n legend.on('*', (event: any, type: string) => this._delegateEvent(this._legendComponent, event, type));\n }\n this._cacheAttrs = attrs;\n\n const width = isFinite(this._legendComponent.AABBBounds.width()) ? this._legendComponent.AABBBounds.width() : 0;\n const height = isFinite(this._legendComponent.AABBBounds.height()) ? this._legendComponent.AABBBounds.height() : 0;\n\n if (this.layoutType !== 'normal-inline') {\n // 调整位置\n const layout = this.layoutOrient === 'bottom' || this.layoutOrient === 'top' ? 'horizontal' : 'vertical';\n const position = this._position;\n const { width: rectWidth, height: rectHeight } = fullSpace;\n let offsetX = 0;\n let offsetY = 0;\n if (layout === 'horizontal') {\n if (position === 'middle') {\n offsetX = (rectWidth - width) / 2;\n } else if (position === 'end') {\n offsetX = rectWidth - width;\n }\n } else {\n if (position === 'middle') {\n offsetY = (rectHeight - height) / 2;\n } else if (position === 'end') {\n offsetY = rectHeight - height;\n }\n }\n\n this._legendComponent.setAttributes({\n dx: offsetX,\n dy: offsetY\n });\n }\n\n result.x2 = result.x1 + width;\n result.y2 = result.y1 + height;\n return result;\n }\n\n onDataUpdate(): void {\n if (JSON.stringify(this._preSelectedData) === JSON.stringify(this._selectedData)) {\n return;\n }\n\n if (this._legendComponent) {\n // 更新组件\n const attrs = this._getLegendAttributes(this.getLayoutRect());\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._legendComponent.setAttributes(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData // 图表 resize 之后应该保留上次筛选的结果\n })\n );\n }\n }\n // 更新数据流\n this.effect.onSelectedDataChange?.();\n this.event.emit(ChartEvent.legendSelectedDataChange, { model: this });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._legendComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n this._preSelectedData = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/legend/base-legend.ts"],"names":[],"mappings":"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","file":"base-legend.js","sourcesContent":["import { isNil, isEqual, isValid, array, isValidNumber } from '@visactor/vutils';\nimport type { DataView } from '@visactor/vdataset';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect } from '../../model/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILayoutRect, ILayoutType, IOrientType, IPoint, StringOrNumber } from '../../typings';\nimport { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { ChartEvent } from '../../constant/event';\nimport { eachSeries } from '../../util/model';\nimport { isValidOrient } from '../../util/space';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { CompilableData } from '../../compile/data/compilable-data';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILegend, ILegendCommonSpec } from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\n\nconst LEGEND_COMPONENT_ONLY_CHANGE_KEYS: Record<string, true> = {\n position: true,\n item: true,\n title: true,\n pager: true,\n background: true\n};\n\nexport abstract class BaseLegend<T extends ILegendCommonSpec> extends BaseComponent<T> implements ILegend {\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Legend;\n layoutLevel: number = LayoutLevel.Legend;\n\n static specKey = 'legends';\n specKey = 'legends';\n\n protected _orient: IOrientType = 'left';\n get orient() {\n return this._orient;\n }\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n protected _position: 'start' | 'middle' | 'end' = 'middle';\n get position() {\n return this._position;\n }\n\n protected _legendData!: CompilableData;\n /**\n * 获取图例数据\n * @returns 图例的数据\n */\n getLegendData() {\n return this._legendData.getLatestData();\n }\n\n private _preSelectedData: StringOrNumber[] = [];\n protected _selectedData: StringOrNumber[] = [];\n /**\n * getSelectedData\n */\n getSelectedData() {\n return this._selectedData;\n }\n\n protected _legendComponent: IGroup;\n private _cacheAttrs: any;\n\n effect: IEffect = {\n onSelectedDataChange: () => {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId?: StringOrNumber[];\n protected _regionUserIndex?: number[];\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n this._orient = isValidOrient(this._spec.orient) ? this._spec.orient : 'left';\n this._position = this._spec.position ?? 'middle';\n this._visible = this._spec.visible !== false;\n\n const { regionId, regionIndex, seriesId, seriesIndex } = this._spec;\n\n isValid(seriesId) && (this._seriesUserId = array(seriesId));\n isValid(regionId) && (this._regionUserId = array(regionId));\n isValid(seriesIndex) && (this._seriesIndex = array(seriesIndex));\n isValid(regionIndex) && (this._regionUserIndex = array(regionIndex));\n this._regions = this._option.getRegionsInUserIdOrIndex(this._regionUserId, this._regionUserIndex);\n }\n\n created() {\n super.created();\n // data\n this.initData();\n }\n\n /** Update API **/\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n result.reRender = true;\n const specChanged = !isEqual(prevSpec, spec);\n\n if (result.reMake) {\n return result;\n }\n if (spec?.orient !== prevSpec?.orient) {\n result.reMake = true;\n return result;\n }\n if (specChanged && !result.reCompile && this._isComponentOnlySpecChange(spec, prevSpec)) {\n result.effects = {\n ...result.effects,\n component: true,\n layout: true,\n render: true\n };\n return result;\n }\n if (specChanged) {\n result.reCompile = true;\n }\n return result;\n }\n\n private _isComponentOnlySpecChange(spec: T, prevSpec: T) {\n const prevSpecRecord = prevSpec as unknown as Record<string, unknown>;\n const specRecord = spec as unknown as Record<string, unknown>;\n const keys = Object.keys({\n ...prevSpec,\n ...spec\n });\n\n return keys.every(key => {\n return isEqual(prevSpecRecord?.[key], specRecord?.[key]) || LEGEND_COMPONENT_ONLY_CHANGE_KEYS[key];\n });\n }\n\n protected abstract _initLegendData(): DataView;\n protected abstract _initSelectedData(): void;\n protected abstract _getLegendAttributes(rect: ILayoutRect): any;\n protected abstract _getLegendConstructor(): any;\n protected abstract _initEvent(): void;\n\n private _bindLegendDataChange() {\n this._preSelectedData = this._selectedData.slice();\n this._initSelectedData();\n this._forceLayout();\n }\n\n protected initData() {\n const legendData = this._initLegendData();\n legendData.target.addListener('change', this._bindLegendDataChange.bind(this));\n this._legendData = new CompilableData(this._option, legendData);\n\n this._initSelectedData();\n eachSeries(\n this._regions,\n s => {\n s.event.on(ChartEvent.rawDataUpdate, { filter: ({ model }) => model?.id === s.id }, () => {\n this._legendData.getDataView().reRunAllTransform({\n skipEqual: true\n });\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n setSelectedData(selectedData: StringOrNumber[]) {\n const lastData = this._selectedData;\n if (isNil(selectedData) || JSON.stringify(lastData) === JSON.stringify(selectedData)) {\n return;\n }\n\n // 更新图例筛选\n eachSeries(\n this._regions,\n s => {\n if (s.legendSelectedFilter) {\n selectedData = s.legendSelectedFilter(this, selectedData);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._selectedData = [...selectedData];\n // 更新数据\n this.effect.onSelectedDataChange?.();\n this.event.emit(ChartEvent.legendSelectedDataChange, { model: this });\n\n // 更新图例样式\n (this._legendComponent as unknown as any)?.setSelected(this._selectedData);\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n super.afterSetLayoutStartPoint(pos);\n\n if (this._legendComponent) {\n const { x, y } = pos;\n if (isValidNumber(x * y)) {\n this._legendComponent.setAttributes({ x, y });\n }\n }\n }\n\n getBoundsInRect(rect: ILayoutRect, fullSpace: ILayoutRect) {\n if (!this._visible) {\n if (this._legendComponent && this._legendComponent.parent) {\n this._legendComponent.parent.removeChild(this._legendComponent);\n this._legendComponent = null;\n }\n return { x1: 0, y1: 0, x2: 0, y2: 0 };\n }\n const result = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n const attrs = this._getLegendAttributes(rect);\n attrs.disableTriggerEvent = this._option.disableTriggerEvent;\n if (this._legendComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._legendComponent.setAttributes(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData // 图表 resize 之后应该保留上次筛选的结果\n })\n );\n }\n } else {\n const legendConstructor = this._getLegendConstructor();\n const legend = new legendConstructor(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData\n })\n );\n legend.name = 'legend';\n this._legendComponent = legend;\n const container = this.getContainer();\n container.add(legend);\n\n // 绑定事件\n if (!this._option.disableTriggerEvent) {\n this._initEvent();\n }\n\n // 代理 legend 上的事件\n legend.on('*', (event: any, type: string) => this._delegateEvent(this._legendComponent, event, type));\n }\n this._cacheAttrs = attrs;\n\n const width = isFinite(this._legendComponent.AABBBounds.width()) ? this._legendComponent.AABBBounds.width() : 0;\n const height = isFinite(this._legendComponent.AABBBounds.height()) ? this._legendComponent.AABBBounds.height() : 0;\n\n if (this.layoutType !== 'normal-inline') {\n // 调整位置\n const layout = this.layoutOrient === 'bottom' || this.layoutOrient === 'top' ? 'horizontal' : 'vertical';\n const position = this._position;\n const { width: rectWidth, height: rectHeight } = fullSpace;\n let offsetX = 0;\n let offsetY = 0;\n if (layout === 'horizontal') {\n if (position === 'middle') {\n offsetX = (rectWidth - width) / 2;\n } else if (position === 'end') {\n offsetX = rectWidth - width;\n }\n } else {\n if (position === 'middle') {\n offsetY = (rectHeight - height) / 2;\n } else if (position === 'end') {\n offsetY = rectHeight - height;\n }\n }\n\n this._legendComponent.setAttributes({\n dx: offsetX,\n dy: offsetY\n });\n }\n\n result.x2 = result.x1 + width;\n result.y2 = result.y1 + height;\n return result;\n }\n\n onDataUpdate(): void {\n if (JSON.stringify(this._preSelectedData) === JSON.stringify(this._selectedData)) {\n return;\n }\n\n if (this._legendComponent) {\n // 更新组件\n const attrs = this._getLegendAttributes(this.getLayoutRect());\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._legendComponent.setAttributes(\n mergeSpec({}, attrs, {\n defaultSelected: this._selectedData // 图表 resize 之后应该保留上次筛选的结果\n })\n );\n }\n }\n // 更新数据流\n this.effect.onSelectedDataChange?.();\n this.event.emit(ChartEvent.legendSelectedDataChange, { model: this });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._legendComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n this._preSelectedData = null;\n }\n}\n"]}
@@ -19,6 +19,8 @@ export declare abstract class BaseMarker<T extends IMarkerSpec> extends BaseComp
19
19
  getRelativeSeries(): IMarkerSupportSeries;
20
20
  protected _markerData: DataView;
21
21
  getMarkerData(): DataView;
22
+ private _markerDataChangeHandler;
23
+ private _markerDataOwned;
22
24
  protected _markerComponent: any;
23
25
  protected _layoutOffsetX: number;
24
26
  protected _layoutOffsetY: number;
@@ -49,20 +51,18 @@ export declare abstract class BaseMarker<T extends IMarkerSpec> extends BaseComp
49
51
  };
50
52
  protected _processSpecCoo(spec: any): IOptionWithCoordinates;
51
53
  protected _getRelativeDataView(): DataView;
54
+ protected _setMarkerData(data: DataView, owned?: boolean): void;
55
+ protected _bindMarkerDataChange(): void;
56
+ private _releaseMarkerData;
52
57
  updateLayoutAttribute(): void;
53
58
  private _getSeriesByIdOrIndex;
54
59
  protected _bindSeries(): void;
55
60
  protected initEvent(): void;
56
61
  clear(): void;
62
+ release(): void;
57
63
  private _getFirstSeries;
58
64
  protected _getNeedClearVRenderComponents(): IGraphic[];
59
65
  onLayoutStart(layoutRect: IRect, chartViewRect: ILayoutRect): void;
60
- _compareSpec(spec: T, prevSpec: T): {
61
- change: boolean;
62
- reMake: boolean;
63
- reRender: boolean;
64
- reSize: boolean;
65
- reCompile: boolean;
66
- };
66
+ _compareSpec(spec: T, prevSpec: T): import("../../model/interface").IUpdateSpecResult;
67
67
  _initCommonDataView(): void;
68
68
  }
@@ -4,11 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.BaseMarker = void 0;
6
6
 
7
- const vdataset_1 = require("@visactor/vdataset"), vutils_1 = require("@visactor/vutils"), base_component_1 = require("../base/base-component"), space_1 = require("../../util/space"), utils_1 = require("./utils"), util_1 = require("../../util"), array_1 = require("../../data/parser/array"), util_2 = require("../util"), register_1 = require("../../data/register"), aggregation_1 = require("../../data/transforms/aggregation"), marker_filter_1 = require("../../data/transforms/marker-filter");
7
+ const vdataset_1 = require("@visactor/vdataset"), vutils_1 = require("@visactor/vutils"), base_component_1 = require("../base/base-component"), space_1 = require("../../util/space"), utils_1 = require("./utils"), util_1 = require("../../util"), array_1 = require("../../data/parser/array"), util_2 = require("../util"), register_1 = require("../../data/register"), aggregation_1 = require("../../data/transforms/aggregation"), marker_filter_1 = require("../../data/transforms/marker-filter"), data_view_utils_1 = require("../../data/data-view-utils");
8
8
 
9
9
  class BaseMarker extends base_component_1.BaseComponent {
10
10
  constructor() {
11
- super(...arguments), this.layoutType = "none", this._layoutOffsetX = 0, this._layoutOffsetY = 0;
11
+ super(...arguments), this.layoutType = "none", this._markerDataChangeHandler = null,
12
+ this._markerDataOwned = !1, this._layoutOffsetX = 0, this._layoutOffsetY = 0;
12
13
  }
13
14
  getRelativeSeries() {
14
15
  return this._relativeSeries;
@@ -82,6 +83,21 @@ class BaseMarker extends base_component_1.BaseComponent {
82
83
  }
83
84
  return this._relativeSeries.getViewData();
84
85
  }
86
+ _setMarkerData(data, owned = !1) {
87
+ this._releaseMarkerData(), this._markerData = data, this._markerDataOwned = owned;
88
+ }
89
+ _bindMarkerDataChange() {
90
+ var _a;
91
+ (null === (_a = this._markerData) || void 0 === _a ? void 0 : _a.target) && (this._markerDataChangeHandler = () => {
92
+ this._markerLayout();
93
+ }, this._markerData.target.on("change", this._markerDataChangeHandler));
94
+ }
95
+ _releaseMarkerData() {
96
+ const markerData = this._markerData;
97
+ (null == markerData ? void 0 : markerData.target) && this._markerDataChangeHandler && markerData.target.removeListener("change", this._markerDataChangeHandler),
98
+ this._markerDataChangeHandler = null, this._markerDataOwned && (0, data_view_utils_1.releaseDataViewWithDependencies)(markerData, (dataView => dataView.name === `${this.type}_${this.id}_data`)),
99
+ this._markerData = null, this._markerDataOwned = !1;
100
+ }
85
101
  updateLayoutAttribute() {
86
102
  var _a, _b, _c;
87
103
  if (null === (_a = this._spec.visible) || void 0 === _a || _a) {
@@ -117,7 +133,10 @@ class BaseMarker extends base_component_1.BaseComponent {
117
133
  this._relativeSeries.event.on("panmove", this._markerLayout.bind(this)), this._relativeSeries.event.on("scroll", this._markerLayout.bind(this)));
118
134
  }
119
135
  clear() {
120
- super.clear(), this._firstSeries = null;
136
+ super.clear(), this._markerComponent = null, this._firstSeries = null;
137
+ }
138
+ release() {
139
+ this._releaseMarkerData(), super.release();
121
140
  }
122
141
  _getFirstSeries() {
123
142
  var _a;
@@ -154,9 +173,7 @@ class BaseMarker extends base_component_1.BaseComponent {
154
173
  }), data.transform({
155
174
  type: "markerFilter",
156
175
  options: this._getAllRelativeSeries()
157
- }), data.target.on("change", (() => {
158
- this._markerLayout();
159
- })), this._markerData = data;
176
+ }), this._setMarkerData(data, !0), this._bindMarkerDataChange();
160
177
  }
161
178
  }
162
179
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/base-marker.ts"],"names":[],"mappings":"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","file":"base-marker.js","sourcesContent":["import { DataSet, DataView } from '@visactor/vdataset';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isValid, isNil, isString, isEqual } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { CoordinateType, ILayoutRect, ILayoutType, IRect, StringOrNumber } from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type {\n IAggrType,\n IDataPos,\n IDataPosCallback,\n IMarkerAttributeContext,\n IMarkerSpec,\n IMarkerSupportSeries,\n IMarkProcessOptions\n} from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { calcLayoutNumber } from '../../util/space';\nimport { isAggrSpec } from './utils';\nimport { getFirstSeries } from '../../util';\nimport { arrayParser } from '../../data/parser/array';\nimport { getSpecInfo } from '../util';\nimport type { IOptionWithCoordinates } from '../../data/transforms/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { markerAggregation } from '../../data/transforms/aggregation';\nimport { markerFilter } from '../../data/transforms/marker-filter';\n\nexport abstract class BaseMarker<T extends IMarkerSpec> extends BaseComponent<T> {\n layoutType: ILayoutType | 'none' = 'none';\n\n // 下面三个属性需要子组件复写\n static specKey: string;\n static type: string;\n static coordinateType: string;\n coordinateType: CoordinateType;\n\n protected _startRelativeSeries!: IMarkerSupportSeries;\n protected _endRelativeSeries!: IMarkerSupportSeries;\n protected _relativeSeries!: IMarkerSupportSeries;\n protected _specifiedDataSeries!: IMarkerSupportSeries | IMarkerSupportSeries[];\n getRelativeSeries() {\n return this._relativeSeries;\n }\n\n // marker 组件数据\n protected _markerData!: DataView;\n getMarkerData() {\n return this._markerData;\n }\n // marker 组件\n protected _markerComponent!: any;\n\n protected _layoutOffsetX: number = 0;\n protected _layoutOffsetY: number = 0;\n\n private _firstSeries: ICartesianSeries;\n\n protected abstract _initDataView(): void;\n protected abstract _createMarkerComponent(): IGroup;\n protected abstract _markerLayout(): void;\n protected abstract _computeOptions(): IMarkProcessOptions;\n // 该方法需要子组件复写\n static _getMarkerCoordinateType(markerSpec: any): string {\n return 'cartesian';\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IMarkerSpec>(chartSpec, this.specKey, this.type, (s: IMarkerSpec) => {\n return s.visible !== false && this._getMarkerCoordinateType(s) === this.coordinateType;\n });\n }\n\n protected _markAttributeContext: IMarkerAttributeContext;\n getMarkAttributeContext() {\n return this._markAttributeContext;\n }\n\n protected _buildMarkerAttributeContext() {\n this._markAttributeContext = {\n relativeSeries: this._relativeSeries,\n startRelativeSeries: this._startRelativeSeries,\n endRelativeSeries: this._endRelativeSeries,\n vchart: this._option.globalInstance\n };\n }\n\n created() {\n super.created();\n this._bindSeries();\n this._initDataView();\n this.initEvent();\n this._buildMarkerAttributeContext();\n }\n\n protected _getAllRelativeSeries() {\n return {\n getRelativeSeries: () => this._relativeSeries,\n getStartRelativeSeries: () => this._startRelativeSeries,\n getEndRelativeSeries: () => this._endRelativeSeries\n };\n }\n\n private _getFieldInfoFromSpec(\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName',\n spec: IDataPos | IDataPosCallback,\n relativeSeries: IMarkerSupportSeries\n ) {\n const specKeyByDim = {\n x: 'xField',\n y: 'yField',\n radius: 'valueField',\n angle: 'categoryField',\n areaName: 'nameField'\n };\n\n if (isString(spec) && isAggrSpec(spec)) {\n return {\n field: relativeSeries.getSpec()[specKeyByDim[dim]],\n aggrType: spec as unknown as IAggrType\n };\n }\n return spec;\n }\n\n protected _processSpecByDims(\n dimSpec: {\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName';\n specValue: IDataPos | IDataPosCallback;\n }[]\n ) {\n const relativeSeries = this._relativeSeries;\n const dimMap = {};\n dimSpec.forEach(d => (dimMap[d.dim] = this._getFieldInfoFromSpec(d.dim, d.specValue, relativeSeries)));\n return {\n ...dimMap,\n ...this._getAllRelativeSeries()\n };\n }\n\n protected _processSpecCoo(spec: any): IOptionWithCoordinates {\n return {\n coordinates: spec.coordinates || spec.coordinate,\n ...this._getAllRelativeSeries(),\n getSeriesByIdOrIndex: (seriesUserId: StringOrNumber, seriesIndex: number) =>\n this._getSeriesByIdOrIndex(seriesUserId, seriesIndex),\n coordinateType: this.coordinateType\n };\n }\n\n protected _getRelativeDataView() {\n if (this._specifiedDataSeries) {\n let resultData: any[] = [];\n array(this._specifiedDataSeries).forEach(series => {\n resultData = resultData.concat(series.getViewData().latestData);\n });\n const dataSet = new DataSet();\n dataSet.registerParser('array', arrayParser);\n return new DataView(dataSet).parse(resultData, { type: 'array' });\n }\n return this._relativeSeries.getViewData();\n }\n\n updateLayoutAttribute(): void {\n const markerVisible = this._spec.visible ?? true;\n if (markerVisible) {\n // 创建marker组件\n if (!this._markerComponent) {\n const markerComponent = this._createMarkerComponent();\n markerComponent.name = this._spec.name ?? this.type;\n markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this._markerComponent = markerComponent;\n\n this.getContainer().add(this._markerComponent);\n // 代理 marker 组件上的事件\n this._markerComponent.on('*', (event: any, type: string) => {\n this._delegateEvent(\n this._markerComponent as unknown as IGraphic,\n event,\n type,\n null,\n this.getMarkerData.bind(this)\n );\n });\n }\n this._markerLayout();\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getSeriesByIdOrIndex(seriesUserId: StringOrNumber, seriesIndex: number) {\n let series: IMarkerSupportSeries;\n series = this._option.getSeriesInUserIdOrIndex(isValid(seriesUserId) ? [seriesUserId] : [], [\n seriesIndex\n ])?.[0] as IMarkerSupportSeries;\n if (!series) {\n series = this._relativeSeries ?? this._getFirstSeries();\n }\n return series;\n }\n\n protected _bindSeries() {\n const spec: any = this._spec;\n this._relativeSeries = this._getSeriesByIdOrIndex(spec.relativeSeriesId, spec.relativeSeriesIndex);\n this._startRelativeSeries = this._getSeriesByIdOrIndex(spec.startRelativeSeriesId, spec.startRelativeSeriesIndex);\n this._endRelativeSeries = this._getSeriesByIdOrIndex(spec.endRelativeSeriesId, spec.endRelativeSeriesIndex);\n if (\n (spec.specifiedDataSeriesIndex && spec.specifiedDataSeriesIndex === 'all') ||\n (spec.specifiedDataSeriesId && spec.specifiedDataSeriesId === 'all')\n ) {\n this._specifiedDataSeries = this._option.getAllSeries() as IMarkerSupportSeries[];\n } else if (spec.specifiedDataSeriesIndex || spec.specifiedDataSeriesId) {\n this._specifiedDataSeries = this._getSeriesByIdOrIndex(spec.specifiedDataSeriesId, spec.specifiedDataSeriesIndex);\n }\n }\n\n protected initEvent() {\n // 在极坐标系/地理坐标系中, 滚动或缩放画布不会update layout, 所以需要通过事件监听来更新标注的位置\n // 在直角坐标系中, update layout中已经更新标注位置, 在这里不需要重复监听\n if (this._relativeSeries.coordinate !== 'cartesian') {\n this._relativeSeries.event.on('zoom', this._markerLayout.bind(this));\n this._relativeSeries.event.on('panmove', this._markerLayout.bind(this));\n this._relativeSeries.event.on('scroll', this._markerLayout.bind(this));\n }\n }\n\n clear(): void {\n super.clear();\n this._firstSeries = null;\n }\n\n private _getFirstSeries(): ICartesianSeries {\n if (this._firstSeries) {\n return this._firstSeries;\n }\n const firstSeries = getFirstSeries(this._regions) as ICartesianSeries;\n if (firstSeries) {\n this._firstSeries = firstSeries;\n return firstSeries;\n }\n this._option?.onError('need at least one series');\n return null;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._markerComponent] as unknown as IGroup[];\n }\n\n onLayoutStart(layoutRect: IRect, chartViewRect: ILayoutRect): void {\n // offset\n if (!isNil(this._spec.offsetX)) {\n this._layoutOffsetX = calcLayoutNumber(this._spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(this._spec.offsetY)) {\n this._layoutOffsetY = calcLayoutNumber(this._spec.offsetY, chartViewRect.height, chartViewRect);\n }\n super.onLayoutStart(layoutRect, chartViewRect);\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n result.change = true;\n }\n return result;\n }\n\n _initCommonDataView() {\n const { options } = this._computeOptions();\n\n const seriesData = this._getRelativeDataView();\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n const data = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` });\n data.parse([seriesData], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/base-marker.ts"],"names":[],"mappings":"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","file":"base-marker.js","sourcesContent":["import { DataSet, DataView } from '@visactor/vdataset';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isValid, isNil, isString, isEqual } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { CoordinateType, ILayoutRect, ILayoutType, IRect, StringOrNumber } from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type {\n IAggrType,\n IDataPos,\n IDataPosCallback,\n IMarkerAttributeContext,\n IMarkerSpec,\n IMarkerSupportSeries,\n IMarkProcessOptions\n} from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { calcLayoutNumber } from '../../util/space';\nimport { isAggrSpec } from './utils';\nimport { getFirstSeries } from '../../util';\nimport { arrayParser } from '../../data/parser/array';\nimport { getSpecInfo } from '../util';\nimport type { IOptionWithCoordinates } from '../../data/transforms/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { markerAggregation } from '../../data/transforms/aggregation';\nimport { markerFilter } from '../../data/transforms/marker-filter';\nimport { releaseDataViewWithDependencies } from '../../data/data-view-utils';\n\nexport abstract class BaseMarker<T extends IMarkerSpec> extends BaseComponent<T> {\n layoutType: ILayoutType | 'none' = 'none';\n\n // 下面三个属性需要子组件复写\n static specKey: string;\n static type: string;\n static coordinateType: string;\n coordinateType: CoordinateType;\n\n protected _startRelativeSeries!: IMarkerSupportSeries;\n protected _endRelativeSeries!: IMarkerSupportSeries;\n protected _relativeSeries!: IMarkerSupportSeries;\n protected _specifiedDataSeries!: IMarkerSupportSeries | IMarkerSupportSeries[];\n getRelativeSeries() {\n return this._relativeSeries;\n }\n\n // marker 组件数据\n protected _markerData!: DataView;\n getMarkerData() {\n return this._markerData;\n }\n private _markerDataChangeHandler: (() => void) | null = null;\n private _markerDataOwned: boolean = false;\n // marker 组件\n protected _markerComponent!: any;\n\n protected _layoutOffsetX: number = 0;\n protected _layoutOffsetY: number = 0;\n\n private _firstSeries: ICartesianSeries;\n\n protected abstract _initDataView(): void;\n protected abstract _createMarkerComponent(): IGroup;\n protected abstract _markerLayout(): void;\n protected abstract _computeOptions(): IMarkProcessOptions;\n // 该方法需要子组件复写\n static _getMarkerCoordinateType(markerSpec: any): string {\n return 'cartesian';\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IMarkerSpec>(chartSpec, this.specKey, this.type, (s: IMarkerSpec) => {\n return s.visible !== false && this._getMarkerCoordinateType(s) === this.coordinateType;\n });\n }\n\n protected _markAttributeContext: IMarkerAttributeContext;\n getMarkAttributeContext() {\n return this._markAttributeContext;\n }\n\n protected _buildMarkerAttributeContext() {\n this._markAttributeContext = {\n relativeSeries: this._relativeSeries,\n startRelativeSeries: this._startRelativeSeries,\n endRelativeSeries: this._endRelativeSeries,\n vchart: this._option.globalInstance\n };\n }\n\n created() {\n super.created();\n this._bindSeries();\n this._initDataView();\n this.initEvent();\n this._buildMarkerAttributeContext();\n }\n\n protected _getAllRelativeSeries() {\n return {\n getRelativeSeries: () => this._relativeSeries,\n getStartRelativeSeries: () => this._startRelativeSeries,\n getEndRelativeSeries: () => this._endRelativeSeries\n };\n }\n\n private _getFieldInfoFromSpec(\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName',\n spec: IDataPos | IDataPosCallback,\n relativeSeries: IMarkerSupportSeries\n ) {\n const specKeyByDim = {\n x: 'xField',\n y: 'yField',\n radius: 'valueField',\n angle: 'categoryField',\n areaName: 'nameField'\n };\n\n if (isString(spec) && isAggrSpec(spec)) {\n return {\n field: relativeSeries.getSpec()[specKeyByDim[dim]],\n aggrType: spec as unknown as IAggrType\n };\n }\n return spec;\n }\n\n protected _processSpecByDims(\n dimSpec: {\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName';\n specValue: IDataPos | IDataPosCallback;\n }[]\n ) {\n const relativeSeries = this._relativeSeries;\n const dimMap = {};\n dimSpec.forEach(d => (dimMap[d.dim] = this._getFieldInfoFromSpec(d.dim, d.specValue, relativeSeries)));\n return {\n ...dimMap,\n ...this._getAllRelativeSeries()\n };\n }\n\n protected _processSpecCoo(spec: any): IOptionWithCoordinates {\n return {\n coordinates: spec.coordinates || spec.coordinate,\n ...this._getAllRelativeSeries(),\n getSeriesByIdOrIndex: (seriesUserId: StringOrNumber, seriesIndex: number) =>\n this._getSeriesByIdOrIndex(seriesUserId, seriesIndex),\n coordinateType: this.coordinateType\n };\n }\n\n protected _getRelativeDataView() {\n if (this._specifiedDataSeries) {\n let resultData: any[] = [];\n array(this._specifiedDataSeries).forEach(series => {\n resultData = resultData.concat(series.getViewData().latestData);\n });\n const dataSet = new DataSet();\n dataSet.registerParser('array', arrayParser);\n return new DataView(dataSet).parse(resultData, { type: 'array' });\n }\n return this._relativeSeries.getViewData();\n }\n\n protected _setMarkerData(data: DataView, owned: boolean = false) {\n this._releaseMarkerData();\n this._markerData = data;\n this._markerDataOwned = owned;\n }\n\n protected _bindMarkerDataChange() {\n if (!this._markerData?.target) {\n return;\n }\n\n this._markerDataChangeHandler = () => {\n this._markerLayout();\n };\n this._markerData.target.on('change', this._markerDataChangeHandler);\n }\n\n private _releaseMarkerData() {\n const markerData = this._markerData;\n\n if (markerData?.target && this._markerDataChangeHandler) {\n markerData.target.removeListener('change', this._markerDataChangeHandler);\n }\n this._markerDataChangeHandler = null;\n\n if (this._markerDataOwned) {\n releaseDataViewWithDependencies(markerData, dataView => dataView.name === `${this.type}_${this.id}_data`);\n }\n this._markerData = null as unknown as DataView;\n this._markerDataOwned = false;\n }\n\n updateLayoutAttribute(): void {\n const markerVisible = this._spec.visible ?? true;\n if (markerVisible) {\n // 创建marker组件\n if (!this._markerComponent) {\n const markerComponent = this._createMarkerComponent();\n markerComponent.name = this._spec.name ?? this.type;\n markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this._markerComponent = markerComponent;\n\n this.getContainer().add(this._markerComponent);\n // 代理 marker 组件上的事件\n this._markerComponent.on('*', (event: any, type: string) => {\n this._delegateEvent(\n this._markerComponent as unknown as IGraphic,\n event,\n type,\n null,\n this.getMarkerData.bind(this)\n );\n });\n }\n this._markerLayout();\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getSeriesByIdOrIndex(seriesUserId: StringOrNumber, seriesIndex: number) {\n let series: IMarkerSupportSeries;\n series = this._option.getSeriesInUserIdOrIndex(isValid(seriesUserId) ? [seriesUserId] : [], [\n seriesIndex\n ])?.[0] as IMarkerSupportSeries;\n if (!series) {\n series = this._relativeSeries ?? this._getFirstSeries();\n }\n return series;\n }\n\n protected _bindSeries() {\n const spec: any = this._spec;\n this._relativeSeries = this._getSeriesByIdOrIndex(spec.relativeSeriesId, spec.relativeSeriesIndex);\n this._startRelativeSeries = this._getSeriesByIdOrIndex(spec.startRelativeSeriesId, spec.startRelativeSeriesIndex);\n this._endRelativeSeries = this._getSeriesByIdOrIndex(spec.endRelativeSeriesId, spec.endRelativeSeriesIndex);\n if (\n (spec.specifiedDataSeriesIndex && spec.specifiedDataSeriesIndex === 'all') ||\n (spec.specifiedDataSeriesId && spec.specifiedDataSeriesId === 'all')\n ) {\n this._specifiedDataSeries = this._option.getAllSeries() as IMarkerSupportSeries[];\n } else if (spec.specifiedDataSeriesIndex || spec.specifiedDataSeriesId) {\n this._specifiedDataSeries = this._getSeriesByIdOrIndex(spec.specifiedDataSeriesId, spec.specifiedDataSeriesIndex);\n }\n }\n\n protected initEvent() {\n // 在极坐标系/地理坐标系中, 滚动或缩放画布不会update layout, 所以需要通过事件监听来更新标注的位置\n // 在直角坐标系中, update layout中已经更新标注位置, 在这里不需要重复监听\n if (this._relativeSeries.coordinate !== 'cartesian') {\n this._relativeSeries.event.on('zoom', this._markerLayout.bind(this));\n this._relativeSeries.event.on('panmove', this._markerLayout.bind(this));\n this._relativeSeries.event.on('scroll', this._markerLayout.bind(this));\n }\n }\n\n clear(): void {\n super.clear();\n this._markerComponent = null;\n this._firstSeries = null;\n }\n\n release(): void {\n this._releaseMarkerData();\n super.release();\n }\n\n private _getFirstSeries(): ICartesianSeries {\n if (this._firstSeries) {\n return this._firstSeries;\n }\n const firstSeries = getFirstSeries(this._regions) as ICartesianSeries;\n if (firstSeries) {\n this._firstSeries = firstSeries;\n return firstSeries;\n }\n this._option?.onError('need at least one series');\n return null;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._markerComponent] as unknown as IGroup[];\n }\n\n onLayoutStart(layoutRect: IRect, chartViewRect: ILayoutRect): void {\n // offset\n if (!isNil(this._spec.offsetX)) {\n this._layoutOffsetX = calcLayoutNumber(this._spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(this._spec.offsetY)) {\n this._layoutOffsetY = calcLayoutNumber(this._spec.offsetY, chartViewRect.height, chartViewRect);\n }\n super.onLayoutStart(layoutRect, chartViewRect);\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n result.change = true;\n }\n return result;\n }\n\n _initCommonDataView() {\n const { options } = this._computeOptions();\n\n const seriesData = this._getRelativeDataView();\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n const data = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` });\n data.parse([seriesData], {\n type: 'dataview'\n });\n data.transform({\n type: 'markerAggregation',\n options\n });\n\n data.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\n });\n\n this._setMarkerData(data, true);\n this._bindMarkerDataChange();\n }\n}\n"]}
@@ -106,7 +106,7 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
106
106
  _initDataView() {
107
107
  const spec = this._spec, isCoordinateProcess = "coordinates" in spec, {doXProcess: doXProcess, doYProcess: doYProcess, doXYY1Process: doXYY1Process, doYXX1Process: doYXX1Process, doXYProcess: doXYProcess, doAngleProcess: doAngleProcess, doRadiusProcess: doRadiusProcess, doAngRadRad1Process: doAngRadRad1Process, doRadAngAng1Process: doRadAngAng1Process, doRadAngProcess: doRadAngProcess} = (0,
108
108
  utils_1.getMarkLineProcessInfo)(spec);
109
- if (this._markerData = this._getRelativeDataView(), !(doXProcess || doYProcess || doXYY1Process || doYXX1Process || doXYProcess || doAngleProcess || doRadiusProcess || doAngRadRad1Process || doRadAngAng1Process || doRadAngProcess || isCoordinateProcess)) return;
109
+ if (this._setMarkerData(this._getRelativeDataView()), !(doXProcess || doYProcess || doXYY1Process || doYXX1Process || doXYProcess || doAngleProcess || doRadiusProcess || doAngRadRad1Process || doRadAngAng1Process || doRadAngProcess || isCoordinateProcess)) return;
110
110
  (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerAggregation", aggregation_1.markerAggregation),
111
111
  (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerRegression", regression_1.markerRegression),
112
112
  (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "markerFilter", marker_filter_1.markerFilter);
@@ -122,9 +122,7 @@ class BaseMarkLine extends base_marker_1.BaseMarker {
122
122
  }), data.transform({
123
123
  type: "markerFilter",
124
124
  options: this._getAllRelativeSeries()
125
- }), data.target.on("change", (() => {
126
- this._markerLayout();
127
- })), this._markerData = data;
125
+ }), this._setMarkerData(data, !0), this._bindMarkerDataChange();
128
126
  }
129
127
  }
130
128
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/base-mark-line.ts"],"names":[],"mappings":"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","file":"base-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkLine, IMarkLineSpec } from './interface';\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkLineProcessInfo\n} from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport type { MarkArcLineAttrs, MarkLineAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLine as MarkLineComponent, MarkArcLine as MarkArcLineComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IMarkerSymbol } from '../interface';\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport { markerFilter } from '../../../data/transforms/marker-filter';\nimport { array } from '@visactor/vutils';\n\nexport abstract class BaseMarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {\n static specKey = 'markLine';\n specKey = 'markLine';\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkLineComponent(\n attr: MarkLineAttrs | MarkArcLineAttrs\n ): MarkLineComponent | MarkArcLineComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doAngRadRad1Process, doRadAngAng1Process, doRadAngProcess } =\n getMarkLineProcessInfo(markerSpec);\n\n if (\n markerSpec.coordinateType === 'polar' ||\n doAngleProcess ||\n doRadiusProcess ||\n doAngRadRad1Process ||\n doRadAngAng1Process ||\n doRadAngProcess\n ) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const { startSymbol = {} as IMarkerSymbol, endSymbol = {} as IMarkerSymbol } = this._spec as IMarkLineSpec;\n const label = array(this._spec.label ?? {});\n\n const markLineAttrs: MarkLineAttrs | MarkArcLineAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ],\n center: {\n x: 0,\n y: 0\n },\n radius: 0,\n startAngle: 0,\n endAngle: 0,\n lineStyle: transformStyle(\n transformToGraphic(this._spec.line?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: label.map(labelItem => {\n return transformLabelAttributes(labelItem, this._markerData, this._markAttributeContext);\n }),\n state: {\n line: transformState(this._spec.line?.state ?? {}, this._markerData, this._markAttributeContext),\n lineStartSymbol: transformState(\n this._spec.startSymbol?.state ?? {},\n this._markerData,\n this._markAttributeContext\n ),\n lineEndSymbol: transformState(this._spec.endSymbol?.state ?? {}, this._markerData, this._markAttributeContext),\n label: label.map(labelItem => {\n return transformState(labelItem.state ?? {}, this._markerData, this._markAttributeContext);\n }),\n labelBackground: label.map(labelItem => {\n return transformState(labelItem.labelBackground?.state ?? {}, this._markerData, this._markAttributeContext);\n })\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n if (startSymbol.visible) {\n markLineAttrs.startSymbol = {\n ...startSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(startSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.startSymbol = {\n visible: false\n };\n }\n\n if (endSymbol.visible) {\n markLineAttrs.endSymbol = {\n ...endSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(endSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.endSymbol = {\n visible: false\n };\n }\n const markLine = this._newMarkLineComponent(markLineAttrs);\n return markLine as unknown as IGroup;\n }\n\n protected _getUpdateMarkerAttrs() {\n const spec = this._spec;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const pointsAttr = this._computePointsAttr();\n\n const seriesData = relativeSeries.getViewData().latestData;\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n let limitRect;\n if (spec.clip || array(spec.label).some(labelCfg => labelCfg?.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 const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const prevLabelAttrs = array(markerComponentAttr.label);\n const specLabels = array(this._spec.label);\n\n const labelAttrs = prevLabelAttrs.map((prevLabel, index) => {\n const specLabel = specLabels[index] || {};\n return {\n ...prevLabel,\n text: specLabel.formatMethod ? (specLabel.formatMethod(dataPoints, seriesData) as any) : prevLabel?.text\n };\n });\n return {\n ...pointsAttr,\n label: labelAttrs as MarkLineComponent['attribute']['label'],\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n this._markerComponent?.setAttributes(updateAttrs);\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const isCoordinateProcess = 'coordinates' in spec;\n\n const {\n doXProcess,\n doYProcess,\n doXYY1Process,\n doYXX1Process,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doAngRadRad1Process,\n doRadAngAng1Process,\n doRadAngProcess\n } = getMarkLineProcessInfo(spec);\n this._markerData = this._getRelativeDataView();\n\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYY1Process &&\n !doYXX1Process &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doAngRadRad1Process &&\n !doRadAngAng1Process &&\n !doRadAngProcess &&\n !isCoordinateProcess\n ) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n\n const { options, needAggr, needRegr, processData } = this._computeOptions();\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.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\n });\n\n data.target.on('change', () => {\n this._markerLayout();\n });\n this._markerData = data;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-line/base-mark-line.ts"],"names":[],"mappings":"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","file":"base-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IMarkLine, IMarkLineSpec } from './interface';\nimport { markerAggregation } from '../../../data/transforms/aggregation';\nimport {\n computeClipRange,\n transformLabelAttributes,\n transformState,\n transformStyle,\n getMarkLineProcessInfo\n} from '../utils';\nimport { registerDataSetInstanceTransform } from '../../../data/register';\nimport type { MarkArcLineAttrs, MarkLineAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkLine as MarkLineComponent, MarkArcLine as MarkArcLineComponent } from '@visactor/vrender-components';\nimport { transformToGraphic } from '../../../util/style';\nimport { BaseMarker } from '../base-marker';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { IMarkerSymbol } from '../interface';\nimport { markerRegression } from '../../../data/transforms/regression';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport { markerFilter } from '../../../data/transforms/marker-filter';\nimport { array } from '@visactor/vutils';\n\nexport abstract class BaseMarkLine extends BaseMarker<IMarkLineSpec> implements IMarkLine {\n static specKey = 'markLine';\n specKey = 'markLine';\n layoutZIndex: number = LayoutZIndex.MarkLine;\n\n // eslint-disable-next-line max-len\n protected abstract _newMarkLineComponent(\n attr: MarkLineAttrs | MarkArcLineAttrs\n ): MarkLineComponent | MarkArcLineComponent;\n protected abstract _computePointsAttr(): any;\n\n static _getMarkerCoordinateType(markerSpec: any): string {\n const { doAngleProcess, doRadiusProcess, doAngRadRad1Process, doRadAngAng1Process, doRadAngProcess } =\n getMarkLineProcessInfo(markerSpec);\n\n if (\n markerSpec.coordinateType === 'polar' ||\n doAngleProcess ||\n doRadiusProcess ||\n doAngRadRad1Process ||\n doRadAngAng1Process ||\n doRadAngProcess\n ) {\n return 'polar';\n }\n return 'cartesian';\n }\n\n protected _createMarkerComponent() {\n const { startSymbol = {} as IMarkerSymbol, endSymbol = {} as IMarkerSymbol } = this._spec as IMarkLineSpec;\n const label = array(this._spec.label ?? {});\n\n const markLineAttrs: MarkLineAttrs | MarkArcLineAttrs = {\n zIndex: this.layoutZIndex,\n interactive: this._spec.interactive ?? true,\n hover: this._spec.interactive ?? true,\n select: this._spec.interactive ?? true,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n ],\n center: {\n x: 0,\n y: 0\n },\n radius: 0,\n startAngle: 0,\n endAngle: 0,\n lineStyle: transformStyle(\n transformToGraphic(this._spec.line?.style),\n this._markerData,\n this._markAttributeContext\n ),\n clipInRange: this._spec.clip ?? false,\n label: label.map(labelItem => {\n return transformLabelAttributes(labelItem, this._markerData, this._markAttributeContext);\n }),\n state: {\n line: transformState(this._spec.line?.state ?? {}, this._markerData, this._markAttributeContext),\n lineStartSymbol: transformState(\n this._spec.startSymbol?.state ?? {},\n this._markerData,\n this._markAttributeContext\n ),\n lineEndSymbol: transformState(this._spec.endSymbol?.state ?? {}, this._markerData, this._markAttributeContext),\n label: label.map(labelItem => {\n return transformState(labelItem.state ?? {}, this._markerData, this._markAttributeContext);\n }),\n labelBackground: label.map(labelItem => {\n return transformState(labelItem.labelBackground?.state ?? {}, this._markerData, this._markAttributeContext);\n })\n },\n animation: this._spec.animation ?? false,\n animationEnter: this._spec.animationEnter,\n animationExit: this._spec.animationExit,\n animationUpdate: this._spec.animationUpdate\n };\n\n if (startSymbol.visible) {\n markLineAttrs.startSymbol = {\n ...startSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(startSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.startSymbol = {\n visible: false\n };\n }\n\n if (endSymbol.visible) {\n markLineAttrs.endSymbol = {\n ...endSymbol,\n visible: true,\n style: transformStyle(transformToGraphic(endSymbol.style), this._markerData, this._markAttributeContext)\n };\n } else {\n markLineAttrs.endSymbol = {\n visible: false\n };\n }\n const markLine = this._newMarkLineComponent(markLineAttrs);\n return markLine as unknown as IGroup;\n }\n\n protected _getUpdateMarkerAttrs() {\n const spec = this._spec;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const pointsAttr = this._computePointsAttr();\n\n const seriesData = relativeSeries.getViewData().latestData;\n const dataPoints =\n data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData;\n\n let limitRect;\n if (spec.clip || array(spec.label).some(labelCfg => labelCfg?.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 const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const prevLabelAttrs = array(markerComponentAttr.label);\n const specLabels = array(this._spec.label);\n\n const labelAttrs = prevLabelAttrs.map((prevLabel, index) => {\n const specLabel = specLabels[index] || {};\n return {\n ...prevLabel,\n text: specLabel.formatMethod ? (specLabel.formatMethod(dataPoints, seriesData) as any) : prevLabel?.text\n };\n });\n return {\n ...pointsAttr,\n label: labelAttrs as MarkLineComponent['attribute']['label'],\n limitRect,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n this._markerComponent?.setAttributes(updateAttrs);\n }\n\n protected _initDataView(): void {\n const spec = this._spec;\n const isCoordinateProcess = 'coordinates' in spec;\n\n const {\n doXProcess,\n doYProcess,\n doXYY1Process,\n doYXX1Process,\n doXYProcess,\n doAngleProcess,\n doRadiusProcess,\n doAngRadRad1Process,\n doRadAngAng1Process,\n doRadAngProcess\n } = getMarkLineProcessInfo(spec);\n this._setMarkerData(this._getRelativeDataView());\n\n if (\n !doXProcess &&\n !doYProcess &&\n !doXYY1Process &&\n !doYXX1Process &&\n !doXYProcess &&\n !doAngleProcess &&\n !doRadiusProcess &&\n !doAngRadRad1Process &&\n !doRadAngAng1Process &&\n !doRadAngProcess &&\n !isCoordinateProcess\n ) {\n return;\n }\n\n registerDataSetInstanceTransform(this._option.dataSet, 'markerAggregation', markerAggregation);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerRegression', markerRegression);\n registerDataSetInstanceTransform(this._option.dataSet, 'markerFilter', markerFilter);\n\n const { options, needAggr, needRegr, processData } = this._computeOptions();\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.transform({\n type: 'markerFilter',\n options: this._getAllRelativeSeries()\n });\n\n this._setMarkerData(data, true);\n this._bindMarkerDataChange();\n }\n}\n"]}
@@ -24,13 +24,7 @@ export declare class Title<T extends ITitleSpec = ITitleSpec> extends BaseCompon
24
24
  constructor(spec: T, options: IComponentOption);
25
25
  initLayout(): void;
26
26
  static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
27
- _compareSpec(spec: T, prevSpec: T): {
28
- change: boolean;
29
- reMake: boolean;
30
- reRender: boolean;
31
- reSize: boolean;
32
- reCompile: boolean;
33
- };
27
+ _compareSpec(spec: T, prevSpec: T): import("../../model/interface").IUpdateSpecResult;
34
28
  afterSetLayoutStartPoint(pos: IPoint): void;
35
29
  getBoundsInRect(rect: ILayoutRect): {
36
30
  x1: number;
@@ -22,9 +22,13 @@ class Title extends base_component_1.BaseComponent {
22
22
  return (0, util_1.getSpecInfo)(chartSpec, this.specKey, type_1.ComponentTypeEnum.title, (s => !1 !== s.visible));
23
23
  }
24
24
  _compareSpec(spec, prevSpec) {
25
- const result = super._compareSpec(spec, prevSpec);
25
+ const result = super._compareSpec(spec, prevSpec), specChanged = !(0, vutils_1.isEqual)(prevSpec, spec);
26
26
  return (null == prevSpec ? void 0 : prevSpec.orient) === (null == spec ? void 0 : spec.orient) && (null == prevSpec ? void 0 : prevSpec.visible) === spec.visible || (result.reMake = !0),
27
- result.change = !0, result.reRender = !0, result;
27
+ result.change = !0, result.reRender = !0, specChanged && !result.reMake && (result.effects = Object.assign(Object.assign({}, result.effects), {
28
+ component: !0,
29
+ layout: !0,
30
+ render: !0
31
+ })), result;
28
32
  }
29
33
  afterSetLayoutStartPoint(pos) {
30
34
  (0, vutils_1.isValidNumber)(pos.x) && this._titleComponent && this._titleComponent.setAttribute("x", pos.x),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["import { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { Factory } from '../../core/factory';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IPoint, IOrientType, ILayoutType, ILayoutRect } from '../../typings';\nimport { calcLayoutNumber, isValidOrient } from '../../util/space';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { ITitle, ITitleSpec } from './interface';\nimport { Title as TitleComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TitleAttrs } from '@visactor/vrender-components';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, isValidNumber, pickWithout, isValid } from '@visactor/vutils';\nimport { getSpecInfo } from '../util';\nimport { title } from '../../theme/builtin/common/component/title';\n\nexport class Title<T extends ITitleSpec = ITitleSpec> extends BaseComponent<T> implements ITitle {\n static type = ComponentTypeEnum.title;\n type = ComponentTypeEnum.title;\n static specKey = ComponentTypeEnum.title;\n specKey: string = ComponentTypeEnum.title;\n\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Title;\n layoutLevel: number = LayoutLevel.Title;\n\n static readonly builtInTheme = {\n title\n };\n\n protected _orient: IOrientType = 'top';\n\n private _titleComponent: TitleComponents;\n private _cacheAttrs: TitleAttrs;\n\n get orient() {\n return this._orient;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = isValidOrient(spec.orient) ? spec.orient : 'top';\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<ITitleSpec>(chartSpec, this.specKey, ComponentTypeEnum.title, (s: ITitleSpec) => {\n return s.visible !== false;\n });\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n\n if (prevSpec?.orient !== spec?.orient || (prevSpec as any)?.visible !== (spec as any).visible) {\n // title 组件切换visible会影响布局,所以需要重新remake\n result.reMake = true;\n }\n\n result.change = true;\n result.reRender = true;\n return result;\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n if (isValidNumber(pos.x)) {\n this._titleComponent && this._titleComponent.setAttribute('x', pos.x);\n }\n if (isValidNumber(pos.y)) {\n this._titleComponent && this._titleComponent.setAttribute('y', pos.y);\n }\n super.afterSetLayoutStartPoint(pos);\n }\n\n getBoundsInRect(rect: ILayoutRect) {\n let result: Partial<ILayoutRect> = {};\n this.setLayoutRect(rect);\n\n const attrs = this._getTitleAttrs();\n this._createOrUpdateTitleComponent(attrs);\n\n result = this._getTitleLayoutRect();\n const { x, y } = this.getLayoutStartPoint();\n return {\n x1: x,\n y1: y,\n x2: x + result.width,\n y2: y + result.height\n };\n }\n\n private _getTitleLayoutRect() {\n const titleBounds = this._titleComponent.AABBBounds;\n const width = this._spec.width ? this._spec.width : isValidNumber(titleBounds.width()) ? titleBounds.width() : 0;\n const height = this._spec.height\n ? this._spec.height\n : isValidNumber(titleBounds.height())\n ? titleBounds.height()\n : 0;\n return {\n width,\n height\n };\n }\n\n private _getTitleAttrs() {\n /**\n * 生成标题组件的渲染属性,统一计算宽高与对齐参数,\n * 并在仅副标题场景下避免主标题宽度影响副标题布局。\n */\n if (this._spec.visible === false) {\n return { visible: false };\n }\n const layoutRect = this.getLayoutRect();\n const titleWidth = calcLayoutNumber(this._spec.width, layoutRect.width, null, layoutRect.width);\n const titleMaxWidth = calcLayoutNumber(this._spec.maxWidth, layoutRect.width, null, layoutRect.width);\n const maxWidth = Math.max(Math.min(titleWidth, titleMaxWidth, layoutRect.width), 0);\n const hasText = isValid(this._spec.text) && this._spec.text !== '';\n const hasSubtext = isValid(this._spec.subtext) && this._spec.subtext !== '';\n\n const attrs = {\n ...(pickWithout(this._spec, ['padding']) as any),\n textType: this._spec.textType ?? 'text',\n text: hasText ? this._spec.text : undefined,\n subtextType: this._spec.subtextType ?? 'text',\n subtext: hasSubtext ? this._spec.subtext : undefined,\n x: this._spec.x ?? 0,\n y: this._spec.y ?? 0,\n height: this._spec.height,\n minWidth: this._spec.minWidth,\n maxWidth,\n minHeight: this._spec.minHeight,\n maxHeight: this._spec.maxHeight,\n padding: this._spec.innerPadding,\n align: this._spec.align ?? 'left',\n verticalAlign: this._spec.verticalAlign ?? 'top',\n textStyle: {\n maxLineWidth: maxWidth,\n ...this._spec.textStyle\n },\n subtextStyle: {\n maxLineWidth: maxWidth,\n ...this._spec.subtextStyle\n }\n } as TitleAttrs;\n\n // 仅在对应文本存在时设置 width,避免空主标题影响副标题的对齐与宽度计算\n if (hasText) {\n (attrs.textStyle as any).width = maxWidth;\n }\n if (hasSubtext) {\n (attrs.subtextStyle as any).width = maxWidth;\n }\n\n if (isValid(this._spec.width)) {\n const clampedWidth = Math.max(Math.min(titleWidth, layoutRect.width), 0);\n if (hasText) {\n (attrs.textStyle as any).width = clampedWidth;\n } else {\n // 主标题不存在时,不设置其 width\n delete (attrs.textStyle as any).width;\n }\n if (hasSubtext) {\n (attrs.subtextStyle as any).width = clampedWidth;\n }\n }\n return attrs;\n }\n\n private _createOrUpdateTitleComponent(attrs: TitleAttrs): TitleComponents {\n if (this._titleComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._titleComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n const title = new TitleComponents(attrs);\n title.name = 'title';\n container.add(title as unknown as INode);\n this._titleComponent = title;\n // 代理 title 组件上的事件\n title.on('*', (event: any, type: string) => this._delegateEvent(title as unknown as IGraphic, event, type));\n }\n this._cacheAttrs = attrs;\n return this._titleComponent;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._titleComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n }\n}\n\nexport const registerTitle = () => {\n Factory.registerComponent(Title.type, Title);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/title/title.ts"],"names":[],"mappings":";;;AAAA,kDAAkE;AAClE,gDAA6C;AAI7C,4CAAmE;AACnE,2DAAuD;AAGvD,4CAAsD;AAEtD,qEAAwE;AAMxE,6CAAgF;AAChF,kCAAsC;AACtC,sEAAmE;AAEnE,MAAa,KAAyC,SAAQ,8BAAgB;IAmB5E,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAtBvB,SAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;QAE/B,YAAO,GAAW,wBAAiB,CAAC,KAAK,CAAC;QAE1C,eAAU,GAAgB,QAAQ,CAAC;QACnC,iBAAY,GAAW,qBAAY,CAAC,KAAK,CAAC;QAC1C,gBAAW,GAAW,oBAAW,CAAC,KAAK,CAAC;QAM9B,YAAO,GAAgB,KAAK,CAAC;QAWrC,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,SAAc;QAC/B,OAAO,IAAA,kBAAW,EAAa,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,wBAAiB,CAAC,KAAK,EAAE,CAAC,CAAa,EAAE,EAAE;YACjG,OAAO,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAKD,YAAY,CAAC,IAAO,EAAE,QAAW;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,CAAC,IAAA,gBAAO,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,IAAI,CAAC,QAAgB,aAAhB,QAAQ,uBAAR,QAAQ,CAAU,OAAO,MAAM,IAAY,CAAC,OAAO,EAAE;YAE7F,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACjC,MAAM,CAAC,OAAO,mCACT,MAAM,CAAC,OAAO,KACjB,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,IAAI,GACb,CAAC;SACH;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB,CAAC,GAAW;QAClC,IAAI,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACvE;QACD,IAAI,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACvE;QACD,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,IAAiB;QAC/B,IAAI,MAAM,GAAyB,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,OAAO;YACL,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK;YACpB,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,sBAAa,EAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YACnB,CAAC,CAAC,IAAA,sBAAa,EAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE;gBACtB,CAAC,CAAC,CAAC,CAAC;QACN,OAAO;YACL,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,cAAc;;QAKpB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;YAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAChG,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;QAE5E,MAAM,KAAK,GAAG,gCACR,IAAA,oBAAW,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAS,KAChD,QAAQ,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAAI,MAAM,EACvC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC3C,WAAW,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,mCAAI,MAAM,EAC7C,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACpD,CAAC,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,CAAC,mCAAI,CAAC,EACpB,CAAC,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,CAAC,mCAAI,CAAC,EACpB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EACR,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAChC,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,MAAM,EACjC,aAAa,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,mCAAI,KAAK,EAChD,SAAS,kBACP,YAAY,EAAE,QAAQ,IACnB,IAAI,CAAC,KAAK,CAAC,SAAS,GAEzB,YAAY,kBACV,YAAY,EAAE,QAAQ,IACnB,IAAI,CAAC,KAAK,CAAC,YAAY,IAEf,CAAC;QAGhB,IAAI,OAAO,EAAE;YACV,KAAK,CAAC,SAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC;SAC3C;QACD,IAAI,UAAU,EAAE;YACb,KAAK,CAAC,YAAoB,CAAC,KAAK,GAAG,QAAQ,CAAC;SAC9C;QAED,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,IAAI,OAAO,EAAE;gBACV,KAAK,CAAC,SAAiB,CAAC,KAAK,GAAG,YAAY,CAAC;aAC/C;iBAAM;gBAEL,OAAQ,KAAK,CAAC,SAAiB,CAAC,KAAK,CAAC;aACvC;YACD,IAAI,UAAU,EAAE;gBACb,KAAK,CAAC,YAAoB,CAAC,KAAK,GAAG,YAAY,CAAC;aAClD;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,6BAA6B,CAAC,KAAiB;QACrD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,IAAA,gBAAO,EAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;gBACrC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAC3C;SACF;aAAM;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,0BAAe,CAAC,KAAK,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;YACrB,SAAS,CAAC,GAAG,CAAC,KAAyB,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAU,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAA4B,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;SAC7G;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAES,8BAA8B;QACtC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAwB,CAAC;IACvD,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;;AAlMH,sBAmMC;AAlMQ,UAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;AAE/B,aAAO,GAAG,wBAAiB,CAAC,KAAK,CAAC;AAOzB,kBAAY,GAAG;IAC7B,KAAK,EAAL,aAAK;CACN,CAAC;AAyLG,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,iBAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB","file":"title.js","sourcesContent":["import { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { Factory } from '../../core/factory';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IPoint, IOrientType, ILayoutType, ILayoutRect } from '../../typings';\nimport { calcLayoutNumber, isValidOrient } from '../../util/space';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { ITitle, ITitleSpec } from './interface';\nimport { Title as TitleComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TitleAttrs } from '@visactor/vrender-components';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, isValidNumber, pickWithout, isValid } from '@visactor/vutils';\nimport { getSpecInfo } from '../util';\nimport { title } from '../../theme/builtin/common/component/title';\n\nexport class Title<T extends ITitleSpec = ITitleSpec> extends BaseComponent<T> implements ITitle {\n static type = ComponentTypeEnum.title;\n type = ComponentTypeEnum.title;\n static specKey = ComponentTypeEnum.title;\n specKey: string = ComponentTypeEnum.title;\n\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Title;\n layoutLevel: number = LayoutLevel.Title;\n\n static readonly builtInTheme = {\n title\n };\n\n protected _orient: IOrientType = 'top';\n\n private _titleComponent: TitleComponents;\n private _cacheAttrs: TitleAttrs;\n\n get orient() {\n return this._orient;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = isValidOrient(spec.orient) ? spec.orient : 'top';\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<ITitleSpec>(chartSpec, this.specKey, ComponentTypeEnum.title, (s: ITitleSpec) => {\n return s.visible !== false;\n });\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n const specChanged = !isEqual(prevSpec, spec);\n\n if (prevSpec?.orient !== spec?.orient || (prevSpec as any)?.visible !== (spec as any).visible) {\n // title 组件切换visible会影响布局,所以需要重新remake\n result.reMake = true;\n }\n\n result.change = true;\n result.reRender = true;\n if (specChanged && !result.reMake) {\n result.effects = {\n ...result.effects,\n component: true,\n layout: true,\n render: true\n };\n }\n return result;\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n if (isValidNumber(pos.x)) {\n this._titleComponent && this._titleComponent.setAttribute('x', pos.x);\n }\n if (isValidNumber(pos.y)) {\n this._titleComponent && this._titleComponent.setAttribute('y', pos.y);\n }\n super.afterSetLayoutStartPoint(pos);\n }\n\n getBoundsInRect(rect: ILayoutRect) {\n let result: Partial<ILayoutRect> = {};\n this.setLayoutRect(rect);\n\n const attrs = this._getTitleAttrs();\n this._createOrUpdateTitleComponent(attrs);\n\n result = this._getTitleLayoutRect();\n const { x, y } = this.getLayoutStartPoint();\n return {\n x1: x,\n y1: y,\n x2: x + result.width,\n y2: y + result.height\n };\n }\n\n private _getTitleLayoutRect() {\n const titleBounds = this._titleComponent.AABBBounds;\n const width = this._spec.width ? this._spec.width : isValidNumber(titleBounds.width()) ? titleBounds.width() : 0;\n const height = this._spec.height\n ? this._spec.height\n : isValidNumber(titleBounds.height())\n ? titleBounds.height()\n : 0;\n return {\n width,\n height\n };\n }\n\n private _getTitleAttrs() {\n /**\n * 生成标题组件的渲染属性,统一计算宽高与对齐参数,\n * 并在仅副标题场景下避免主标题宽度影响副标题布局。\n */\n if (this._spec.visible === false) {\n return { visible: false };\n }\n const layoutRect = this.getLayoutRect();\n const titleWidth = calcLayoutNumber(this._spec.width, layoutRect.width, null, layoutRect.width);\n const titleMaxWidth = calcLayoutNumber(this._spec.maxWidth, layoutRect.width, null, layoutRect.width);\n const maxWidth = Math.max(Math.min(titleWidth, titleMaxWidth, layoutRect.width), 0);\n const hasText = isValid(this._spec.text) && this._spec.text !== '';\n const hasSubtext = isValid(this._spec.subtext) && this._spec.subtext !== '';\n\n const attrs = {\n ...(pickWithout(this._spec, ['padding']) as any),\n textType: this._spec.textType ?? 'text',\n text: hasText ? this._spec.text : undefined,\n subtextType: this._spec.subtextType ?? 'text',\n subtext: hasSubtext ? this._spec.subtext : undefined,\n x: this._spec.x ?? 0,\n y: this._spec.y ?? 0,\n height: this._spec.height,\n minWidth: this._spec.minWidth,\n maxWidth,\n minHeight: this._spec.minHeight,\n maxHeight: this._spec.maxHeight,\n padding: this._spec.innerPadding,\n align: this._spec.align ?? 'left',\n verticalAlign: this._spec.verticalAlign ?? 'top',\n textStyle: {\n maxLineWidth: maxWidth,\n ...this._spec.textStyle\n },\n subtextStyle: {\n maxLineWidth: maxWidth,\n ...this._spec.subtextStyle\n }\n } as TitleAttrs;\n\n // 仅在对应文本存在时设置 width,避免空主标题影响副标题的对齐与宽度计算\n if (hasText) {\n (attrs.textStyle as any).width = maxWidth;\n }\n if (hasSubtext) {\n (attrs.subtextStyle as any).width = maxWidth;\n }\n\n if (isValid(this._spec.width)) {\n const clampedWidth = Math.max(Math.min(titleWidth, layoutRect.width), 0);\n if (hasText) {\n (attrs.textStyle as any).width = clampedWidth;\n } else {\n // 主标题不存在时,不设置其 width\n delete (attrs.textStyle as any).width;\n }\n if (hasSubtext) {\n (attrs.subtextStyle as any).width = clampedWidth;\n }\n }\n return attrs;\n }\n\n private _createOrUpdateTitleComponent(attrs: TitleAttrs): TitleComponents {\n if (this._titleComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._titleComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n const title = new TitleComponents(attrs);\n title.name = 'title';\n container.add(title as unknown as INode);\n this._titleComponent = title;\n // 代理 title 组件上的事件\n title.on('*', (event: any, type: string) => this._delegateEvent(title as unknown as IGraphic, event, type));\n }\n this._cacheAttrs = attrs;\n return this._titleComponent;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._titleComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n }\n}\n\nexport const registerTitle = () => {\n Factory.registerComponent(Title.type, Title);\n};\n"]}
@@ -11,4 +11,5 @@ Object.defineProperty(exports, "__esModule", {
11
11
  AttributeLevel[AttributeLevel.User_Chart = 6] = "User_Chart", AttributeLevel[AttributeLevel.User_Series = 7] = "User_Series",
12
12
  AttributeLevel[AttributeLevel.User_Mark = 8] = "User_Mark", AttributeLevel[AttributeLevel.User_SeriesStyle = 9] = "User_SeriesStyle",
13
13
  AttributeLevel[AttributeLevel.Built_In = 99] = "Built_In";
14
- }(AttributeLevel = exports.AttributeLevel || (exports.AttributeLevel = {}));
14
+ }(AttributeLevel = exports.AttributeLevel || (exports.AttributeLevel = {}));
15
+ //# sourceMappingURL=attribute.js.map
@@ -8,5 +8,4 @@ const vscale_1 = require("@visactor/vscale");
8
8
 
9
9
  exports.SCATTER_DEFAULT_SIZE = 10, exports.SCATTER_DEFAULT_RANGE_SIZE = [ 10, 20 ],
10
10
  exports.SCATTER_DEFAULT_SIZE_SCALE_TYPE = vscale_1.ScaleEnum.Linear, exports.SCATTER_DEFAULT_SHAPE = "circle",
11
- exports.SCATTER_DEFAULT_SHAPE_SCALE_TYPE = vscale_1.ScaleEnum.Ordinal, exports.SCATTER_DEFAULT_RANGE_SHAPE = [ "circle", "square", "triangle", "diamond", "star" ];
12
- //# sourceMappingURL=scatter.js.map
11
+ exports.SCATTER_DEFAULT_SHAPE_SCALE_TYPE = vscale_1.ScaleEnum.Ordinal, exports.SCATTER_DEFAULT_RANGE_SHAPE = [ "circle", "square", "triangle", "diamond", "star" ];
@@ -6,4 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const base_1 = require("./base");
8
8
 
9
- exports.WaterfallDefaultSeriesField = `${base_1.PREFIX}_waterfall_default_seriesField`;
9
+ exports.WaterfallDefaultSeriesField = `${base_1.PREFIX}_waterfall_default_seriesField`;
10
+ //# sourceMappingURL=waterfall.js.map
@@ -196,4 +196,4 @@ Factory.registerInteractionTrigger = (interactionType, interaction) => {
196
196
  const Cror = Factory._tooltipProcessors[type];
197
197
  return Cror ? new Cror(tooltip) : null;
198
198
  };
199
- //# sourceMappingURL=factory.js.map
199
+ //# sourceMappingURL=factory.js.map
package/cjs/core/index.js CHANGED
@@ -199,4 +199,4 @@ Object.defineProperty(exports, "measureText", {
199
199
  return text_1.measureText;
200
200
  }
201
201
  });
202
- //# sourceMappingURL=index.js.map
202
+ //# sourceMappingURL=index.js.map
@@ -8,7 +8,7 @@ import type { IComponentConstructor } from '../component/interface';
8
8
  import type { EventCallback, EventQuery, EventType, ExtendEventParam, IEvent } from '../event/interface';
9
9
  import type { IParserOptions, Transform } from '@visactor/vdataset';
10
10
  import { DataSet, DataView } from '@visactor/vdataset';
11
- import type { IStage } from '@visactor/vrender-core';
11
+ import type { IGraphic, IStage } from '@visactor/vrender-core';
12
12
  import type { GeoSourceType } from '../typings/geo';
13
13
  import type { GeoSourceOption } from '../series/map/geo-source';
14
14
  import type { IMark, MarkConstructor } from '../mark/interface';
@@ -78,6 +78,7 @@ export declare class VChart implements IVChart {
78
78
  private _onError?;
79
79
  private _context;
80
80
  private _isReleased;
81
+ private _exitingVRenderComponents?;
81
82
  private _chartPlugin?;
82
83
  private _vChartPlugin?;
83
84
  private _onResize?;
@@ -110,6 +111,9 @@ export declare class VChart implements IVChart {
110
111
  protected _renderAsync(option?: IVChartRenderOption): Promise<IVChart>;
111
112
  private _updateAnimateState;
112
113
  release(): void;
114
+ _registerExitingVRenderComponent(component: IGraphic): void;
115
+ _unregisterExitingVRenderComponent(component: IGraphic): void;
116
+ private _forceReleaseExitingVRenderComponents;
113
117
  updateData(id: StringOrNumber, data: DataView | Datum[] | string, parserOptions?: IParserOptions, userUpdateOptions?: IUpdateDataResult): Promise<IVChart>;
114
118
  private _updateDataById;
115
119
  updateDataInBatches(list: {