@visactor/vchart 2.0.0-alpha.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/build/es5/index.js +4 -2
  2. package/build/index.es.js +810 -1290
  3. package/build/index.js +810 -1290
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/interface.d.ts +1 -0
  7. package/cjs/animation/interface.js.map +1 -1
  8. package/cjs/chart/base/base-chart.d.ts +1 -2
  9. package/cjs/chart/base/base-chart.js +0 -1
  10. package/cjs/chart/base/base-chart.js.map +1 -1
  11. package/cjs/chart/histogram/base/histogram-base-transformer.js +1 -1
  12. package/cjs/chart/histogram/base/histogram-base-transformer.js.map +1 -1
  13. package/cjs/chart/interface/chart.d.ts +1 -2
  14. package/cjs/chart/interface/chart.js.map +1 -1
  15. package/cjs/chart/util.js +2 -1
  16. package/cjs/compile/compiler.js +2 -1
  17. package/cjs/compile/compiler.js.map +1 -1
  18. package/cjs/component/axis/base-axis.d.ts +0 -1
  19. package/cjs/component/axis/base-axis.js +0 -3
  20. package/cjs/component/axis/base-axis.js.map +1 -1
  21. package/cjs/component/axis/cartesian/axis.d.ts +0 -5
  22. package/cjs/component/axis/cartesian/axis.js +1 -5
  23. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  24. package/cjs/component/axis/polar/axis.d.ts +0 -2
  25. package/cjs/component/axis/polar/axis.js +0 -2
  26. package/cjs/component/axis/polar/axis.js.map +1 -1
  27. package/cjs/component/base/base-component.d.ts +1 -3
  28. package/cjs/component/base/base-component.js +1 -7
  29. package/cjs/component/base/base-component.js.map +1 -1
  30. package/cjs/component/brush/brush.d.ts +2 -4
  31. package/cjs/component/brush/brush.js +18 -16
  32. package/cjs/component/brush/brush.js.map +1 -1
  33. package/cjs/component/crosshair/base.d.ts +0 -4
  34. package/cjs/component/crosshair/base.js +4 -5
  35. package/cjs/component/crosshair/base.js.map +1 -1
  36. package/cjs/component/crosshair/cartesian.js +3 -2
  37. package/cjs/component/crosshair/cartesian.js.map +1 -1
  38. package/cjs/component/crosshair/interface/common.d.ts +3 -1
  39. package/cjs/component/crosshair/interface/common.js.map +1 -1
  40. package/cjs/component/crosshair/interface/spec.d.ts +1 -0
  41. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  42. package/cjs/component/crosshair/interface/theme.d.ts +2 -0
  43. package/cjs/component/crosshair/interface/theme.js.map +1 -1
  44. package/cjs/component/crosshair/utils/cartesian.js +15 -13
  45. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  46. package/cjs/component/crosshair/utils/common.js +8 -4
  47. package/cjs/component/crosshair/utils/common.js.map +1 -1
  48. package/cjs/component/custom-mark/custom-mark.d.ts +0 -6
  49. package/cjs/component/custom-mark/custom-mark.js +0 -5
  50. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  51. package/cjs/component/data-zoom/data-filter-base-component.d.ts +0 -4
  52. package/cjs/component/data-zoom/data-filter-base-component.js +7 -10
  53. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  54. package/cjs/component/data-zoom/util.d.ts +1 -0
  55. package/cjs/component/data-zoom/util.js +8 -5
  56. package/cjs/component/data-zoom/util.js.map +1 -1
  57. package/cjs/component/geo/geo-coordinate.d.ts +2 -6
  58. package/cjs/component/geo/geo-coordinate.js +0 -5
  59. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  60. package/cjs/component/indicator/indicator.d.ts +0 -3
  61. package/cjs/component/indicator/indicator.js +0 -2
  62. package/cjs/component/indicator/indicator.js.map +1 -1
  63. package/cjs/component/interface/common.d.ts +0 -1
  64. package/cjs/component/interface/common.js.map +1 -1
  65. package/cjs/component/label/base-label.d.ts +2 -6
  66. package/cjs/component/label/base-label.js +11 -4
  67. package/cjs/component/label/base-label.js.map +1 -1
  68. package/cjs/component/label/label.d.ts +0 -1
  69. package/cjs/component/label/label.js +1 -8
  70. package/cjs/component/label/label.js.map +1 -1
  71. package/cjs/component/label/total-label.d.ts +0 -1
  72. package/cjs/component/label/total-label.js +1 -8
  73. package/cjs/component/label/total-label.js.map +1 -1
  74. package/cjs/component/legend/base-legend.d.ts +0 -3
  75. package/cjs/component/legend/base-legend.js +0 -2
  76. package/cjs/component/legend/base-legend.js.map +1 -1
  77. package/cjs/component/marker/base-marker.d.ts +1 -4
  78. package/cjs/component/marker/base-marker.js +0 -2
  79. package/cjs/component/marker/base-marker.js.map +1 -1
  80. package/cjs/component/marker/mark-point/base-mark-point.js +1 -1
  81. package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
  82. package/cjs/component/marker/utils.js +14 -9
  83. package/cjs/component/marker/utils.js.map +1 -1
  84. package/cjs/component/player/player.d.ts +0 -4
  85. package/cjs/component/player/player.js +1 -6
  86. package/cjs/component/player/player.js.map +1 -1
  87. package/cjs/component/title/title.d.ts +0 -5
  88. package/cjs/component/title/title.js +0 -4
  89. package/cjs/component/title/title.js.map +1 -1
  90. package/cjs/component/tooltip/interface/theme.d.ts +3 -0
  91. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  92. package/cjs/component/tooltip/tooltip-transformer.js +3 -1
  93. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  94. package/cjs/component/tooltip/tooltip.d.ts +0 -6
  95. package/cjs/component/tooltip/tooltip.js +0 -5
  96. package/cjs/component/tooltip/tooltip.js.map +1 -1
  97. package/cjs/component/util.js +1 -2
  98. package/cjs/core/index.d.ts +1 -1
  99. package/cjs/core/index.js +1 -1
  100. package/cjs/core/index.js.map +1 -1
  101. package/cjs/mark/base/base-mark.d.ts +1 -0
  102. package/cjs/mark/base/base-mark.js +22 -17
  103. package/cjs/mark/base/base-mark.js.map +1 -1
  104. package/cjs/mark/component.js +1 -1
  105. package/cjs/mark/component.js.map +1 -1
  106. package/cjs/mark/group.d.ts +1 -1
  107. package/cjs/mark/group.js +3 -3
  108. package/cjs/mark/group.js.map +1 -1
  109. package/cjs/mark/interface/common.d.ts +1 -0
  110. package/cjs/mark/interface/common.js.map +1 -1
  111. package/cjs/model/base-model.d.ts +1 -2
  112. package/cjs/model/base-model.js.map +1 -1
  113. package/cjs/model/interface.d.ts +0 -1
  114. package/cjs/model/interface.js.map +1 -1
  115. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +2 -3
  116. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  117. package/cjs/region/region.d.ts +0 -1
  118. package/cjs/region/region.js +0 -1
  119. package/cjs/region/region.js.map +1 -1
  120. package/cjs/series/bar/bar.d.ts +3 -0
  121. package/cjs/series/bar/bar.js +28 -7
  122. package/cjs/series/bar/bar.js.map +1 -1
  123. package/cjs/series/bar/interface.d.ts +1 -0
  124. package/cjs/series/bar/interface.js.map +1 -1
  125. package/cjs/series/base/base-series.d.ts +1 -2
  126. package/cjs/series/base/base-series.js +0 -1
  127. package/cjs/series/base/base-series.js.map +1 -1
  128. package/cjs/series/funnel/funnel.js +16 -2
  129. package/cjs/series/funnel/funnel.js.map +1 -1
  130. package/cjs/series/liquid/liquid.js +1 -1
  131. package/cjs/series/liquid/liquid.js.map +1 -1
  132. package/cjs/series/rose/animation.js +14 -7
  133. package/cjs/series/rose/animation.js.map +1 -1
  134. package/cjs/series/word-cloud/base.js +3 -1
  135. package/cjs/series/word-cloud/base.js.map +1 -1
  136. package/esm/animation/interface.d.ts +1 -0
  137. package/esm/animation/interface.js.map +1 -1
  138. package/esm/chart/base/base-chart.d.ts +1 -2
  139. package/esm/chart/base/base-chart.js +0 -1
  140. package/esm/chart/base/base-chart.js.map +1 -1
  141. package/esm/chart/histogram/base/histogram-base-transformer.js +1 -1
  142. package/esm/chart/histogram/base/histogram-base-transformer.js.map +1 -1
  143. package/esm/chart/interface/chart.d.ts +1 -2
  144. package/esm/chart/interface/chart.js.map +1 -1
  145. package/esm/chart/util.js +2 -1
  146. package/esm/compile/compiler.js +2 -1
  147. package/esm/compile/compiler.js.map +1 -1
  148. package/esm/component/axis/base-axis.d.ts +0 -1
  149. package/esm/component/axis/base-axis.js +0 -3
  150. package/esm/component/axis/base-axis.js.map +1 -1
  151. package/esm/component/axis/cartesian/axis.d.ts +0 -5
  152. package/esm/component/axis/cartesian/axis.js +1 -5
  153. package/esm/component/axis/cartesian/axis.js.map +1 -1
  154. package/esm/component/axis/polar/axis.d.ts +0 -2
  155. package/esm/component/axis/polar/axis.js +0 -2
  156. package/esm/component/axis/polar/axis.js.map +1 -1
  157. package/esm/component/base/base-component.d.ts +1 -3
  158. package/esm/component/base/base-component.js +1 -7
  159. package/esm/component/base/base-component.js.map +1 -1
  160. package/esm/component/brush/brush.d.ts +2 -4
  161. package/esm/component/brush/brush.js +18 -16
  162. package/esm/component/brush/brush.js.map +1 -1
  163. package/esm/component/crosshair/base.d.ts +0 -4
  164. package/esm/component/crosshair/base.js +4 -5
  165. package/esm/component/crosshair/base.js.map +1 -1
  166. package/esm/component/crosshair/cartesian.js +3 -2
  167. package/esm/component/crosshair/cartesian.js.map +1 -1
  168. package/esm/component/crosshair/interface/common.d.ts +3 -1
  169. package/esm/component/crosshair/interface/common.js.map +1 -1
  170. package/esm/component/crosshair/interface/spec.d.ts +1 -0
  171. package/esm/component/crosshair/interface/spec.js.map +1 -1
  172. package/esm/component/crosshair/interface/theme.d.ts +2 -0
  173. package/esm/component/crosshair/interface/theme.js.map +1 -1
  174. package/esm/component/crosshair/utils/cartesian.js +15 -13
  175. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  176. package/esm/component/crosshair/utils/common.js +8 -4
  177. package/esm/component/crosshair/utils/common.js.map +1 -1
  178. package/esm/component/custom-mark/custom-mark.d.ts +0 -6
  179. package/esm/component/custom-mark/custom-mark.js +0 -5
  180. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  181. package/esm/component/data-zoom/data-filter-base-component.d.ts +0 -4
  182. package/esm/component/data-zoom/data-filter-base-component.js +6 -8
  183. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  184. package/esm/component/data-zoom/util.d.ts +1 -0
  185. package/esm/component/data-zoom/util.js +8 -5
  186. package/esm/component/data-zoom/util.js.map +1 -1
  187. package/esm/component/geo/geo-coordinate.d.ts +2 -6
  188. package/esm/component/geo/geo-coordinate.js +0 -5
  189. package/esm/component/geo/geo-coordinate.js.map +1 -1
  190. package/esm/component/indicator/indicator.d.ts +0 -3
  191. package/esm/component/indicator/indicator.js +0 -2
  192. package/esm/component/indicator/indicator.js.map +1 -1
  193. package/esm/component/interface/common.d.ts +0 -1
  194. package/esm/component/interface/common.js.map +1 -1
  195. package/esm/component/label/base-label.d.ts +2 -6
  196. package/esm/component/label/base-label.js +11 -4
  197. package/esm/component/label/base-label.js.map +1 -1
  198. package/esm/component/label/label.d.ts +0 -1
  199. package/esm/component/label/label.js +1 -8
  200. package/esm/component/label/label.js.map +1 -1
  201. package/esm/component/label/total-label.d.ts +0 -1
  202. package/esm/component/label/total-label.js +1 -8
  203. package/esm/component/label/total-label.js.map +1 -1
  204. package/esm/component/legend/base-legend.d.ts +0 -3
  205. package/esm/component/legend/base-legend.js +0 -2
  206. package/esm/component/legend/base-legend.js.map +1 -1
  207. package/esm/component/marker/base-marker.d.ts +1 -4
  208. package/esm/component/marker/base-marker.js +0 -2
  209. package/esm/component/marker/base-marker.js.map +1 -1
  210. package/esm/component/marker/mark-point/base-mark-point.js +1 -1
  211. package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
  212. package/esm/component/marker/utils.js +15 -8
  213. package/esm/component/marker/utils.js.map +1 -1
  214. package/esm/component/player/player.d.ts +0 -4
  215. package/esm/component/player/player.js +1 -6
  216. package/esm/component/player/player.js.map +1 -1
  217. package/esm/component/title/title.d.ts +0 -5
  218. package/esm/component/title/title.js +0 -4
  219. package/esm/component/title/title.js.map +1 -1
  220. package/esm/component/tooltip/interface/theme.d.ts +3 -0
  221. package/esm/component/tooltip/interface/theme.js.map +1 -1
  222. package/esm/component/tooltip/tooltip-transformer.js +3 -1
  223. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  224. package/esm/component/tooltip/tooltip.d.ts +0 -6
  225. package/esm/component/tooltip/tooltip.js +0 -5
  226. package/esm/component/tooltip/tooltip.js.map +1 -1
  227. package/esm/component/util.js +1 -2
  228. package/esm/core/index.d.ts +1 -1
  229. package/esm/core/index.js +1 -1
  230. package/esm/core/index.js.map +1 -1
  231. package/esm/mark/base/base-mark.d.ts +1 -0
  232. package/esm/mark/base/base-mark.js +22 -17
  233. package/esm/mark/base/base-mark.js.map +1 -1
  234. package/esm/mark/component.js +1 -1
  235. package/esm/mark/component.js.map +1 -1
  236. package/esm/mark/group.d.ts +1 -1
  237. package/esm/mark/group.js +3 -3
  238. package/esm/mark/group.js.map +1 -1
  239. package/esm/mark/interface/common.d.ts +1 -0
  240. package/esm/mark/interface/common.js.map +1 -1
  241. package/esm/model/base-model.d.ts +1 -2
  242. package/esm/model/base-model.js.map +1 -1
  243. package/esm/model/interface.d.ts +0 -1
  244. package/esm/model/interface.js.map +1 -1
  245. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +2 -3
  246. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  247. package/esm/region/region.d.ts +0 -1
  248. package/esm/region/region.js +0 -1
  249. package/esm/region/region.js.map +1 -1
  250. package/esm/series/bar/bar.d.ts +3 -0
  251. package/esm/series/bar/bar.js +26 -7
  252. package/esm/series/bar/bar.js.map +1 -1
  253. package/esm/series/bar/interface.d.ts +1 -0
  254. package/esm/series/bar/interface.js.map +1 -1
  255. package/esm/series/base/base-series.d.ts +1 -2
  256. package/esm/series/base/base-series.js +0 -1
  257. package/esm/series/base/base-series.js.map +1 -1
  258. package/esm/series/funnel/funnel.js +16 -2
  259. package/esm/series/funnel/funnel.js.map +1 -1
  260. package/esm/series/liquid/liquid.js +1 -1
  261. package/esm/series/liquid/liquid.js.map +1 -1
  262. package/esm/series/rose/animation.js +10 -7
  263. package/esm/series/rose/animation.js.map +1 -1
  264. package/esm/series/word-cloud/base.js +4 -0
  265. package/esm/series/word-cloud/base.js.map +1 -1
  266. package/package.json +10 -10
