@visactor/vchart 2.0.2 → 2.0.3-alpha.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 (214) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +412 -435
  3. package/build/index.js +411 -435
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/animate-manager.d.ts +1 -0
  7. package/cjs/animation/animate-manager.js +2 -0
  8. package/cjs/animation/animate-manager.js.map +1 -0
  9. package/cjs/animation/index.js +1 -2
  10. package/cjs/animation/interface.js +2 -1
  11. package/cjs/chart/base/base-chart.d.ts +0 -1
  12. package/cjs/chart/base/base-chart.js +8 -5
  13. package/cjs/chart/base/base-chart.js.map +1 -1
  14. package/cjs/chart/interface/chart.d.ts +0 -1
  15. package/cjs/chart/interface/chart.js.map +1 -1
  16. package/cjs/chart/util.js +1 -2
  17. package/cjs/compile/compiler.d.ts +0 -1
  18. package/cjs/compile/compiler.js +5 -13
  19. package/cjs/compile/compiler.js.map +1 -1
  20. package/cjs/compile/interface/compilable-item.d.ts +0 -1
  21. package/cjs/compile/interface/compilable-item.js.map +1 -1
  22. package/cjs/compile/interface/compiler.d.ts +0 -5
  23. package/cjs/compile/interface/compiler.js.map +1 -1
  24. package/cjs/component/axis/base-axis.js.map +1 -1
  25. package/cjs/component/axis/cartesian/band-axis.d.ts +0 -8
  26. package/cjs/component/axis/cartesian/band-axis.js +0 -9
  27. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  28. package/cjs/component/axis/interface/common.js.map +1 -1
  29. package/cjs/component/axis/mixin/band-axis-mixin.d.ts +0 -2
  30. package/cjs/component/axis/mixin/band-axis-mixin.js +1 -15
  31. package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
  32. package/cjs/component/brush/brush.js +6 -6
  33. package/cjs/component/brush/brush.js.map +1 -1
  34. package/cjs/component/brush/interface.d.ts +0 -1
  35. package/cjs/component/brush/interface.js.map +1 -1
  36. package/cjs/component/crosshair/base.d.ts +1 -1
  37. package/cjs/component/crosshair/base.js +1 -1
  38. package/cjs/component/crosshair/base.js.map +1 -1
  39. package/cjs/component/crosshair/utils/cartesian.js +2 -2
  40. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  41. package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -0
  42. package/cjs/component/data-zoom/data-filter-base-component.js +19 -13
  43. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  44. package/cjs/component/data-zoom/interface.d.ts +3 -0
  45. package/cjs/component/data-zoom/interface.js.map +1 -1
  46. package/cjs/component/data-zoom/util.d.ts +1 -0
  47. package/cjs/component/data-zoom/util.js +4 -3
  48. package/cjs/component/data-zoom/util.js.map +1 -1
  49. package/cjs/component/player/player.js +1 -2
  50. package/cjs/component/player/player.js.map +1 -1
  51. package/cjs/component/tooltip/tooltip.js +3 -8
  52. package/cjs/component/tooltip/tooltip.js.map +1 -1
  53. package/cjs/constant/attribute.js +2 -1
  54. package/cjs/constant/sunburst.js +1 -2
  55. package/cjs/constant/waterfall.js +2 -1
  56. package/cjs/core/index.d.ts +1 -1
  57. package/cjs/core/index.js +1 -1
  58. package/cjs/core/index.js.map +1 -1
  59. package/cjs/core/util.js +1 -1
  60. package/cjs/core/vchart.d.ts +0 -1
  61. package/cjs/core/vchart.js +17 -36
  62. package/cjs/core/vchart.js.map +1 -1
  63. package/cjs/data/transforms/obj-flat.js +4 -1
  64. package/cjs/data/transforms/obj-flat.js.map +1 -1
  65. package/cjs/mark/base/base-mark.d.ts +2 -6
  66. package/cjs/mark/base/base-mark.js +51 -69
  67. package/cjs/mark/base/base-mark.js.map +1 -1
  68. package/cjs/mark/group.d.ts +2 -3
  69. package/cjs/mark/group.js +13 -15
  70. package/cjs/mark/group.js.map +1 -1
  71. package/cjs/mark/interface/common.d.ts +2 -5
  72. package/cjs/mark/interface/common.js.map +1 -1
  73. package/cjs/model/base-model.d.ts +1 -5
  74. package/cjs/model/base-model.js +0 -7
  75. package/cjs/model/base-model.js.map +1 -1
  76. package/cjs/model/interface.d.ts +1 -4
  77. package/cjs/model/interface.js.map +1 -1
  78. package/cjs/plugin/components/tooltip-handler/utils/style.js +4 -4
  79. package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  80. package/cjs/region/region.js.map +1 -1
  81. package/cjs/series/base/base-series.js +3 -2
  82. package/cjs/series/base/base-series.js.map +1 -1
  83. package/cjs/series/dot/dot.d.ts +1 -0
  84. package/cjs/series/dot/dot.js +29 -6
  85. package/cjs/series/dot/dot.js.map +1 -1
  86. package/cjs/series/dot/interface.d.ts +1 -0
  87. package/cjs/series/dot/interface.js.map +1 -1
  88. package/cjs/series/dot/tooltip-helper.js +3 -2
  89. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  90. package/cjs/series/funnel/funnel.js +2 -0
  91. package/cjs/series/funnel/funnel.js.map +1 -1
  92. package/cjs/series/interface/type.d.ts +3 -0
  93. package/cjs/series/interface/type.js +5 -3
  94. package/cjs/series/interface/type.js.map +1 -1
  95. package/cjs/series/link/constant.js +8 -0
  96. package/cjs/series/link/constant.js.map +1 -1
  97. package/cjs/series/link/interface.d.ts +10 -1
  98. package/cjs/series/link/interface.js +5 -1
  99. package/cjs/series/link/interface.js.map +1 -1
  100. package/cjs/series/link/link.d.ts +3 -1
  101. package/cjs/series/link/link.js +46 -16
  102. package/cjs/series/link/link.js.map +1 -1
  103. package/cjs/series/map/map.js +2 -1
  104. package/cjs/series/map/map.js.map +1 -1
  105. package/cjs/series/pie/pie.js +1 -0
  106. package/cjs/series/pie/pie.js.map +1 -1
  107. package/cjs/util/mark.d.ts +0 -1
  108. package/cjs/util/mark.js +1 -10
  109. package/cjs/util/mark.js.map +1 -1
  110. package/esm/animation/animate-manager.d.ts +1 -0
  111. package/esm/animation/animate-manager.js +2 -0
  112. package/esm/animation/animate-manager.js.map +1 -0
  113. package/esm/animation/index.js +1 -2
  114. package/esm/animation/interface.js +2 -1
  115. package/esm/chart/base/base-chart.d.ts +0 -1
  116. package/esm/chart/base/base-chart.js +8 -5
  117. package/esm/chart/base/base-chart.js.map +1 -1
  118. package/esm/chart/interface/chart.d.ts +0 -1
  119. package/esm/chart/interface/chart.js.map +1 -1
  120. package/esm/chart/util.js +1 -2
  121. package/esm/compile/compiler.d.ts +0 -1
  122. package/esm/compile/compiler.js +6 -13
  123. package/esm/compile/compiler.js.map +1 -1
  124. package/esm/compile/interface/compilable-item.d.ts +0 -1
  125. package/esm/compile/interface/compilable-item.js.map +1 -1
  126. package/esm/compile/interface/compiler.d.ts +0 -5
  127. package/esm/compile/interface/compiler.js.map +1 -1
  128. package/esm/component/axis/base-axis.js.map +1 -1
  129. package/esm/component/axis/cartesian/band-axis.d.ts +0 -8
  130. package/esm/component/axis/cartesian/band-axis.js +1 -9
  131. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  132. package/esm/component/axis/interface/common.js.map +1 -1
  133. package/esm/component/axis/mixin/band-axis-mixin.d.ts +0 -2
  134. package/esm/component/axis/mixin/band-axis-mixin.js +1 -15
  135. package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
  136. package/esm/component/brush/brush.js +6 -6
  137. package/esm/component/brush/brush.js.map +1 -1
  138. package/esm/component/brush/interface.d.ts +0 -1
  139. package/esm/component/brush/interface.js.map +1 -1
  140. package/esm/component/crosshair/base.d.ts +1 -1
  141. package/esm/component/crosshair/base.js +1 -1
  142. package/esm/component/crosshair/base.js.map +1 -1
  143. package/esm/component/crosshair/utils/cartesian.js +2 -2
  144. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  145. package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -0
  146. package/esm/component/data-zoom/data-filter-base-component.js +18 -13
  147. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  148. package/esm/component/data-zoom/interface.d.ts +3 -0
  149. package/esm/component/data-zoom/interface.js.map +1 -1
  150. package/esm/component/data-zoom/util.d.ts +1 -0
  151. package/esm/component/data-zoom/util.js +5 -2
  152. package/esm/component/data-zoom/util.js.map +1 -1
  153. package/esm/component/player/player.js +1 -2
  154. package/esm/component/player/player.js.map +1 -1
  155. package/esm/component/tooltip/tooltip.js +3 -8
  156. package/esm/component/tooltip/tooltip.js.map +1 -1
  157. package/esm/constant/attribute.js +2 -1
  158. package/esm/constant/sunburst.js +1 -2
  159. package/esm/constant/waterfall.js +2 -1
  160. package/esm/core/index.d.ts +1 -1
  161. package/esm/core/index.js +1 -1
  162. package/esm/core/index.js.map +1 -1
  163. package/esm/core/util.js +1 -1
  164. package/esm/core/vchart.d.ts +0 -1
  165. package/esm/core/vchart.js +16 -35
  166. package/esm/core/vchart.js.map +1 -1
  167. package/esm/data/transforms/obj-flat.js +4 -1
  168. package/esm/data/transforms/obj-flat.js.map +1 -1
  169. package/esm/mark/base/base-mark.d.ts +2 -6
  170. package/esm/mark/base/base-mark.js +50 -69
  171. package/esm/mark/base/base-mark.js.map +1 -1
  172. package/esm/mark/group.d.ts +2 -3
  173. package/esm/mark/group.js +12 -18
  174. package/esm/mark/group.js.map +1 -1
  175. package/esm/mark/interface/common.d.ts +2 -5
  176. package/esm/mark/interface/common.js.map +1 -1
  177. package/esm/model/base-model.d.ts +1 -5
  178. package/esm/model/base-model.js +0 -7
  179. package/esm/model/base-model.js.map +1 -1
  180. package/esm/model/interface.d.ts +1 -4
  181. package/esm/model/interface.js.map +1 -1
  182. package/esm/plugin/components/tooltip-handler/utils/style.js +4 -5
  183. package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  184. package/esm/region/region.js.map +1 -1
  185. package/esm/series/base/base-series.js +3 -2
  186. package/esm/series/base/base-series.js.map +1 -1
  187. package/esm/series/dot/dot.d.ts +1 -0
  188. package/esm/series/dot/dot.js +29 -6
  189. package/esm/series/dot/dot.js.map +1 -1
  190. package/esm/series/dot/interface.d.ts +1 -0
  191. package/esm/series/dot/interface.js.map +1 -1
  192. package/esm/series/dot/tooltip-helper.js +3 -2
  193. package/esm/series/dot/tooltip-helper.js.map +1 -1
  194. package/esm/series/funnel/funnel.js +2 -0
  195. package/esm/series/funnel/funnel.js.map +1 -1
  196. package/esm/series/interface/type.d.ts +3 -0
  197. package/esm/series/interface/type.js +5 -3
  198. package/esm/series/interface/type.js.map +1 -1
  199. package/esm/series/link/constant.js +8 -0
  200. package/esm/series/link/constant.js.map +1 -1
  201. package/esm/series/link/interface.d.ts +10 -1
  202. package/esm/series/link/interface.js +5 -1
  203. package/esm/series/link/interface.js.map +1 -1
  204. package/esm/series/link/link.d.ts +3 -1
  205. package/esm/series/link/link.js +48 -16
  206. package/esm/series/link/link.js.map +1 -1
  207. package/esm/series/map/map.js +2 -1
  208. package/esm/series/map/map.js.map +1 -1
  209. package/esm/series/pie/pie.js +1 -0
  210. package/esm/series/pie/pie.js.map +1 -1
  211. package/esm/util/mark.d.ts +0 -1
  212. package/esm/util/mark.js +0 -7
  213. package/esm/util/mark.js.map +1 -1
  214. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":"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","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport { ComponentTypeEnum, type IComponent, type IComponentOption } from '../interface';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain, lockStatisticsFilter } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n mixin,\n clamp,\n isNil,\n merge,\n isEqual,\n isValid,\n array,\n minInArray,\n maxInArray,\n abs,\n last\n} from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IFilterMode } from './interface';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { IGroupMark } from '../../mark/interface/mark';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n protected _dataUpdating: boolean = false;\n\n // 数据\n protected _stateScale: IBaseScale;\n\n protected _relatedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n // 窗口范围缓存\n protected _spanCache!: number;\n protected _shouldChange: boolean = true;\n\n protected _domainCache!: any;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n get relatedAxisComponent() {\n return this._relatedAxisComponent;\n }\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this.dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this.dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (\n zoomLock ||\n // 拖拽两端的handler, 而非拖拽中间handler\n (end - start !== this._spanCache &&\n // 拖拽后超出限制范围\n (end - start < this._minSpan || end - start > this._maxSpan))\n ) {\n this._shouldChange = false;\n } else {\n this._shouldChange = true;\n this._spanCache = end - start;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: 'startHandler' | 'endHandler') {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axis.scaleRangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axis.scaleRangeFactorStart(newRangeFactor[0]);\n break;\n default:\n axis.scaleRangeFactorStart(newRangeFactor[0], true);\n axis.scaleRangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axis.scaleRangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axis.scaleRangeFactorEnd(newRangeFactor[1]);\n break;\n default:\n axis.scaleRangeFactorEnd(newRangeFactor[1], true);\n axis.scaleRangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: 'startHandler' | 'endHandler') => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === 'axis') {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag);\n if (this._auto) {\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n }\n\n // 强制更新视图, 不管/component/axis/base-axis.ts computeData中的tickData判断\n axis.effect.scaleUpdate({\n value: 'force'\n });\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === 'axis') {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, false);\n this._handleChange(this._start, this._end, true);\n // auto 模式下需要重新布局\n if (this._spec.auto && !isEqual(this._domainCache, domain)) {\n this._domainCache = domain;\n this._dataUpdating = true;\n this.getChart()?.setLayoutTag(true, null, false);\n }\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n if ((this._spec as IDataZoomSpec).customDomain) {\n return (this._spec as IDataZoomSpec).customDomain;\n }\n\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n let isCategoryState: boolean;\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n\n dataCollection.push(s.getRawData());\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.xField)\n : array(seriesSpec.angleField ?? seriesSpec.categoryField);\n const yField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.yField)\n : array(seriesSpec.radiusField ?? seriesSpec.valueField);\n\n originalStateFields[s.id] =\n s.type === 'link' ? ['from_xField'] : stateAxisHelper === xAxisHelper ? xField : yField;\n\n if (isContinuous(stateAxisHelper.getScale(0).type)) {\n isCategoryState = false;\n stateFields.push(originalStateFields[s.id]);\n } else {\n stateFields.push(originalStateFields[s.id][0]);\n }\n\n if (this._valueField) {\n const valueField = s.type === 'link' ? ['from_yField'] : valueAxisHelper === xAxisHelper ? xField : yField;\n if (isContinuous(valueAxisHelper.getScale(0).type)) {\n valueFields.push(...valueField);\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields,\n isCategoryState\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n // todo 似乎没必要创建\n this._data = new CompilableData(this._option, data);\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n statePointToData(state: number) {\n const scale = this._stateScale;\n const domain = scale.domain();\n\n // continuous scale: 本来可以用scale invert,但scale invert在大数据场景下性能不太好,所以这里自行计算\n if (isContinuous(scale.type)) {\n if (this._isReverse()) {\n return domain[0] + (last(domain) - domain[0]) * (1 - state);\n }\n return domain[0] + (last(domain) - domain[0]) * state;\n }\n\n // discete scale: 根据bandSize计算不准确, bandSize不是最新的, 导致index计算错误, 所以仍然使用invert\n let range = scale.range();\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (last(range) - range[0]) * state;\n // const bandSize = (scale as BandScale).bandwidth();\n // const domainIndex = Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1);\n // return domain[domainIndex];\n return scale.invert(posInRange);\n }\n\n dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (last(range) - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && isValid(this._spec.start)) || (mode === 'value' && isValid(this._spec.startValue));\n }\n return (mode === 'percent' && isValid(this._spec.end)) || (mode === 'value' && isValid(this._spec.endValue));\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this.dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this.dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this.dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this.statePointToData(start);\n this._endValue = this.statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain()[0] !== last(this._stateScale.domain())) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if ((!this._relatedAxisComponent || this._filterMode !== 'axis') && (this._start !== 0 || this._end !== 1)) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange);\n }\n } else {\n this._stateScale = new BandScale();\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== 'axis') {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n registerDataSetInstanceTransform(this._option.dataSet, 'lockStatisticsFilter', lockStatisticsFilter);\n\n eachSeries(\n this._regions,\n s => {\n s.getViewDataStatistics().transform(\n {\n type: 'lockStatisticsFilter',\n options: {\n originalFields: () => {\n return s.getViewDataStatistics().getFields();\n },\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: 1\n },\n false\n );\n\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, (this._spec as any)[m.name]);\n });\n });\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (\n params: { zoomDelta: number; zoomX?: number; zoomY?: number },\n e?: BaseEventParams['event']\n ) => {\n if (!this._activeRoam || (this._zoomAttr.filter && !this._zoomAttr.filter(params, e))) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam || (this._scrollAttr.filter && !this._scrollAttr.filter(params, e))) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n\n // 判断是否滚动到最顶部或最底部\n // 如果滚动到最顶部或最底部,则不应该stopBubble\n const hasChange = this._start !== 0 && this._end !== 1;\n\n return active && hasChange;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam || (this._dragAttr.filter && !this._dragAttr.filter(delta, e))) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n return false;\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? this._spec?.delayTime ?? 30 : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime, allowComponentZoom: true };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n protected _autoVisible(isShown: boolean) {\n if (!this._auto) {\n return;\n }\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect): void {\n super.onLayoutStart(layoutRect, viewRect);\n const isShown = this._autoUpdate(layoutRect);\n this._autoVisible(isShown);\n this._dataUpdating = false;\n }\n\n onLayoutEnd(): void {\n // 布局结束后, start和end会发生变化, 因此需要再次更新visible\n const isShown = !(this._start === 0 && this._end === 1);\n this._autoVisible(isShown);\n super.onLayoutEnd();\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n !this._dataUpdating &&\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n if (this.type === ComponentTypeEnum.scrollBar) {\n this._start = 0;\n this._end = 1;\n }\n this._updateRangeFactor();\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
