@visactor/vgrammar-core 0.10.0-alpha.4 → 0.10.0-alpha.6

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 (274) hide show
  1. package/cjs/component/axis.js.map +1 -1
  2. package/cjs/component/datazoom.js.map +1 -1
  3. package/cjs/component/grid.js.map +1 -1
  4. package/cjs/component/label.d.ts +2 -2
  5. package/cjs/component/label.js.map +1 -1
  6. package/cjs/component/legend.js.map +1 -1
  7. package/cjs/component/player.js.map +1 -1
  8. package/cjs/component/scrollbar.js.map +1 -1
  9. package/cjs/component/slider.js.map +1 -1
  10. package/cjs/component/title.d.ts +1 -1
  11. package/cjs/component/title.js.map +1 -1
  12. package/cjs/core/factory.d.ts +1 -1
  13. package/cjs/core/factory.js.map +1 -1
  14. package/cjs/env.d.ts +1 -1
  15. package/cjs/env.js +6 -6
  16. package/cjs/env.js.map +1 -1
  17. package/cjs/graph/animation/animate.js +12 -11
  18. package/cjs/graph/animation/animate.js.map +1 -1
  19. package/cjs/graph/animation/animation/grow-cartesian.js +173 -129
  20. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  21. package/cjs/graph/animation/animation/grow-interval.js +18 -20
  22. package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
  23. package/cjs/graph/animation/animation/grow-points.js +8 -4
  24. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  25. package/cjs/graph/animation/animation/move.js +7 -2
  26. package/cjs/graph/animation/animation/move.js.map +1 -1
  27. package/cjs/graph/animation/animator.js +4 -4
  28. package/cjs/graph/animation/animator.js.map +1 -1
  29. package/cjs/graph/animation/attribute.d.ts +2 -2
  30. package/cjs/graph/animation/attribute.js +6 -6
  31. package/cjs/graph/animation/attribute.js.map +1 -1
  32. package/cjs/graph/animation/morph.js +4 -4
  33. package/cjs/graph/animation/morph.js.map +1 -1
  34. package/cjs/graph/attributes/line.js.map +1 -1
  35. package/cjs/graph/attributes/transform.js +6 -4
  36. package/cjs/graph/attributes/transform.js.map +1 -1
  37. package/cjs/graph/canvas-renderer.d.ts +1 -1
  38. package/cjs/graph/canvas-renderer.js +5 -5
  39. package/cjs/graph/canvas-renderer.js.map +1 -1
  40. package/cjs/graph/element.d.ts +3 -3
  41. package/cjs/graph/element.js +9 -10
  42. package/cjs/graph/element.js.map +1 -1
  43. package/cjs/graph/glyph-element.d.ts +1 -1
  44. package/cjs/graph/glyph-element.js.map +1 -1
  45. package/cjs/graph/mark/differ.js +20 -13
  46. package/cjs/graph/mark/differ.js.map +1 -1
  47. package/cjs/graph/mark/encode.d.ts +4 -4
  48. package/cjs/graph/mark/encode.js.map +1 -1
  49. package/cjs/graph/mark/graphic.js +23 -23
  50. package/cjs/graph/mark/graphic.js.map +1 -1
  51. package/cjs/graph/mark/large-rects.d.ts +2 -2
  52. package/cjs/graph/mark/large-rects.js +3 -3
  53. package/cjs/graph/mark/large-rects.js.map +1 -1
  54. package/cjs/graph/mark/large-symbols.d.ts +2 -2
  55. package/cjs/graph/mark/large-symbols.js +3 -3
  56. package/cjs/graph/mark/large-symbols.js.map +1 -1
  57. package/cjs/graph/util/env.js +2 -2
  58. package/cjs/graph/util/env.js.map +1 -1
  59. package/cjs/graph/util/events-extend.d.ts +1 -1
  60. package/cjs/graph/util/events-extend.js.map +1 -1
  61. package/cjs/graph/util/graphic.d.ts +3 -3
  62. package/cjs/graph/util/graphic.js +3 -5
  63. package/cjs/graph/util/graphic.js.map +1 -1
  64. package/cjs/index.d.ts +2 -2
  65. package/cjs/index.js +3 -3
  66. package/cjs/index.js.map +1 -1
  67. package/cjs/interactions/base.js +1 -1
  68. package/cjs/interactions/base.js.map +1 -1
  69. package/cjs/interactions/brush-active.d.ts +8 -6
  70. package/cjs/interactions/brush-active.js +3 -3
  71. package/cjs/interactions/brush-active.js.map +1 -1
  72. package/cjs/interactions/brush-base.d.ts +15 -11
  73. package/cjs/interactions/brush-base.js +14 -7
  74. package/cjs/interactions/brush-base.js.map +1 -1
  75. package/cjs/interactions/brush-filter.d.ts +8 -6
  76. package/cjs/interactions/brush-filter.js +3 -3
  77. package/cjs/interactions/brush-filter.js.map +1 -1
  78. package/cjs/interactions/brush-highlight.d.ts +8 -6
  79. package/cjs/interactions/brush-highlight.js +4 -4
  80. package/cjs/interactions/brush-highlight.js.map +1 -1
  81. package/cjs/interactions/crosshair.js.map +1 -1
  82. package/cjs/interactions/drill-down.d.ts +8 -6
  83. package/cjs/interactions/drill-down.js +3 -3
  84. package/cjs/interactions/drill-down.js.map +1 -1
  85. package/cjs/semantic-marks/cell.d.ts +3 -3
  86. package/cjs/semantic-marks/cell.js.map +1 -1
  87. package/cjs/semantic-marks/interval.d.ts +3 -3
  88. package/cjs/semantic-marks/interval.js.map +1 -1
  89. package/cjs/semantic-marks/text.js.map +1 -1
  90. package/cjs/types/animate.d.ts +1 -1
  91. package/cjs/types/animate.js.map +1 -1
  92. package/cjs/types/component.d.ts +1 -1
  93. package/cjs/types/component.js.map +1 -1
  94. package/cjs/types/element.d.ts +1 -1
  95. package/cjs/types/element.js.map +1 -1
  96. package/cjs/types/event.d.ts +1 -1
  97. package/cjs/types/event.js.map +1 -1
  98. package/cjs/types/grammar.d.ts +4 -4
  99. package/cjs/types/grammar.js.map +1 -1
  100. package/cjs/types/interaction.d.ts +2 -2
  101. package/cjs/types/interaction.js.map +1 -1
  102. package/cjs/types/mark.d.ts +3 -3
  103. package/cjs/types/mark.js.map +1 -1
  104. package/cjs/types/morph.d.ts +1 -1
  105. package/cjs/types/morph.js.map +1 -1
  106. package/cjs/types/plot.d.ts +1 -1
  107. package/cjs/types/plot.js.map +1 -1
  108. package/cjs/types/renderer.d.ts +1 -1
  109. package/cjs/types/renderer.js.map +1 -1
  110. package/cjs/types/theme.d.ts +1 -1
  111. package/cjs/types/theme.js.map +1 -1
  112. package/cjs/types/view.d.ts +1 -1
  113. package/cjs/types/view.js.map +1 -1
  114. package/cjs/util/text.d.ts +1 -1
  115. package/cjs/util/text.js +3 -3
  116. package/cjs/util/text.js.map +1 -1
  117. package/cjs/view/View.d.ts +1 -1
  118. package/cjs/view/View.js +7 -7
  119. package/cjs/view/View.js.map +1 -1
  120. package/cjs/view/component.d.ts +6 -3
  121. package/cjs/view/component.js +8 -2
  122. package/cjs/view/component.js.map +1 -1
  123. package/cjs/view/group.d.ts +4 -0
  124. package/cjs/view/group.js +12 -1
  125. package/cjs/view/group.js.map +1 -1
  126. package/cjs/view/mark.d.ts +5 -5
  127. package/cjs/view/mark.js +12 -15
  128. package/cjs/view/mark.js.map +1 -1
  129. package/es/component/axis.js.map +1 -1
  130. package/es/component/datazoom.js.map +1 -1
  131. package/es/component/grid.js.map +1 -1
  132. package/es/component/label.d.ts +2 -2
  133. package/es/component/label.js.map +1 -1
  134. package/es/component/legend.js.map +1 -1
  135. package/es/component/player.js.map +1 -1
  136. package/es/component/scrollbar.js.map +1 -1
  137. package/es/component/slider.js.map +1 -1
  138. package/es/component/title.d.ts +1 -1
  139. package/es/component/title.js.map +1 -1
  140. package/es/core/factory.d.ts +1 -1
  141. package/es/core/factory.js.map +1 -1
  142. package/es/env.d.ts +1 -1
  143. package/es/env.js +2 -2
  144. package/es/env.js.map +1 -1
  145. package/es/graph/animation/animate.js +12 -11
  146. package/es/graph/animation/animate.js.map +1 -1
  147. package/es/graph/animation/animation/grow-cartesian.js +170 -130
  148. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  149. package/es/graph/animation/animation/grow-interval.js +14 -20
  150. package/es/graph/animation/animation/grow-interval.js.map +1 -1
  151. package/es/graph/animation/animation/grow-points.js +8 -4
  152. package/es/graph/animation/animation/grow-points.js.map +1 -1
  153. package/es/graph/animation/animation/move.js +7 -1
  154. package/es/graph/animation/animation/move.js.map +1 -1
  155. package/es/graph/animation/animator.js +1 -1
  156. package/es/graph/animation/animator.js.map +1 -1
  157. package/es/graph/animation/attribute.d.ts +2 -2
  158. package/es/graph/animation/attribute.js +1 -1
  159. package/es/graph/animation/attribute.js.map +1 -1
  160. package/es/graph/animation/morph.js +1 -1
  161. package/es/graph/animation/morph.js.map +1 -1
  162. package/es/graph/attributes/line.js.map +1 -1
  163. package/es/graph/attributes/transform.js +6 -4
  164. package/es/graph/attributes/transform.js.map +1 -1
  165. package/es/graph/canvas-renderer.d.ts +1 -1
  166. package/es/graph/canvas-renderer.js +2 -2
  167. package/es/graph/canvas-renderer.js.map +1 -1
  168. package/es/graph/element.d.ts +3 -3
  169. package/es/graph/element.js +7 -7
  170. package/es/graph/element.js.map +1 -1
  171. package/es/graph/glyph-element.d.ts +1 -1
  172. package/es/graph/glyph-element.js.map +1 -1
  173. package/es/graph/mark/differ.js +20 -13
  174. package/es/graph/mark/differ.js.map +1 -1
  175. package/es/graph/mark/encode.d.ts +4 -4
  176. package/es/graph/mark/encode.js.map +1 -1
  177. package/es/graph/mark/graphic.js +3 -1
  178. package/es/graph/mark/graphic.js.map +1 -1
  179. package/es/graph/mark/large-rects.d.ts +2 -2
  180. package/es/graph/mark/large-rects.js +1 -1
  181. package/es/graph/mark/large-rects.js.map +1 -1
  182. package/es/graph/mark/large-symbols.d.ts +2 -2
  183. package/es/graph/mark/large-symbols.js +1 -1
  184. package/es/graph/mark/large-symbols.js.map +1 -1
  185. package/es/graph/util/env.js +1 -1
  186. package/es/graph/util/env.js.map +1 -1
  187. package/es/graph/util/events-extend.d.ts +1 -1
  188. package/es/graph/util/events-extend.js.map +1 -1
  189. package/es/graph/util/graphic.d.ts +3 -3
  190. package/es/graph/util/graphic.js +4 -6
  191. package/es/graph/util/graphic.js.map +1 -1
  192. package/es/index.d.ts +2 -2
  193. package/es/index.js +2 -2
  194. package/es/index.js.map +1 -1
  195. package/es/interactions/base.js +1 -1
  196. package/es/interactions/base.js.map +1 -1
  197. package/es/interactions/brush-active.d.ts +8 -6
  198. package/es/interactions/brush-active.js +3 -3
  199. package/es/interactions/brush-active.js.map +1 -1
  200. package/es/interactions/brush-base.d.ts +15 -11
  201. package/es/interactions/brush-base.js +13 -7
  202. package/es/interactions/brush-base.js.map +1 -1
  203. package/es/interactions/brush-filter.d.ts +8 -6
  204. package/es/interactions/brush-filter.js +4 -5
  205. package/es/interactions/brush-filter.js.map +1 -1
  206. package/es/interactions/brush-highlight.d.ts +8 -6
  207. package/es/interactions/brush-highlight.js +4 -4
  208. package/es/interactions/brush-highlight.js.map +1 -1
  209. package/es/interactions/crosshair.js.map +1 -1
  210. package/es/interactions/drill-down.d.ts +8 -6
  211. package/es/interactions/drill-down.js +3 -3
  212. package/es/interactions/drill-down.js.map +1 -1
  213. package/es/interactions/element-highlight-by-group.js +2 -1
  214. package/es/interactions/index.js +1 -2
  215. package/es/interactions/legend-filter.js +1 -1
  216. package/es/interactions/player-filter.js +1 -1
  217. package/es/interactions/roll-up.js +1 -1
  218. package/es/interactions/scrollbar-filter.js +1 -1
  219. package/es/interactions/slider-filter.js +1 -1
  220. package/es/interactions/tooltip.js +1 -1
  221. package/es/interactions/view-drag-mixin.js +1 -1
  222. package/es/parse/coordinate.js +1 -1
  223. package/es/parse/event.js +1 -1
  224. package/es/parse/mark.js +1 -1
  225. package/es/parse/option.js +1 -1
  226. package/es/parse/scale.js +2 -1
  227. package/es/parse/transform.js +1 -1
  228. package/es/parse/util.js +1 -1
  229. package/es/parse/view.js +1 -1
  230. package/es/semantic-marks/cell.d.ts +3 -3
  231. package/es/semantic-marks/cell.js.map +1 -1
  232. package/es/semantic-marks/interval.d.ts +3 -3
  233. package/es/semantic-marks/interval.js.map +1 -1
  234. package/es/semantic-marks/text.js.map +1 -1
  235. package/es/types/animate.d.ts +1 -1
  236. package/es/types/animate.js.map +1 -1
  237. package/es/types/component.d.ts +1 -1
  238. package/es/types/component.js.map +1 -1
  239. package/es/types/element.d.ts +1 -1
  240. package/es/types/element.js.map +1 -1
  241. package/es/types/event.d.ts +1 -1
  242. package/es/types/event.js.map +1 -1
  243. package/es/types/grammar.d.ts +4 -4
  244. package/es/types/grammar.js.map +1 -1
  245. package/es/types/interaction.d.ts +2 -2
  246. package/es/types/interaction.js.map +1 -1
  247. package/es/types/mark.d.ts +3 -3
  248. package/es/types/mark.js.map +1 -1
  249. package/es/types/morph.d.ts +1 -1
  250. package/es/types/morph.js.map +1 -1
  251. package/es/types/plot.d.ts +1 -1
  252. package/es/types/plot.js.map +1 -1
  253. package/es/types/renderer.d.ts +1 -1
  254. package/es/types/renderer.js.map +1 -1
  255. package/es/types/theme.d.ts +1 -1
  256. package/es/types/theme.js.map +1 -1
  257. package/es/types/view.d.ts +1 -1
  258. package/es/types/view.js.map +1 -1
  259. package/es/util/text.d.ts +1 -1
  260. package/es/util/text.js +1 -1
  261. package/es/util/text.js.map +1 -1
  262. package/es/view/View.d.ts +1 -1
  263. package/es/view/View.js +1 -1
  264. package/es/view/View.js.map +1 -1
  265. package/es/view/component.d.ts +6 -3
  266. package/es/view/component.js +10 -4
  267. package/es/view/component.js.map +1 -1
  268. package/es/view/group.d.ts +4 -0
  269. package/es/view/group.js +14 -1
  270. package/es/view/group.js.map +1 -1
  271. package/es/view/mark.d.ts +5 -5
  272. package/es/view/mark.js +10 -12
  273. package/es/view/mark.js.map +1 -1
  274. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import { isNil, isString, merge } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender/es/core';\nimport type { CircleAxisAttributes, LineAxisAttributes, ComponentOptions } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { CircleAxis as CircleAxisComponent, LineAxis as LineAxisComponent } from '@visactor/vrender-components';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n MarkFunctionType,\n MarkRelativeItemSpec,\n Nil,\n RecursivePartial,\n SimpleSignalType,\n StateEncodeSpec\n} from '../types';\nimport { AxisEnum, ComponentEnum } from '../graph/enums';\nimport type { AxisSpec, AxisType, IAxis } from '../types/component';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport type { IPolarCoordinate, IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport { Factory } from '../core/factory';\n\nexport const generateLineAxisAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<LineAxisAttributes>,\n tickCount?: number\n): LineAxisAttributes => {\n const axisTheme = theme?.components?.axis ?? {};\n if (!scale) {\n return merge({}, axisTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n\n const items = [\n tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }))\n ];\n return merge({}, axisTheme, { items }, addition ?? {});\n};\n\nexport const generateCircleAxisAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<CircleAxisAttributes>,\n tickCount?: number\n): CircleAxisAttributes => {\n const axisTheme = theme?.components?.circleAxis ?? {};\n if (!scale) {\n return merge({}, axisTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = [\n tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }))\n ];\n return merge({}, axisTheme, { items }, addition ?? {});\n};\n\nexport const generateCoordinateAxisAttribute = (\n scale: IScale,\n coordinate: IBaseCoordinate,\n inside: boolean,\n baseValue: number,\n layout: MarkRelativeItemSpec,\n isGrid?: boolean\n) => {\n const axisPosition = scale.getCoordinateAxisPosition();\n if (layout?.position === 'auto') {\n // FIXME: too hack\n layout.position = inside ? 'content' : axisPosition;\n }\n\n const axisPoints = scale.getCoordinateAxisPoints(baseValue);\n\n if (axisPoints) {\n const start = axisPoints[0];\n const end = axisPoints[1];\n const res: any = {\n start,\n end,\n verticalFactor:\n (axisPosition === 'top' || axisPosition === 'left' ? -1 : 1) *\n (inside ? -1 : 1) *\n (scale.getSpec().range?.reversed ? -1 : 1)\n };\n\n if (isGrid && coordinate.type === 'polar') {\n const angle = (coordinate as IPolarCoordinate).angle();\n\n res.center = (coordinate as IPolarCoordinate).origin();\n res.startAngle = angle[0];\n res.endAngle = angle[1];\n }\n\n return res;\n }\n\n const radius = (coordinate as IPolarCoordinate).radius();\n const angle = (coordinate as IPolarCoordinate).angle();\n return {\n center: (coordinate as IPolarCoordinate).origin(),\n radius: radius[1],\n innerRadius: radius[0],\n inside: inside,\n startAngle: angle[0],\n endAngle: angle[1]\n };\n};\n\nexport class Axis extends ScaleComponent implements IAxis {\n static readonly componentType: string = ComponentEnum.axis;\n\n protected declare spec: AxisSpec;\n\n private _axisComponentType: keyof typeof AxisEnum;\n\n constructor(view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, ComponentEnum.axis, group);\n this.spec.componentType = ComponentEnum.axis;\n this.mode = mode;\n }\n\n protected parseAddition(spec: AxisSpec) {\n super.parseAddition(spec);\n\n this.axisType(spec.axisType);\n this.tickCount(spec.tickCount);\n this.inside(spec.inside);\n this.baseValue(spec.baseValue);\n\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._axisComponentType = null;\n return this;\n }\n\n axisType(axisType: AxisType | Nil) {\n this.spec.axisType = axisType;\n this._axisComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { x: 0, y: 0, start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(this._getAxisComponentType(), initialAttributes, {\n mode: this.mode,\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n tickCount(tickCount: SimpleSignalType<number> | Nil) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n if (scaleGrammar) {\n scaleGrammar.tickCount(tickCount);\n }\n\n return this.setFunctionSpec(tickCount, 'tickCount');\n }\n\n inside(inside: MarkFunctionType<boolean> | Nil) {\n return this.setFunctionSpec(inside, 'inside');\n }\n\n baseValue(baseValue: MarkFunctionType<number> | Nil) {\n return this.setFunctionSpec(baseValue, 'baseValue');\n }\n\n getAxisComponentType() {\n return this._axisComponentType;\n }\n\n protected _updateComponentEncoders() {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n let addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n const inside = invokeFunctionType(this.spec.inside, parameters, datum, element);\n const baseValue = invokeFunctionType(this.spec.baseValue, parameters, datum, element);\n\n const coordinate = scaleGrammar?.getCoordinate?.();\n if (coordinate) {\n addition = Object.assign(\n generateCoordinateAxisAttribute(\n scaleGrammar,\n coordinate,\n inside,\n baseValue,\n this.spec.layout as MarkRelativeItemSpec\n ),\n addition\n );\n }\n\n const scale = scaleGrammar?.getScale?.();\n const tickCount = invokeFunctionType(this.spec.tickCount, parameters, datum, element);\n\n switch (this._getAxisComponentType()) {\n case AxisEnum.lineAxis:\n return generateLineAxisAttributes(scale, theme, addition, tickCount);\n case AxisEnum.circleAxis:\n return generateCircleAxisAttributes(scale, theme, addition, tickCount);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getAxisComponentType() {\n if (this._axisComponentType) {\n return this._axisComponentType;\n }\n\n let type = this.spec.axisType;\n\n if (isNil(type)) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n type = scaleGrammar?.getCoordinate?.() ? (scaleGrammar.getCoordinateAxisPoints() ? 'line' : 'circle') : 'line';\n }\n\n this._axisComponentType = type === 'circle' ? AxisEnum.circleAxis : AxisEnum.lineAxis;\n\n return this._axisComponentType;\n }\n}\n\nexport const registerAxis = () => {\n Factory.registerGraphicComponent(\n AxisEnum.lineAxis,\n (attrs: LineAxisAttributes, options?: ComponentOptions) =>\n new LineAxisComponent(attrs, options) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n AxisEnum.circleAxis,\n (attrs: CircleAxisAttributes) => new CircleAxisComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.axis, Axis);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import { isNil, isString, merge } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { CircleAxisAttributes, LineAxisAttributes, ComponentOptions } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { CircleAxis as CircleAxisComponent, LineAxis as LineAxisComponent } from '@visactor/vrender-components';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type {\n BaseSingleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n MarkFunctionType,\n MarkRelativeItemSpec,\n Nil,\n RecursivePartial,\n SimpleSignalType,\n StateEncodeSpec\n} from '../types';\nimport { AxisEnum, ComponentEnum } from '../graph/enums';\nimport type { AxisSpec, AxisType, IAxis } from '../types/component';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport type { IPolarCoordinate, IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport { Factory } from '../core/factory';\n\nexport const generateLineAxisAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<LineAxisAttributes>,\n tickCount?: number\n): LineAxisAttributes => {\n const axisTheme = theme?.components?.axis ?? {};\n if (!scale) {\n return merge({}, axisTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n\n const items = [\n tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }))\n ];\n return merge({}, axisTheme, { items }, addition ?? {});\n};\n\nexport const generateCircleAxisAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<CircleAxisAttributes>,\n tickCount?: number\n): CircleAxisAttributes => {\n const axisTheme = theme?.components?.circleAxis ?? {};\n if (!scale) {\n return merge({}, axisTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = [\n tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }))\n ];\n return merge({}, axisTheme, { items }, addition ?? {});\n};\n\nexport const generateCoordinateAxisAttribute = (\n scale: IScale,\n coordinate: IBaseCoordinate,\n inside: boolean,\n baseValue: number,\n layout: MarkRelativeItemSpec,\n isGrid?: boolean\n) => {\n const axisPosition = scale.getCoordinateAxisPosition();\n if (layout?.position === 'auto') {\n // FIXME: too hack\n layout.position = inside ? 'content' : axisPosition;\n }\n\n const axisPoints = scale.getCoordinateAxisPoints(baseValue);\n\n if (axisPoints) {\n const start = axisPoints[0];\n const end = axisPoints[1];\n const res: any = {\n start,\n end,\n verticalFactor:\n (axisPosition === 'top' || axisPosition === 'left' ? -1 : 1) *\n (inside ? -1 : 1) *\n (scale.getSpec().range?.reversed ? -1 : 1)\n };\n\n if (isGrid && coordinate.type === 'polar') {\n const angle = (coordinate as IPolarCoordinate).angle();\n\n res.center = (coordinate as IPolarCoordinate).origin();\n res.startAngle = angle[0];\n res.endAngle = angle[1];\n }\n\n return res;\n }\n\n const radius = (coordinate as IPolarCoordinate).radius();\n const angle = (coordinate as IPolarCoordinate).angle();\n return {\n center: (coordinate as IPolarCoordinate).origin(),\n radius: radius[1],\n innerRadius: radius[0],\n inside: inside,\n startAngle: angle[0],\n endAngle: angle[1]\n };\n};\n\nexport class Axis extends ScaleComponent implements IAxis {\n static readonly componentType: string = ComponentEnum.axis;\n\n protected declare spec: AxisSpec;\n\n private _axisComponentType: keyof typeof AxisEnum;\n\n constructor(view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, ComponentEnum.axis, group);\n this.spec.componentType = ComponentEnum.axis;\n this.mode = mode;\n }\n\n protected parseAddition(spec: AxisSpec) {\n super.parseAddition(spec);\n\n this.axisType(spec.axisType);\n this.tickCount(spec.tickCount);\n this.inside(spec.inside);\n this.baseValue(spec.baseValue);\n\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._axisComponentType = null;\n return this;\n }\n\n axisType(axisType: AxisType | Nil) {\n this.spec.axisType = axisType;\n this._axisComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { x: 0, y: 0, start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(this._getAxisComponentType(), initialAttributes, {\n mode: this.mode,\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n tickCount(tickCount: SimpleSignalType<number> | Nil) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n if (scaleGrammar) {\n scaleGrammar.tickCount(tickCount);\n }\n\n return this.setFunctionSpec(tickCount, 'tickCount');\n }\n\n inside(inside: MarkFunctionType<boolean> | Nil) {\n return this.setFunctionSpec(inside, 'inside');\n }\n\n baseValue(baseValue: MarkFunctionType<number> | Nil) {\n return this.setFunctionSpec(baseValue, 'baseValue');\n }\n\n getAxisComponentType() {\n return this._axisComponentType;\n }\n\n protected _updateComponentEncoders() {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n let addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n const inside = invokeFunctionType(this.spec.inside, parameters, datum, element);\n const baseValue = invokeFunctionType(this.spec.baseValue, parameters, datum, element);\n\n const coordinate = scaleGrammar?.getCoordinate?.();\n if (coordinate) {\n addition = Object.assign(\n generateCoordinateAxisAttribute(\n scaleGrammar,\n coordinate,\n inside,\n baseValue,\n this.spec.layout as MarkRelativeItemSpec\n ),\n addition\n );\n }\n\n const scale = scaleGrammar?.getScale?.();\n const tickCount = invokeFunctionType(this.spec.tickCount, parameters, datum, element);\n\n switch (this._getAxisComponentType()) {\n case AxisEnum.lineAxis:\n return generateLineAxisAttributes(scale, theme, addition, tickCount);\n case AxisEnum.circleAxis:\n return generateCircleAxisAttributes(scale, theme, addition, tickCount);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getAxisComponentType() {\n if (this._axisComponentType) {\n return this._axisComponentType;\n }\n\n let type = this.spec.axisType;\n\n if (isNil(type)) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n type = scaleGrammar?.getCoordinate?.() ? (scaleGrammar.getCoordinateAxisPoints() ? 'line' : 'circle') : 'line';\n }\n\n this._axisComponentType = type === 'circle' ? AxisEnum.circleAxis : AxisEnum.lineAxis;\n\n return this._axisComponentType;\n }\n}\n\nexport const registerAxis = () => {\n Factory.registerGraphicComponent(\n AxisEnum.lineAxis,\n (attrs: LineAxisAttributes, options?: ComponentOptions) =>\n new LineAxisComponent(attrs, options) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n AxisEnum.circleAxis,\n (attrs: CircleAxisAttributes) => new CircleAxisComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.axis, Axis);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/datazoom.ts"],"names":[],"mappings":"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","file":"datazoom.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender/es/core';\nimport type { DataZoomAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataZoom as DatazoomComponent } from '@visactor/vrender-components';\nimport { isNil, isString, merge, mixin } from '@visactor/vutils';\nimport { ComponentEnum } from '../graph/enums';\nimport type {\n BaseSignleEncodeSpec,\n ChannelEncodeType,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n ScaleEncodeType,\n StateEncodeSpec\n} from '../types';\nimport type { DatazoomSpec, IDatazoom } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Component } from '../view/component';\nimport { parseEncodeType } from '../parse/mark';\nimport { Factory } from '../core/factory';\nimport { DatazoomFilter } from '../interactions/datazoom-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDatazoomAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DataZoomAttributes>\n): DataZoomAttributes => {\n const datazoomTheme = theme?.components?.datazoom;\n if (!data) {\n return merge({}, datazoomTheme, addition ?? {});\n }\n\n return merge({}, datazoomTheme, { previewData: data }, addition ?? {});\n};\n\nexport class Datazoom extends Component implements IDatazoom {\n static readonly componentType: string = ComponentEnum.datazoom;\n protected declare spec: DatazoomSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.datazoom, group);\n this.spec.componentType = ComponentEnum.datazoom;\n }\n\n protected parseAddition(spec: DatazoomSpec) {\n super.parseAddition(spec);\n this.preview(spec.preview?.data, spec.preview?.x, spec.preview?.y, spec.preview?.x1, spec.preview?.y1);\n this._updateComponentEncoders();\n return this;\n }\n\n preview(\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) {\n if (!isNil(this.spec.preview)) {\n const lastData = this.spec.preview.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n this.detach(lastDataGrammar);\n this.detach(parseEncodeType(this.spec.preview.x, this.view));\n this.detach(parseEncodeType(this.spec.preview.y, this.view));\n this.detach(parseEncodeType(this.spec.preview.x1, this.view));\n this.detach(parseEncodeType(this.spec.preview.y1, this.view));\n }\n this.spec.preview = undefined;\n if (data) {\n this.spec.preview = { data, x, y, x1, y1 };\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n this.attach(dataGrammar);\n this.attach(parseEncodeType(x, this.view));\n this.attach(parseEncodeType(y, this.view));\n this.attach(parseEncodeType(x1, this.view));\n this.attach(parseEncodeType(y1, this.view));\n }\n this._updateComponentEncoders();\n this.commit();\n return this;\n }\n\n setStartEndValue(start?: number, end?: number) {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n datazoom?.setStartAndEnd?.(start, end);\n return this;\n }\n\n getStartEndValue() {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n\n if (datazoom) {\n const state = datazoom.state;\n return {\n start: state.start,\n end: state.end\n };\n }\n\n return null;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const initialAttributes = Object.assign({}, theme?.components?.datazoom, attrs);\n const graphicItem = Factory.createGraphicComponent(this.componentType, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n const datazoom = graphicItem as unknown as DatazoomComponent;\n datazoom.setStatePointToData(state => {\n if (this.spec.preview) {\n return this.invertDatazoomRatio(state) ?? state;\n }\n return state;\n });\n\n datazoom.setPreviewPointsX((datum: any) => {\n if (this.spec.preview?.x && this.spec.preview?.data) {\n return invokeEncoder({ x: this.spec.preview.x }, datum, this.elements[0], this.parameters()).x;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY((datum: any) => {\n if (this.spec.preview?.y && this.spec.preview?.data) {\n return invokeEncoder({ y: this.spec.preview.y }, datum, this.elements[0], this.parameters()).y;\n }\n\n return undefined;\n });\n\n datazoom.setPreviewPointsX1((datum: any) => {\n if (this.spec.preview?.x1 && this.spec.preview?.data) {\n return invokeEncoder({ x1: this.spec.preview.x1 }, datum, this.elements[0], this.parameters()).x1;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY1((datum: any) => {\n if (this.spec.preview?.y1 && this.spec.preview?.data) {\n return invokeEncoder({ y1: this.spec.preview.y1 }, datum, this.elements[0], this.parameters()).y1;\n }\n\n return undefined;\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const data = this.spec.preview?.data;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n return generateDatazoomAttributes(dataGrammar?.getValue?.(), theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n invertDatazoomRatio(ratio: number): any {\n const scale = this.getDatazoomMainScale();\n if (scale) {\n const range = scale.range();\n const scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];\n return scale.invert(scaledValue);\n }\n return null;\n }\n\n getDatazoomMainScale() {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n if (datazoom && this.spec.preview) {\n const isHorizontal = datazoom.attribute.orient === 'top' || datazoom.attribute.orient === 'bottom';\n const scale = isHorizontal ? this.spec.preview.x?.scale : this.spec.preview.y?.scale;\n const scaleGrammar = isString(scale) ? this.view.getScaleById(scale) : scale;\n return scaleGrammar?.getScale();\n }\n return null;\n }\n}\n\nexport const registerDataZoom = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.datazoom,\n (attrs: DataZoomAttributes) => new DatazoomComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.datazoom, Datazoom);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(DatazoomFilter.type, DatazoomFilter);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/datazoom.ts"],"names":[],"mappings":"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","file":"datazoom.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { DataZoomAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataZoom as DatazoomComponent } from '@visactor/vrender-components';\nimport { isNil, isString, merge, mixin } from '@visactor/vutils';\nimport { ComponentEnum } from '../graph/enums';\nimport type {\n BaseSingleEncodeSpec,\n ChannelEncodeType,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n ScaleEncodeType,\n StateEncodeSpec\n} from '../types';\nimport type { DatazoomSpec, IDatazoom } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Component } from '../view/component';\nimport { parseEncodeType } from '../parse/mark';\nimport { Factory } from '../core/factory';\nimport { DatazoomFilter } from '../interactions/datazoom-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDatazoomAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DataZoomAttributes>\n): DataZoomAttributes => {\n const datazoomTheme = theme?.components?.datazoom;\n if (!data) {\n return merge({}, datazoomTheme, addition ?? {});\n }\n\n return merge({}, datazoomTheme, { previewData: data }, addition ?? {});\n};\n\nexport class Datazoom extends Component implements IDatazoom {\n static readonly componentType: string = ComponentEnum.datazoom;\n protected declare spec: DatazoomSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.datazoom, group);\n this.spec.componentType = ComponentEnum.datazoom;\n }\n\n protected parseAddition(spec: DatazoomSpec) {\n super.parseAddition(spec);\n this.preview(spec.preview?.data, spec.preview?.x, spec.preview?.y, spec.preview?.x1, spec.preview?.y1);\n this._updateComponentEncoders();\n return this;\n }\n\n preview(\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) {\n if (!isNil(this.spec.preview)) {\n const lastData = this.spec.preview.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n this.detach(lastDataGrammar);\n this.detach(parseEncodeType(this.spec.preview.x, this.view));\n this.detach(parseEncodeType(this.spec.preview.y, this.view));\n this.detach(parseEncodeType(this.spec.preview.x1, this.view));\n this.detach(parseEncodeType(this.spec.preview.y1, this.view));\n }\n this.spec.preview = undefined;\n if (data) {\n this.spec.preview = { data, x, y, x1, y1 };\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n this.attach(dataGrammar);\n this.attach(parseEncodeType(x, this.view));\n this.attach(parseEncodeType(y, this.view));\n this.attach(parseEncodeType(x1, this.view));\n this.attach(parseEncodeType(y1, this.view));\n }\n this._updateComponentEncoders();\n this.commit();\n return this;\n }\n\n setStartEndValue(start?: number, end?: number) {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n datazoom?.setStartAndEnd?.(start, end);\n return this;\n }\n\n getStartEndValue() {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n\n if (datazoom) {\n const state = datazoom.state;\n return {\n start: state.start,\n end: state.end\n };\n }\n\n return null;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const initialAttributes = Object.assign({}, theme?.components?.datazoom, attrs);\n const graphicItem = Factory.createGraphicComponent(this.componentType, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n const datazoom = graphicItem as unknown as DatazoomComponent;\n datazoom.setStatePointToData(state => {\n if (this.spec.preview) {\n return this.invertDatazoomRatio(state) ?? state;\n }\n return state;\n });\n\n datazoom.setPreviewPointsX((datum: any) => {\n if (this.spec.preview?.x && this.spec.preview?.data) {\n return invokeEncoder({ x: this.spec.preview.x }, datum, this.elements[0], this.parameters()).x;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY((datum: any) => {\n if (this.spec.preview?.y && this.spec.preview?.data) {\n return invokeEncoder({ y: this.spec.preview.y }, datum, this.elements[0], this.parameters()).y;\n }\n\n return undefined;\n });\n\n datazoom.setPreviewPointsX1((datum: any) => {\n if (this.spec.preview?.x1 && this.spec.preview?.data) {\n return invokeEncoder({ x1: this.spec.preview.x1 }, datum, this.elements[0], this.parameters()).x1;\n }\n\n return undefined;\n });\n datazoom.setPreviewPointsY1((datum: any) => {\n if (this.spec.preview?.y1 && this.spec.preview?.data) {\n return invokeEncoder({ y1: this.spec.preview.y1 }, datum, this.elements[0], this.parameters()).y1;\n }\n\n return undefined;\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const data = this.spec.preview?.data;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n return generateDatazoomAttributes(dataGrammar?.getValue?.(), theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n invertDatazoomRatio(ratio: number): any {\n const scale = this.getDatazoomMainScale();\n if (scale) {\n const range = scale.range();\n const scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];\n return scale.invert(scaledValue);\n }\n return null;\n }\n\n getDatazoomMainScale() {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n if (datazoom && this.spec.preview) {\n const isHorizontal = datazoom.attribute.orient === 'top' || datazoom.attribute.orient === 'bottom';\n const scale = isHorizontal ? this.spec.preview.x?.scale : this.spec.preview.y?.scale;\n const scaleGrammar = isString(scale) ? this.view.getScaleById(scale) : scale;\n return scaleGrammar?.getScale();\n }\n return null;\n }\n}\n\nexport const registerDataZoom = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.datazoom,\n (attrs: DataZoomAttributes) => new DatazoomComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.datazoom, Datazoom);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(DatazoomFilter.type, DatazoomFilter);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import { isString, merge } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender/es/core';\nimport type { CircleAxisGridAttributes, ComponentOptions, LineAxisGridAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { CircleAxisGrid, LineAxisGrid } from '@visactor/vrender-components';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n MarkFunctionType,\n MarkRelativeItemSpec,\n Nil,\n RecursivePartial,\n SimpleSignalType,\n StateEncodeSpec\n} from '../types';\nimport { AxisEnum, ComponentEnum, GridEnum } from '../graph/enums';\nimport type { GridShape, GridSpec, AxisType, IAxis, IGrid } from '../types/component';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { generateCoordinateAxisAttribute } from './axis';\nimport { Factory } from '../core/factory';\n\nexport const generateLineAxisGridAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<LineAxisGridAttributes>,\n tickCount?: number\n): LineAxisGridAttributes => {\n const gridTheme = theme?.components?.grid ?? {};\n if (!scale) {\n return merge({}, gridTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }));\n return merge({}, gridTheme, { items }, addition ?? {});\n};\n\nexport const generateCircleAxisGridAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<CircleAxisGridAttributes>,\n tickCount?: number\n): CircleAxisGridAttributes => {\n const gridTheme = theme?.components?.circleGrid ?? {};\n if (!scale) {\n return merge({}, gridTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }));\n return merge({}, gridTheme, { items }, addition ?? {});\n};\n\nexport class Grid extends ScaleComponent implements IGrid {\n static readonly componentType: string = ComponentEnum.grid;\n protected declare spec: GridSpec;\n\n protected mode?: '2d' | '3d';\n\n private _gridComponentType: keyof typeof GridEnum;\n private _targetAxis: IAxis;\n\n constructor(view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, ComponentEnum.grid, group);\n this.spec.componentType = ComponentEnum.grid;\n this.mode = mode;\n }\n\n protected parseAddition(spec: GridSpec) {\n super.parseAddition(spec);\n this.target(spec.target);\n this.gridType(spec.gridType);\n this.gridShape(spec.gridShape);\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._gridComponentType = null;\n return this;\n }\n\n gridType(gridType: AxisType | Nil) {\n this.spec.gridType = gridType;\n this._gridComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n gridShape(gridShape: GridShape | Nil) {\n this.spec.gridShape = gridShape;\n // no need to rejoin when gridShape is updated\n // this._gridComponentType = null;\n // this._prepareRejoin();\n this.commit();\n return this;\n }\n\n target(axis: IAxis | string | Nil) {\n if (this.spec.target) {\n const prevAxis = isString(this.spec.target)\n ? (this.view.getMarkById(this.spec.target) as IAxis)\n : this.spec.target;\n this.detach(prevAxis);\n }\n this.spec.target = axis;\n const nextAxis = isString(axis) ? (this.view.getMarkById(axis) as IAxis) : axis;\n this.attach(nextAxis);\n this._targetAxis = nextAxis;\n\n // clear grid type when target is updated\n this._gridComponentType = null;\n this._updateComponentEncoders();\n\n this.commit();\n return this;\n }\n\n tickCount(tickCount: SimpleSignalType<number> | Nil) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n if (scaleGrammar) {\n scaleGrammar.tickCount(tickCount);\n }\n\n return this.setFunctionSpec(tickCount, 'tickCount');\n }\n\n inside(inside: MarkFunctionType<boolean> | Nil) {\n return this.setFunctionSpec(inside, 'inside');\n }\n\n baseValue(baseValue: MarkFunctionType<number> | Nil) {\n return this.setFunctionSpec(baseValue, 'baseValue');\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { x: 0, y: 0, start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(this._getGridComponentType(), initialAttributes, {\n mode: this.mode,\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n let addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n let scaleGrammar: IScale;\n const baseValue = invokeFunctionType(this.spec.baseValue, parameters, datum, element);\n\n // get attributes from target axis\n if (this._targetAxis) {\n const targetScale = this._targetAxis.getSpec()?.scale as IScale | string | Nil;\n scaleGrammar = isString(targetScale) ? this.view.getScaleById(targetScale) : targetScale;\n\n const targetElement = this._targetAxis.elements[0];\n if (targetElement) {\n switch (this._getGridComponentType()) {\n case GridEnum.lineAxisGrid:\n addition = Object.assign(\n {\n x: targetElement.getGraphicAttribute('x'),\n y: targetElement.getGraphicAttribute('y'),\n start: targetElement.getGraphicAttribute('start'),\n end: targetElement.getGraphicAttribute('end'),\n verticalFactor: targetElement.getGraphicAttribute('verticalFactor') ?? 1\n },\n addition\n );\n break;\n case GridEnum.circleAxisGrid:\n addition = Object.assign(\n {\n x: targetElement.getGraphicAttribute('x'),\n y: targetElement.getGraphicAttribute('y'),\n center: targetElement.getGraphicAttribute('center'),\n radius: targetElement.getGraphicAttribute('radius'),\n innerRadius: targetElement.getGraphicAttribute('innerRadius'),\n inside: targetElement.getGraphicAttribute('inside'),\n startAngle: targetElement.getGraphicAttribute('startAngle'),\n endAngle: targetElement.getGraphicAttribute('endAngle')\n },\n addition\n );\n break;\n }\n }\n }\n // compute attribute by spec\n else {\n scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const inside = invokeFunctionType(this.spec.inside, parameters, datum, element);\n\n const coordinate = scaleGrammar?.getCoordinate?.();\n if (coordinate) {\n addition = Object.assign(\n generateCoordinateAxisAttribute(\n scaleGrammar,\n coordinate,\n inside,\n baseValue,\n this.spec.layout as MarkRelativeItemSpec,\n true\n ),\n addition\n );\n }\n }\n\n // compute addition shape attributes for line grid\n if (this._getGridComponentType() === GridEnum.lineAxisGrid) {\n if (this.spec.gridShape === 'line' || !this.spec.gridShape) {\n // set axis type\n addition = Object.assign({}, addition, { type: 'line' });\n } else {\n // set addition length & axis type\n addition = Object.assign(\n {\n center: addition.start,\n closed: true\n },\n addition,\n { type: this.spec.gridShape }\n );\n }\n }\n\n const scale = scaleGrammar?.getScale?.();\n const tickCount = invokeFunctionType(this.spec.tickCount, parameters, datum, element);\n switch (this._getGridComponentType()) {\n case GridEnum.lineAxisGrid:\n return generateLineAxisGridAttributes(scale, theme, addition, tickCount);\n case GridEnum.circleAxisGrid:\n return generateCircleAxisGridAttributes(scale, theme, addition, tickCount);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getGridComponentType() {\n if (this._gridComponentType) {\n return this._gridComponentType;\n }\n\n if (this.spec.gridType) {\n switch (this.spec.gridType) {\n case 'circle':\n this._gridComponentType = GridEnum.circleAxisGrid;\n break;\n case 'line':\n default:\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n } else if (this._targetAxis) {\n const axisComponentType = this._targetAxis.getAxisComponentType();\n switch (axisComponentType) {\n case AxisEnum.circleAxis:\n this._gridComponentType = GridEnum.circleAxisGrid;\n break;\n case AxisEnum.lineAxis:\n default:\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n } else if (this.spec.scale) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n this._gridComponentType = scaleGrammar?.getCoordinate?.()\n ? scaleGrammar.getCoordinateAxisPoints()\n ? GridEnum.lineAxisGrid\n : GridEnum.circleAxisGrid\n : GridEnum.lineAxisGrid;\n } else {\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n\n return this._gridComponentType;\n }\n}\n\nexport const registerGrid = () => {\n Factory.registerGraphicComponent(\n GridEnum.lineAxisGrid,\n (attrs: LineAxisGridAttributes, options?: ComponentOptions) =>\n new LineAxisGrid(attrs, options) as unknown as IGraphic\n );\n\n Factory.registerGraphicComponent(\n GridEnum.circleAxisGrid,\n (attrs: CircleAxisGridAttributes, options?: ComponentOptions) =>\n new CircleAxisGrid(attrs, options) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.grid, Grid);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import { isString, merge } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { CircleAxisGridAttributes, ComponentOptions, LineAxisGridAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { CircleAxisGrid, LineAxisGrid } from '@visactor/vrender-components';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type {\n BaseSingleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n MarkFunctionType,\n MarkRelativeItemSpec,\n Nil,\n RecursivePartial,\n SimpleSignalType,\n StateEncodeSpec\n} from '../types';\nimport { AxisEnum, ComponentEnum, GridEnum } from '../graph/enums';\nimport type { GridShape, GridSpec, AxisType, IAxis, IGrid } from '../types/component';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { generateCoordinateAxisAttribute } from './axis';\nimport { Factory } from '../core/factory';\n\nexport const generateLineAxisGridAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<LineAxisGridAttributes>,\n tickCount?: number\n): LineAxisGridAttributes => {\n const gridTheme = theme?.components?.grid ?? {};\n if (!scale) {\n return merge({}, gridTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }));\n return merge({}, gridTheme, { items }, addition ?? {});\n};\n\nexport const generateCircleAxisGridAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<CircleAxisGridAttributes>,\n tickCount?: number\n): CircleAxisGridAttributes => {\n const gridTheme = theme?.components?.circleGrid ?? {};\n if (!scale) {\n return merge({}, gridTheme, addition ?? {});\n }\n const tickData = scale.tickData?.(tickCount) ?? [];\n const items = tickData.map(tick => ({\n id: tick.index,\n label: tick.tick,\n value: tick.value,\n rawValue: tick.tick\n }));\n return merge({}, gridTheme, { items }, addition ?? {});\n};\n\nexport class Grid extends ScaleComponent implements IGrid {\n static readonly componentType: string = ComponentEnum.grid;\n protected declare spec: GridSpec;\n\n protected mode?: '2d' | '3d';\n\n private _gridComponentType: keyof typeof GridEnum;\n private _targetAxis: IAxis;\n\n constructor(view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, ComponentEnum.grid, group);\n this.spec.componentType = ComponentEnum.grid;\n this.mode = mode;\n }\n\n protected parseAddition(spec: GridSpec) {\n super.parseAddition(spec);\n this.target(spec.target);\n this.gridType(spec.gridType);\n this.gridShape(spec.gridShape);\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._gridComponentType = null;\n return this;\n }\n\n gridType(gridType: AxisType | Nil) {\n this.spec.gridType = gridType;\n this._gridComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n gridShape(gridShape: GridShape | Nil) {\n this.spec.gridShape = gridShape;\n // no need to rejoin when gridShape is updated\n // this._gridComponentType = null;\n // this._prepareRejoin();\n this.commit();\n return this;\n }\n\n target(axis: IAxis | string | Nil) {\n if (this.spec.target) {\n const prevAxis = isString(this.spec.target)\n ? (this.view.getMarkById(this.spec.target) as IAxis)\n : this.spec.target;\n this.detach(prevAxis);\n }\n this.spec.target = axis;\n const nextAxis = isString(axis) ? (this.view.getMarkById(axis) as IAxis) : axis;\n this.attach(nextAxis);\n this._targetAxis = nextAxis;\n\n // clear grid type when target is updated\n this._gridComponentType = null;\n this._updateComponentEncoders();\n\n this.commit();\n return this;\n }\n\n tickCount(tickCount: SimpleSignalType<number> | Nil) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n\n if (scaleGrammar) {\n scaleGrammar.tickCount(tickCount);\n }\n\n return this.setFunctionSpec(tickCount, 'tickCount');\n }\n\n inside(inside: MarkFunctionType<boolean> | Nil) {\n return this.setFunctionSpec(inside, 'inside');\n }\n\n baseValue(baseValue: MarkFunctionType<number> | Nil) {\n return this.setFunctionSpec(baseValue, 'baseValue');\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { x: 0, y: 0, start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(this._getGridComponentType(), initialAttributes, {\n mode: this.mode,\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n let addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n let scaleGrammar: IScale;\n const baseValue = invokeFunctionType(this.spec.baseValue, parameters, datum, element);\n\n // get attributes from target axis\n if (this._targetAxis) {\n const targetScale = this._targetAxis.getSpec()?.scale as IScale | string | Nil;\n scaleGrammar = isString(targetScale) ? this.view.getScaleById(targetScale) : targetScale;\n\n const targetElement = this._targetAxis.elements[0];\n if (targetElement) {\n switch (this._getGridComponentType()) {\n case GridEnum.lineAxisGrid:\n addition = Object.assign(\n {\n x: targetElement.getGraphicAttribute('x'),\n y: targetElement.getGraphicAttribute('y'),\n start: targetElement.getGraphicAttribute('start'),\n end: targetElement.getGraphicAttribute('end'),\n verticalFactor: targetElement.getGraphicAttribute('verticalFactor') ?? 1\n },\n addition\n );\n break;\n case GridEnum.circleAxisGrid:\n addition = Object.assign(\n {\n x: targetElement.getGraphicAttribute('x'),\n y: targetElement.getGraphicAttribute('y'),\n center: targetElement.getGraphicAttribute('center'),\n radius: targetElement.getGraphicAttribute('radius'),\n innerRadius: targetElement.getGraphicAttribute('innerRadius'),\n inside: targetElement.getGraphicAttribute('inside'),\n startAngle: targetElement.getGraphicAttribute('startAngle'),\n endAngle: targetElement.getGraphicAttribute('endAngle')\n },\n addition\n );\n break;\n }\n }\n }\n // compute attribute by spec\n else {\n scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const inside = invokeFunctionType(this.spec.inside, parameters, datum, element);\n\n const coordinate = scaleGrammar?.getCoordinate?.();\n if (coordinate) {\n addition = Object.assign(\n generateCoordinateAxisAttribute(\n scaleGrammar,\n coordinate,\n inside,\n baseValue,\n this.spec.layout as MarkRelativeItemSpec,\n true\n ),\n addition\n );\n }\n }\n\n // compute addition shape attributes for line grid\n if (this._getGridComponentType() === GridEnum.lineAxisGrid) {\n if (this.spec.gridShape === 'line' || !this.spec.gridShape) {\n // set axis type\n addition = Object.assign({}, addition, { type: 'line' });\n } else {\n // set addition length & axis type\n addition = Object.assign(\n {\n center: addition.start,\n closed: true\n },\n addition,\n { type: this.spec.gridShape }\n );\n }\n }\n\n const scale = scaleGrammar?.getScale?.();\n const tickCount = invokeFunctionType(this.spec.tickCount, parameters, datum, element);\n switch (this._getGridComponentType()) {\n case GridEnum.lineAxisGrid:\n return generateLineAxisGridAttributes(scale, theme, addition, tickCount);\n case GridEnum.circleAxisGrid:\n return generateCircleAxisGridAttributes(scale, theme, addition, tickCount);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getGridComponentType() {\n if (this._gridComponentType) {\n return this._gridComponentType;\n }\n\n if (this.spec.gridType) {\n switch (this.spec.gridType) {\n case 'circle':\n this._gridComponentType = GridEnum.circleAxisGrid;\n break;\n case 'line':\n default:\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n } else if (this._targetAxis) {\n const axisComponentType = this._targetAxis.getAxisComponentType();\n switch (axisComponentType) {\n case AxisEnum.circleAxis:\n this._gridComponentType = GridEnum.circleAxisGrid;\n break;\n case AxisEnum.lineAxis:\n default:\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n } else if (this.spec.scale) {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n this._gridComponentType = scaleGrammar?.getCoordinate?.()\n ? scaleGrammar.getCoordinateAxisPoints()\n ? GridEnum.lineAxisGrid\n : GridEnum.circleAxisGrid\n : GridEnum.lineAxisGrid;\n } else {\n this._gridComponentType = GridEnum.lineAxisGrid;\n }\n\n return this._gridComponentType;\n }\n}\n\nexport const registerGrid = () => {\n Factory.registerGraphicComponent(\n GridEnum.lineAxisGrid,\n (attrs: LineAxisGridAttributes, options?: ComponentOptions) =>\n new LineAxisGrid(attrs, options) as unknown as IGraphic\n );\n\n Factory.registerGraphicComponent(\n GridEnum.circleAxisGrid,\n (attrs: CircleAxisGridAttributes, options?: ComponentOptions) =>\n new CircleAxisGrid(attrs, options) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.grid, Grid);\n};\n"]}
@@ -1,11 +1,11 @@
1
1
  import type { BaseLabelAttrs, DataLabelAttrs } from '@visactor/vrender-components';
2
- import type { BaseSignleEncodeSpec, IGroupMark, IMark, ITheme, IView, MarkFunctionType, Nil } from '../types';
2
+ import type { BaseSingleEncodeSpec, IGroupMark, IMark, ITheme, IView, MarkFunctionType, Nil } from '../types';
3
3
  import type { ILabel, LabelSpec } from '../types/component';
4
4
  import { Component } from '../view/component';
5
5
  export declare const generateLabelAttributes: (marks: IMark[], groupSize: {
6
6
  width: number;
7
7
  height: number;
8
- }, encoder: BaseSignleEncodeSpec, labelStyle: MarkFunctionType<Partial<BaseLabelAttrs>>, parameters: any, theme?: ITheme) => DataLabelAttrs;
8
+ }, encoder: BaseSingleEncodeSpec, labelStyle: MarkFunctionType<Partial<BaseLabelAttrs>>, parameters: any, theme?: ITheme) => DataLabelAttrs;
9
9
  export declare class Label extends Component implements ILabel {
10
10
  static readonly componentType: string;
11
11
  protected spec: LabelSpec;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import { load } from './../util/data';\nimport { array, isNil, isString, merge, last } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender/es/core';\nimport type { BaseLabelAttrs, DataLabelAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataLabel } from '@visactor/vrender-components';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n IMark,\n ITheme,\n IView,\n MarkFunctionType,\n Nil,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, GrammarMarkType } from '../graph/enums';\nimport type { ILabel, LabelSpec } from '../types/component';\nimport { Component } from '../view/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { Factory } from '../core/factory';\n\nexport const generateLabelAttributes = (\n marks: IMark[],\n groupSize: { width: number; height: number },\n encoder: BaseSignleEncodeSpec,\n labelStyle: MarkFunctionType<Partial<BaseLabelAttrs>>,\n parameters: any,\n theme?: ITheme\n): DataLabelAttrs => {\n const labelTheme = theme?.components?.dataLabel;\n const dataLabels = marks\n .map((mark, index) => {\n const labelParameters = { ...parameters, labelIndex: index };\n const addition = invokeFunctionType(labelStyle, labelParameters, mark);\n let currentTheme: any = {};\n\n switch (mark.markType) {\n case GrammarMarkType.line:\n case GrammarMarkType.area:\n if (addition?.type === 'line') {\n currentTheme = theme?.components?.lineLabel;\n } else if (addition?.type === 'area') {\n currentTheme = theme?.components?.areaLabel;\n } else {\n currentTheme = theme?.components?.lineDataLabel;\n }\n break;\n case GrammarMarkType.rect:\n case GrammarMarkType.rect3d:\n case GrammarMarkType.interval:\n currentTheme = theme?.components?.rectLabel;\n break;\n case GrammarMarkType.symbol:\n case GrammarMarkType.circle:\n case GrammarMarkType.cell:\n currentTheme = theme?.components?.symbolLabel;\n break;\n case GrammarMarkType.arc:\n case GrammarMarkType.arc3d:\n currentTheme = theme?.components?.arcLabel;\n break;\n case GrammarMarkType.polygon:\n case GrammarMarkType.path:\n default:\n currentTheme = theme?.components?.pointLabel;\n break;\n }\n\n const data: any[] = addition?.data ?? [];\n const themeDatum = currentTheme?.data?.[0] ?? {};\n\n if (data && data.length > 0) {\n data.forEach((d, index) => {\n if (mark.elements[index]) {\n const attributes = invokeEncoder(encoder, d, mark.elements[index], labelParameters);\n merge(d, themeDatum, attributes);\n }\n });\n } else {\n // process by order of elements\n mark.elements.forEach(element => {\n const graphicItem = element.getGraphicItem();\n if ((graphicItem as any).releaseStatus !== 'willRelease') {\n if (mark.isCollectionMark()) {\n const datum = element.getDatum();\n\n datum.forEach((entry: any) => {\n const attributes = invokeEncoder(encoder, entry, element, labelParameters);\n data.push(merge({}, themeDatum, attributes));\n });\n } else {\n const attributes = invokeEncoder(encoder, element.getDatum(), element, labelParameters);\n const datum = merge({}, themeDatum, attributes);\n data.push(datum);\n }\n }\n });\n }\n\n const graphicItemName = mark.graphicItem?.name;\n return merge(\n {},\n currentTheme,\n {\n data,\n baseMarkGroupName: graphicItemName,\n // FIXME: hack\n // 标签是对数据顺序有强要求的场景,因为顺序会影响标签躲避结果;而目前没有机制保证 vrender 图元顺序与数据顺序一致。\n // 这里目前只能通过自定义方法来 hack\n getBaseMarks: () => mark.elements.map(element => element.getGraphicItem())\n },\n addition ?? {}\n );\n })\n .filter(label => !isNil(label));\n\n return merge({}, labelTheme, { size: groupSize, dataLabels });\n};\n\nexport class Label extends Component implements ILabel {\n static readonly componentType: string = ComponentEnum.label;\n protected declare spec: LabelSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.label, group);\n this.spec.componentType = ComponentEnum.label;\n }\n\n protected parseAddition(spec: LabelSpec) {\n super.parseAddition(spec);\n this.labelStyle(spec.labelStyle);\n this.size(spec.size);\n this.target(spec.target);\n return this;\n }\n\n labelStyle(style: MarkFunctionType<Partial<BaseLabelAttrs>>) {\n return this.setFunctionSpec(style, 'labelStyle');\n }\n\n size(size: LabelSpec['size']) {\n return this.setFunctionSpec(size, 'size');\n }\n\n target(mark: IMark | IMark[] | string | string[] | Nil): this {\n if (this.spec.target) {\n const prevMarks = array(this.spec.target).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n this.detach(prevMarks);\n }\n this.spec.target = mark;\n if (mark) {\n const nextMarks = array(mark).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n this.attach(nextMarks);\n }\n this.commit();\n return this;\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const marks = array(this.spec.target).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n const groupGraphicItem = this.group?.getGroupGraphicItem?.();\n let size = invokeFunctionType(this.spec.size, parameters);\n if (!size) {\n size = groupGraphicItem\n ? {\n width: groupGraphicItem.attribute.width ?? groupGraphicItem.AABBBounds.width(),\n height: groupGraphicItem.attribute.height ?? groupGraphicItem.AABBBounds.height()\n }\n : { width: Infinity, height: Infinity };\n }\n\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n\n return generateLabelAttributes(\n marks,\n size,\n encoder as BaseSignleEncodeSpec,\n this.spec.labelStyle,\n parameters,\n theme\n );\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n}\n\nexport const registerLabel = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.label,\n (attrs: DataLabelAttrs) => new DataLabel(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.label, Label);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import { load } from './../util/data';\nimport { array, isNil, isString, merge, last } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { BaseLabelAttrs, DataLabelAttrs } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataLabel } from '@visactor/vrender-components';\nimport type {\n BaseSingleEncodeSpec,\n IElement,\n IGroupMark,\n IMark,\n ITheme,\n IView,\n MarkFunctionType,\n Nil,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, GrammarMarkType } from '../graph/enums';\nimport type { ILabel, LabelSpec } from '../types/component';\nimport { Component } from '../view/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { Factory } from '../core/factory';\n\nexport const generateLabelAttributes = (\n marks: IMark[],\n groupSize: { width: number; height: number },\n encoder: BaseSingleEncodeSpec,\n labelStyle: MarkFunctionType<Partial<BaseLabelAttrs>>,\n parameters: any,\n theme?: ITheme\n): DataLabelAttrs => {\n const labelTheme = theme?.components?.dataLabel;\n const dataLabels = marks\n .map((mark, index) => {\n const labelParameters = { ...parameters, labelIndex: index };\n const addition = invokeFunctionType(labelStyle, labelParameters, mark);\n let currentTheme: any = {};\n\n switch (mark.markType) {\n case GrammarMarkType.line:\n case GrammarMarkType.area:\n if (addition?.type === 'line') {\n currentTheme = theme?.components?.lineLabel;\n } else if (addition?.type === 'area') {\n currentTheme = theme?.components?.areaLabel;\n } else {\n currentTheme = theme?.components?.lineDataLabel;\n }\n break;\n case GrammarMarkType.rect:\n case GrammarMarkType.rect3d:\n case GrammarMarkType.interval:\n currentTheme = theme?.components?.rectLabel;\n break;\n case GrammarMarkType.symbol:\n case GrammarMarkType.circle:\n case GrammarMarkType.cell:\n currentTheme = theme?.components?.symbolLabel;\n break;\n case GrammarMarkType.arc:\n case GrammarMarkType.arc3d:\n currentTheme = theme?.components?.arcLabel;\n break;\n case GrammarMarkType.polygon:\n case GrammarMarkType.path:\n default:\n currentTheme = theme?.components?.pointLabel;\n break;\n }\n\n const data: any[] = addition?.data ?? [];\n const themeDatum = currentTheme?.data?.[0] ?? {};\n\n if (data && data.length > 0) {\n data.forEach((d, index) => {\n if (mark.elements[index]) {\n const attributes = invokeEncoder(encoder, d, mark.elements[index], labelParameters);\n merge(d, themeDatum, attributes);\n }\n });\n } else {\n // process by order of elements\n mark.elements.forEach(element => {\n const graphicItem = element.getGraphicItem();\n if ((graphicItem as any).releaseStatus !== 'willRelease') {\n if (mark.isCollectionMark()) {\n const datum = element.getDatum();\n\n datum.forEach((entry: any) => {\n const attributes = invokeEncoder(encoder, entry, element, labelParameters);\n data.push(merge({}, themeDatum, attributes));\n });\n } else {\n const attributes = invokeEncoder(encoder, element.getDatum(), element, labelParameters);\n const datum = merge({}, themeDatum, attributes);\n data.push(datum);\n }\n }\n });\n }\n\n const graphicItemName = mark.graphicItem?.name;\n return merge(\n {},\n currentTheme,\n {\n data,\n baseMarkGroupName: graphicItemName,\n // FIXME: hack\n // 标签是对数据顺序有强要求的场景,因为顺序会影响标签躲避结果;而目前没有机制保证 vrender 图元顺序与数据顺序一致。\n // 这里目前只能通过自定义方法来 hack\n getBaseMarks: () => mark.elements.map(element => element.getGraphicItem())\n },\n addition ?? {}\n );\n })\n .filter(label => !isNil(label));\n\n return merge({}, labelTheme, { size: groupSize, dataLabels });\n};\n\nexport class Label extends Component implements ILabel {\n static readonly componentType: string = ComponentEnum.label;\n protected declare spec: LabelSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.label, group);\n this.spec.componentType = ComponentEnum.label;\n }\n\n protected parseAddition(spec: LabelSpec) {\n super.parseAddition(spec);\n this.labelStyle(spec.labelStyle);\n this.size(spec.size);\n this.target(spec.target);\n return this;\n }\n\n labelStyle(style: MarkFunctionType<Partial<BaseLabelAttrs>>) {\n return this.setFunctionSpec(style, 'labelStyle');\n }\n\n size(size: LabelSpec['size']) {\n return this.setFunctionSpec(size, 'size');\n }\n\n target(mark: IMark | IMark[] | string | string[] | Nil): this {\n if (this.spec.target) {\n const prevMarks = array(this.spec.target).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n this.detach(prevMarks);\n }\n this.spec.target = mark;\n if (mark) {\n const nextMarks = array(mark).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n this.attach(nextMarks);\n }\n this.commit();\n return this;\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const marks = array(this.spec.target).map(m => (isString(m) ? this.view.getMarkById(m) : m));\n const groupGraphicItem = this.group?.getGroupGraphicItem?.();\n let size = invokeFunctionType(this.spec.size, parameters);\n if (!size) {\n size = groupGraphicItem\n ? {\n width: groupGraphicItem.attribute.width ?? groupGraphicItem.AABBBounds.width(),\n height: groupGraphicItem.attribute.height ?? groupGraphicItem.AABBBounds.height()\n }\n : { width: Infinity, height: Infinity };\n }\n\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n\n return generateLabelAttributes(\n marks,\n size,\n encoder as BaseSingleEncodeSpec,\n this.spec.labelStyle,\n parameters,\n theme\n );\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n}\n\nexport const registerLabel = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.label,\n (attrs: DataLabelAttrs) => new DataLabel(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.label, Label);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/legend.ts"],"names":[],"mappings":"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","file":"legend.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender/es/core';\nimport type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport type { DiscreteLegendAttrs, ColorLegendAttributes, SizeLegendAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DiscreteLegend, ColorContinuousLegend, SizeContinuousLegend } from '@visactor/vrender-components';\nimport { array, isString, merge, last, mixin } from '@visactor/vutils';\nimport { ComponentEnum, LegendEnum } from '../graph/enums';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport type { ILegend, LegendSpec, LegendType } from '../types/component';\nimport { parseColor } from '../parse/util';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Factory } from '../core/factory';\nimport { LegendFilter } from '../interactions/legend-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDiscreteLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<DiscreteLegendAttrs>,\n shapeScale?: IBaseScale\n): DiscreteLegendAttrs => {\n const legendTheme = theme?.components?.discreteLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n // get domain items without repetitions\n const domainItems = Array.from(new Set(array(scale.domain())));\n const items = domainItems.map((item, index) => {\n const value = scale.scale(item);\n const color = parseColor(value);\n const shape = color\n ? {\n ...(theme?.components?.discreteLegend?.items?.[0]?.shape ?? {}),\n fill: color,\n stroke: color\n }\n : theme?.components?.discreteLegend?.items?.[0]?.shape ?? {};\n\n if (shapeScale) {\n Object.assign(shape, { symbolType: shapeScale.scale(item) });\n }\n\n return {\n label: item.toString(),\n id: item,\n shape,\n index\n };\n });\n return merge({}, legendTheme, { items }, addition ?? {});\n};\n\nexport const generateColorLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<ColorLegendAttributes>\n): ColorLegendAttributes => {\n const legendTheme = theme?.components?.colorLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n const domain = scale.domain();\n return merge({}, legendTheme, { colors: scale.range().slice(), min: domain[0], max: last(domain) }, addition ?? {});\n};\n\nexport const generateSizeLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<SizeLegendAttributes>\n): SizeLegendAttributes => {\n const legendTheme = theme?.components?.sizeLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n const domain = scale.domain();\n const attributes = {\n min: domain[0],\n max: domain[domain.length - 1],\n value: [domain[0], domain[domain.length - 1]]\n };\n return merge({}, legendTheme, attributes, addition ?? {});\n};\n\nexport class Legend extends ScaleComponent implements ILegend {\n static readonly componentType: string = ComponentEnum.legend;\n protected declare spec: LegendSpec;\n\n private _legendComponentType: keyof typeof LegendEnum;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.legend, group);\n this.spec.componentType = ComponentEnum.legend;\n this.spec.legendType = 'auto';\n }\n\n protected parseAddition(spec: LegendSpec) {\n this.shapeScale(spec.shapeScale);\n super.parseAddition(spec);\n this.legendType(spec.legendType);\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._legendComponentType = null;\n return this;\n }\n\n shapeScale(shapeScale: LegendSpec['shapeScale']) {\n if (this.spec.shapeScale) {\n const lastScaleGrammar = isString(this.spec.shapeScale)\n ? this.view.getScaleById(this.spec.shapeScale)\n : this.spec.shapeScale;\n this.detach(lastScaleGrammar);\n this.spec.shapeScale = undefined;\n }\n const scaleGrammar = isString(shapeScale) ? this.view.getScaleById(shapeScale) : shapeScale;\n this.spec.shapeScale = scaleGrammar;\n this.attach(scaleGrammar);\n\n this.commit();\n return this;\n }\n\n legendType(legendType: LegendType | Nil) {\n this.spec.legendType = legendType;\n // clear legend type when spec is changed\n this._legendComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n isContinuousLegend() {\n return this._getLegendComponentType() !== LegendEnum.discreteLegend;\n }\n\n setSelected(selectedValues: any[]) {\n // FIXME: provide ILegend interface in vis-component\n const legend = this.elements[0]?.getGraphicItem?.() as unknown as DiscreteLegend;\n legend.setSelected(selectedValues);\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const graphicItem = Factory.createGraphicComponent(this._getLegendComponentType(), attrs, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(attrs, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const shapeScaleGrammar = isString(this.spec.shapeScale)\n ? this.view.getScaleById(this.spec.shapeScale)\n : this.spec.shapeScale;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n const scale = scaleGrammar?.getScale?.();\n switch (this._getLegendComponentType()) {\n case LegendEnum.discreteLegend:\n return generateDiscreteLegendAttributes(scale, theme, addition, shapeScaleGrammar?.getScale?.());\n case LegendEnum.colorLegend:\n return generateColorLegendAttributes(scale, theme, addition);\n case LegendEnum.sizeLegend:\n return generateSizeLegendAttributes(scale, theme, addition);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getLegendComponentType() {\n if (this._legendComponentType) {\n return this._legendComponentType;\n }\n\n // compute legend component type when needed\n if (!this.spec.legendType || this.spec.legendType === 'auto') {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const scaleType = scaleGrammar?.getScaleType?.();\n if (scaleType && isContinuous(scaleType)) {\n const range: any[] = scaleGrammar.getScale().range();\n if (parseColor(range?.[0])) {\n this._legendComponentType = LegendEnum.colorLegend;\n } else {\n this._legendComponentType = LegendEnum.sizeLegend;\n }\n } else {\n this._legendComponentType = LegendEnum.discreteLegend;\n }\n } else {\n this._legendComponentType =\n this.spec.legendType === 'color'\n ? 'colorLegend'\n : this.spec.legendType === 'size'\n ? 'sizeLegend'\n : 'discreteLegend';\n }\n return this._legendComponentType;\n }\n}\n\nexport const registerLegend = () => {\n Factory.registerGraphicComponent(\n LegendEnum.discreteLegend,\n (attrs: DiscreteLegendAttrs) => new DiscreteLegend(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n LegendEnum.colorLegend,\n (attrs: ColorLegendAttributes) => new ColorContinuousLegend(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n LegendEnum.sizeLegend,\n (attrs: SizeLegendAttributes) => new SizeContinuousLegend(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.legend, Legend);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(LegendFilter.type, LegendFilter);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/legend.ts"],"names":[],"mappings":";;;AAGA,6CAAgD;AAGhD,qEAA2G;AAC3G,6CAAuE;AACvE,0CAA2D;AAa3D,wCAA2C;AAC3C,mCAAyC;AACzC,iDAAqD;AACrD,6CAA0C;AAC1C,iEAA6D;AAC7D,mDAA6D;AAEtD,MAAM,gCAAgC,GAAG,CAC9C,KAAiB,EACjB,KAAc,EACd,QAAgD,EAChD,UAAuB,EACF,EAAE;;IACvB,MAAM,WAAW,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,cAAc,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;KAC/C;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK;YACjB,CAAC,iCACM,CAAC,MAAA,MAAA,MAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,cAAc,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC,KAC/D,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,KAAK,IAEjB,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,cAAc,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC;QAE/D,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,EAAE,EAAE,IAAI;YACR,KAAK;YACL,KAAK;SACN,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAnCW,QAAA,gCAAgC,oCAmC3C;AAEK,MAAM,6BAA6B,GAAG,CAC3C,KAAiB,EACjB,KAAc,EACd,QAAkD,EAC3B,EAAE;;IACzB,MAAM,WAAW,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,WAAW,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;KAC/C;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9B,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,aAAI,EAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AAXW,QAAA,6BAA6B,iCAWxC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,KAAiB,EACjB,KAAc,EACd,QAAiD,EAC3B,EAAE;;IACxB,MAAM,WAAW,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,UAAU,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;KAC/C;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG;QACjB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAhBW,QAAA,4BAA4B,gCAgBvC;AAEF,MAAa,MAAO,SAAQ,sBAAc;IAMxC,YAAY,IAAW,EAAE,KAAkB;QACzC,KAAK,CAAC,IAAI,EAAE,qBAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,qBAAa,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IAChC,CAAC;IAES,aAAa,CAAC,IAAgB;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAA6B;QACjC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,UAAoC;QAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxB,MAAM,gBAAgB,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAClC;QACD,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5F,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,UAA4B;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAElC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,uBAAuB,EAAE,KAAK,kBAAU,CAAC,cAAc,CAAC;IACtE,CAAC;IAED,WAAW,CAAC,cAAqB;;QAE/B,MAAM,MAAM,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,cAAc,kDAAiC,CAAC;QACjF,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,KAAU,EAAE,QAAiB;QAC1C,MAAM,WAAW,GAAG,iBAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE;YACxF,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SACjC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAES,wBAAwB;QAChC,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3G,MAAM,iBAAiB,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAoB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACrF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,OAAO,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,GAAG;oBACX,QAAQ,EAAE,CAAC,KAAU,EAAE,OAAiB,EAAE,UAAe,EAAE,EAAE;;wBAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvE,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,OAA+B,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;wBAC5F,MAAM,KAAK,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,4DAAI,CAAC;wBACzC,QAAQ,IAAI,CAAC,uBAAuB,EAAE,EAAE;4BACtC,KAAK,kBAAU,CAAC,cAAc;gCAC5B,OAAO,IAAA,wCAAgC,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,iEAAI,CAAC,CAAC;4BACnG,KAAK,kBAAU,CAAC,WAAW;gCACzB,OAAO,IAAA,qCAA6B,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;4BAC/D,KAAK,kBAAU,CAAC,UAAU;gCACxB,OAAO,IAAA,oCAA4B,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;yBAC/D;wBACD,OAAO,QAAQ,CAAC;oBAClB,CAAC;iBACF,CAAC;aACH;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACrC,CAAC;IAEO,uBAAuB;;QAC7B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC;SAClC;QAGD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3G,MAAM,SAAS,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,4DAAI,CAAC;YACjD,IAAI,SAAS,IAAI,IAAA,qBAAY,EAAC,SAAS,CAAC,EAAE;gBACxC,MAAM,KAAK,GAAU,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;gBACrD,IAAI,IAAA,iBAAU,EAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC,EAAE;oBAC1B,IAAI,CAAC,oBAAoB,GAAG,kBAAU,CAAC,WAAW,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,oBAAoB,GAAG,kBAAU,CAAC,UAAU,CAAC;iBACnD;aACF;iBAAM;gBACL,IAAI,CAAC,oBAAoB,GAAG,kBAAU,CAAC,cAAc,CAAC;aACvD;SACF;aAAM;YACL,IAAI,CAAC,oBAAoB;gBACvB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,OAAO;oBAC9B,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM;wBACjC,CAAC,CAAC,YAAY;wBACd,CAAC,CAAC,gBAAgB,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;;AA/HH,wBAgIC;AA/HiB,oBAAa,GAAW,qBAAa,CAAC,MAAM,CAAC;AAiIxD,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,iBAAO,CAAC,wBAAwB,CAC9B,kBAAU,CAAC,cAAc,EACzB,CAAC,KAA0B,EAAE,EAAE,CAAC,IAAI,mCAAc,CAAC,KAAK,CAAwB,CACjF,CAAC;IACF,iBAAO,CAAC,wBAAwB,CAC9B,kBAAU,CAAC,WAAW,EACtB,CAAC,KAA4B,EAAE,EAAE,CAAC,IAAI,0CAAqB,CAAC,KAAK,CAAwB,CAC1F,CAAC;IACF,iBAAO,CAAC,wBAAwB,CAC9B,kBAAU,CAAC,UAAU,EACrB,CAAC,KAA2B,EAAE,EAAE,CAAC,IAAI,yCAAoB,CAAC,KAAK,CAAwB,CACxF,CAAC;IAEF,iBAAO,CAAC,iBAAiB,CAAC,qBAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExD,IAAA,cAAK,EAAC,eAAM,EAAE,oBAAW,CAAC,CAAC;IAC3B,iBAAO,CAAC,mBAAmB,CAAC,4BAAY,CAAC,IAAI,EAAE,4BAAY,CAAC,CAAC;AAC/D,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB","file":"legend.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport type { DiscreteLegendAttrs, ColorLegendAttributes, SizeLegendAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DiscreteLegend, ColorContinuousLegend, SizeContinuousLegend } from '@visactor/vrender-components';\nimport { array, isString, merge, last, mixin } from '@visactor/vutils';\nimport { ComponentEnum, LegendEnum } from '../graph/enums';\nimport type {\n BaseSingleEncodeSpec,\n IElement,\n IGroupMark,\n IScale,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport type { ILegend, LegendSpec, LegendType } from '../types/component';\nimport { parseColor } from '../parse/util';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Factory } from '../core/factory';\nimport { LegendFilter } from '../interactions/legend-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateDiscreteLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<DiscreteLegendAttrs>,\n shapeScale?: IBaseScale\n): DiscreteLegendAttrs => {\n const legendTheme = theme?.components?.discreteLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n // get domain items without repetitions\n const domainItems = Array.from(new Set(array(scale.domain())));\n const items = domainItems.map((item, index) => {\n const value = scale.scale(item);\n const color = parseColor(value);\n const shape = color\n ? {\n ...(theme?.components?.discreteLegend?.items?.[0]?.shape ?? {}),\n fill: color,\n stroke: color\n }\n : theme?.components?.discreteLegend?.items?.[0]?.shape ?? {};\n\n if (shapeScale) {\n Object.assign(shape, { symbolType: shapeScale.scale(item) });\n }\n\n return {\n label: item.toString(),\n id: item,\n shape,\n index\n };\n });\n return merge({}, legendTheme, { items }, addition ?? {});\n};\n\nexport const generateColorLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<ColorLegendAttributes>\n): ColorLegendAttributes => {\n const legendTheme = theme?.components?.colorLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n const domain = scale.domain();\n return merge({}, legendTheme, { colors: scale.range().slice(), min: domain[0], max: last(domain) }, addition ?? {});\n};\n\nexport const generateSizeLegendAttributes = (\n scale: IBaseScale,\n theme?: ITheme,\n addition?: RecursivePartial<SizeLegendAttributes>\n): SizeLegendAttributes => {\n const legendTheme = theme?.components?.sizeLegend;\n if (!scale) {\n return merge({}, legendTheme, addition ?? {});\n }\n const domain = scale.domain();\n const attributes = {\n min: domain[0],\n max: domain[domain.length - 1],\n value: [domain[0], domain[domain.length - 1]]\n };\n return merge({}, legendTheme, attributes, addition ?? {});\n};\n\nexport class Legend extends ScaleComponent implements ILegend {\n static readonly componentType: string = ComponentEnum.legend;\n protected declare spec: LegendSpec;\n\n private _legendComponentType: keyof typeof LegendEnum;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.legend, group);\n this.spec.componentType = ComponentEnum.legend;\n this.spec.legendType = 'auto';\n }\n\n protected parseAddition(spec: LegendSpec) {\n this.shapeScale(spec.shapeScale);\n super.parseAddition(spec);\n this.legendType(spec.legendType);\n return this;\n }\n\n scale(scale?: IScale | string | Nil) {\n super.scale(scale);\n this._legendComponentType = null;\n return this;\n }\n\n shapeScale(shapeScale: LegendSpec['shapeScale']) {\n if (this.spec.shapeScale) {\n const lastScaleGrammar = isString(this.spec.shapeScale)\n ? this.view.getScaleById(this.spec.shapeScale)\n : this.spec.shapeScale;\n this.detach(lastScaleGrammar);\n this.spec.shapeScale = undefined;\n }\n const scaleGrammar = isString(shapeScale) ? this.view.getScaleById(shapeScale) : shapeScale;\n this.spec.shapeScale = scaleGrammar;\n this.attach(scaleGrammar);\n\n this.commit();\n return this;\n }\n\n legendType(legendType: LegendType | Nil) {\n this.spec.legendType = legendType;\n // clear legend type when spec is changed\n this._legendComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n isContinuousLegend() {\n return this._getLegendComponentType() !== LegendEnum.discreteLegend;\n }\n\n setSelected(selectedValues: any[]) {\n // FIXME: provide ILegend interface in vis-component\n const legend = this.elements[0]?.getGraphicItem?.() as unknown as DiscreteLegend;\n legend.setSelected(selectedValues);\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const graphicItem = Factory.createGraphicComponent(this._getLegendComponentType(), attrs, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(attrs, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const shapeScaleGrammar = isString(this.spec.shapeScale)\n ? this.view.getScaleById(this.spec.shapeScale)\n : this.spec.shapeScale;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n const scale = scaleGrammar?.getScale?.();\n switch (this._getLegendComponentType()) {\n case LegendEnum.discreteLegend:\n return generateDiscreteLegendAttributes(scale, theme, addition, shapeScaleGrammar?.getScale?.());\n case LegendEnum.colorLegend:\n return generateColorLegendAttributes(scale, theme, addition);\n case LegendEnum.sizeLegend:\n return generateSizeLegendAttributes(scale, theme, addition);\n }\n return addition;\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getLegendComponentType() {\n if (this._legendComponentType) {\n return this._legendComponentType;\n }\n\n // compute legend component type when needed\n if (!this.spec.legendType || this.spec.legendType === 'auto') {\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const scaleType = scaleGrammar?.getScaleType?.();\n if (scaleType && isContinuous(scaleType)) {\n const range: any[] = scaleGrammar.getScale().range();\n if (parseColor(range?.[0])) {\n this._legendComponentType = LegendEnum.colorLegend;\n } else {\n this._legendComponentType = LegendEnum.sizeLegend;\n }\n } else {\n this._legendComponentType = LegendEnum.discreteLegend;\n }\n } else {\n this._legendComponentType =\n this.spec.legendType === 'color'\n ? 'colorLegend'\n : this.spec.legendType === 'size'\n ? 'sizeLegend'\n : 'discreteLegend';\n }\n return this._legendComponentType;\n }\n}\n\nexport const registerLegend = () => {\n Factory.registerGraphicComponent(\n LegendEnum.discreteLegend,\n (attrs: DiscreteLegendAttrs) => new DiscreteLegend(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n LegendEnum.colorLegend,\n (attrs: ColorLegendAttributes) => new ColorContinuousLegend(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n LegendEnum.sizeLegend,\n (attrs: SizeLegendAttributes) => new SizeContinuousLegend(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.legend, Legend);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(LegendFilter.type, LegendFilter);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/player.ts"],"names":[],"mappings":"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","file":"player.js","sourcesContent":["import { isArray, isString, merge, mixin } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender/es/core';\nimport type {\n ContinuousPlayerAttributes,\n DiscretePlayerAttributes,\n IDiscretePlayer\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\n// eslint-disable-next-line no-duplicate-imports\nimport { ContinuousPlayer, DiscretePlayer } from '@visactor/vrender-components';\nimport type {\n BaseSignleEncodeSpec,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, PlayerEnum } from '../graph';\nimport type { IPlayer, PlayerFilterValue, PlayerSpec, PlayerType } from '../types/component';\nimport { Component } from '../view/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Factory } from '../core/factory';\nimport { PlayerFilter } from '../interactions/player-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateContinuousPlayerAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<ContinuousPlayerAttributes>\n): ContinuousPlayerAttributes => {\n const playerTheme = theme?.components?.continuousPlayer;\n return merge({}, playerTheme, { data, dataIndex: 0 }, addition ?? {});\n};\n\nexport const generateDiscretePlayerAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DiscretePlayerAttributes>\n): DiscretePlayerAttributes => {\n const playerTheme = theme?.components?.discretePlayer;\n return merge({}, playerTheme, { data, dataIndex: 0 }, addition ?? {});\n};\n\nexport class Player extends Component implements IPlayer {\n static readonly componentType: string = ComponentEnum.player;\n protected declare spec: PlayerSpec;\n protected declare _filterValue: PlayerFilterValue;\n\n private _playerComponentType: keyof typeof PlayerEnum;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.player, group);\n this.spec.componentType = ComponentEnum.player;\n this.spec.playerType = 'auto';\n }\n\n protected parseAddition(spec: PlayerSpec) {\n super.parseAddition(spec);\n this.playerType(spec.playerType);\n this.source(spec.source);\n return this;\n }\n\n playerType(playerType: PlayerType) {\n this.spec.playerType = playerType;\n // clear legend type when spec is changed\n this._playerComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n source(source: IData | string | any[] | Nil) {\n if (this.spec.source) {\n const lastSource = this.spec?.source;\n const lastSourceDataGrammar = isArray(lastSource)\n ? null\n : isString(lastSource)\n ? this.view.getDataById(lastSource)\n : lastSource;\n this.detach(lastSourceDataGrammar);\n }\n this.spec.source = source;\n const sourceDataGrammar = isArray(source) ? null : isString(source) ? this.view.getDataById(source) : source;\n this.attach(sourceDataGrammar);\n this.commit();\n return this;\n }\n\n play() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.play();\n return this;\n }\n\n pause() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.pause();\n return this;\n }\n\n backward() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.backward();\n return this;\n }\n\n forward() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.forward();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n // FIXME: vis-component should handle the situation when handlerStyle is not set\n const defaultAttributes = { slider: { handlerStyle: { size: 16 } } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem =\n newGraphicItem ??\n Factory.createGraphicComponent(this._getPlayerComponentType(), initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n const source = this.spec.source;\n const sourceDataGrammar = isArray(source)\n ? null\n : isString(source)\n ? this.view.getDataById(source)\n : source;\n const sourceData = isArray(source) ? source : sourceDataGrammar?.getValue() ?? [];\n switch (this._getPlayerComponentType()) {\n case 'continuousPlayer':\n return generateContinuousPlayerAttributes(sourceData, theme, addition);\n case 'discretePlayer':\n return generateDiscretePlayerAttributes(sourceData, theme, addition);\n }\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getPlayerComponentType() {\n if (this._playerComponentType) {\n return this._playerComponentType;\n }\n\n // compute legend component type when needed\n if (!this.spec.playerType || this.spec.playerType === 'auto') {\n // const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n // const scaleType = scaleGrammar?.getScaleType?.();\n // if (scaleType && isContinuous(scaleType)) {\n // const range: any[] = scaleGrammar.getScale().range();\n // if (parseColor(range?.[0])) {\n // this._legendComponentType = LegendEnum.colorLegend;\n // } else {\n // this._legendComponentType = LegendEnum.sizeLegend;\n // }\n // } else {\n // this._legendComponentType = LegendEnum.discreteLegend;\n // }\n this._playerComponentType = 'discretePlayer';\n } else {\n this._playerComponentType =\n this.spec.playerType === 'discrete'\n ? 'discretePlayer'\n : this.spec.playerType === 'continuous'\n ? 'continuousPlayer'\n : 'discretePlayer';\n }\n return this._playerComponentType;\n }\n}\n\nexport const registerPlayer = () => {\n Factory.registerGraphicComponent(\n PlayerEnum.continuousPlayer,\n (attrs: ContinuousPlayerAttributes) => new ContinuousPlayer(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n PlayerEnum.discretePlayer,\n (attrs: DiscretePlayerAttributes) => new DiscretePlayer(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.player, Player);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(PlayerFilter.type, PlayerFilter);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/player.ts"],"names":[],"mappings":"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","file":"player.js","sourcesContent":["import { isArray, isString, merge, mixin } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type {\n ContinuousPlayerAttributes,\n DiscretePlayerAttributes,\n IDiscretePlayer\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\n// eslint-disable-next-line no-duplicate-imports\nimport { ContinuousPlayer, DiscretePlayer } from '@visactor/vrender-components';\nimport type {\n BaseSingleEncodeSpec,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, PlayerEnum } from '../graph';\nimport type { IPlayer, PlayerFilterValue, PlayerSpec, PlayerType } from '../types/component';\nimport { Component } from '../view/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Factory } from '../core/factory';\nimport { PlayerFilter } from '../interactions/player-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nexport const generateContinuousPlayerAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<ContinuousPlayerAttributes>\n): ContinuousPlayerAttributes => {\n const playerTheme = theme?.components?.continuousPlayer;\n return merge({}, playerTheme, { data, dataIndex: 0 }, addition ?? {});\n};\n\nexport const generateDiscretePlayerAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DiscretePlayerAttributes>\n): DiscretePlayerAttributes => {\n const playerTheme = theme?.components?.discretePlayer;\n return merge({}, playerTheme, { data, dataIndex: 0 }, addition ?? {});\n};\n\nexport class Player extends Component implements IPlayer {\n static readonly componentType: string = ComponentEnum.player;\n protected declare spec: PlayerSpec;\n protected declare _filterValue: PlayerFilterValue;\n\n private _playerComponentType: keyof typeof PlayerEnum;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.player, group);\n this.spec.componentType = ComponentEnum.player;\n this.spec.playerType = 'auto';\n }\n\n protected parseAddition(spec: PlayerSpec) {\n super.parseAddition(spec);\n this.playerType(spec.playerType);\n this.source(spec.source);\n return this;\n }\n\n playerType(playerType: PlayerType) {\n this.spec.playerType = playerType;\n // clear legend type when spec is changed\n this._playerComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n source(source: IData | string | any[] | Nil) {\n if (this.spec.source) {\n const lastSource = this.spec?.source;\n const lastSourceDataGrammar = isArray(lastSource)\n ? null\n : isString(lastSource)\n ? this.view.getDataById(lastSource)\n : lastSource;\n this.detach(lastSourceDataGrammar);\n }\n this.spec.source = source;\n const sourceDataGrammar = isArray(source) ? null : isString(source) ? this.view.getDataById(source) : source;\n this.attach(sourceDataGrammar);\n this.commit();\n return this;\n }\n\n play() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.play();\n return this;\n }\n\n pause() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.pause();\n return this;\n }\n\n backward() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.backward();\n return this;\n }\n\n forward() {\n // FIXME: unite IDiscretePlayer and IContinuousPlayer interface in vis-component\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as IDiscretePlayer;\n datazoom.forward();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n // FIXME: vis-component should handle the situation when handlerStyle is not set\n const defaultAttributes = { slider: { handlerStyle: { size: 16 } } };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem =\n newGraphicItem ??\n Factory.createGraphicComponent(this._getPlayerComponentType(), initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n const source = this.spec.source;\n const sourceDataGrammar = isArray(source)\n ? null\n : isString(source)\n ? this.view.getDataById(source)\n : source;\n const sourceData = isArray(source) ? source : sourceDataGrammar?.getValue() ?? [];\n switch (this._getPlayerComponentType()) {\n case 'continuousPlayer':\n return generateContinuousPlayerAttributes(sourceData, theme, addition);\n case 'discretePlayer':\n return generateDiscretePlayerAttributes(sourceData, theme, addition);\n }\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _getPlayerComponentType() {\n if (this._playerComponentType) {\n return this._playerComponentType;\n }\n\n // compute legend component type when needed\n if (!this.spec.playerType || this.spec.playerType === 'auto') {\n // const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n // const scaleType = scaleGrammar?.getScaleType?.();\n // if (scaleType && isContinuous(scaleType)) {\n // const range: any[] = scaleGrammar.getScale().range();\n // if (parseColor(range?.[0])) {\n // this._legendComponentType = LegendEnum.colorLegend;\n // } else {\n // this._legendComponentType = LegendEnum.sizeLegend;\n // }\n // } else {\n // this._legendComponentType = LegendEnum.discreteLegend;\n // }\n this._playerComponentType = 'discretePlayer';\n } else {\n this._playerComponentType =\n this.spec.playerType === 'discrete'\n ? 'discretePlayer'\n : this.spec.playerType === 'continuous'\n ? 'continuousPlayer'\n : 'discretePlayer';\n }\n return this._playerComponentType;\n }\n}\n\nexport const registerPlayer = () => {\n Factory.registerGraphicComponent(\n PlayerEnum.continuousPlayer,\n (attrs: ContinuousPlayerAttributes) => new ContinuousPlayer(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n PlayerEnum.discretePlayer,\n (attrs: DiscretePlayerAttributes) => new DiscretePlayer(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.player, Player);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(PlayerFilter.type, PlayerFilter);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/scrollbar.ts"],"names":[],"mappings":"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","file":"scrollbar.js","sourcesContent":["import { isString, merge, mixin } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender/es/core';\nimport type { Direction, OrientType, ScrollBarAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { ScrollBar as ScrollbarComponent } from '@visactor/vrender-components';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n MarkFunctionType,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, GrammarMarkType } from '../graph/enums';\nimport type { IScrollbar, ScrollbarSpec } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { Factory } from '../core/factory';\nimport { ScaleComponent } from './scale';\nimport { ScrollbarFilter } from '../interactions/scrollbar-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nfunction isValidDirection(direction: Direction) {\n return direction === 'vertical' || direction === 'horizontal';\n}\n\nfunction isValidPosition(position: OrientType) {\n return position === 'top' || position === 'bottom' || position === 'left' || position === 'right';\n}\n\nfunction isHorizontalPosition(position: OrientType) {\n return position === 'top' || position === 'bottom';\n}\n\nexport const generateScrollbarAttributes = (\n groupSize: { width: number; height: number },\n direction?: Direction,\n position?: OrientType,\n theme?: ITheme,\n addition?: RecursivePartial<ScrollBarAttributes>\n): ScrollBarAttributes => {\n const scrollbarTheme = theme?.components?.scrollbar;\n\n let finalDirection: Direction = 'horizontal';\n let finalPosition: OrientType = 'bottom';\n if (!isValidDirection(direction) && !isValidPosition(position)) {\n finalDirection = 'horizontal';\n finalPosition = 'bottom';\n } else if (!isValidDirection(direction) && isValidPosition(position)) {\n finalDirection = isHorizontalPosition(position) ? 'horizontal' : 'vertical';\n finalPosition = position;\n } else if (isValidDirection(direction) && !isValidPosition(position)) {\n finalDirection = direction;\n finalPosition = direction === 'horizontal' ? 'bottom' : 'right';\n } else {\n finalDirection = direction;\n finalPosition =\n direction === 'horizontal' && !isHorizontalPosition(position)\n ? 'bottom'\n : direction === 'vertical' && isHorizontalPosition(position)\n ? 'right'\n : position;\n }\n\n const attributes: RecursivePartial<ScrollBarAttributes> = { direction: finalDirection };\n if (finalDirection === 'horizontal') {\n const size = addition.height ?? scrollbarTheme?.height ?? 12;\n\n // top or bottom\n if (finalPosition === 'top') {\n Object.assign(attributes, {\n width: groupSize.width,\n height: size,\n x: 0,\n y: 0\n });\n } else {\n Object.assign(attributes, {\n width: groupSize.width,\n height: size,\n x: 0,\n y: groupSize.height - size\n });\n }\n } else {\n const size = addition.width ?? scrollbarTheme?.width ?? 12;\n\n // left or right\n if (finalPosition === 'left') {\n Object.assign(attributes, {\n width: size,\n height: groupSize.height,\n x: 0,\n y: 0\n });\n } else {\n Object.assign(attributes, {\n width: size,\n height: groupSize.height,\n x: groupSize.width - size,\n y: 0\n });\n }\n }\n\n return merge({}, scrollbarTheme, attributes, addition ?? {});\n};\n\nexport class Scrollbar extends ScaleComponent implements IScrollbar {\n static readonly componentType: string = ComponentEnum.scrollbar;\n protected declare spec: ScrollbarSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.scrollbar, group);\n this.spec.componentType = ComponentEnum.scrollbar;\n }\n\n protected parseAddition(spec: ScrollbarSpec) {\n super.parseAddition(spec);\n this.container(spec.container);\n this.direction(spec.direction);\n this.position(spec.position);\n return this;\n }\n\n container(container: IGroupMark | string | Nil): this {\n if (this.spec.container) {\n const prevContainer = isString(this.spec.container)\n ? this.view.getMarkById(this.spec.container)\n : this.spec.container;\n this.detach(prevContainer);\n }\n this.spec.container = container;\n if (container) {\n const nextContainer = isString(container) ? this.view.getMarkById(container) : container;\n this.attach(nextContainer);\n }\n this.commit();\n return this;\n }\n\n direction(direction: MarkFunctionType<Direction> | Nil) {\n return this.setFunctionSpec(direction, 'direction');\n }\n\n position(position: MarkFunctionType<OrientType> | Nil) {\n return this.setFunctionSpec(position, 'position');\n }\n\n setScrollStart(start: number) {\n const scrollbar = this.elements[0]?.getGraphicItem?.() as unknown as ScrollbarComponent;\n const range = scrollbar?.attribute?.range;\n if (scrollbar && range) {\n const nextRange: [number, number] = [start, range[1] - range[0] + start];\n scrollbar.setScrollRange(nextRange);\n }\n return this;\n }\n\n getScrollRange() {\n const scrollbar = this.elements[0]?.getGraphicItem?.() as unknown as ScrollbarComponent;\n\n if (scrollbar) {\n return scrollbar.getScrollRange();\n }\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { range: [0, 1] };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(ComponentEnum.scrollbar, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const direction = invokeFunctionType(this.spec.direction, parameters, datum, element);\n const position = invokeFunctionType(this.spec.position, parameters, datum, element);\n const addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n const targetMark = this.spec.container\n ? isString(this.spec.container)\n ? this.view.getMarkById(this.spec.container)\n : this.spec.container\n : null;\n const groupMark = targetMark && targetMark.markType === GrammarMarkType.group ? targetMark : this.group;\n const groupGraphicItem = groupMark.getGroupGraphicItem();\n const size = groupGraphicItem\n ? {\n width: groupGraphicItem.attribute.width ?? groupGraphicItem.AABBBounds.width(),\n height: groupGraphicItem.attribute.height ?? groupGraphicItem.AABBBounds.height()\n }\n : { width: this.view.width(), height: this.view.height() };\n return generateScrollbarAttributes(size, direction, position, theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n}\n\nexport const registerScrollbar = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.scrollbar,\n (attrs: ScrollBarAttributes) => new ScrollbarComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.scrollbar, Scrollbar);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(ScrollbarFilter.type, ScrollbarFilter);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/scrollbar.ts"],"names":[],"mappings":"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","file":"scrollbar.js","sourcesContent":["import { isString, merge, mixin } from '@visactor/vutils';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport type { Direction, OrientType, ScrollBarAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { ScrollBar as ScrollbarComponent } from '@visactor/vrender-components';\nimport type {\n BaseSingleEncodeSpec,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n MarkFunctionType,\n Nil,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport { ComponentEnum, GrammarMarkType } from '../graph/enums';\nimport type { IScrollbar, ScrollbarSpec } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { invokeFunctionType } from '../parse/util';\nimport { Factory } from '../core/factory';\nimport { ScaleComponent } from './scale';\nimport { ScrollbarFilter } from '../interactions/scrollbar-filter';\nimport { Filter, FilterMixin } from '../interactions/filter';\n\nfunction isValidDirection(direction: Direction) {\n return direction === 'vertical' || direction === 'horizontal';\n}\n\nfunction isValidPosition(position: OrientType) {\n return position === 'top' || position === 'bottom' || position === 'left' || position === 'right';\n}\n\nfunction isHorizontalPosition(position: OrientType) {\n return position === 'top' || position === 'bottom';\n}\n\nexport const generateScrollbarAttributes = (\n groupSize: { width: number; height: number },\n direction?: Direction,\n position?: OrientType,\n theme?: ITheme,\n addition?: RecursivePartial<ScrollBarAttributes>\n): ScrollBarAttributes => {\n const scrollbarTheme = theme?.components?.scrollbar;\n\n let finalDirection: Direction = 'horizontal';\n let finalPosition: OrientType = 'bottom';\n if (!isValidDirection(direction) && !isValidPosition(position)) {\n finalDirection = 'horizontal';\n finalPosition = 'bottom';\n } else if (!isValidDirection(direction) && isValidPosition(position)) {\n finalDirection = isHorizontalPosition(position) ? 'horizontal' : 'vertical';\n finalPosition = position;\n } else if (isValidDirection(direction) && !isValidPosition(position)) {\n finalDirection = direction;\n finalPosition = direction === 'horizontal' ? 'bottom' : 'right';\n } else {\n finalDirection = direction;\n finalPosition =\n direction === 'horizontal' && !isHorizontalPosition(position)\n ? 'bottom'\n : direction === 'vertical' && isHorizontalPosition(position)\n ? 'right'\n : position;\n }\n\n const attributes: RecursivePartial<ScrollBarAttributes> = { direction: finalDirection };\n if (finalDirection === 'horizontal') {\n const size = addition.height ?? scrollbarTheme?.height ?? 12;\n\n // top or bottom\n if (finalPosition === 'top') {\n Object.assign(attributes, {\n width: groupSize.width,\n height: size,\n x: 0,\n y: 0\n });\n } else {\n Object.assign(attributes, {\n width: groupSize.width,\n height: size,\n x: 0,\n y: groupSize.height - size\n });\n }\n } else {\n const size = addition.width ?? scrollbarTheme?.width ?? 12;\n\n // left or right\n if (finalPosition === 'left') {\n Object.assign(attributes, {\n width: size,\n height: groupSize.height,\n x: 0,\n y: 0\n });\n } else {\n Object.assign(attributes, {\n width: size,\n height: groupSize.height,\n x: groupSize.width - size,\n y: 0\n });\n }\n }\n\n return merge({}, scrollbarTheme, attributes, addition ?? {});\n};\n\nexport class Scrollbar extends ScaleComponent implements IScrollbar {\n static readonly componentType: string = ComponentEnum.scrollbar;\n protected declare spec: ScrollbarSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.scrollbar, group);\n this.spec.componentType = ComponentEnum.scrollbar;\n }\n\n protected parseAddition(spec: ScrollbarSpec) {\n super.parseAddition(spec);\n this.container(spec.container);\n this.direction(spec.direction);\n this.position(spec.position);\n return this;\n }\n\n container(container: IGroupMark | string | Nil): this {\n if (this.spec.container) {\n const prevContainer = isString(this.spec.container)\n ? this.view.getMarkById(this.spec.container)\n : this.spec.container;\n this.detach(prevContainer);\n }\n this.spec.container = container;\n if (container) {\n const nextContainer = isString(container) ? this.view.getMarkById(container) : container;\n this.attach(nextContainer);\n }\n this.commit();\n return this;\n }\n\n direction(direction: MarkFunctionType<Direction> | Nil) {\n return this.setFunctionSpec(direction, 'direction');\n }\n\n position(position: MarkFunctionType<OrientType> | Nil) {\n return this.setFunctionSpec(position, 'position');\n }\n\n setScrollStart(start: number) {\n const scrollbar = this.elements[0]?.getGraphicItem?.() as unknown as ScrollbarComponent;\n const range = scrollbar?.attribute?.range;\n if (scrollbar && range) {\n const nextRange: [number, number] = [start, range[1] - range[0] + start];\n scrollbar.setScrollRange(nextRange);\n }\n return this;\n }\n\n getScrollRange() {\n const scrollbar = this.elements[0]?.getGraphicItem?.() as unknown as ScrollbarComponent;\n\n if (scrollbar) {\n return scrollbar.getScrollRange();\n }\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const defaultAttributes = { range: [0, 1] };\n const initialAttributes = merge(defaultAttributes, attrs);\n const graphicItem = Factory.createGraphicComponent(ComponentEnum.scrollbar, initialAttributes, {\n skipDefault: this.spec.skipTheme\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme();\n const direction = invokeFunctionType(this.spec.direction, parameters, datum, element);\n const position = invokeFunctionType(this.spec.position, parameters, datum, element);\n const addition = invokeEncoder(encoder as BaseSingleEncodeSpec, datum, element, parameters);\n const targetMark = this.spec.container\n ? isString(this.spec.container)\n ? this.view.getMarkById(this.spec.container)\n : this.spec.container\n : null;\n const groupMark = targetMark && targetMark.markType === GrammarMarkType.group ? targetMark : this.group;\n const groupGraphicItem = groupMark.getGroupGraphicItem();\n const size = groupGraphicItem\n ? {\n width: groupGraphicItem.attribute.width ?? groupGraphicItem.AABBBounds.width(),\n height: groupGraphicItem.attribute.height ?? groupGraphicItem.AABBBounds.height()\n }\n : { width: this.view.width(), height: this.view.height() };\n return generateScrollbarAttributes(size, direction, position, theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n}\n\nexport const registerScrollbar = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.scrollbar,\n (attrs: ScrollBarAttributes) => new ScrollbarComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.scrollbar, Scrollbar);\n\n mixin(Filter, FilterMixin);\n Factory.registerInteraction(ScrollbarFilter.type, ScrollbarFilter);\n};\n"]}