@@ -2,7 +2,7 @@ import { BaseComponent } from '../base/base-component';
2
2
  import { ComponentTypeEnum } from '../interface/type';
3
3
  import { Brush as BrushComponent } from '@visactor/vrender-components';
4
4
  import type { Maybe } from '@visactor/vutils';
5
- import type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';
5
+ import type { IModelSpecInfo } from '../../model/interface';
6
6
  import type { IRegion } from '../../region/interface';
7
7
  import type { IGraphic } from '@visactor/vrender-core';
8
8
  import type { ISeries } from '../../series/interface';
@@ -41,7 +41,6 @@ export declare class Brush<T extends IBrushSpec = IBrushSpec> extends BaseCompon
41
41
  [elementKey: string]: IMarkGraphic;
42
42
  };
43
43
  private _cacheInteractiveRangeAttrs;
44
- private _needDisablePickable;
45
44
  private _releatedAxes;
46
45
  private _regionAxisMap;
47
46
  private _axisDataZoomMap;
@@ -55,8 +54,6 @@ export declare class Brush<T extends IBrushSpec = IBrushSpec> extends BaseCompon
55
54
  private _initRegionAxisMap;
56
55
  private _initAxisDataZoomMap;
57
56
  protected initEvent(): void;
58
- onRender(ctx: IModelRenderOption): void;
59
- changeRegions(regions: IRegion[]): void;
60
57
  _compareSpec(spec: T, prevSpec: T): {
61
58
  change: boolean;
62
59
  reMake: boolean;
@@ -86,6 +83,7 @@ export declare class Brush<T extends IBrushSpec = IBrushSpec> extends BaseCompon
86
83
  private _isBrushContainItem;
87
84
  protected _initItemMap(itemMap: Record<string, IMark[]>, elementMap: Record<string, IMarkGraphic>, stateName: string): void;
88
85
  protected _initMarkBrushState(componentIndex: number, stateName: string): void;
86
+ private _setRegionMarkPickable;
89
87
  private _stateClamp;
90
88
  private _setAxisAndDataZoom;
91
89
  protected _getNeedClearVRenderComponents(): IGraphic[];
@@ -12,8 +12,8 @@ class Brush extends base_component_1.BaseComponent {
12
12
  this.name = type_1.ComponentTypeEnum.brush, this.specKey = "brush", this.layoutZIndex = layout_1.LayoutZIndex.Brush,
13
13
  this._linkedSeries = [], this._itemMap = {}, this._linkedItemMap = {}, this._inBrushElementsMap = {},
14
14
  this._outOfBrushElementsMap = {}, this._linkedInBrushElementsMap = {}, this._linkedOutOfBrushElementsMap = {},
15
- this._cacheInteractiveRangeAttrs = [], this._needDisablePickable = !1, this._releatedAxes = [],
16
- this._regionAxisMap = {}, this._axisDataZoomMap = {}, this._zoomRecord = [];
15
+ this._cacheInteractiveRangeAttrs = [], this._releatedAxes = [], this._regionAxisMap = {},
16
+ this._axisDataZoomMap = {}, this._zoomRecord = [];
17
17
  }
18
18
  static getSpecInfo(chartSpec) {
19
19
  return (0, util_1.getSpecInfo)(chartSpec, this.specKey, this.type, (s => !1 !== s.visible));
@@ -69,8 +69,6 @@ class Brush extends base_component_1.BaseComponent {
69
69
  }));