1
+ {"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":";;;AAEA,4CAA8C;AAE9C,2DAAuD;AAEvD,4CAAyF;AACzF,iCAAgG;AAEhG,kDAAsG;AACtG,6CAAuE;AAMvE,0DAAgF;AAGhF,6CAY0B;AAU1B,iDAA8D;AAC9D,wEAAoE;AAIpE,8DAA2D;AAG3D,sDAAuD;AAGvD,wDAA0D;AAG1D,MAAsB,uBACpB,SAAQ,8BAAkD;IA6E1D,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAQD,cAAc,CACZ,KAAsB,EACtB,GAAoB,EACpB,YAAwD,CAAC,SAAS,EAAE,SAAS,CAAC;QAE9E,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;QAE/D,MAAM,YAAY,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAW,CAAC;QAChG,MAAM,UAAU,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAW,CAAC;QAExF,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,QAAmC;QACxC,IAAI,CAAC,gBAAgB,CAAC;YACpB,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC;YAClB,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,QAAmC;QACzC,IAAI,CAAC,gBAAgB,CAAC;YACpB,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC;YAClB,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAOS,aAAa,CAAC,KAAa,EAAE,GAAW,EAAE,eAAyB;;QAC3E,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,mCAAI,KAAK,CAAC;QAC/C,IACE,QAAQ;YAER,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC,UAAU;gBAE9B,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC/D;YACA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;SAC/B;IACH,CAAC;IAES,UAAU;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,qBAA2C,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAoB,CAAC;QACpD,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IACnG,CAAC;IAES,kBAAkB,CAAC,GAAmC;QAM9D,MAAM,IAAI,GAAG,IAAI,CAAC,qBAA2C,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAoB,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,cAAc,GAAqB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/G,MAAM,UAAU,GAAG,IAAI,CAAC,oBAA0C,CAAC;QACnE,IAAI,OAAO,EAAE;YACX,QAAQ,GAAG,EAAE;gBACX,KAAK,cAAc;oBACjB,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,YAAY;oBACf,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,MAAM;gBACR;oBACE,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpD,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC3D,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACtD;SACF;aAAM;YACL,QAAQ,GAAG,EAAE;gBACX,KAAK,cAAc;oBACjB,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,YAAY;oBACf,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,MAAM;gBACR;oBACE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAClD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACxD;SACF;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;IACH,CAAC;IAkDD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAW,EAAE,OAAO,CAAC,CAAC;QAlQ9B,eAAU,GAAyB,MAAM,CAAC;QAIhC,YAAO,GAAgB,MAAM,CAAC;QAO9B,qBAAgB,GAAa,SAAS,CAAC;QACvC,kBAAa,GAAY,KAAK,CAAC;QAgC/B,kBAAa,GAAY,IAAI,CAAC;QAK9B,gBAAW,GAAW,GAAG,CAAC;QAQ1B,gBAAW,GAAY,IAAI,CAAC;QAC5B,cAAS,GAAkB;YACnC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI;SACZ,CAAC;QACQ,cAAS,GAAkB;YACnC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,IAAI;SACd,CAAC;QACQ,gBAAW,GAAoB;YACvC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,IAAI;SACd,CAAC;QAqIF,WAAM,GAAY;YAChB,YAAY,EAAE,CAAC,GAAmC,EAAE,EAAE;;gBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,qBAA2C,CAAC;gBAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;oBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAoB,CAAC;oBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAA4B,CAAC;oBAE1D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAK,IAAI,CAAC,KAAuB,CAAC,cAAc,EAAE;wBACjG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAC5B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;wBAC/B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;qBAChC;oBAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,MAAA,MAAC,IAAI,CAAC,UAAuB,0CAAE,cAAc,mDAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;qBACzE;oBAGD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;wBACtB,KAAK,EAAE,OAAO;qBACf,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAA,kBAAU,EACR,IAAI,CAAC,QAAQ,EACb,CAAC,CAAC,EAAE;;wBACF,MAAA,CAAC,CAAC,WAAW,EAAE,0CAAE,WAAW,EAAE,CAAC;oBACjC,CAAC,EACD;wBACE,MAAM,EAAE,IAAI,CAAC,aAAa;wBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;qBAC7B,CACF,CAAC;oBACF,IAAA,kBAAU,EACR,IAAI,CAAC,QAAQ,EACb,CAAC,CAAC,EAAE;wBACF,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACvB,CAAC,EACD;wBACE,MAAM,EAAE,IAAI,CAAC,aAAa;wBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;qBAC7B,CACF,CAAC;iBACH;YACH,CAAC;SACF,CAAC;QAEQ,aAAQ,GAAY,IAAI,CAAC;QAofzB,uBAAkB,GAAG,CAAC,UAAkB,EAAE,QAAgB,EAAE,GAAY,EAAE,EAAE;;YACpF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAE1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/E,MAAA,MAAA,IAAI,CAAC,MAAM,EAAC,YAAY,mDAAG,GAAG,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEQ,qBAAgB,GAAG,CAC3B,MAA6D,EAC7D,CAA4B,EAC5B,EAAE;;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrF,OAAO;aACR;YAED,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;YAC3C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAA,MAAC,IAAI,CAAC,KAAK,CAAC,QAA0B,0CAAE,IAAI,mCAAI,CAAC,CAAC;YAEnE,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACR;YACD,IAAI,KAAK,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE;gBAClC,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;YACtD,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;YAChC,IAAI,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;YAC9B,IAAI,QAAQ,EAAE;gBACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnD,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;gBACxF,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;aACrF;YACD,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC;QAEQ,uBAAkB,GAAG,CAAC,MAA4C,EAAE,CAA2B,EAAE,EAAE;;YAC3G,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBACzF,OAAO,KAAK,CAAC;aACd;YACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAA,YAAG,EAAC,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAA,YAAG,EAAC,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC;YAClG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC7B,KAAK,GAAG,CAAC,KAAK,CAAC;aAChB;YAED,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAC;aAC1D;YAID,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;YAEvD,OAAO,MAAM,IAAI,SAAS,CAAC;QAC7B,CAAC,CAAC;QAEQ,qBAAgB,GAAG,CAAC,KAAuB,EAAE,CAA2B,EAAE,EAAE;;YACpF,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;gBACpF,OAAO;aACR;YACD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBAC1B,KAAK,GAAG,CAAC,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEQ,qBAAgB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YACjG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;gBAC3B,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;oBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;oBACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC1E;qBAAM,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;oBACpE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC1E;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QA3kBA,IAAI,CAAC,OAAO,GAAG,IAAA,kBAAS,EAAC,IAAW,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAA,6BAAoB,EAAC,IAAI,CAAC,OAAO,CAAC,iBAAyB,CAAC;IACnF,CAAC;IAKD,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACnF;aAAM,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SAC7F;QACD,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACxF;aAAM,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;YAC9C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;SAClG;QAID,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAE,EAAU,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpF,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;aAC7C;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC,IAAA,qBAAY,EAAE,EAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEpF,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;aACvC;SACF;QACD,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;YAC5D,IAAI,CAAC,qBAA4C,CAAC,cAAc,GAAG,IAAI,CAAC;SAC1E;IACH,CAAC;IAES,mBAAmB;;QAE3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEpH,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,qBAAqB,EAAC,mBAAmB,kDAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAChH,IAAI,IAAA,gBAAO,EAAC,gBAAgB,CAAC,EAAE;YAC7B,IAAA,gBAAO,EAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAA,cAAK,EAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1F,IAAA,gBAAO,EAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAA,cAAK,EAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;SAChG;QAED,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAChC,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/E;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;aACnC;SACF;QACD,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACnC,MAAM,eAAe,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;iBAAM;gBACL,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;aACrC;SACF;QACD,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAEtF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO;SACR;QACD,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAChC,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,OAAO;SACR;QACD,OAAO;IACT,CAAC;IAED,YAAY;;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAA,qBAAY,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEjD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;YAC1D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAA,IAAI,CAAC,QAAQ,EAAE,0CAAE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAClD;IACH,CAAC;IAES,0BAA0B,CAAC,YAAsB;QACzD,IAAK,IAAI,CAAC,KAAuB,CAAC,YAAY,EAAE;YAC9C,OAAQ,IAAI,CAAC,KAAuB,CAAC,YAAY,CAAC;SACnD;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/E,IAAI,YAAY,EAAE;YAChB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAU,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC/F;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,UAAU;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,SAAS;QACjB,MAAM,cAAc,GAAU,EAAE,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,eAAwB,CAAC;QAE7B,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,MAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,IAAA,kBAAU,EACR,IAAI,CAAC,QAAQ,EACb,CAAC,CAAC,EAAE;;gBACF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;oBACrB,OAAO;iBACR;gBAED,MAAM,WAAW,GACf,CAAC,CAAC,UAAU,KAAK,WAAW;oBAC1B,CAAC,CAAE,CAAsB,CAAC,cAAc,EAAE;oBAC1C,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO;wBACxB,CAAC,CAAE,CAAkB,CAAC,eAAe;wBACrC,CAAC,CAAC,IAAI,CAAC;gBACb,MAAM,WAAW,GACf,CAAC,CAAC,UAAU,KAAK,WAAW;oBAC1B,CAAC,CAAE,CAAsB,CAAC,cAAc,EAAE;oBAC1C,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO;wBACxB,CAAC,CAAE,CAAkB,CAAC,gBAAgB;wBACtC,CAAC,CAAC,IAAI,CAAC;gBACb,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;oBAChC,OAAO;iBACR;gBACD,MAAM,eAAe,GACnB,WAAW,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE;oBACvD,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE;wBACzD,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,IAAI,CAAC,aAAa;4BAClB,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,WAAW,CAAC;gBACtB,MAAM,eAAe,GAAG,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;gBAEpF,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBACpC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAIzB,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBAE/B,MAAM,MAAM,GACV,CAAC,CAAC,UAAU,KAAK,WAAW;oBAC1B,CAAC,CAAC,IAAA,cAAK,EAAC,UAAU,CAAC,MAAM,CAAC;oBAC1B,CAAC,CAAC,IAAA,cAAK,EAAC,MAAA,UAAU,CAAC,UAAU,mCAAI,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC/D,MAAM,MAAM,GACV,CAAC,CAAC,UAAU,KAAK,WAAW;oBAC1B,CAAC,CAAC,IAAA,cAAK,EAAC,UAAU,CAAC,MAAM,CAAC;oBAC1B,CAAC,CAAC,IAAA,cAAK,EAAC,MAAA,UAAU,CAAC,WAAW,mCAAI,UAAU,CAAC,UAAU,CAAC,CAAC;gBAE7D,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE1F,IAAI,IAAA,qBAAY,EAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBAClD,eAAe,GAAG,KAAK,CAAC;oBACxB,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC7C;qBAAM;oBACL,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChD;gBAED,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC3G,IAAI,IAAA,qBAAY,EAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;wBACtE,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;qBACjC;iBACF;YACH,CAAC,EACD;gBACE,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;aAC7B,CACF,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;SACjD;aAAM;YACL,IAAA,kBAAU,EACR,IAAI,CAAC,QAAQ,EACb,CAAC,CAAC,EAAE;gBACF,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEpC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBACzC;YACH,CAAC,EACD;gBACE,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;aAC7B,CACF,CAAC;SACH;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,IAAA,wCAA6B,EAAC,OAAO,EAAE,UAAU,EAAE,yBAAc,CAAC,CAAC;QACnE,IAAA,2CAAgC,EAAC,OAAO,EAAE,yBAAyB,EAAE,8BAAuB,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CACZ;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,cAAc,EAAE,cAAc;oBAC9B,WAAW;oBACX,WAAW;oBACX,eAAe;oBACf,WAAW;iBACZ;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;iBAC7B;aACF;SACF,EACD,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,CAAC,2BAA2B,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3G,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QAGxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvD,IAAI,CAAC,SAAS,GAAG,IAAA,cAAK,EAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvD,IAAI,CAAC,SAAS,GAAG,IAAA,cAAK,EAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC3D,IAAI,CAAC,WAAW,GAAG,IAAA,cAAK,EAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACvE;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;SACjC;QAGD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,mCAAI,IAAI,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAG9B,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;aAC7D;YACD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACvD;QAGD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;SACjC;QACD,MAAM,UAAU,GAAW,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAIvE,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,IAAqB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACnD,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;SACjC;QAED,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAES,UAAU,CAAC,UAA2B,EAAE,IAAY;QAC5D,IAAI,UAAU,KAAK,OAAO,EAAE;YAC1B,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;SAClH;QACD,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/G,CAAC;IAES,iBAAiB;;QACzB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACxB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAGlD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;gBAC1E,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAClG,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC3F;SACF;aAAM;YACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;gBACtB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;gBAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;oBACrB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC9C,CAAC,CAAC,CAAC,CAAC;YACR,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9G;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,mCAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,mCAAI,CAAC,CAAC;QACxC,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,IAAA,aAAI,EAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3G,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAA,aAAI,EAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5G;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAA,aAAI,EAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5G;SACF;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAG3C,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;YAC1G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAChF;IACH,CAAC;IAEO,mBAAmB,CAAC,CAAU;;QACpC,OAAO,MAAA,IAAI,CAAC,oBAAoB,0CAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe;QACvB,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,MAAM,KAAK,GAAI,IAAI,CAAC,qBAA4C,CAAC,QAAQ,EAAE,CAAC;YAC5E,MAAM,iBAAiB,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;YAElE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,iBAAiB,EAAE;gBACrB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW;qBACb,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAU,EAAC,SAAS,CAAC,EAAE,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;qBACrF,KAAK,CAAC,YAAY,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;aAC3D;SACF;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACtF;IACH,CAAC;IAED,IAAI,CAAC,MAAwB;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAK7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B;IACH,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;YAC9D,IAAA,2CAAgC,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,EAAE,8BAAuB,CAAC,CAAC;YAC3G,IAAA,2CAAgC,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE,2BAAoB,CAAC,CAAC;YAErG,IAAA,kBAAU,EACR,IAAI,CAAC,QAAQ,EACb,CAAC,CAAC,EAAE;gBACF,CAAC,CAAC,qBAAqB,EAAE,CAAC,SAAS,CACjC;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE;wBACP,cAAc,EAAE,GAAG,EAAE;4BACnB,OAAO,CAAC,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,CAAC;wBAC/C,CAAC;wBACD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;wBACnC,KAAK,EAAE,GAAG,EAAE;;4BACV,OAAO,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBACpD,CAAC;wBACD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAY,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;qBACxD;oBACD,KAAK,EAAE,CAAC;iBACT,EACD,KAAK,CACN,CAAC;gBAEF,CAAC,CAAC,iBAAiB,CAAC;oBAClB,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE;wBACP,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;wBACnC,KAAK,EAAE,GAAG,EAAE;;4BACV,OAAO,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBACpD,CAAC;wBACD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAY,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;qBACxD;oBACD,KAAK,EAAE,2BAAc,CAAC,cAAc;iBACrC,CAAC,CAAC;YACL,CAAC,EACD;gBACE,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;aAC7B,CACF,CAAC;SACH;IACH,CAAC;IAKD,YAAY,CAAC,IAAyC,EAAE,QAA6C;QACnG,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAA,gBAAO,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC9C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAA0C;QAC/C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACT,CAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAG,IAAI,CAAC,KAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAES,qBAAqB,CAAC,UAA2B,EAAE,QAAyB;QACpF,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAkB,EAAE,UAAoB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAkB,EAAE,UAAoB,CAAC,CAAC,CAAC;SACjH;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7F,CAAC;IAkGS,gBAAgB;;QACxB,MAAM,SAAS,GAAe,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,mCAAI,UAAU,CAAC;QAClE,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,mCAAI,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACxB,IAA6B,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;SAC3G;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC1B,IAA6B,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;SAC/G;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACxB,IAA6B,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;SAC3G;IACH,CAAC;IAED,qBAAqB;QAEnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;QACD,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAChC,CAAC;IAES,YAAY,CAAC,OAAgB;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;SACR;QACD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;aAAM;YACL,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,aAAa,CACvB;YACE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C,EACD;YACE,CAAC,OAAO,CAAC,EAAE,0BAAc,CAAC,QAAQ;SACnC,CACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,UAAiB,EAAE,QAAqB;QACpD,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,WAAW;QAET,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAOD,eAAe,CAAC,IAAiB;QAC/B,MAAM,MAAM,GAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAEjH,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACrC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;SACpC;aAAM;YACL,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;SACrC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;;QACF,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI;;QACF,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAES,gBAAgB,CAAC,QAAiC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC;QACpC,MAAM,WAAW,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC;QAC1C,MAAM,WAAW,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC;QAC1C,IAAI,QAAQ,IAAI,WAAW,IAAI,WAAW,EAAE;YAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;SAC/C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,IAAkB;;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,qBAA2C,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAwC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAoB,CAAC;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEvD,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,IAAA,mBAAU,EAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,OAAK,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,CAAA;YACxC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,OAAK,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAA;YACtC,IAAI,CAAC,cAAc,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,CAAA,EAChD;YACA,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;QAED,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,OAAK,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAA,EAAE;YAChE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACxE;aAAM,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,OAAK,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,CAAA,EAAE;YACnD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SAC1E;QAED,IAAI,CAAC,UAAU,GAAG;YAChB,KAAK,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;YAClB,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM;SACrB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,CAAC;QAE/C,IAAI,IAAA,mBAAU,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChD,IAAI,IAAI,CAAC,IAAI,KAAK,6BAAiB,CAAC,SAAS,EAAE;oBAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;iBACf;gBACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;YACD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAA,SAAS,CAAC,WAAW,EAAE,mCAAI,EAAE,CAAC;YACnD,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,IAAA,cAAK,EAAC,GAAG,CAAC,EAAE;gBAC9B,OAAO,GAAG,KAAK,CAAC;aACjB;iBAAM;gBACL,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;aACvC;SACF;aAAM;YACL,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAA,SAAS,CAAC,WAAW,EAAE,mCAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,8BAA8B;QACtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAwB,CAAC;IAClD,CAAC;CACF;AA9+BD,0DA8+BC;AAED,IAAA,cAAK,EAAC,uBAAuB,EAAE,mBAAQ,CAAC,CAAC","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport { ComponentTypeEnum, type IComponent, type IComponentOption } from '../interface';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain, lockStatisticsFilter } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n mixin,\n clamp,\n isNil,\n merge,\n isEqual,\n isValid,\n array,\n minInArray,\n maxInArray,\n abs,\n last\n} from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IFilterMode } from './interface';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { IGroupMark } from '../../mark/interface/mark';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n protected _dataUpdating: boolean = false;\n\n // 数据\n protected _stateScale: IBaseScale;\n\n protected _relatedAxisComponent!: IComponent;\n protected _linkedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n // 窗口范围缓存\n protected _spanCache!: number;\n protected _shouldChange: boolean = true;\n\n protected _domainCache!: any;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n get relatedAxisComponent() {\n return this._relatedAxisComponent;\n }\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this.dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this.dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (\n zoomLock ||\n // 拖拽两端的handler, 而非拖拽中间handler\n (end - start !== this._spanCache &&\n // 拖拽后超出限制范围\n (end - start < this._minSpan || end - start > this._maxSpan))\n ) {\n this._shouldChange = false;\n } else {\n this._shouldChange = true;\n this._spanCache = end - start;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: 'startHandler' | 'endHandler') {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n const linkedAxis = this._linkedAxisComponent as CartesianAxis<any>;\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axis.scaleRangeFactorEnd(newRangeFactor[1]);\n linkedAxis?.scaleRangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axis.scaleRangeFactorStart(newRangeFactor[0]);\n linkedAxis?.scaleRangeFactorStart(newRangeFactor[0]);\n break;\n default: // end 保证为准确值\n axis.scaleRangeFactorStart(newRangeFactor[0], true);\n axis.scaleRangeFactorEnd(newRangeFactor[1]);\n linkedAxis?.scaleRangeFactorStart(newRangeFactor[0], true);\n linkedAxis?.scaleRangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axis.scaleRangeFactorStart(newRangeFactor[0]);\n linkedAxis?.scaleRangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axis.scaleRangeFactorEnd(newRangeFactor[1]);\n linkedAxis?.scaleRangeFactorEnd(newRangeFactor[1]);\n break;\n default: // start 保证为准确值\n axis.scaleRangeFactorEnd(newRangeFactor[1], true);\n linkedAxis?.scaleRangeFactorEnd(newRangeFactor[1], true);\n axis.scaleRangeFactorStart(newRangeFactor[0]);\n linkedAxis?.scaleRangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: 'startHandler' | 'endHandler') => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === 'axis') {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag);\n if (this._auto) {\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n }\n\n // 强制更新视图, 不管/component/axis/base-axis.ts computeData中的tickData判断\n axis.effect.scaleUpdate({\n value: 'force'\n });\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n if (isValid(this._spec.linkedAxisId)) {\n this._linkedAxisComponent = this._option.getComponentByUserId(this._spec.linkedAxisId);\n } else if (isValid(this._spec.linkedAxisIndex)) {\n this._linkedAxisComponent = this._option.getComponentByIndex('axes', this._spec.linkedAxisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === 'axis') {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, false);\n this._handleChange(this._start, this._end, true);\n // auto 模式下需要重新布局\n if (this._spec.auto && !isEqual(this._domainCache, domain)) {\n this._domainCache = domain;\n this._dataUpdating = true;\n this.getChart()?.setLayoutTag(true, null, false);\n }\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n if ((this._spec as IDataZoomSpec).customDomain) {\n return (this._spec as IDataZoomSpec).customDomain;\n }\n\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n const seriesTypes: string[] = [];\n let isCategoryState: boolean;\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n if (s.type === 'link') {\n return;\n }\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n\n dataCollection.push(s.getRawData());\n seriesTypes.push(s.type);\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.xField)\n : array(seriesSpec.angleField ?? seriesSpec.categoryField);\n const yField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.yField)\n : array(seriesSpec.radiusField ?? seriesSpec.valueField);\n\n originalStateFields[s.id] =\n s.type === 'link' ? ['from_xField'] : stateAxisHelper === xAxisHelper ? xField : yField;\n\n if (isContinuous(stateAxisHelper.getScale(0).type)) {\n isCategoryState = false;\n stateFields.push(originalStateFields[s.id]);\n } else {\n stateFields.push(originalStateFields[s.id][0]);\n }\n\n if (this._valueField) {\n const valueField = s.type === 'link' ? ['from_yField'] : valueAxisHelper === xAxisHelper ? xField : yField;\n if (isContinuous(valueAxisHelper.getScale(0).type) || s.type === 'dot') {\n valueFields.push(...valueField);\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields,\n isCategoryState,\n seriesTypes\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n // todo 似乎没必要创建\n this._data = new CompilableData(this._option, data);\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n statePointToData(state: number) {\n const scale = this._stateScale;\n const domain = scale.domain();\n\n // continuous scale: 本来可以用scale invert,但scale invert在大数据场景下性能不太好,所以这里自行计算\n if (isContinuous(scale.type)) {\n if (this._isReverse()) {\n return domain[0] + (last(domain) - domain[0]) * (1 - state);\n }\n return domain[0] + (last(domain) - domain[0]) * state;\n }\n\n // discete scale: 根据bandSize计算不准确, bandSize不是最新的, 导致index计算错误, 所以仍然使用invert\n let range = scale.range();\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (last(range) - range[0]) * state;\n // const bandSize = (scale as BandScale).bandwidth();\n // const domainIndex = Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1);\n // return domain[domainIndex];\n return scale.invert(posInRange);\n }\n\n dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (last(range) - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && isValid(this._spec.start)) || (mode === 'value' && isValid(this._spec.startValue));\n }\n return (mode === 'percent' && isValid(this._spec.end)) || (mode === 'value' && isValid(this._spec.endValue));\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this.dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this.dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this.dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this.statePointToData(start);\n this._endValue = this.statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain()[0] !== last(this._stateScale.domain())) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if ((!this._relatedAxisComponent || this._filterMode !== 'axis') && (this._start !== 0 || this._end !== 1)) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange);\n }\n } else {\n this._stateScale = new BandScale();\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== 'axis') {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n registerDataSetInstanceTransform(this._option.dataSet, 'lockStatisticsFilter', lockStatisticsFilter);\n\n eachSeries(\n this._regions,\n s => {\n s.getViewDataStatistics().transform(\n {\n type: 'lockStatisticsFilter',\n options: {\n originalFields: () => {\n return s.getViewDataStatistics().getFields();\n },\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: 1\n },\n false\n );\n\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, (this._spec as any)[m.name]);\n });\n });\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (\n params: { zoomDelta: number; zoomX?: number; zoomY?: number },\n e?: BaseEventParams['event']\n ) => {\n if (!this._activeRoam || (this._zoomAttr.filter && !this._zoomAttr.filter(params, e))) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam || (this._scrollAttr.filter && !this._scrollAttr.filter(params, e))) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n\n // 判断是否滚动到最顶部或最底部\n // 如果滚动到最顶部或最底部,则不应该stopBubble\n const hasChange = this._start !== 0 && this._end !== 1;\n\n return active && hasChange;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam || (this._dragAttr.filter && !this._dragAttr.filter(delta, e))) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n return false;\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? (this._spec?.delayTime ?? 30) : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime, allowComponentZoom: true };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n protected _autoVisible(isShown: boolean) {\n if (!this._auto) {\n return;\n }\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect): void {\n super.onLayoutStart(layoutRect, viewRect);\n const isShown = this._autoUpdate(layoutRect);\n this._autoVisible(isShown);\n this._dataUpdating = false;\n }\n\n onLayoutEnd(): void {\n // 布局结束后, start和end会发生变化, 因此需要再次更新visible\n const isShown = !(this._start === 0 && this._end === 1);\n this._autoVisible(isShown);\n super.onLayoutEnd();\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n !this._dataUpdating &&\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n if (this.type === ComponentTypeEnum.scrollBar) {\n this._start = 0;\n this._end = 1;\n }\n this._updateRangeFactor();\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
@@ -11,6 +11,8 @@ export interface IDataFilterComponentSpec extends Omit<IComponentSpec, 'width' |
11
11
  field?: string;
12
12
  axisId?: string;
13
13
  axisIndex?: number;
14
+ linkedAxisId?: string;
15
+ linkedAxisIndex?: number;
14
16
  regionIndex?: number | number[];
15
17
  start?: number;
16
18
  end?: number;
@@ -37,6 +39,7 @@ export interface IDataFilterComponentSpec extends Omit<IComponentSpec, 'width' |
37
39
  export interface IRoamDragSpec extends IRoamSpec {
38
40
  reverse?: boolean;
39
41
  filter?: (delta: [number, number], e?: BaseEventParams['event']) => boolean;
42
+ autoVisible?: boolean;
40
43
  }
41
44
  export interface IRoamScrollSpec extends IRoamSpec {
42
45
  reverse?: boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/data-zoom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { BaseEventParams } from '../../event/interface';\nimport type { IOrientType } from '../../typings';\nimport type { IDelayType } from '../../typings/event';\nimport type { IComponentSpec } from '../base/interface';\nimport type { IComponent } from '../interface';\n\n/** spec */\nexport interface IDataFilterComponentSpec extends Omit<IComponentSpec, 'width' | 'height'> {\n /**\n * 是否显示组件\n * @default true\n */\n visible?: boolean;\n /**\n * 组件位置\n * @default 'left'\n */\n orient?: IOrientType;\n\n /**\n * 组件宽度\n * @default 'auto'\n */\n width?: 'auto' | number;\n\n /**\n * 组件高度\n * @default 'auto'\n */\n height?: 'auto' | number;\n\n /**\n * 声明关联的映射字段\n */\n field?: string;\n /**\n * 关联的轴ID\n */\n axisId?: string;\n /**\n * 关联的轴序号\n */\n axisIndex?: number;\n\n /**\n * 组件关联的region索引,与axis关联的region取交集\n * 未配置:默认跟随axis控制的region\n * 已配置:用户配置与axis关联的region取交集\n * 配置优先级:index > id\n */\n regionIndex?: number | number[];\n /**\n * 起点配置(比例):范围[0, 1]\n * @default 0\n */\n start?: number;\n\n /**\n * 终点配置(比例):范围[0, 1]\n * @default 1\n */\n end?: number;\n\n /**\n * 起始点数据配置:没有配置的时候根据start和end进行转换\n */\n startValue?: number | string;\n endValue?: number | string;\n\n /** 数据过滤对应的数据字段 */\n valueField?: string;\n\n /**\n * start和end的配置模式:只有模式和配置匹配时才生效,比如rangeMode: ['percent', 'value'], 那么必须start和endValue都配置才可以生效\n */\n rangeMode?: [string, string];\n /**\n * 是否进行自动缩进\n */\n autoIndent?: boolean;\n /**\n * 是否为自动模式。开启以后,组件不会导致轴 scale 缩放,end、roam 等可能导致缩放的配置将被忽略,且组件可以自动消失\n * @since 1.4.0\n */\n auto?: boolean;\n /**\n * 是否锁定选择区域(或叫做数据窗口)的大小\n * @default false\n * @since 1.5.1\n */\n zoomLock?: boolean;\n /**\n * 用于限制窗口大小的最小值, [0, 1]\n * @default 0\n * @since 1.5.1\n */\n minSpan?: number;\n /**\n * 用于限制窗口大小的最大值, [0, 1]\n * @default 1\n * @since 1.5.1\n */\n maxSpan?: number;\n /**\n * 用于限制窗口大小的最小数据值, 仅在continous scale生效,优先级高于minSpan\n * @since 1.5.1\n */\n minValueSpan?: number;\n /**\n * 用于限制窗口大小的最大数据值, 仅在continous scale生效,优先级高于maxSpan\n * @since 1.5.1\n */\n maxValueSpan?: number;\n /**\n * 事件触发延迟类型, 不配置则视作未开启\n * @since 1.5.1\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 30\n * @since 1.5.1\n */\n delayTime?: number;\n /**\n * 漫游模式 - 缩放(画布内自由交互), 默认不开启\n * @default false\n * @since 1.5.1\n */\n roamZoom?: IRoamZoomSpec | boolean;\n /**\n * 漫游模式 - 拖拽(画布内自由交互), 默认不开启\n * @since 1.5.1\n */\n roamDrag?: IRoamDragSpec | boolean;\n /**\n * 漫游模式 - 滚动(画布内自由交互), 默认不开启\n * @since 1.5.1\n */\n roamScroll?: IRoamScrollSpec | boolean;\n /**\n * 是否在操作时动态更新视图\n * @since 1.5.1\n * @default true\n */\n realTime?: boolean;\n /**\n * 自定义domain\n * 当brush组件开启`zoomAfterBrush`时, 关联的dataZoom需要和axis保持一致, 否则刷取范围无法正确计算\n * @since 1.10.0\n */\n customDomain?: any[];\n /**\n * 自定义datazoom更新回调\n * @since 1.10.0\n */\n updateDataAfterChange?: (start: number, end: number, startValue: any, endValue: any) => void;\n}\n\nexport interface IRoamDragSpec extends IRoamSpec {\n /**\n * 拖拽方向与滚动条移动方向是否相反\n * @default true\n */\n reverse?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (delta: [number, number], e?: BaseEventParams['event']) => boolean;\n}\n\nexport interface IRoamScrollSpec extends IRoamSpec {\n /**\n * 滚动方向与滚动条移动方向是否相反\n * @default true\n */\n reverse?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (params: { scrollX: number; scrollY: number }, e?: BaseEventParams['event']) => boolean;\n}\n\nexport interface IRoamZoomSpec extends IRoamSpec {\n /**\n * 是否开启聚焦缩放\n * @default true\n * 开启时, 默认以鼠标位置开始\n * 关闭时, 以画布中心缩放\n */\n focus?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (params: { zoomDelta: number; zoomX?: number; zoomY?: number }, e?: BaseEventParams['event']) => boolean;\n}\n\nexport interface IRoamSpec {\n /**\n * 是否开启 缩放 / 拖拽 / 滚动\n * @default true\n */\n enable?: boolean;\n /**\n * 缩放 / 拖拽 / 滚动速率, 范围: [0, 1]\n * @default 1\n */\n rate?: number;\n}\n\nexport interface IDataFilterComponent extends IComponent {\n setStartAndEnd: (\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value']\n ) => void;\n enableInteraction: () => void;\n disableInteraction: () => void;\n zoomIn: (location?: { x: number; y: number }) => void;\n zoomOut: (location?: { x: number; y: number }) => void;\n}\n\nexport type IFilterMode = 'filter' | 'axis';\n"]}
1
+ {"version":3,"sources":["../src/component/data-zoom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { BaseEventParams } from '../../event/interface';\nimport type { IOrientType } from '../../typings';\nimport type { IDelayType } from '../../typings/event';\nimport type { IComponentSpec } from '../base/interface';\nimport type { IComponent } from '../interface';\n\n/** spec */\nexport interface IDataFilterComponentSpec extends Omit<IComponentSpec, 'width' | 'height'> {\n /**\n * 是否显示组件\n * @default true\n */\n visible?: boolean;\n /**\n * 组件位置\n * @default 'left'\n */\n orient?: IOrientType;\n\n /**\n * 组件宽度\n * @default 'auto'\n */\n width?: 'auto' | number;\n\n /**\n * 组件高度\n * @default 'auto'\n */\n height?: 'auto' | number;\n\n /**\n * 声明关联的映射字段\n */\n field?: string;\n /**\n * 关联的轴ID\n */\n axisId?: string;\n /**\n * 关联的轴序号\n */\n axisIndex?: number;\n /**\n * 联动的轴ID, 仅filterMode: 'axis'时生效\n */\n linkedAxisId?: string;\n /**\n * 联动的轴序号, 仅filterMode: 'axis'时生效\n */\n linkedAxisIndex?: number;\n\n /**\n * 组件关联的region索引,与axis关联的region取交集\n * 未配置:默认跟随axis控制的region\n * 已配置:用户配置与axis关联的region取交集\n * 配置优先级:index > id\n */\n regionIndex?: number | number[];\n /**\n * 起点配置(比例):范围[0, 1]\n * @default 0\n */\n start?: number;\n\n /**\n * 终点配置(比例):范围[0, 1]\n * @default 1\n */\n end?: number;\n\n /**\n * 起始点数据配置:没有配置的时候根据start和end进行转换\n */\n startValue?: number | string;\n endValue?: number | string;\n\n /** 数据过滤对应的数据字段 */\n valueField?: string;\n\n /**\n * start和end的配置模式:只有模式和配置匹配时才生效,比如rangeMode: ['percent', 'value'], 那么必须start和endValue都配置才可以生效\n */\n rangeMode?: [string, string];\n /**\n * 是否进行自动缩进\n */\n autoIndent?: boolean;\n /**\n * 是否为自动模式。开启以后,组件不会导致轴 scale 缩放,end、roam 等可能导致缩放的配置将被忽略,且组件可以自动消失\n * @since 1.4.0\n */\n auto?: boolean;\n /**\n * 是否锁定选择区域(或叫做数据窗口)的大小\n * @default false\n * @since 1.5.1\n */\n zoomLock?: boolean;\n /**\n * 用于限制窗口大小的最小值, [0, 1]\n * @default 0\n * @since 1.5.1\n */\n minSpan?: number;\n /**\n * 用于限制窗口大小的最大值, [0, 1]\n * @default 1\n * @since 1.5.1\n */\n maxSpan?: number;\n /**\n * 用于限制窗口大小的最小数据值, 仅在continous scale生效,优先级高于minSpan\n * @since 1.5.1\n */\n minValueSpan?: number;\n /**\n * 用于限制窗口大小的最大数据值, 仅在continous scale生效,优先级高于maxSpan\n * @since 1.5.1\n */\n maxValueSpan?: number;\n /**\n * 事件触发延迟类型, 不配置则视作未开启\n * @since 1.5.1\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 30\n * @since 1.5.1\n */\n delayTime?: number;\n /**\n * 漫游模式 - 缩放(画布内自由交互), 默认不开启\n * @default false\n * @since 1.5.1\n */\n roamZoom?: IRoamZoomSpec | boolean;\n /**\n * 漫游模式 - 拖拽(画布内自由交互), 默认不开启\n * @since 1.5.1\n */\n roamDrag?: IRoamDragSpec | boolean;\n /**\n * 漫游模式 - 滚动(画布内自由交互), 默认不开启\n * @since 1.5.1\n */\n roamScroll?: IRoamScrollSpec | boolean;\n /**\n * 是否在操作时动态更新视图\n * @since 1.5.1\n * @default true\n */\n realTime?: boolean;\n /**\n * 自定义domain\n * 当brush组件开启`zoomAfterBrush`时, 关联的dataZoom需要和axis保持一致, 否则刷取范围无法正确计算\n * @since 1.10.0\n */\n customDomain?: any[];\n /**\n * 自定义datazoom更新回调\n * @since 1.10.0\n */\n updateDataAfterChange?: (start: number, end: number, startValue: any, endValue: any) => void;\n}\n\nexport interface IRoamDragSpec extends IRoamSpec {\n /**\n * 拖拽方向与滚动条移动方向是否相反\n * @default true\n */\n reverse?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (delta: [number, number], e?: BaseEventParams['event']) => boolean;\n /**\n * 仅在画布交互展示组件\n * @since 2.0.3\n */\n autoVisible?: boolean;\n}\n\nexport interface IRoamScrollSpec extends IRoamSpec {\n /**\n * 滚动方向与滚动条移动方向是否相反\n * @default true\n */\n reverse?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (params: { scrollX: number; scrollY: number }, e?: BaseEventParams['event']) => boolean;\n}\n\nexport interface IRoamZoomSpec extends IRoamSpec {\n /**\n * 是否开启聚焦缩放\n * @default true\n * 开启时, 默认以鼠标位置开始\n * 关闭时, 以画布中心缩放\n */\n focus?: boolean;\n /**\n * 自定义的事件过滤器,返回true则触发datazoom/scrollbar的更新\n * @since 1.13.5\n * @returns\n */\n filter?: (params: { zoomDelta: number; zoomX?: number; zoomY?: number }, e?: BaseEventParams['event']) => boolean;\n}\n\nexport interface IRoamSpec {\n /**\n * 是否开启 缩放 / 拖拽 / 滚动\n * @default true\n */\n enable?: boolean;\n /**\n * 缩放 / 拖拽 / 滚动速率, 范围: [0, 1]\n * @default 1\n */\n rate?: number;\n}\n\nexport interface IDataFilterComponent extends IComponent {\n setStartAndEnd: (\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value']\n ) => void;\n enableInteraction: () => void;\n disableInteraction: () => void;\n zoomIn: (location?: { x: number; y: number }) => void;\n zoomOut: (location?: { x: number; y: number }) => void;\n}\n\nexport type IFilterMode = 'filter' | 'axis';\n"]}
@@ -12,6 +12,7 @@ export interface IDataFilterComputeDomainOption {
12
12
  dataCollection: any[];
13
13
  stateFields: string[];
14
14
  valueFields: string[];
15
+ seriesTypes: string[];
15
16
  isCategoryState?: boolean;
16
17
  method: 'sum';
17
18
  };
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.dataFilterComputeDomain = exports.dataFilterWithNewDomain = exports.lockStatisticsFilter = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), util_1 = require("../../util"), lockStatisticsFilter = (statisticsData, op) => {
7
+ const vutils_1 = require("@visactor/vutils"), util_1 = require("../../util"), obj_flat_1 = require("../../data/transforms/obj-flat"), lockStatisticsFilter = (statisticsData, op) => {
8
8
  const {getNewDomain: getNewDomain, isContinuous: isContinuous, field: field, originalFields: originalFields} = op, datumField = field(), newDomain = getNewDomain();
9
9
  if ((0, util_1.isNil)(newDomain) || (0, util_1.isNil)(datumField)) return statisticsData;
10
10
  const fields = originalFields(), realField = (0, vutils_1.isArray)(datumField) ? datumField[0] : datumField;
@@ -39,7 +39,7 @@ const dataFilterWithNewDomain = (data, op) => {
39
39
  exports.dataFilterWithNewDomain = dataFilterWithNewDomain;
40
40
 
41
41
  const dataFilterComputeDomain = (data, op) => {
42
- const {stateFields: stateFields, valueFields: valueFields, dataCollection: dataCollection, isCategoryState: isCategoryState} = op.input, {stateField: stateField, valueField: valueField} = op.output, resultObj = {}, resultData = [], stateValues = [];
42
+ const {stateFields: stateFields, valueFields: valueFields, dataCollection: dataCollection, isCategoryState: isCategoryState, seriesTypes: seriesTypes} = op.input, {stateField: stateField, valueField: valueField} = op.output, resultObj = {}, resultData = [], stateValues = [];
43
43
  let hasLockDomain = !1;
44
44
  dataCollection.forEach(((dv, i) => {
45
45
  var _a;
@@ -48,7 +48,8 @@ const dataFilterComputeDomain = (data, op) => {
48
48
  stateFieldInfo && stateFieldInfo.lockStatisticsByDomain && (hasLockDomain = !0,
49
49
  stateFieldInfo.domain.forEach((d => {
50
50
  (0, util_1.isNil)(resultObj[d]) && (stateValues.push(d), resultObj[d] = 0);
51
- }))), dv.latestData.forEach((d => {
51
+ })));
52
+ ("dot" === seriesTypes[i] ? (0, obj_flat_1.objFlat)(dv.latestData, "dots") : dv.latestData).forEach((d => {
52
53
  (0, util_1.array)(stateFields[i]).forEach((state => {
53
54
  (0, util_1.isNil)(d[state]) || ((0, util_1.isNil)(resultObj[d[state]]) && (stateValues.push(d[state]),
54
55
  resultObj[d[state]] = 0), (0, util_1.isNil)(valueFields[i]) || (resultObj[d[state]] += isNaN(parseFloat(d[valueFields[i]])) ? 1 : parseFloat(d[valueFields[i]])));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/data-zoom/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isArray, last } from '@visactor/vutils';\nimport { array, isNil } from '../../util';\nimport type { DataView } from '@visactor/vdataset';\n\nexport interface IDataFilterWithNewDomainOption {\n getNewDomain: () => any[];\n isContinuous: () => boolean;\n field: () => string;\n}\n\nexport const lockStatisticsFilter = (\n statisticsData: any,\n op: IDataFilterWithNewDomainOption & {\n originalFields: () => Record<string, any>;\n }\n) => {\n const { getNewDomain, isContinuous, field, originalFields } = op;\n\n const datumField = field();\n const newDomain = getNewDomain();\n if (isNil(newDomain) || isNil(datumField)) {\n return statisticsData;\n }\n const fields = originalFields();\n const realField = isArray(datumField) ? datumField[0] : datumField;\n\n if (\n statisticsData[realField] &&\n fields &&\n fields[realField] &&\n fields[realField].lockStatisticsByDomain &&\n !isContinuous()\n ) {\n statisticsData[realField].values = newDomain;\n }\n\n return statisticsData;\n};\n\n/**\n * 保证数据筛选的结果全都在坐标轴的新domain范围中,防止出现point数据因为超出domain范围而绘制在原点的情况\n */\nexport const dataFilterWithNewDomain = (data: Array<any>, op: IDataFilterWithNewDomainOption) => {\n const { getNewDomain, isContinuous, field } = op;\n const datumField = field();\n const newDomain = getNewDomain();\n if (isNil(newDomain) || isNil(datumField)) {\n return data;\n }\n if (newDomain.length === 0) {\n return [];\n }\n\n // 使用map代替indexOf查找,提升性能\n const domainMap = {};\n newDomain.forEach(d => {\n if (!domainMap[d]) {\n domainMap[d] = 1;\n }\n });\n\n let filter = null;\n if (isContinuous()) {\n filter = (d: any) => {\n let flag = false;\n array(datumField).every(field => {\n if (d[field] >= newDomain[0] && d[field] <= last(newDomain)) {\n flag = true;\n }\n return;\n });\n return flag;\n };\n } else {\n filter = (d: any) => {\n let flag = false;\n array(datumField).every(field => {\n // 这里d[f] + ''的原因是:数据是number类型的,但轴声明为band轴,domain会强制将number => string,所以filter的时候要将data中的number => string\n if (domainMap[d[field] + ''] || domainMap[d[field]]) {\n flag = true;\n }\n return;\n });\n return flag;\n };\n }\n\n return data.filter(filter);\n};\n\nexport interface IDataFilterComputeDomainOption {\n input: {\n dataCollection: any[];\n stateFields: string[];\n valueFields: string[];\n isCategoryState?: boolean;\n method: 'sum'; // todo: 也许可以提供多种数据统计方法 @chensiji\n };\n output: {\n stateField: string;\n valueField: string;\n };\n}\n\nexport const dataFilterComputeDomain = (data: Array<any>, op: IDataFilterComputeDomainOption) => {\n const { stateFields, valueFields, dataCollection, isCategoryState } = op.input;\n const { stateField, valueField } = op.output;\n const resultObj: any = {};\n const resultData: any[] = [];\n const stateValues: any[] = [];\n let hasLockDomain = false;\n\n dataCollection.forEach((dv: DataView, i) => {\n if (isNil(stateFields[i])) {\n return;\n }\n // 按照用户指定的domain进行排序(这里不通过getRawDataStatistics来取是因为时机不对,此时getRawDataStatistics还没有正确结果)\n const stateFieldInfo = dv.getFields()?.[stateFields[i]];\n if (stateFieldInfo && stateFieldInfo.lockStatisticsByDomain) {\n hasLockDomain = true;\n stateFieldInfo.domain.forEach((d: any) => {\n if (isNil(resultObj[d])) {\n stateValues.push(d);\n resultObj[d] = 0;\n }\n });\n }\n dv.latestData.forEach((d: any) => {\n // 针对rangeColumn等xField为数组形式的图表,需要将xField的所有value都记录下来\n array(stateFields[i]).forEach(state => {\n if (!isNil(d[state])) {\n if (isNil(resultObj[d[state]])) {\n stateValues.push(d[state]);\n resultObj[d[state]] = 0;\n }\n if (!isNil(valueFields[i])) {\n // 传进来的d[yFields[i]]可能是stringnumber\n // 传进来的d[yFields[i]]可能是普通的字符串,这时计数按1计算(其实相当于计算数据条数)\n resultObj[d[state]] += isNaN(parseFloat(d[valueFields[i]])) ? 1 : parseFloat(d[valueFields[i]]);\n }\n }\n });\n });\n });\n\n const sortedStateValues = hasLockDomain\n ? stateValues\n : isCategoryState === false\n ? stateValues.sort((a, b) => a - b)\n : Object.keys(resultObj);\n\n sortedStateValues.forEach(state => {\n const res = { [stateField]: state };\n\n if (valueField) {\n res[valueField] = resultObj[state];\n }\n\n resultData.push(res);\n });\n\n return resultData;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/data-zoom/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isArray, last } from '@visactor/vutils';\nimport { array, isNil } from '../../util';\nimport type { DataView } from '@visactor/vdataset';\nimport { objFlat } from '../../data/transforms/obj-flat';\n\nexport interface IDataFilterWithNewDomainOption {\n getNewDomain: () => any[];\n isContinuous: () => boolean;\n field: () => string;\n}\n\nexport const lockStatisticsFilter = (\n statisticsData: any,\n op: IDataFilterWithNewDomainOption & {\n originalFields: () => Record<string, any>;\n }\n) => {\n const { getNewDomain, isContinuous, field, originalFields } = op;\n\n const datumField = field();\n const newDomain = getNewDomain();\n if (isNil(newDomain) || isNil(datumField)) {\n return statisticsData;\n }\n const fields = originalFields();\n const realField = isArray(datumField) ? datumField[0] : datumField;\n\n if (\n statisticsData[realField] &&\n fields &&\n fields[realField] &&\n fields[realField].lockStatisticsByDomain &&\n !isContinuous()\n ) {\n statisticsData[realField].values = newDomain;\n }\n\n return statisticsData;\n};\n\n/**\n * 保证数据筛选的结果全都在坐标轴的新domain范围中,防止出现point数据因为超出domain范围而绘制在原点的情况\n */\nexport const dataFilterWithNewDomain = (data: Array<any>, op: IDataFilterWithNewDomainOption) => {\n const { getNewDomain, isContinuous, field } = op;\n const datumField = field();\n const newDomain = getNewDomain();\n if (isNil(newDomain) || isNil(datumField)) {\n return data;\n }\n if (newDomain.length === 0) {\n return [];\n }\n\n // 使用map代替indexOf查找,提升性能\n const domainMap = {};\n newDomain.forEach(d => {\n if (!domainMap[d]) {\n domainMap[d] = 1;\n }\n });\n\n let filter = null;\n if (isContinuous()) {\n filter = (d: any) => {\n let flag = false;\n array(datumField).every(field => {\n if (d[field] >= newDomain[0] && d[field] <= last(newDomain)) {\n flag = true;\n }\n return;\n });\n return flag;\n };\n } else {\n filter = (d: any) => {\n let flag = false;\n array(datumField).every(field => {\n // 这里d[f] + ''的原因是:数据是number类型的,但轴声明为band轴,domain会强制将number => string,所以filter的时候要将data中的number => string\n if (domainMap[d[field] + ''] || domainMap[d[field]]) {\n flag = true;\n }\n return;\n });\n return flag;\n };\n }\n\n return data.filter(filter);\n};\n\nexport interface IDataFilterComputeDomainOption {\n input: {\n dataCollection: any[];\n stateFields: string[];\n valueFields: string[];\n seriesTypes: string[];\n isCategoryState?: boolean;\n method: 'sum'; // todo: 也许可以提供多种数据统计方法 @chensiji\n };\n output: {\n stateField: string;\n valueField: string;\n };\n}\n\nexport const dataFilterComputeDomain = (data: Array<any>, op: IDataFilterComputeDomainOption) => {\n const { stateFields, valueFields, dataCollection, isCategoryState, seriesTypes } = op.input;\n const { stateField, valueField } = op.output;\n const resultObj: any = {};\n const resultData: any[] = [];\n const stateValues: any[] = [];\n let hasLockDomain = false;\n\n dataCollection.forEach((dv: DataView, i) => {\n if (isNil(stateFields[i])) {\n return;\n }\n // 按照用户指定的domain进行排序(这里不通过getRawDataStatistics来取是因为时机不对,此时getRawDataStatistics还没有正确结果)\n const stateFieldInfo = dv.getFields()?.[stateFields[i]];\n if (stateFieldInfo && stateFieldInfo.lockStatisticsByDomain) {\n hasLockDomain = true;\n stateFieldInfo.domain.forEach((d: any) => {\n if (isNil(resultObj[d])) {\n stateValues.push(d);\n resultObj[d] = 0;\n }\n });\n }\n const data = seriesTypes[i] === 'dot' ? objFlat(dv.latestData, 'dots') : dv.latestData;\n data.forEach((d: any) => {\n // 针对rangeColumn等xField为数组形式的图表,需要将xField的所有value都记录下来\n array(stateFields[i]).forEach(state => {\n if (!isNil(d[state])) {\n if (isNil(resultObj[d[state]])) {\n stateValues.push(d[state]);\n resultObj[d[state]] = 0;\n }\n if (!isNil(valueFields[i])) {\n // 传进来的d[yFields[i]]可能是stringnumber\n // 传进来的d[yFields[i]]可能是普通的字符串,这时计数按1计算(其实相当于计算数据条数)\n resultObj[d[state]] += isNaN(parseFloat(d[valueFields[i]])) ? 1 : parseFloat(d[valueFields[i]]);\n }\n }\n });\n });\n });\n\n const sortedStateValues = hasLockDomain\n ? stateValues\n : isCategoryState === false\n ? stateValues.sort((a, b) => a - b)\n : Object.keys(resultObj);\n\n sortedStateValues.forEach(state => {\n const res = { [stateField]: state };\n\n if (valueField) {\n res[valueField] = resultObj[state];\n }\n\n resultData.push(res);\n });\n\n return resultData;\n};\n"]}
@@ -52,8 +52,7 @@ class Player extends base_component_1.BaseComponent {
52
52
  }, this._initEvent = () => {
53
53
  this._option.disableTriggerEvent || (this._option.globalInstance.on(event_1.ChartEvent.rendered, (() => {
54
54
  var _a;
55
- (null === (_a = this._spec) || void 0 === _a ? void 0 : _a.auto) && (this._playerComponent.pause(),
56
- this._playerComponent.play());
55
+ (null === (_a = this._spec) || void 0 === _a ? void 0 : _a.auto) && this._playerComponent.play();
57
56
  })), this._playerComponent.addEventListener(vrender_components_1.PlayerEventEnum.end, (() => {
58
57
  var _a;
59
58
  this.event.emit(event_1.ChartEvent.playerEnd, {