70
70
  }
71
71
  initEvent() {}
72
- onRender(ctx) {}
73
- changeRegions(regions) {}
74
72
  _compareSpec(spec, prevSpec) {
75
73
  this._brushComponents && this._relativeRegions.forEach(((region, index) => {
76
74
  this._updateBrushComponent(region, index);
@@ -106,27 +104,29 @@ class Brush extends base_component_1.BaseComponent {
106
104
  brush.addEventListener(vrender_components_1.IOperateType.brushActive, (e => {
107
105
  this._initMarkBrushState(componentIndex, "outOfBrush"), this._emitEvent(event_1.ChartEvent.brushActive, region);
108
106
  })), brush.addEventListener(vrender_components_1.IOperateType.drawStart, (e => {
109
- this._emitEvent(event_1.ChartEvent.brushStart, region);
107
+ this._setRegionMarkPickable(region, !0), this._emitEvent(event_1.ChartEvent.brushStart, region);
110
108
  })), brush.addEventListener(vrender_components_1.IOperateType.moveStart, (e => {
111
- this._emitEvent(event_1.ChartEvent.brushStart, region);
109
+ this._setRegionMarkPickable(region, !0), this._emitEvent(event_1.ChartEvent.brushStart, region);
112
110
  })), brush.addEventListener(vrender_components_1.IOperateType.drawing, (e => {
113
- this._needDisablePickable = !0, this._handleBrushChange(region, e), this._emitEvent(event_1.ChartEvent.brushChange, region);
111
+ this._setRegionMarkPickable(region, !1), this._handleBrushChange(region, e), this._emitEvent(event_1.ChartEvent.brushChange, region);
114
112
  })), brush.addEventListener(vrender_components_1.IOperateType.moving, (e => {
115
- this._handleBrushChange(region, e), this._emitEvent(event_1.ChartEvent.brushChange, region);
113
+ this._setRegionMarkPickable(region, !1), this._handleBrushChange(region, e), this._emitEvent(event_1.ChartEvent.brushChange, region);
116
114
  })), brush.addEventListener(vrender_components_1.IOperateType.brushClear, (e => {
117
- this._initMarkBrushState(componentIndex, ""), this._needDisablePickable = !1, this._emitEvent(event_1.ChartEvent.brushClear, region);
115
+ this._setRegionMarkPickable(region, !0), this._initMarkBrushState(componentIndex, ""),
116
+ this._emitEvent(event_1.ChartEvent.brushClear, region);
118
117
  })), brush.addEventListener(vrender_components_1.IOperateType.drawEnd, (e => {
119
118
  var _a;
120
- this._needDisablePickable = !1;
119
+ this._setRegionMarkPickable(region, !0);
121
120
  const {operateMask: operateMask} = e.detail;
122
121
  if (null === (_a = this._spec) || void 0 === _a ? void 0 : _a.onBrushEnd) !0 === this._spec.onBrushEnd(e) ? (this.clearGraphic(),
123
- this._initMarkBrushState(componentIndex, ""), this._needDisablePickable = !1, this._emitEvent(event_1.ChartEvent.brushClear, region)) : (this._spec.onBrushEnd(e),
122
+ this._initMarkBrushState(componentIndex, ""), this._emitEvent(event_1.ChartEvent.brushClear, region)) : (this._spec.onBrushEnd(e),
124
123
  this._emitEvent(event_1.ChartEvent.brushEnd, region)); else {
125
124
  const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);
126
125
  !this._spec.zoomWhenEmpty && inBrushData.length > 0 && this._setAxisAndDataZoom(operateMask, region),
127
126
  this._emitEvent(event_1.ChartEvent.brushEnd, region);
128
127
  }
129
128
  })), brush.addEventListener(vrender_components_1.IOperateType.moveEnd, (e => {
129
+ this._setRegionMarkPickable(region, !0);
130
130
  const {operateMask: operateMask} = e.detail, inBrushData = this._extendDataInBrush(this._inBrushElementsMap);
131
131
  !this._spec.zoomWhenEmpty && inBrushData.length > 0 && this._setAxisAndDataZoom(operateMask, region),
132
132
  this._emitEvent(event_1.ChartEvent.brushEnd, region);
@@ -207,7 +207,7 @@ class Brush extends base_component_1.BaseComponent {
207
207
  this._inBrushElementsMap[null == operateMask ? void 0 : operateMask.name][elementKey] = graphicItem,
208
208
  delete this._outOfBrushElementsMap[elementKey]) : (null === (_c = null === (_b = this._inBrushElementsMap) || void 0 === _b ? void 0 : _b[null == operateMask ? void 0 : operateMask.name]) || void 0 === _c ? void 0 : _c[elementKey]) && !isBrushContainItem && (graphicItem.removeState("inBrush"),
209
209
  graphicItem.addState("outOfBrush", !0), this._outOfBrushElementsMap[elementKey] = graphicItem,
210
- delete this._inBrushElementsMap[operateMask.name][elementKey]), graphicItem.setAttribute("pickable", !this._needDisablePickable);
210
+ delete this._inBrushElementsMap[operateMask.name][elementKey]);
211
211
  }));
212
212
  }));
213
213
  }
@@ -234,8 +234,7 @@ class Brush extends base_component_1.BaseComponent {
234
234
  this._linkedInBrushElementsMap[null == operateMask ? void 0 : operateMask.name] || (this._linkedInBrushElementsMap[null == operateMask ? void 0 : operateMask.name] = {}),
235
235
  this._linkedInBrushElementsMap[null == operateMask ? void 0 : operateMask.name][elementKey] = graphicItem,
236
236
  delete this._linkedOutOfBrushElementsMap[elementKey]) : (null === (_c = null === (_b = this._linkedInBrushElementsMap) || void 0 === _b ? void 0 : _b[null == operateMask ? void 0 : operateMask.name]) || void 0 === _c ? void 0 : _c[elementKey]) && !this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem) && (graphicItem.removeState("inBrush"),
237
- graphicItem.addState("outOfBrush", !0), this._linkedOutOfBrushElementsMap[elementKey] = graphicItem),
238
- graphicItem.setAttribute("pickable", !this._needDisablePickable);
237
+ graphicItem.addState("outOfBrush", !0), this._linkedOutOfBrushElementsMap[elementKey] = graphicItem);
239
238
  }));
240
239
  }));
241
240
  }
@@ -282,6 +281,9 @@ class Brush extends base_component_1.BaseComponent {
282
281
  this._linkedOutOfBrushElementsMap = {}, this._initItemMap(this._itemMap, this._outOfBrushElementsMap, stateName),
283
282
  this._initItemMap(this._linkedItemMap, this._linkedOutOfBrushElementsMap, stateName);
284
283
  }
284
+ _setRegionMarkPickable(region, pickable) {
285
+ region.getGroupMark().getGraphics().forEach((g => g.setAttribute("childrenPickable", pickable)));
286
+ }
285
287
  _stateClamp(state) {
286
288
  return Math.min(Math.max(0, state), 1);
287
289
  }
@@ -330,8 +332,8 @@ class Brush extends base_component_1.BaseComponent {
330
332
  if (this._brushComponents) {
331
333
  const container = this.getContainer();
332
334
  this._brushComponents.forEach(((brush, index) => {
333
- this._initMarkBrushState(index, ""), this._needDisablePickable = !1, brush.removeAllChild(),
334
- brush.releaseBrushEvents(), container && container.removeChild(brush);
335
+ this._initMarkBrushState(index, ""), brush.removeAllChild(), brush.releaseBrushEvents(),
336
+ container && container.removeChild(brush);
335
337
  })), this._brushComponents = null;
336
338
  }
337
339
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IBounds, IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, polygonIntersectPolygon, isValid, last, cloneDeep } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark, IMarkGraphic } from '../../mark/interface';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { AxisComponent } from '../axis/base-axis';\nimport { getSpecInfo } from '../util';\nimport { brush } from '../../theme/builtin/common/component/brush';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static readonly builtInTheme = {\n brush\n };\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _needDisablePickable: boolean = false;\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: {\n operateComponent: AxisComponent | DataZoom;\n start: number;\n end: number;\n startValue: number | string;\n endValue: number | string;\n }[] = [];\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IBrushSpec>(chartSpec, this.specKey, this.type, (s: IBrushSpec) => {\n return s.visible !== false;\n });\n }\n\n /*** start: abstract pipe ***/\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 注册mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n created() {\n super.created();\n\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _bindRegions() {\n if (!isValid(this._spec.regionId) && !isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n } else {\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n }\n\n protected _bindLinkedSeries() {\n if (!isValid(this._spec.brushLinkSeriesId) && !isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n /*** end: abstract pipe ***/\n\n /*** start: brush component ***/\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后,清空brushMask 和 重置图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.brushActive, (e: any) => {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n this._emitEvent(ChartEvent.brushActive, region);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._needDisablePickable = true;\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._needDisablePickable = false;\n const { operateMask } = e.detail as any;\n if (this._spec?.onBrushEnd) {\n // 如果onBrushEnd返回true,则清空brush, 并抛出clear事件\n if (this._spec.onBrushEnd(e) === true) {\n this.clearGraphic();\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n const { operateMask } = e.detail as any;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n /*** end: brush component ***/\n\n /*** start: event dispatch ***/\n private _handleBrushChange(region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].context?.data?.[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IMarkGraphic }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].context?.data?.[0]);\n }\n return data;\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 图形\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 图形\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 图形\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 图形\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n },\n vchart: this._option?.globalInstance\n });\n }\n /*** end: event dispatch ***/\n\n /** start: set mark state ***/\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n });\n const { markTypeFilter = [] } = this._spec;\n\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n const isBrushContainItem = this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem);\n if (this._outOfBrushElementsMap?.[elementKey] && isBrushContainItem) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] && !isBrushContainItem) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._outOfBrushElementsMap[elementKey] = graphicItem;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n\n const dx = regionOffsetX || 0;\n const dy = regionOffsetY || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n operateMask.globalAABBBounds\n .clone()\n .set(\n operateMask.globalAABBBounds.x1 + dx,\n operateMask.globalAABBBounds.y1 + dy,\n operateMask.globalAABBBounds.x2 + dx,\n operateMask.globalAABBBounds.y2 + dy\n );\n\n const { markTypeFilter = [] } = this._spec;\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const { key } = graphicItem.context;\n\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._linkedOutOfBrushElementsMap[elementKey] = graphicItem;\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMaskAABBBounds: IBounds, brushMaskPointsCoord: IPointLike[], item: IMarkGraphic) {\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (['symbol', 'rect'].includes(item.type)) {\n const { x1, x2, y1, y2 } = item?.globalAABBBounds;\n itemBounds = [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y1\n },\n {\n x: x2,\n y: y2\n },\n {\n x: x1,\n y: y2\n }\n ];\n return polygonIntersectPolygon(brushMaskPointsCoord, itemBounds);\n }\n return brushMaskAABBBounds.intersects(item.globalAABBBounds);\n }\n\n protected _initItemMap(\n itemMap: Record<string, IMark[]>,\n elementMap: Record<string, IMarkGraphic>,\n stateName: string\n ) {\n const { markTypeFilter = [] } = this._spec;\n\n Object.entries(itemMap).forEach(([regionId, marks]) => {\n marks.forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((el: IMarkGraphic) => {\n const elementKey = mark.id + '_' + el.context.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n stateName && el.addState(stateName, true);\n elementMap[elementKey] = el;\n });\n });\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._initItemMap(this._itemMap, this._outOfBrushElementsMap, stateName);\n this._initItemMap(this._linkedItemMap, this._linkedOutOfBrushElementsMap, stateName);\n }\n /** end: set mark state ***/\n\n /** start: control data zoom ***/\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent,\n startValue: dataZoom.statePointToData(newStartPercent),\n endValue: dataZoom.statePointToData(newEndPercent)\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = axis.scaleRangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n axis.scaleRangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd,\n startValue: axis.getScale().invert(startPos),\n endValue: axis.getScale().invert(endPos)\n });\n }\n });\n }\n }\n\n /** end: control data zoom ***/\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach((brush, index) => {\n // 清空元素状态\n this._initMarkBrushState(index, '');\n this._needDisablePickable = false;\n\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":";;;AAAA,gDAAkD;AAClD,wDAA0D;AAC1D,kDAAqD;AACrD,2DAAuD;AAEvD,4CAAsD;AACtD,qEAAmG;AAGnG,6CAAiF;AAIjF,4CAAsD;AAKtD,6CAA2C;AAC3C,gDAA6C;AAG7C,kCAAsC;AACtC,sEAAmE;AAEnE,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,MAAa,KAAyC,SAAQ,8BAAgB;IAA9E;;QACE,eAAU,GAAW,MAAM,CAAC;QAE5B,SAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,wBAAiB,CAAC,KAAK,CAAC;QAMvC,YAAO,GAAG,OAAO,CAAC;QAElB,iBAAY,GAAW,qBAAY,CAAC,KAAK,CAAC;QAKhC,kBAAa,GAAc,EAAE,CAAC;QAEhC,aAAQ,GAA6C,EAAE,CAAC;QACxD,mBAAc,GAA6C,EAAE,CAAC;QAI5D,wBAAmB,GAAoE,EAAE,CAAC;QAC1F,2BAAsB,GAA2C,EAAE,CAAC;QACpE,8BAAyB,GAAoE,EAAE,CAAC;QAChG,iCAA4B,GAA2C,EAAE,CAAC;QAE5E,gCAA2B,GAAgC,EAAE,CAAC;QAE9D,kBAAa,GAAoB,EAAE,CAAC;QAGpC,mBAAc,GAA4C,EAAE,CAAC;QAE7D,qBAAgB,GAAmC,EAAE,CAAC;QAEtD,gBAAW,GAMb,EAAE,CAAC;IA4qBX,CAAC;IA1qBC,MAAM,CAAC,WAAW,CAAC,SAAc;QAC/B,OAAO,IAAA,kBAAW,EAAa,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAa,EAAE,EAAE;YACnF,OAAO,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;YACjD,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE;gBACtC,IAAI,CAAC,EAAE;oBACL,CAAC,CAAC,YAAY,CACZ,CAAC,oBAEI,eAAe,GAEpB,cAAc,EACd,0BAAc,CAAC,MAAM,CACtB,CAAC;oBACF,CAAC,CAAC,YAAY,CACZ,CAAC,oBAEI,kBAAkB,GAEvB,eAAe,EACf,0BAAc,CAAC,MAAM,CACtB,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACO,qBAAqB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChC,MAAM,QAAQ,GAAY,EAAE,CAAC;YAC7B,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;gBACnC,IACE,CAAC,YAAY,IAAI,IAAA,cAAK,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACnE,CAAC,WAAW,IAAI,IAAA,cAAK,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,EAC/B;oBACA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;iBAC3C;gBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAC5D,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC1B,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAC9B,CAAC;SACH;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACvF,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CACxD,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACnC,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QAGxB,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;gBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAkB,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACxC,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE;gBACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAkB,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAoB,CAAC;SACjF;QAGD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAmB,EAAE,EAAE;YACjD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,GAAG,OAAO,CAAC,CAAC,MAAe,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvD;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACrD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB;QACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAgB,CAAC,OAAO,CAAC,CAAC,EAAY,EAAE,EAAE;YACnF,IAAI,EAAE,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,CAAE,EAAE,CAAC,oBAAsC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;aAC3E;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,SAAS;IAEnB,CAAC;IAED,YAAY,CAAC,IAAO,EAAE,QAAW;QAC/B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAEzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;gBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,IAAA,gBAAO,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC5B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,OAAO;SACR;QACD,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,mCAAI,IAAI,CAAC;QAChD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;oBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;oBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAIS,qBAAqB,CAAC,MAAe,EAAE,cAAsB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC7D,cAAc,CAAC,aAAa,CAAC,eAAsB,CAAC,CAAC;QAGrD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7C,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC;IAES,qBAAqB,CAAC,MAAe,EAAE,cAAsB;;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,0BAAc,6CAC9B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,UAAU,EAAE,IAAA,0BAAkB,EAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,IAC9C,eAAe,GACf,IAAI,CAAC,KAAK,KACb,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IACrD,CAAC;QACH,KAAK,CAAC,EAAE,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,EAAE,mCAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAyB,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvD,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,WAAW,EAAE,CAAC,CAAM,EAAE,EAAE;YACxD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;YACpD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE;YACnD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,UAAU,EAAE,CAAC,CAAM,EAAE,EAAE;YACvD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;;YACpD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;YACxC,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU,EAAE;gBAE1B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;iBAChD;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;iBAC9C;aACF;iBAAM;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACtE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;iBAC/C;gBACD,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,iCAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;YACpD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC/C;YACD,IAAI,CAAC,UAAU,CAAC,kBAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAES,wBAAwB,CAAC,MAAe;QAChD,MAAM,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACrE,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACtE,OAAO;YACL,gBAAgB,EAAE;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,gBAAgB;aACvB;YACD,MAAM,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YAC9C,MAAM,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SAClB,CAAC;IACjC,CAAC;IAEO,yBAAyB,CAAC,YAA+B;QAC/D,MAAM,WAAW,GAAQ,EAAE,CAAC;QAC5B,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;YACxB,WAAW,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;SAC9C;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE;YAC5B,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;SAC5C;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,EAAE;YACvB,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;SACvC;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE;YAC5B,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;SACnD;QACD,uCACK,IAAA,0BAAkB,EAAC,YAAY,CAAC,GAChC,WAAW,EACd;IACJ,CAAC;IAIO,kBAAkB,CAAC,MAAe,EAAE,CAAM;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAES,kBAAkB,CAAC,WAA4E;;QACvG,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;YACnC,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,CAAC,IAAI,mBACJ,MAAA,MAAA,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,0CAAE,IAAI,0CAAG,CAAC,CAAC,EACxD,CAAC;aACJ;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,sBAAsB,CAAC,WAAmD;;QAClF,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YAGpC,IAAI,CAAC,IAAI,CAAC,MAAA,MAAA,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,0CAAE,IAAI,0CAAG,CAAC,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,SAAiB,EAAE,MAAe;;QACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE;gBAEL,WAAW,EAAE,SAAS;gBAEtB,aAAa,EAAE,MAAM;gBAErB,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAE9D,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBAExE,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC;gBAExE,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,4BAA4B,CAAC;gBAElF,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;gBAE5C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;gBAElD,wBAAwB,EAAE,IAAI,CAAC,yBAAyB;gBAExD,2BAA2B,EAAE,IAAI,CAAC,4BAA4B;gBAE9D,UAAU,EAAE,IAAI,CAAC,WAAW;aAC7B;YACD,MAAM,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAc;SACrC,CAAC,CAAC;IACL,CAAC;IAIO,aAAa,CAAC,WAAqB,EAAE,MAAe;;QAC1D,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAA,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,CAAA,EAAE;YACtE,OAAO;SACR;QAGD,MAAM,MAAM,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,mCAAI,EAAE,CAAC;QACpD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;YAC/C,OAAO;gBACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aACzB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAG3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;YAC/C,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtC,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAEpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACjC,OAAO;aACR;YACD,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAyB,EAAE,EAAE;;gBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;gBAS3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC5G,IAAI,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAG,UAAU,CAAC,KAAI,kBAAkB,EAAE;oBACnE,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,EAAE;wBAChD,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC;qBAClD;oBACD,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBACtE,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;iBAChD;qBAAM,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,0CAAG,UAAU,CAAC,KAAI,CAAC,kBAAkB,EAAE;oBAC7F,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;oBACxC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC/D;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,WAAqB,EAAE,MAAe;;QAChE,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAA,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,CAAA,EAAE;YACtE,OAAO;SACR;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;;YACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBAE7D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;gBAC7D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;gBAG7D,MAAM,MAAM,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,mCAAI,EAAE,CAAC;gBACpD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC;gBAE3D,MAAM,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;gBAC9B,MAAM,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;gBAE9B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;oBAC/C,OAAO;wBACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;wBAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;qBAC9B,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,gBAAgB;qBACzB,KAAK,EAAE;qBACP,GAAG,CACF,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CACrC,CAAC;gBAEJ,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;oBAChD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACtC,OAAO;qBACR;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACjC,OAAO;qBACR;oBACD,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAyB,EAAE,EAAE;;wBAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;wBAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;wBAS3D,IACE,CAAA,MAAA,IAAI,CAAC,4BAA4B,0CAAG,UAAU,CAAC;4BAC/C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,EAChF;4BACA,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;4BAC3C,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,EAAE;gCACtD,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC;6BACxD;4BACD,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;4BAC5E,OAAO,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;yBACtD;6BAAM,IACL,CAAA,MAAA,MAAA,IAAI,CAAC,yBAAyB,0CAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,0CAAG,UAAU,CAAC;4BACjE,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,EACjF;4BACA,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;4BACxC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;4BAC5C,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;yBAC7D;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,mBAA4B,EAAE,oBAAkC,EAAE,IAAkB;QAE9G,IAAI,UAAU,GAA+B,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC;YAClD,UAAU,GAAG;gBACX;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;aACF,CAAC;YACF,OAAO,IAAA,gCAAuB,EAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;SAClE;QACD,OAAO,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAES,YAAY,CACpB,OAAgC,EAChC,UAAwC,EACxC,SAAiB;QAEjB,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;YACpD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;gBAC5B,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtC,OAAO;iBACR;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACjC,OAAO;iBACR;gBACD,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAgB,EAAE,EAAE;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;oBAClD,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;oBAC/B,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;oBAChC,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC1C,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB,CAAC,cAAsB,EAAE,SAAiB;QACrE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,KAAK,KAAK,cAAc,EAAE;gBAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;QAEvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAGO,sBAAsB,CAAC,MAAe,EAAE,QAAiB;QAC/D,MAAM;aACH,YAAY,EAAE;aACd,WAAW,EAAE;aACb,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAIO,WAAW,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,mBAAmB,CAAC,WAAqB,EAAE,MAAe;;QAChE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAE7B,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC;YAKjD,MAAA,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAC,IAAI,CAAC,EAAE;;gBACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;gBACnF,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,CAAC,CAAC;gBACxD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC;gBAC7C,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAqC,CAAC;oBACpE,MAAM,UAAU,GAAG,YAAY;yBAC5B,QAAQ,EAAE;yBACV,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;oBACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC3G,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACvD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;oBACzE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC,CAAC;oBACrE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;wBAC1G,SAAS;wBACT,SAAS;qBACV,CAAC,CAAC;oBAEH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,gBAAgB,EAAE,QAAQ;wBAC1B,KAAK,EAAE,eAAe;wBACtB,GAAG,EAAE,aAAa;wBAClB,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC;wBACtD,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC;qBACnD,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,gBAAgB,EAAE,mCAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAItD,MAAM,aAAa,GAAG,IAAA,aAAI,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7C,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC;oBACjF,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC;oBAC7E,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;oBACvG,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;oBAEzG,MAAM,KAAK,GACT,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC1G,MAAM,GAAG,GACP,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACxG,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;oBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;oBACvD,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,gBAAgB,EAAE,IAAI;wBACtB,KAAK,EAAE,QAAQ;wBACf,GAAG,EAAE,MAAM;wBACX,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;qBACzC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAIS,8BAA8B;QACtC,OAAO,IAAI,CAAC,gBAAuC,CAAC;IACtD,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnC,KAAa,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAE7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAEpC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAE3B,IAAI,SAAS,EAAE;oBACb,SAAS,CAAC,WAAW,CAAC,KAAyB,CAAC,CAAC;iBAClD;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;IACH,CAAC;;AAvtBH,sBAwtBC;AAttBQ,UAAI,GAAG,wBAAiB,CAAC,KAAK,CAAC;AAItB,kBAAY,GAAG;IAC7B,KAAK,EAAL,aAAK;CACN,CAAC;AACK,aAAO,GAAG,OAAO,CAAC;AAitBpB,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":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IBounds, IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, polygonIntersectPolygon, isValid, last } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark, IMarkGraphic } from '../../mark/interface';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { AxisComponent } from '../axis/base-axis';\nimport { getSpecInfo } from '../util';\nimport { brush } from '../../theme/builtin/common/component/brush';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static readonly builtInTheme = {\n brush\n };\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: {\n operateComponent: AxisComponent | DataZoom;\n start: number;\n end: number;\n startValue: number | string;\n endValue: number | string;\n }[] = [];\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IBrushSpec>(chartSpec, this.specKey, this.type, (s: IBrushSpec) => {\n return s.visible !== false;\n });\n }\n\n /*** start: abstract pipe ***/\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 注册mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n created() {\n super.created();\n\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _bindRegions() {\n if (!isValid(this._spec.regionId) && !isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n } else {\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n }\n\n protected _bindLinkedSeries() {\n if (!isValid(this._spec.brushLinkSeriesId) && !isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n /*** end: abstract pipe ***/\n\n /*** start: brush component ***/\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后,清空brushMask 和 重置图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.brushActive, (e: any) => {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n this._emitEvent(ChartEvent.brushActive, region);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._setRegionMarkPickable(region, true);\n this._initMarkBrushState(componentIndex, '');\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n if (this._spec?.onBrushEnd) {\n // 如果onBrushEnd返回true,则清空brush, 并抛出clear事件\n if (this._spec.onBrushEnd(e) === true) {\n this.clearGraphic();\n this._initMarkBrushState(componentIndex, '');\n this._emitEvent(ChartEvent.brushClear, region);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n /*** end: brush component ***/\n\n /*** start: event dispatch ***/\n private _handleBrushChange(region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].context?.data?.[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IMarkGraphic }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].context?.data?.[0]);\n }\n return data;\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 图形\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 图形\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 图形\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 图形\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n },\n vchart: this._option?.globalInstance\n });\n }\n /*** end: event dispatch ***/\n\n /** start: set mark state ***/\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n });\n const { markTypeFilter = [] } = this._spec;\n\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n const isBrushContainItem = this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem);\n if (this._outOfBrushElementsMap?.[elementKey] && isBrushContainItem) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] && !isBrushContainItem) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._outOfBrushElementsMap[elementKey] = graphicItem;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n\n const dx = regionOffsetX || 0;\n const dy = regionOffsetY || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n operateMask.globalAABBBounds\n .clone()\n .set(\n operateMask.globalAABBBounds.x1 + dx,\n operateMask.globalAABBBounds.y1 + dy,\n operateMask.globalAABBBounds.x2 + dx,\n operateMask.globalAABBBounds.y2 + dy\n );\n\n const { markTypeFilter = [] } = this._spec;\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const { key } = graphicItem.context;\n\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._linkedOutOfBrushElementsMap[elementKey] = graphicItem;\n }\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMaskAABBBounds: IBounds, brushMaskPointsCoord: IPointLike[], item: IMarkGraphic) {\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (['symbol', 'rect'].includes(item.type)) {\n const { x1, x2, y1, y2 } = item?.globalAABBBounds;\n itemBounds = [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y1\n },\n {\n x: x2,\n y: y2\n },\n {\n x: x1,\n y: y2\n }\n ];\n return polygonIntersectPolygon(brushMaskPointsCoord, itemBounds);\n }\n return brushMaskAABBBounds.intersects(item.globalAABBBounds);\n }\n\n protected _initItemMap(\n itemMap: Record<string, IMark[]>,\n elementMap: Record<string, IMarkGraphic>,\n stateName: string\n ) {\n const { markTypeFilter = [] } = this._spec;\n\n Object.entries(itemMap).forEach(([regionId, marks]) => {\n marks.forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((el: IMarkGraphic) => {\n const elementKey = mark.id + '_' + el.context.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n stateName && el.addState(stateName, true);\n elementMap[elementKey] = el;\n });\n });\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._initItemMap(this._itemMap, this._outOfBrushElementsMap, stateName);\n this._initItemMap(this._linkedItemMap, this._linkedOutOfBrushElementsMap, stateName);\n }\n\n // 绘制brush的时候, 避免brush与图元交互冲突\n private _setRegionMarkPickable(region: IRegion, pickable: boolean) {\n region\n .getGroupMark()\n .getGraphics()\n .forEach(g => g.setAttribute('childrenPickable', pickable));\n }\n /** end: set mark state ***/\n\n /** start: control data zoom ***/\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent,\n startValue: dataZoom.statePointToData(newStartPercent),\n endValue: dataZoom.statePointToData(newEndPercent)\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = axis.scaleRangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n axis.scaleRangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd,\n startValue: axis.getScale().invert(startPos),\n endValue: axis.getScale().invert(endPos)\n });\n }\n });\n }\n }\n\n /** end: control data zoom ***/\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach((brush, index) => {\n // 清空元素状态\n this._initMarkBrushState(index, '');\n\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
@@ -1,8 +1,6 @@
1
1
  import type { IBoundsLike } from '@visactor/vutils';
2
2
  import { Tag } from '@visactor/vrender-components';
3
3
  import type { IGraphic } from '@visactor/vrender-core';
4
- import type { IModelRenderOption } from '../../model/interface';
5
- import type { IRegion } from '../../region/interface';
6
4
  import { BaseComponent } from '../base/base-component';
7
5
  import type { IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';
8
6
  import type { IComponentOption } from '../interface';
@@ -67,9 +65,7 @@ export declare abstract class BaseCrossHair<T extends ICartesianCrosshairSpec |
67
65
  private _handleTooltipShow;
68
66
  private _handleTooltipHideOrRelease;
69
67
  protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value'): IAxisInfo<T>;
70
- changeRegions(regions: IRegion[]): void;
71
68
  onLayoutEnd(): void;
72
- onRender(ctx: IModelRenderOption): void;
73
69
  protected _releaseEvent(): void;
74
70
  protected _parseFieldInfo(): void;
75
71
  protected _parseCrosshairSpec(): void;
@@ -230,13 +230,11 @@ class BaseCrossHair extends base_component_1.BaseComponent {
230
230
  });
231
231
  })), map;
232
232
  }
233
- changeRegions(regions) {}
234
233
  onLayoutEnd() {
235
234
  const region = this._regions[0];
236
235
  this.setLayoutRect(region.getLayoutRect()), this.setLayoutStartPosition(region.getLayoutStartPoint()),
237
236
  super.onLayoutEnd();
238
237
  }
239
- onRender(ctx) {}
240
238
  _releaseEvent() {
241
239
  this.clearOutEvent();
242
240
  const triggerConfig = this._getTriggerEvent();
@@ -264,12 +262,12 @@ class BaseCrossHair extends base_component_1.BaseComponent {
264
262
  void 0 !== labelZIndex && (this.labelZIndex = labelZIndex), void 0 !== gridZIndex && (this.gridZIndex = gridZIndex);
265
263
  }
266
264
  _parseField(field, fieldName) {
267
- var _a, _b;
265
+ var _a, _b, _c;
268
266
  const hair = {}, {line: line = {}, label: label = {}, visible: visible} = field;
269
267
  if (hair.visible = visible, hair.type = line.type || "line", !1 === line.visible) hair.style = {
270
268
  visible: !1
271
269
  }; else {
272
- const style = line.style || {}, {stroke: stroke, fill: fill, lineWidth: lineWidth} = style, _c = style, {strokeOpacity: strokeOpacity, fillOpacity: fillOpacity, opacity: opacity} = _c, restStyle = __rest(_c, [ "strokeOpacity", "fillOpacity", "opacity" ]), isLineType = "line" === hair.type;
270
+ const style = line.style || {}, {stroke: stroke, fill: fill, lineWidth: lineWidth} = style, _d = style, {strokeOpacity: strokeOpacity, fillOpacity: fillOpacity, opacity: opacity} = _d, restStyle = __rest(_d, [ "strokeOpacity", "fillOpacity", "opacity" ]), isLineType = "line" === hair.type;
273
271
  let finalOpacity = isLineType ? strokeOpacity : fillOpacity;
274
272
  if ((0, vutils_1.isNumber)(opacity) && (finalOpacity = (null != finalOpacity ? finalOpacity : 1) * opacity),
275
273
  hair.style = Object.assign({
@@ -287,7 +285,7 @@ class BaseCrossHair extends base_component_1.BaseComponent {
287
285
  }
288
286
  }
289
287
  if (label.visible) {
290
- const labelBackground = label.labelBackground || {}, labelStyle = label.style || {}, _d = labelBackground.style || {}, {fill: rectFill = "rgba(47, 59, 82, 0.9)", stroke: rectStroke, outerBorder: outerBorder} = _d, rectStyle = __rest(_d, [ "fill", "stroke", "outerBorder" ]);
288
+ const labelBackground = label.labelBackground || {}, syncAxisLabelAngle = null !== (_c = label.syncAxisLabelAngle) && void 0 !== _c && _c, labelStyle = label.style || {}, _e = labelBackground.style || {}, {fill: rectFill = "rgba(47, 59, 82, 0.9)", stroke: rectStroke, outerBorder: outerBorder} = _e, rectStyle = __rest(_e, [ "fill", "stroke", "outerBorder" ]);
291
289
  hair.label = {
292
290
  visible: !0,
293
291
  formatMethod: label.formatMethod,
@@ -295,6 +293,7 @@ class BaseCrossHair extends base_component_1.BaseComponent {
295
293
  minWidth: labelBackground.minWidth,
296
294
  maxWidth: labelBackground.maxWidth,
297
295
  padding: labelBackground.padding,
296
+ syncAxisLabelAngle: syncAxisLabelAngle,
298
297
  textStyle: Object.assign(Object.assign({
299
298
  fontSize: 14,
300
299
  pickable: !1