@visactor/vgrammar-core 0.11.0-alpha.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/cjs/component/label.js.map +1 -1
  2. package/cjs/graph/animation/animator.js +3 -4
  3. package/cjs/graph/animation/animator.js.map +1 -1
  4. package/cjs/graph/attributes/line.d.ts +2 -0
  5. package/cjs/graph/attributes/line.js +38 -5
  6. package/cjs/graph/attributes/line.js.map +1 -1
  7. package/cjs/graph/element.js +15 -6
  8. package/cjs/graph/element.js.map +1 -1
  9. package/cjs/graph/enums.d.ts +2 -1
  10. package/cjs/graph/enums.js +1 -1
  11. package/cjs/graph/enums.js.map +1 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/interactions/brush-filter.js +1 -2
  16. package/cjs/interactions/crosshair.js +2 -2
  17. package/cjs/interactions/crosshair.js.map +1 -1
  18. package/cjs/interactions/dimension-tooltip.js +2 -2
  19. package/cjs/interactions/dimension-tooltip.js.map +1 -1
  20. package/cjs/interactions/element-active.js +2 -2
  21. package/cjs/interactions/element-active.js.map +1 -1
  22. package/cjs/interactions/element-highlight-by-group.js +4 -3
  23. package/cjs/interactions/element-highlight-by-group.js.map +1 -1
  24. package/cjs/interactions/element-highlight-by-key.js +2 -2
  25. package/cjs/interactions/element-highlight-by-key.js.map +1 -1
  26. package/cjs/interactions/element-highlight-by-name.js +2 -2
  27. package/cjs/interactions/element-highlight-by-name.js.map +1 -1
  28. package/cjs/interactions/element-highlight.d.ts +5 -2
  29. package/cjs/interactions/element-highlight.js +10 -25
  30. package/cjs/interactions/element-highlight.js.map +1 -1
  31. package/cjs/interactions/element-select.d.ts +6 -3
  32. package/cjs/interactions/element-select.js +26 -34
  33. package/cjs/interactions/element-select.js.map +1 -1
  34. package/cjs/interactions/filter.js +1 -1
  35. package/cjs/interactions/filter.js.map +1 -1
  36. package/cjs/interactions/fish-eye.js +3 -3
  37. package/cjs/interactions/fish-eye.js.map +1 -1
  38. package/cjs/interactions/index.js +5 -2
  39. package/cjs/interactions/index.js.map +1 -1
  40. package/cjs/interactions/legend-filter.js +1 -1
  41. package/cjs/interactions/player-filter.js +1 -1
  42. package/cjs/interactions/roll-up.js +3 -3
  43. package/cjs/interactions/roll-up.js.map +1 -1
  44. package/cjs/interactions/scrollbar-filter.js +1 -1
  45. package/cjs/interactions/slider-filter.js +1 -1
  46. package/cjs/interactions/toggle-state-mixin.d.ts +8 -0
  47. package/cjs/interactions/toggle-state-mixin.js +30 -0
  48. package/cjs/interactions/toggle-state-mixin.js.map +1 -0
  49. package/cjs/interactions/tooltip.js +3 -3
  50. package/cjs/interactions/tooltip.js.map +1 -1
  51. package/cjs/interactions/utils.d.ts +2 -1
  52. package/cjs/interactions/utils.js +14 -1
  53. package/cjs/interactions/utils.js.map +1 -1
  54. package/cjs/interactions/view-navigation-base.js +1 -1
  55. package/cjs/interactions/view-navigation-base.js.map +1 -1
  56. package/cjs/interactions/view-roam.js +3 -3
  57. package/cjs/interactions/view-roam.js.map +1 -1
  58. package/cjs/interactions/view-zoom.js +2 -2
  59. package/cjs/interactions/view-zoom.js.map +1 -1
  60. package/cjs/parse/coordinate.js +1 -1
  61. package/cjs/parse/event.js +1 -1
  62. package/cjs/parse/mark.js +1 -1
  63. package/cjs/parse/option.js +1 -1
  64. package/cjs/parse/scale.js +2 -1
  65. package/cjs/parse/transform.js +1 -1
  66. package/cjs/parse/util.js +1 -1
  67. package/cjs/parse/view.js +1 -1
  68. package/cjs/transforms/data/sampling.js.map +1 -1
  69. package/cjs/types/dataflow.d.ts +1 -2
  70. package/cjs/types/dataflow.js.map +1 -1
  71. package/cjs/types/grammar.d.ts +0 -1
  72. package/cjs/types/grammar.js.map +1 -1
  73. package/cjs/types/interaction.d.ts +14 -10
  74. package/cjs/types/interaction.js.map +1 -1
  75. package/cjs/types/mark.d.ts +1 -1
  76. package/cjs/types/mark.js.map +1 -1
  77. package/cjs/types/plot.d.ts +0 -1
  78. package/cjs/types/plot.js.map +1 -1
  79. package/cjs/types/transform.d.ts +1 -1
  80. package/cjs/types/transform.js.map +1 -1
  81. package/cjs/types/view.d.ts +2 -5
  82. package/cjs/types/view.js.map +1 -1
  83. package/cjs/util/data.d.ts +0 -1
  84. package/cjs/util/data.js +1 -37
  85. package/cjs/util/data.js.map +1 -1
  86. package/cjs/view/View.d.ts +2 -10
  87. package/cjs/view/View.js +20 -103
  88. package/cjs/view/View.js.map +1 -1
  89. package/cjs/view/data.d.ts +1 -2
  90. package/cjs/view/data.js +7 -49
  91. package/cjs/view/data.js.map +1 -1
  92. package/cjs/view/dataflow.d.ts +1 -6
  93. package/cjs/view/dataflow.js +7 -72
  94. package/cjs/view/dataflow.js.map +1 -1
  95. package/cjs/view/grammar-base.d.ts +3 -6
  96. package/cjs/view/grammar-base.js +0 -46
  97. package/cjs/view/grammar-base.js.map +1 -1
  98. package/cjs/view/mark.d.ts +1 -2
  99. package/cjs/view/mark.js +9 -38
  100. package/cjs/view/mark.js.map +1 -1
  101. package/es/component/label.js.map +1 -1
  102. package/es/graph/animation/animator.js +2 -3
  103. package/es/graph/animation/animator.js.map +1 -1
  104. package/es/graph/attributes/line.d.ts +2 -0
  105. package/es/graph/attributes/line.js +34 -5
  106. package/es/graph/attributes/line.js.map +1 -1
  107. package/es/graph/element.js +17 -8
  108. package/es/graph/element.js.map +1 -1
  109. package/es/graph/enums.d.ts +2 -1
  110. package/es/graph/enums.js +1 -1
  111. package/es/graph/enums.js.map +1 -1
  112. package/es/index.d.ts +1 -1
  113. package/es/index.js +1 -1
  114. package/es/index.js.map +1 -1
  115. package/es/interactions/crosshair.js +2 -2
  116. package/es/interactions/crosshair.js.map +1 -1
  117. package/es/interactions/dimension-tooltip.js +2 -2
  118. package/es/interactions/dimension-tooltip.js.map +1 -1
  119. package/es/interactions/element-active.js +2 -2
  120. package/es/interactions/element-active.js.map +1 -1
  121. package/es/interactions/element-highlight-by-group.js +2 -2
  122. package/es/interactions/element-highlight-by-group.js.map +1 -1
  123. package/es/interactions/element-highlight-by-key.js +2 -2
  124. package/es/interactions/element-highlight-by-key.js.map +1 -1
  125. package/es/interactions/element-highlight-by-name.js +2 -2
  126. package/es/interactions/element-highlight-by-name.js.map +1 -1
  127. package/es/interactions/element-highlight.d.ts +5 -2
  128. package/es/interactions/element-highlight.js +11 -24
  129. package/es/interactions/element-highlight.js.map +1 -1
  130. package/es/interactions/element-select.d.ts +6 -3
  131. package/es/interactions/element-select.js +25 -31
  132. package/es/interactions/element-select.js.map +1 -1
  133. package/es/interactions/filter.js +1 -1
  134. package/es/interactions/filter.js.map +1 -1
  135. package/es/interactions/fish-eye.js +3 -3
  136. package/es/interactions/fish-eye.js.map +1 -1
  137. package/es/interactions/index.js +4 -2
  138. package/es/interactions/index.js.map +1 -1
  139. package/es/interactions/roll-up.js +2 -2
  140. package/es/interactions/roll-up.js.map +1 -1
  141. package/es/interactions/toggle-state-mixin.d.ts +8 -0
  142. package/es/interactions/toggle-state-mixin.js +22 -0
  143. package/es/interactions/toggle-state-mixin.js.map +1 -0
  144. package/es/interactions/tooltip.js +2 -2
  145. package/es/interactions/tooltip.js.map +1 -1
  146. package/es/interactions/utils.d.ts +2 -1
  147. package/es/interactions/utils.js +12 -1
  148. package/es/interactions/utils.js.map +1 -1
  149. package/es/interactions/view-navigation-base.js +1 -1
  150. package/es/interactions/view-navigation-base.js.map +1 -1
  151. package/es/interactions/view-roam.js +3 -3
  152. package/es/interactions/view-roam.js.map +1 -1
  153. package/es/interactions/view-zoom.js +2 -2
  154. package/es/interactions/view-zoom.js.map +1 -1
  155. package/es/transforms/data/sampling.js.map +1 -1
  156. package/es/types/dataflow.d.ts +1 -2
  157. package/es/types/dataflow.js.map +1 -1
  158. package/es/types/grammar.d.ts +0 -1
  159. package/es/types/grammar.js.map +1 -1
  160. package/es/types/interaction.d.ts +14 -10
  161. package/es/types/interaction.js.map +1 -1
  162. package/es/types/mark.d.ts +1 -1
  163. package/es/types/mark.js.map +1 -1
  164. package/es/types/plot.d.ts +0 -1
  165. package/es/types/plot.js.map +1 -1
  166. package/es/types/transform.d.ts +1 -1
  167. package/es/types/transform.js.map +1 -1
  168. package/es/types/view.d.ts +2 -5
  169. package/es/types/view.js.map +1 -1
  170. package/es/util/data.d.ts +0 -1
  171. package/es/util/data.js +0 -34
  172. package/es/util/data.js.map +1 -1
  173. package/es/view/View.d.ts +2 -10
  174. package/es/view/View.js +19 -103
  175. package/es/view/View.js.map +1 -1
  176. package/es/view/data.d.ts +1 -2
  177. package/es/view/data.js +8 -49
  178. package/es/view/data.js.map +1 -1
  179. package/es/view/dataflow.d.ts +1 -6
  180. package/es/view/dataflow.js +7 -72
  181. package/es/view/dataflow.js.map +1 -1
  182. package/es/view/grammar-base.d.ts +3 -6
  183. package/es/view/grammar-base.js +0 -45
  184. package/es/view/grammar-base.js.map +1 -1
  185. package/es/view/mark.d.ts +1 -2
  186. package/es/view/mark.js +8 -39
  187. package/es/view/mark.js.map +1 -1
  188. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/plot.ts"],"names":[],"mappings":"","file":"plot.js","sourcesContent":["import type {\n AxisBaseAttributes,\n BaseCrosshairAttrs,\n BaseLabelAttrs,\n ColorLegendAttributes,\n DataZoomAttributes,\n DiscreteLegendAttrs,\n GridBaseAttributes,\n PlayerAttributes,\n SizeLegendAttributes,\n SliderAttributes,\n TitleAttrs\n} from '@visactor/vrender-components';\nimport type { CoordinateType } from '@visactor/vgrammar-coordinate';\nimport type { IColor } from '@visactor/vrender-core';\nimport type { IEnvironmentOptions, IRendererOptions, IRunningConfig, ViewSpec, srIOption3DType, IView } from './view';\nimport type { CommonPaddingSpec, ValueOf } from './base';\nimport type { BasicEncoderSpecMap, LinkPathEncoderSpec, MarkRelativeItemSpec } from './mark';\nimport type { BaseEventHandler } from './event';\nimport type { TransformSpec } from './transform';\nimport type { IAnimationConfig } from './animate';\nimport type { ScaleSpec } from './scale';\nimport type { DataSpec } from './data';\nimport type { GridShape } from './component';\n\nexport interface IPlotOptions extends IEnvironmentOptions, IRendererOptions {\n width?: number;\n height?: number;\n padding?: CommonPaddingSpec;\n autoFit?: boolean;\n options3d?: srIOption3DType;\n theme?: string;\n logLevel?: number;\n}\n\nexport interface CartesianCoordinateOption {\n id?: string;\n type: 'cartesian';\n transpose?: boolean;\n}\n\nexport interface PolarCoordinateOption {\n id?: string;\n type: 'polar';\n origin?: [string | number, string | number];\n transpose?: boolean;\n}\n\nexport type PlotIntervalEncoderSpec = Omit<BasicEncoderSpecMap['interval'], 'y'> & {\n y?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'y' | 'x'> & {\n y?: number | number[];\n x?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectXEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'x'> & {\n x?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectYEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'y'> & {\n y?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotAreaEncoderSpec = Omit<BasicEncoderSpecMap['area'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\n\nexport type PlotRuleEncoderSpec = Omit<BasicEncoderSpecMap['rule'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\n\nexport type PlotImageEncoderSpec = Omit<BasicEncoderSpecMap['image'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\nexport type PlotPolygonEncoderSpec = Omit<BasicEncoderSpecMap['polygon'], 'x' | 'y'> & {\n x?: number[];\n y?: number[];\n};\n\nexport type PlotSankeyEncoderSpec = Partial<LinkPathEncoderSpec>;\nexport type PlotSunburstEncodeSpec = BasicEncoderSpecMap['arc'];\nexport type PlotTreeEncodeSpec = BasicEncoderSpecMap['symbol'];\nexport type PlotTreemapEncodeSpec = BasicEncoderSpecMap['rect'];\nexport type PlotCirclePackingEncodeSpec = BasicEncoderSpecMap['circle'];\nexport type PlotWordcloudEncodeSpec = BasicEncoderSpecMap['text'];\nexport type PlotWordcloudShapeEncodeSpec = BasicEncoderSpecMap['text'];\n\nexport type CoordinateOption = CartesianCoordinateOption | PolarCoordinateOption;\nexport type PlotIntervalSpec = Partial<ISemanticMarkSpec<PlotIntervalEncoderSpec, IntervalEncodeChannels>> & {\n type: 'interval';\n};\nexport type PlotLineSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['line'], LineEncodeChannels>> & {\n type: 'line';\n};\nexport type PlotCellSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['cell'], CellEncodeChannels>> & {\n type: 'cell';\n};\nexport type PlotRuleXSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>> & {\n type: 'ruleX';\n};\nexport type PlotRuleYSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>> & {\n type: 'ruleY';\n};\nexport type PlotAreaSpec = Partial<ISemanticMarkSpec<PlotAreaEncoderSpec, AreaEncodeChannels>> & {\n type: 'area';\n};\nexport type PlotSymbolSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['symbol'], SymbolEncodeChannels>> & {\n type: 'symbol';\n};\nexport type PlotTextSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['text'], TextEncodeChannels>> & {\n type: 'text';\n};\nexport type PlotRectSpec = Partial<ISemanticMarkSpec<PlotRectEncoderSpec, RectEncodeChannels>> & {\n type: 'rect';\n};\nexport type PlotRectXSpec = Partial<ISemanticMarkSpec<PlotRectXEncoderSpec, RectXEncodeChannels>> & {\n type: 'rectX';\n};\nexport type PlotRectYSpec = Partial<ISemanticMarkSpec<PlotRectYEncoderSpec, RectYEncodeChannels>> & {\n type: 'rectY';\n};\nexport type PlotPolygonSpec = Partial<ISemanticMarkSpec<PlotPolygonEncoderSpec, PolygonEncodeChannels>> & {\n type: 'polygon';\n};\nexport type PlotRuleSpec = Partial<ISemanticMarkSpec<PlotRuleEncoderSpec, RuleEncodeChannels>> & {\n type: 'rule';\n};\nexport type PlotImageSpec = Partial<ISemanticMarkSpec<PlotImageEncoderSpec, ImageEncodeChannels>> & {\n type: 'image';\n};\nexport type PlotPathSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['path'], PathEncodeChannels>> & {\n type: 'path';\n};\n\nexport interface PlotSpec {\n background?: IColor;\n width?: number;\n height?: number;\n padding?: number;\n coordinate?: CoordinateOption;\n marks?: Array<\n | PlotIntervalSpec\n | PlotLineSpec\n | PlotCellSpec\n | PlotRuleXSpec\n | PlotRuleYSpec\n | PlotAreaSpec\n | PlotSymbolSpec\n | PlotTextSpec\n | PlotRectSpec\n | PlotRectXSpec\n | PlotRectYSpec\n | PlotPolygonSpec\n | PlotRuleSpec\n | PlotImageSpec\n | PlotPathSpec\n >;\n}\n\nexport interface IPlot {\n readonly view: IView;\n\n theme: (theme: string) => this;\n /**\n * todo: 直接接text图元还是title组件\n */\n // title: (text: ITextAttribute['text'], style: Omit<ITextAttribute, 'text'>) => this;\n coordinate: (type: CoordinateType, option?: Omit<CoordinateOption, 'type'>) => this;\n // interaction: (type: string, options: boolean | any) => this;\n\n // facet: (type: string, options: any) => this;\n\n ///--------- life cycle ---------///\n\n run: (runningConfig?: IRunningConfig) => this;\n runAsync: (runningConfig?: IRunningConfig) => Promise<this>;\n release: () => this;\n parseSpec: (spec: PlotSpec) => this;\n updateSpec: (spec: PlotSpec) => this;\n getImageBuffer: () => Buffer;\n\n ///--------- events api ---------///\n on: (type: string, handler: BaseEventHandler) => this;\n off: (type: string, handler?: BaseEventHandler) => this;\n\n ///--------- marks ---------///\n\n interval: () => IInterval;\n cell: () => ICell;\n area: () => IArea;\n image: () => IImage;\n line: () => ILine;\n ruleX: () => IRuleX;\n ruleY: () => IRectY;\n symbol: () => ISymbol;\n polygon: () => IPolygon;\n text: () => IText;\n rect: () => IRect;\n rectX: () => IRectX;\n rectY: () => IRectY;\n rule: () => IRule;\n\n // wordcloud 包如果没注册,会存在问题\n wordcloud: () => IWordcloud;\n wordcloudShape: () => IWordcloudShape;\n circlePacking: () => ICirclePacking;\n treemap: () => ITreemap;\n tree: () => ITree;\n sunburst: () => ISunburst;\n sankey: () => ISankey;\n\n // P2\n // forceGraph: () => ISemanticMark;\n // geoPath: () => ISemanticMark;\n // vector: () => ISemanticMark;\n // shape: () => ISemanticMark;\n // gauge: () => ISemanticMark;\n // heatmap: () => ISemanticMark;\n // density: () => ISemanticMark;\n // boxplot: () => ISemanticMark;\n // box: () => ISemanticMark;\n // contour: () => ISemanticMark;\n\n // observable auto define type by data\n // auto: () => ISemanticMark;\n}\n\nexport interface IPlotConstructor {\n new (options?: IPlotOptions): IPlot;\n}\n\nexport type WithDefaultEncode<T, K extends string> = {\n [Key in K]?: Key extends keyof T ? ISemanticEncodeValue<T[Key]> : ISemanticEncodeValue<string | number>;\n};\nexport type ISemanticEncodeValue<T> = T extends any[]\n ? string[] | ((datum: any) => any)[]\n : string | ((datum: any) => T);\nexport type ISemanticEncodeSpec<T> = {\n [Key in keyof T]?: ISemanticEncodeValue<T[Key]>;\n};\nexport type ISemanticStyle<T, K extends string> = Omit<T, K>;\n\nexport interface SemanticTooltipContentItem {\n key?: ISemanticEncodeValue<string | number>;\n value?: ISemanticEncodeValue<string | number>;\n symbol?: ISemanticEncodeValue<string>;\n}\nexport type SemanticTooltipOption = {\n disableGraphicTooltip?: boolean;\n disableDimensionTooltip?: boolean;\n staticTitle?: string;\n staticContentKey?: string | string[];\n title?: ISemanticEncodeValue<string | number>;\n dimensionTooltipChannel?: 'x' | 'y';\n content?: SemanticTooltipContentItem[];\n};\n\nexport interface SemanticAxisOption extends Partial<AxisBaseAttributes> {\n tickCount?: number;\n}\n\nexport interface SemanticGridOption extends Partial<GridBaseAttributes> {\n type?: GridShape;\n tickCount?: number;\n inside?: boolean;\n baseValue?: number;\n sides?: number;\n}\nexport type SemanticDataZoomOption = Partial<DataZoomAttributes>;\nexport type SemanticSliderOption = Partial<SliderAttributes>;\nexport type SemanticLegendOption = Partial<ColorLegendAttributes | DiscreteLegendAttrs | SizeLegendAttributes>;\nexport type SemanticCrosshairOption = Partial<BaseCrosshairAttrs>;\nexport type SemanticLabelOption = Partial<BaseLabelAttrs>;\nexport type SemanticPlayerOption = Partial<PlayerAttributes>;\nexport type SemanticTitleOption = Partial<TitleAttrs>;\n\nexport interface ISemanticMark<EncodeSpec, K extends string> {\n readonly uid: number;\n readonly type: string;\n data: (values: any, transform?: TransformSpec[], id?: string) => this;\n style: (style: Partial<EncodeSpec & any>) => this;\n encode: (channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) => this;\n scale: (channel: K, option: Partial<ScaleSpec>) => this;\n transform: (option: TransformSpec[]) => this;\n animate: (state: string, option: IAnimationConfig | IAnimationConfig[]) => this;\n state: (state: string, option: Partial<EncodeSpec>) => this;\n\n axis: (channel: string, option?: SemanticAxisOption | boolean, layout?: MarkRelativeItemSpec) => this;\n legend: (channel: string, option?: SemanticLegendOption | boolean, layout?: MarkRelativeItemSpec) => this;\n crosshair: (channel: string, option?: SemanticCrosshairOption | boolean) => this;\n tooltip: (option: SemanticTooltipOption | boolean) => this;\n coordinate: (option: CoordinateOption) => this;\n grid: (channel: string, option?: SemanticGridOption | boolean) => this;\n title: (option: SemanticTitleOption, layout?: MarkRelativeItemSpec) => this;\n\n slider: (channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) => this;\n datazoom: (channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) => this;\n label: (channel: string, option?: SemanticLabelOption | boolean) => this;\n player: (data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) => this;\n\n toViewSpec: () => ViewSpec;\n parseSpec: (spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) => this;\n}\n\nexport interface ISemanticMarkSpec<EncodeSpec, K extends string> {\n id: string | number;\n data?: DataSpec;\n encode?: WithDefaultEncode<EncodeSpec, K>;\n scale?: Partial<Record<K, ScaleSpec>>;\n style?: Partial<EncodeSpec & any>;\n axis?: Partial<\n Record<K, { option?: SemanticAxisOption | boolean; layout?: MarkRelativeItemSpec } | SemanticAxisOption | boolean>\n >;\n grid?: Partial<Record<K, SemanticGridOption | boolean>>;\n transform?: TransformSpec[];\n state?: Record<string, Partial<EncodeSpec>>;\n animation?: Record<string, IAnimationConfig | IAnimationConfig[]>;\n legend?: Record<\n string,\n { option: SemanticLegendOption | boolean; layout?: MarkRelativeItemSpec } | SemanticLegendOption | boolean\n >;\n crosshair?: Record<string, SemanticCrosshairOption | boolean>;\n tooltip?: SemanticTooltipOption | boolean;\n slider?: Record<\n string,\n { option: SemanticSliderOption | boolean; layout?: MarkRelativeItemSpec } | SemanticSliderOption | boolean\n >;\n datazoom?: Record<\n string,\n { option: SemanticDataZoomOption | boolean; layout?: MarkRelativeItemSpec } | SemanticDataZoomOption | boolean\n >;\n label?: Record<string, SemanticLabelOption | boolean>;\n player?: { data?: any[]; option?: SemanticPlayerOption | boolean; layout?: MarkRelativeItemSpec };\n title?: { option?: SemanticTitleOption; layout?: MarkRelativeItemSpec } | SemanticTitleOption;\n}\n\nexport type ParsedSimpleEncode<T, K extends string> = {\n [Key in K]?: {\n field: Key extends keyof T ? ISemanticEncodeValue<T[Key]> : ISemanticEncodeValue<string>;\n scale: string;\n };\n};\n\nexport type SemanticEncodeChannels = 'x' | 'y' | 'group' | 'color';\nexport type IntervalEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type CellEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type LineEncodeChannels = 'x' | 'y' | 'group' | 'color';\nexport type AreaEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type RuleXEncodeChannels = 'x' | 'x' | 'color' | 'group';\nexport type RuleYEncodeChannels = 'x' | 'y' | 'color' | 'group';\nexport type SymbolEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'size' | 'shape' | 'stroke';\nexport type TextEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'text' | 'stroke';\nexport type RectEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'stroke';\nexport type RectXEncodeChannels = 'x' | 'color' | 'group' | 'stroke';\nexport type RectYEncodeChannels = 'y' | 'color' | 'group' | 'stroke';\nexport type PolygonEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'stroke';\nexport type RuleEncodeChannels = 'x' | 'y' | 'color' | 'group';\nexport type ImageEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'src' | 'stroke';\nexport type PathEncodeChannels = 'color' | 'stroke';\nexport type SankeyEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type SunburstEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type TreeEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type TreemapEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type CirclepackingEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type WordcloudEncodeChannels = 'text' | 'color' | 'stroke';\nexport type WordcloudShapeEncodeChannels = 'text' | 'color' | 'stroke';\n\nexport type IInterval = ISemanticMark<PlotIntervalEncoderSpec, IntervalEncodeChannels>;\nexport type ILine = ISemanticMark<BasicEncoderSpecMap['line'], LineEncodeChannels>;\nexport type ICell = ISemanticMark<BasicEncoderSpecMap['cell'], CellEncodeChannels>;\nexport type IRuleX = ISemanticMark<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>;\nexport type IRuleY = ISemanticMark<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>;\nexport type IArea = ISemanticMark<PlotAreaEncoderSpec, AreaEncodeChannels>;\nexport type ISymbol = ISemanticMark<BasicEncoderSpecMap['symbol'], SymbolEncodeChannels>;\nexport type IText = ISemanticMark<BasicEncoderSpecMap['text'], TextEncodeChannels>;\nexport type IRect = ISemanticMark<PlotRectEncoderSpec, RectEncodeChannels>;\nexport type IRectX = ISemanticMark<BasicEncoderSpecMap['rect'], RectXEncodeChannels>;\nexport type IRectY = ISemanticMark<BasicEncoderSpecMap['rect'], RectYEncodeChannels>;\nexport type IPolygon = ISemanticMark<PlotPolygonEncoderSpec, PolygonEncodeChannels>;\nexport type IRule = ISemanticMark<BasicEncoderSpecMap['rule'], RuleEncodeChannels>;\nexport type IImage = ISemanticMark<PlotImageEncoderSpec, ImageEncodeChannels>;\nexport type IPath = ISemanticMark<BasicEncoderSpecMap['path'], PathEncodeChannels>;\nexport type ISankey = ISemanticMark<PlotSankeyEncoderSpec, SankeyEncodeChannels>;\nexport type ISunburst = ISemanticMark<PlotSunburstEncodeSpec, SunburstEncodeChannels>;\nexport type IWordcloud = ISemanticMark<PlotWordcloudEncodeSpec, WordcloudEncodeChannels>;\nexport type IWordcloudShape = ISemanticMark<PlotWordcloudShapeEncodeSpec, WordcloudShapeEncodeChannels>;\nexport type ITree = ISemanticMark<PlotTreeEncodeSpec, TreeEncodeChannels>;\nexport type ITreemap = ISemanticMark<PlotTreemapEncodeSpec, TreemapEncodeChannels>;\nexport type ICirclePacking = ISemanticMark<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>;\n\nexport type PlotMark =\n | IInterval\n | IRuleX\n | IRuleY\n | ICell\n | ILine\n | IArea\n | ISymbol\n | IText\n | IRect\n | IRectX\n | IRectY\n | IPolygon\n | IRule\n | IImage\n | IPath\n | ISankey\n | ISunburst\n | ICirclePacking\n | ITreemap\n | ITree\n | IWordcloud\n | IWordcloudShape;\n\nexport interface IPlotMarkConstructor {\n readonly type: string;\n\n new (id?: string): PlotMark;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/plot.ts"],"names":[],"mappings":"","file":"plot.js","sourcesContent":["import type {\n AxisBaseAttributes,\n BaseCrosshairAttrs,\n BaseLabelAttrs,\n ColorLegendAttributes,\n DataZoomAttributes,\n DiscreteLegendAttrs,\n GridBaseAttributes,\n PlayerAttributes,\n SizeLegendAttributes,\n SliderAttributes,\n TitleAttrs\n} from '@visactor/vrender-components';\nimport type { CoordinateType } from '@visactor/vgrammar-coordinate';\nimport type { IColor } from '@visactor/vrender-core';\nimport type { IEnvironmentOptions, IRendererOptions, IRunningConfig, ViewSpec, srIOption3DType, IView } from './view';\nimport type { CommonPaddingSpec, ValueOf } from './base';\nimport type { BasicEncoderSpecMap, LinkPathEncoderSpec, MarkRelativeItemSpec } from './mark';\nimport type { BaseEventHandler } from './event';\nimport type { TransformSpec } from './transform';\nimport type { IAnimationConfig } from './animate';\nimport type { ScaleSpec } from './scale';\nimport type { DataSpec } from './data';\nimport type { GridShape } from './component';\n\nexport interface IPlotOptions extends IEnvironmentOptions, IRendererOptions {\n width?: number;\n height?: number;\n padding?: CommonPaddingSpec;\n autoFit?: boolean;\n options3d?: srIOption3DType;\n theme?: string;\n logLevel?: number;\n}\n\nexport interface CartesianCoordinateOption {\n id?: string;\n type: 'cartesian';\n transpose?: boolean;\n}\n\nexport interface PolarCoordinateOption {\n id?: string;\n type: 'polar';\n origin?: [string | number, string | number];\n transpose?: boolean;\n}\n\nexport type PlotIntervalEncoderSpec = Omit<BasicEncoderSpecMap['interval'], 'y'> & {\n y?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'y' | 'x'> & {\n y?: number | number[];\n x?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectXEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'x'> & {\n x?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotRectYEncoderSpec = Omit<BasicEncoderSpecMap['rect'], 'y'> & {\n y?: number | number[];\n y1?: number;\n x1?: number;\n};\n\nexport type PlotAreaEncoderSpec = Omit<BasicEncoderSpecMap['area'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\n\nexport type PlotRuleEncoderSpec = Omit<BasicEncoderSpecMap['rule'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\n\nexport type PlotImageEncoderSpec = Omit<BasicEncoderSpecMap['image'], 'x' | 'y'> & {\n x?: number | number[];\n y?: number | number[];\n};\nexport type PlotPolygonEncoderSpec = Omit<BasicEncoderSpecMap['polygon'], 'x' | 'y'> & {\n x?: number[];\n y?: number[];\n};\n\nexport type PlotSankeyEncoderSpec = Partial<LinkPathEncoderSpec>;\nexport type PlotSunburstEncodeSpec = BasicEncoderSpecMap['arc'];\nexport type PlotTreeEncodeSpec = BasicEncoderSpecMap['symbol'];\nexport type PlotTreemapEncodeSpec = BasicEncoderSpecMap['rect'];\nexport type PlotCirclePackingEncodeSpec = BasicEncoderSpecMap['circle'];\nexport type PlotWordcloudEncodeSpec = BasicEncoderSpecMap['text'];\nexport type PlotWordcloudShapeEncodeSpec = BasicEncoderSpecMap['text'];\n\nexport type CoordinateOption = CartesianCoordinateOption | PolarCoordinateOption;\nexport type PlotIntervalSpec = Partial<ISemanticMarkSpec<PlotIntervalEncoderSpec, IntervalEncodeChannels>> & {\n type: 'interval';\n};\nexport type PlotLineSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['line'], LineEncodeChannels>> & {\n type: 'line';\n};\nexport type PlotCellSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['cell'], CellEncodeChannels>> & {\n type: 'cell';\n};\nexport type PlotRuleXSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>> & {\n type: 'ruleX';\n};\nexport type PlotRuleYSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>> & {\n type: 'ruleY';\n};\nexport type PlotAreaSpec = Partial<ISemanticMarkSpec<PlotAreaEncoderSpec, AreaEncodeChannels>> & {\n type: 'area';\n};\nexport type PlotSymbolSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['symbol'], SymbolEncodeChannels>> & {\n type: 'symbol';\n};\nexport type PlotTextSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['text'], TextEncodeChannels>> & {\n type: 'text';\n};\nexport type PlotRectSpec = Partial<ISemanticMarkSpec<PlotRectEncoderSpec, RectEncodeChannels>> & {\n type: 'rect';\n};\nexport type PlotRectXSpec = Partial<ISemanticMarkSpec<PlotRectXEncoderSpec, RectXEncodeChannels>> & {\n type: 'rectX';\n};\nexport type PlotRectYSpec = Partial<ISemanticMarkSpec<PlotRectYEncoderSpec, RectYEncodeChannels>> & {\n type: 'rectY';\n};\nexport type PlotPolygonSpec = Partial<ISemanticMarkSpec<PlotPolygonEncoderSpec, PolygonEncodeChannels>> & {\n type: 'polygon';\n};\nexport type PlotRuleSpec = Partial<ISemanticMarkSpec<PlotRuleEncoderSpec, RuleEncodeChannels>> & {\n type: 'rule';\n};\nexport type PlotImageSpec = Partial<ISemanticMarkSpec<PlotImageEncoderSpec, ImageEncodeChannels>> & {\n type: 'image';\n};\nexport type PlotPathSpec = Partial<ISemanticMarkSpec<BasicEncoderSpecMap['path'], PathEncodeChannels>> & {\n type: 'path';\n};\n\nexport interface PlotSpec {\n background?: IColor;\n width?: number;\n height?: number;\n padding?: number;\n coordinate?: CoordinateOption;\n marks?: Array<\n | PlotIntervalSpec\n | PlotLineSpec\n | PlotCellSpec\n | PlotRuleXSpec\n | PlotRuleYSpec\n | PlotAreaSpec\n | PlotSymbolSpec\n | PlotTextSpec\n | PlotRectSpec\n | PlotRectXSpec\n | PlotRectYSpec\n | PlotPolygonSpec\n | PlotRuleSpec\n | PlotImageSpec\n | PlotPathSpec\n >;\n}\n\nexport interface IPlot {\n readonly view: IView;\n\n theme: (theme: string) => this;\n /**\n * todo: 直接接text图元还是title组件\n */\n // title: (text: ITextAttribute['text'], style: Omit<ITextAttribute, 'text'>) => this;\n coordinate: (type: CoordinateType, option?: Omit<CoordinateOption, 'type'>) => this;\n // interaction: (type: string, options: boolean | any) => this;\n\n // facet: (type: string, options: any) => this;\n\n ///--------- life cycle ---------///\n\n run: (runningConfig?: IRunningConfig) => this;\n release: () => this;\n parseSpec: (spec: PlotSpec) => this;\n updateSpec: (spec: PlotSpec) => this;\n getImageBuffer: () => Buffer;\n\n ///--------- events api ---------///\n on: (type: string, handler: BaseEventHandler) => this;\n off: (type: string, handler?: BaseEventHandler) => this;\n\n ///--------- marks ---------///\n\n interval: () => IInterval;\n cell: () => ICell;\n area: () => IArea;\n image: () => IImage;\n line: () => ILine;\n ruleX: () => IRuleX;\n ruleY: () => IRectY;\n symbol: () => ISymbol;\n polygon: () => IPolygon;\n text: () => IText;\n rect: () => IRect;\n rectX: () => IRectX;\n rectY: () => IRectY;\n rule: () => IRule;\n\n // wordcloud 包如果没注册,会存在问题\n wordcloud: () => IWordcloud;\n wordcloudShape: () => IWordcloudShape;\n circlePacking: () => ICirclePacking;\n treemap: () => ITreemap;\n tree: () => ITree;\n sunburst: () => ISunburst;\n sankey: () => ISankey;\n\n // P2\n // forceGraph: () => ISemanticMark;\n // geoPath: () => ISemanticMark;\n // vector: () => ISemanticMark;\n // shape: () => ISemanticMark;\n // gauge: () => ISemanticMark;\n // heatmap: () => ISemanticMark;\n // density: () => ISemanticMark;\n // boxplot: () => ISemanticMark;\n // box: () => ISemanticMark;\n // contour: () => ISemanticMark;\n\n // observable auto define type by data\n // auto: () => ISemanticMark;\n}\n\nexport interface IPlotConstructor {\n new (options?: IPlotOptions): IPlot;\n}\n\nexport type WithDefaultEncode<T, K extends string> = {\n [Key in K]?: Key extends keyof T ? ISemanticEncodeValue<T[Key]> : ISemanticEncodeValue<string | number>;\n};\nexport type ISemanticEncodeValue<T> = T extends any[]\n ? string[] | ((datum: any) => any)[]\n : string | ((datum: any) => T);\nexport type ISemanticEncodeSpec<T> = {\n [Key in keyof T]?: ISemanticEncodeValue<T[Key]>;\n};\nexport type ISemanticStyle<T, K extends string> = Omit<T, K>;\n\nexport interface SemanticTooltipContentItem {\n key?: ISemanticEncodeValue<string | number>;\n value?: ISemanticEncodeValue<string | number>;\n symbol?: ISemanticEncodeValue<string>;\n}\nexport type SemanticTooltipOption = {\n disableGraphicTooltip?: boolean;\n disableDimensionTooltip?: boolean;\n staticTitle?: string;\n staticContentKey?: string | string[];\n title?: ISemanticEncodeValue<string | number>;\n dimensionTooltipChannel?: 'x' | 'y';\n content?: SemanticTooltipContentItem[];\n};\n\nexport interface SemanticAxisOption extends Partial<AxisBaseAttributes> {\n tickCount?: number;\n}\n\nexport interface SemanticGridOption extends Partial<GridBaseAttributes> {\n type?: GridShape;\n tickCount?: number;\n inside?: boolean;\n baseValue?: number;\n sides?: number;\n}\nexport type SemanticDataZoomOption = Partial<DataZoomAttributes>;\nexport type SemanticSliderOption = Partial<SliderAttributes>;\nexport type SemanticLegendOption = Partial<ColorLegendAttributes | DiscreteLegendAttrs | SizeLegendAttributes>;\nexport type SemanticCrosshairOption = Partial<BaseCrosshairAttrs>;\nexport type SemanticLabelOption = Partial<BaseLabelAttrs>;\nexport type SemanticPlayerOption = Partial<PlayerAttributes>;\nexport type SemanticTitleOption = Partial<TitleAttrs>;\n\nexport interface ISemanticMark<EncodeSpec, K extends string> {\n readonly uid: number;\n readonly type: string;\n data: (values: any, transform?: TransformSpec[], id?: string) => this;\n style: (style: Partial<EncodeSpec & any>) => this;\n encode: (channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) => this;\n scale: (channel: K, option: Partial<ScaleSpec>) => this;\n transform: (option: TransformSpec[]) => this;\n animate: (state: string, option: IAnimationConfig | IAnimationConfig[]) => this;\n state: (state: string, option: Partial<EncodeSpec>) => this;\n\n axis: (channel: string, option?: SemanticAxisOption | boolean, layout?: MarkRelativeItemSpec) => this;\n legend: (channel: string, option?: SemanticLegendOption | boolean, layout?: MarkRelativeItemSpec) => this;\n crosshair: (channel: string, option?: SemanticCrosshairOption | boolean) => this;\n tooltip: (option: SemanticTooltipOption | boolean) => this;\n coordinate: (option: CoordinateOption) => this;\n grid: (channel: string, option?: SemanticGridOption | boolean) => this;\n title: (option: SemanticTitleOption, layout?: MarkRelativeItemSpec) => this;\n\n slider: (channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) => this;\n datazoom: (channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) => this;\n label: (channel: string, option?: SemanticLabelOption | boolean) => this;\n player: (data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) => this;\n\n toViewSpec: () => ViewSpec;\n parseSpec: (spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) => this;\n}\n\nexport interface ISemanticMarkSpec<EncodeSpec, K extends string> {\n id: string | number;\n data?: DataSpec;\n encode?: WithDefaultEncode<EncodeSpec, K>;\n scale?: Partial<Record<K, ScaleSpec>>;\n style?: Partial<EncodeSpec & any>;\n axis?: Partial<\n Record<K, { option?: SemanticAxisOption | boolean; layout?: MarkRelativeItemSpec } | SemanticAxisOption | boolean>\n >;\n grid?: Partial<Record<K, SemanticGridOption | boolean>>;\n transform?: TransformSpec[];\n state?: Record<string, Partial<EncodeSpec>>;\n animation?: Record<string, IAnimationConfig | IAnimationConfig[]>;\n legend?: Record<\n string,\n { option: SemanticLegendOption | boolean; layout?: MarkRelativeItemSpec } | SemanticLegendOption | boolean\n >;\n crosshair?: Record<string, SemanticCrosshairOption | boolean>;\n tooltip?: SemanticTooltipOption | boolean;\n slider?: Record<\n string,\n { option: SemanticSliderOption | boolean; layout?: MarkRelativeItemSpec } | SemanticSliderOption | boolean\n >;\n datazoom?: Record<\n string,\n { option: SemanticDataZoomOption | boolean; layout?: MarkRelativeItemSpec } | SemanticDataZoomOption | boolean\n >;\n label?: Record<string, SemanticLabelOption | boolean>;\n player?: { data?: any[]; option?: SemanticPlayerOption | boolean; layout?: MarkRelativeItemSpec };\n title?: { option?: SemanticTitleOption; layout?: MarkRelativeItemSpec } | SemanticTitleOption;\n}\n\nexport type ParsedSimpleEncode<T, K extends string> = {\n [Key in K]?: {\n field: Key extends keyof T ? ISemanticEncodeValue<T[Key]> : ISemanticEncodeValue<string>;\n scale: string;\n };\n};\n\nexport type SemanticEncodeChannels = 'x' | 'y' | 'group' | 'color';\nexport type IntervalEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type CellEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type LineEncodeChannels = 'x' | 'y' | 'group' | 'color';\nexport type AreaEncodeChannels = 'x' | 'y' | 'group' | 'color' | 'stroke';\nexport type RuleXEncodeChannels = 'x' | 'x' | 'color' | 'group';\nexport type RuleYEncodeChannels = 'x' | 'y' | 'color' | 'group';\nexport type SymbolEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'size' | 'shape' | 'stroke';\nexport type TextEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'text' | 'stroke';\nexport type RectEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'stroke';\nexport type RectXEncodeChannels = 'x' | 'color' | 'group' | 'stroke';\nexport type RectYEncodeChannels = 'y' | 'color' | 'group' | 'stroke';\nexport type PolygonEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'stroke';\nexport type RuleEncodeChannels = 'x' | 'y' | 'color' | 'group';\nexport type ImageEncodeChannels = 'x' | 'y' | 'color' | 'group' | 'src' | 'stroke';\nexport type PathEncodeChannels = 'color' | 'stroke';\nexport type SankeyEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type SunburstEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type TreeEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type TreemapEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type CirclepackingEncodeChannels = 'node' | 'value' | 'color' | 'stroke';\nexport type WordcloudEncodeChannels = 'text' | 'color' | 'stroke';\nexport type WordcloudShapeEncodeChannels = 'text' | 'color' | 'stroke';\n\nexport type IInterval = ISemanticMark<PlotIntervalEncoderSpec, IntervalEncodeChannels>;\nexport type ILine = ISemanticMark<BasicEncoderSpecMap['line'], LineEncodeChannels>;\nexport type ICell = ISemanticMark<BasicEncoderSpecMap['cell'], CellEncodeChannels>;\nexport type IRuleX = ISemanticMark<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>;\nexport type IRuleY = ISemanticMark<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>;\nexport type IArea = ISemanticMark<PlotAreaEncoderSpec, AreaEncodeChannels>;\nexport type ISymbol = ISemanticMark<BasicEncoderSpecMap['symbol'], SymbolEncodeChannels>;\nexport type IText = ISemanticMark<BasicEncoderSpecMap['text'], TextEncodeChannels>;\nexport type IRect = ISemanticMark<PlotRectEncoderSpec, RectEncodeChannels>;\nexport type IRectX = ISemanticMark<BasicEncoderSpecMap['rect'], RectXEncodeChannels>;\nexport type IRectY = ISemanticMark<BasicEncoderSpecMap['rect'], RectYEncodeChannels>;\nexport type IPolygon = ISemanticMark<PlotPolygonEncoderSpec, PolygonEncodeChannels>;\nexport type IRule = ISemanticMark<BasicEncoderSpecMap['rule'], RuleEncodeChannels>;\nexport type IImage = ISemanticMark<PlotImageEncoderSpec, ImageEncodeChannels>;\nexport type IPath = ISemanticMark<BasicEncoderSpecMap['path'], PathEncodeChannels>;\nexport type ISankey = ISemanticMark<PlotSankeyEncoderSpec, SankeyEncodeChannels>;\nexport type ISunburst = ISemanticMark<PlotSunburstEncodeSpec, SunburstEncodeChannels>;\nexport type IWordcloud = ISemanticMark<PlotWordcloudEncodeSpec, WordcloudEncodeChannels>;\nexport type IWordcloudShape = ISemanticMark<PlotWordcloudShapeEncodeSpec, WordcloudShapeEncodeChannels>;\nexport type ITree = ISemanticMark<PlotTreeEncodeSpec, TreeEncodeChannels>;\nexport type ITreemap = ISemanticMark<PlotTreemapEncodeSpec, TreemapEncodeChannels>;\nexport type ICirclePacking = ISemanticMark<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>;\n\nexport type PlotMark =\n | IInterval\n | IRuleX\n | IRuleY\n | ICell\n | ILine\n | IArea\n | ISymbol\n | IText\n | IRect\n | IRectX\n | IRectY\n | IPolygon\n | IRule\n | IImage\n | IPath\n | ISankey\n | ISunburst\n | ICirclePacking\n | ITreemap\n | ITree\n | IWordcloud\n | IWordcloudShape;\n\nexport interface IPlotMarkConstructor {\n readonly type: string;\n\n new (id?: string): PlotMark;\n}\n"]}
@@ -281,7 +281,7 @@ export interface IProgressiveTransformResult<Output = any> {
281
281
  export interface IProgressiveTransform<Output = any> {
282
282
  progressive: IProgressiveTransformResult<Output>;
283
283
  }
284
- export type IFunctionTransform<Options = any, Input = any, Output = any> = (options?: Options, data?: Input, params?: Record<string, any>, view?: IView) => Output | Promise<Output> | IProgressiveTransformResult<Output>;
284
+ export type IFunctionTransform<Options = any, Input = any, Output = any> = (options?: Options, data?: Input, params?: Record<string, any>, view?: IView) => Output | IProgressiveTransformResult<Output>;
285
285
  export interface ITransform<Options = any, Input = any, Output = any> {
286
286
  type: string;
287
287
  markPhase?: 'beforeJoin' | 'afterEncode' | 'afterEncodeItems';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/transform.ts"],"names":[],"mappings":"","file":"transform.js","sourcesContent":["import type { FieldGetterFunction, LayoutViewBox } from '@visactor/vgrammar-util';\nimport type { SignalFunction, SignalReference } from './signal';\nimport type { IView } from './view';\nimport type { IData } from './grammar';\nimport type { SortConfigSpec } from './data';\n\nexport type TransformSpecValue =\n | {\n /** transform will depend a signal grammar instance as params */\n signal?: string;\n /** transform will depend a scale grammar instance as params, this should only be used in the transform of mark */\n scale?: string;\n /** transform will depend a data grammar instance as params, this should only be used in the transform of mark */\n data?: string;\n /** transform will depend a customized grammar instance as params, this should only be used in the transform of mark */\n customized?: string;\n }\n | any;\n\nexport type TransformFunctionCallback<T> = (parameters: any) => T;\n\nexport type TransformFunctionType<T> = T | SignalReference<T> | SignalFunction<TransformFunctionCallback<T>, T>;\n\nexport type ConvertTransformOptionToSpec<TransformOptionType> = {\n [Key in keyof TransformOptionType]?: TransformFunctionType<TransformOptionType[Key]>;\n};\n\nexport interface BinTransformOption {\n field: string;\n extent: [number, number];\n step?: number;\n bins?: number;\n as?: [string, string];\n}\n\nexport interface ContourTransformOption {\n field: string;\n row: number;\n column: number;\n thresholds?: number[];\n levels?: number;\n asThreshold?: string;\n asPoints?: string;\n}\n\nexport interface FilterTransformOption {\n callback: (entry: any, params: any) => boolean;\n}\n\nexport interface FunnelTransformOption {\n /** the field to of measure */\n field: string;\n /** the filed of transform ration(the value of next level/ the value of current level)**/\n asTransformRatio?: string;\n /** the filed of reach ration(the value of current level/ the value of prev level))*/\n asReachRatio?: string;\n /** the field of height ratio **/\n asHeightRatio?: string;\n /** the field of value ration(this value of current level / this value of first level ) */\n asValueRatio?: string;\n /** the field of last value ratio(the value of last level / this value of first level) */\n asLastValueRatio?: string;\n /** the field of next value ratio(the value of next level / this value of first level) */\n asNextValueRatio?: string;\n /** the field of current value */\n asCurrentValue?: string;\n /** the field of last value **/\n asLastValue?: string;\n /** the field of next value **/\n asNextValue?: string;\n /** whether or not the last level of the funnel is a cone */\n isCone?: boolean;\n /** whether or not the height will be encode to value**/\n heightVisual?: boolean;\n\n /** the range of value */\n range?: { min: number; max: number };\n}\n\nexport interface JoinTransformOption {\n from?: any[];\n key: string;\n fields: string[];\n values?: string[];\n as?: string[];\n default?: any;\n}\n\nexport interface KDETransformOption {\n dimension?: '1d' | '2d';\n field: string | string[];\n bandwidth?: number;\n extent?: [number, number] | [{ x: number; y: number }, { x: number; y: number }];\n bins?: number | number[];\n as?: string[];\n}\n\nexport interface MapTransformOption {\n callback: (entry: any, params?: any) => any;\n as?: string;\n all?: boolean;\n}\n\nexport interface PickTransformOption {\n as?: string[];\n fields: string[] | FieldGetterFunction[];\n}\n\nexport interface PieTransformOption {\n field: string;\n startAngle?: number;\n endAngle?: number;\n asStartAngle?: string;\n asEndAngle?: string;\n asMiddleAngle?: string;\n asRadian?: string;\n asRatio?: string;\n asQuadrant?: string;\n asK?: string;\n}\n\nexport interface RangeTransformOptions {\n start: number;\n stop: number;\n step?: number;\n as?: string;\n}\n\nexport interface SortTransformOptions {\n sort: SortConfigSpec | ((a: any, b: any) => number);\n}\n\nexport interface FoldTransformOptions {\n fields: string[];\n asKey?: string;\n asValue?: string;\n retains?: string[];\n}\n\nexport interface UnfoldTransformOptions {\n groupBy?: string[] | string;\n keyField: string;\n valueField: string;\n aggregateType?: 'sum' | 'min' | 'max' | 'count' | 'mean';\n}\n\nexport interface StackTransformOptions {\n // TODO: provide more order option referring to d3-shape\n order?: 'positive' | 'negative';\n offset?: 'none' | 'diverging' | 'silhouette' | 'wiggle';\n stackField: string;\n dimensionField: string;\n asStack?: string;\n asPrevStack?: string;\n asPercent?: string;\n asPercentStack?: string;\n asPrevPercentStack?: string;\n asSum?: string;\n}\n\nexport interface DodgeTransformOptions {\n /**\n * the gap for two graphic elements\n */\n innerGap?: number | string;\n /**\n * only used for rect / interval mark\n */\n maxWidth?: number;\n minWidth?: number;\n /** the gap between two category */\n categoryGap?: number | string;\n /**\n * specify the field to dodge, if this field is not specified, we'll use the `groupKey` of Element to dodge\n */\n dodgeBy?: string | string[];\n /**\n * specify the channel to dodge, if this field is not specified, we'll use the channel which is associated to a band scale\n */\n dodgeChannel?: 'x' | 'y';\n}\n\nexport interface JitterTransformOptions {\n bandWidth?: number;\n bandHeight?: number;\n widthRatio?: number;\n heightRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\n\nexport interface JitterXTransformOptions {\n bandWidth?: number;\n widthRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\nexport interface JitterYTransformOptions {\n bandHeight?: number;\n heightRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\n\nexport type CircularRelationTransformOptions = LayoutViewBox & {\n field: string;\n radiusField?: string;\n radiusRange?: [number, number];\n center?: [string | number, string | number];\n startAngle?: number;\n endAngle?: number;\n innerRadius?: string | number;\n outerRadius?: string | number;\n};\n\nexport interface CircularRelationItem {\n x: number;\n y: number;\n radius: number;\n datum: any;\n}\n\nexport interface IdentifierTransformOptions {\n as: string;\n}\n\nexport interface MarkOverlapTransformOptions {\n direction: number;\n delta?: number;\n deltaMul?: number;\n radius?: boolean;\n hideMode?: number;\n forceUpdate?: boolean;\n forceUpdateStamp?: number;\n groupBy?: string;\n}\n\nexport interface SampleTransformOptions {\n size: number;\n factor?: number;\n skipfirst?: boolean;\n yfield?: string;\n groupBy?: string;\n mode?: 'lttb' | 'min' | 'max' | 'average' | 'sum';\n}\n\nexport interface SymmetryTransformOptions {\n channel?: 'x' | 'y';\n align?: 'min' | 'max';\n}\n\nexport interface BinTransformSpec extends BinTransformOption {\n type: 'bin';\n}\n\nexport interface ContourTransformSpec extends ContourTransformOption {\n type: 'contour';\n}\n\nexport interface FilterTransformSpec extends ConvertTransformOptionToSpec<FilterTransformOption> {\n type: 'filter';\n}\n\nexport interface FunnelTransformSpec extends FunnelTransformOption {\n type: 'funnel';\n}\n\nexport interface PieTransformSpec extends PieTransformOption {\n type: 'pie';\n}\n\nexport interface JoinTransformSpec extends ConvertTransformOptionToSpec<Omit<JoinTransformOption, 'from'>> {\n type: 'join';\n from?: TransformFunctionType<JoinTransformOption['from']> | { data: string | IData };\n}\n\nexport interface KDETransformSpec extends KDETransformOption {\n type: 'kde';\n}\n\nexport interface MapTransformSpec extends ConvertTransformOptionToSpec<Omit<MapTransformOption, 'callback'>> {\n type: 'map';\n callback: MapTransformOption['callback'];\n}\n\nexport interface PickTransformSpec extends ConvertTransformOptionToSpec<PickTransformOption> {\n type: 'pick';\n}\nexport interface RangeTransformSpec extends ConvertTransformOptionToSpec<RangeTransformOptions> {\n type: 'range';\n}\n\nexport interface SortTransformSpec extends ConvertTransformOptionToSpec<SortTransformOptions> {\n type: 'sort';\n}\nexport interface StackTransformSpec extends ConvertTransformOptionToSpec<StackTransformOptions> {\n type: 'stack';\n}\nexport interface DodgeTransformSpec extends ConvertTransformOptionToSpec<DodgeTransformOptions> {\n type: 'dodge';\n}\n\nexport interface IdentifierTransformSpec extends ConvertTransformOptionToSpec<IdentifierTransformOptions> {\n type: 'identifier';\n}\n\nexport interface MarkOverlapTransformSpec extends ConvertTransformOptionToSpec<MarkOverlapTransformOptions> {\n type: 'markoverlap';\n}\nexport interface SampleTransformSpec extends ConvertTransformOptionToSpec<SampleTransformOptions> {\n type: 'sampling';\n}\n\nexport interface JitterTransformSpec extends ConvertTransformOptionToSpec<JitterTransformOptions> {\n type: 'jitter';\n}\n\nexport interface JitterXTransformSpec extends ConvertTransformOptionToSpec<JitterXTransformOptions> {\n type: 'jitterX';\n}\n\nexport interface JitterYTransformSpec extends ConvertTransformOptionToSpec<JitterYTransformOptions> {\n type: 'jitterY';\n}\n\nexport type CircularRelationTransformSpec = ConvertTransformOptionToSpec<CircularRelationTransformOptions> & {\n type: 'circularRelation';\n};\n\nexport interface FoldTransformSpec extends ConvertTransformOptionToSpec<FoldTransformOptions> {\n type: 'fold';\n}\n\nexport interface UnfoldTransformSpec extends ConvertTransformOptionToSpec<UnfoldTransformOptions> {\n type: 'unfold';\n}\n\nexport interface SymmetryTransformSpec extends ConvertTransformOptionToSpec<SymmetryTransformOptions> {\n type: 'symmetry';\n}\n\nexport interface BaseTransformSpec {\n /** the type of transform */\n type: string;\n [key: string]: TransformSpecValue | TransformSpecValue[];\n}\n\nexport type TransformSpec =\n | FilterTransformSpec\n | FunnelTransformSpec\n | PieTransformSpec\n | JoinTransformSpec\n | MapTransformSpec\n | PickTransformSpec\n | RangeTransformSpec\n | SortTransformSpec\n | StackTransformSpec\n | DodgeTransformSpec\n | IdentifierTransformSpec\n | BaseTransformSpec\n | MarkOverlapTransformSpec\n | SampleTransformSpec\n | JitterTransformSpec\n | JitterXTransformSpec\n | JitterYTransformSpec\n | CircularRelationTransformSpec\n | FoldTransformSpec\n | UnfoldTransformSpec;\n\nexport interface IProgressiveTransformResult<Output = any> {\n /** is progressive finished */\n unfinished: () => boolean;\n /** return all the result */\n output: () => Output;\n /** the output result of current progressive run */\n progressiveOutput: () => Output;\n /** run in progressive mode */\n progressiveRun: () => void;\n /** release the progressive context */\n release: () => void;\n}\n\nexport interface IProgressiveTransform<Output = any> {\n progressive: IProgressiveTransformResult<Output>;\n}\n\nexport type IFunctionTransform<Options = any, Input = any, Output = any> = (\n options?: Options,\n data?: Input,\n params?: Record<string, any>,\n view?: IView\n) => Output | Promise<Output> | IProgressiveTransformResult<Output>;\nexport interface ITransform<Options = any, Input = any, Output = any> {\n type: string;\n markPhase?: 'beforeJoin' | 'afterEncode' | 'afterEncodeItems';\n /** 是否支持渐进流程 */\n canProgressive?: boolean;\n /** transform function */\n transform: IFunctionTransform<Options, Input, Output>;\n isBuiltIn?: boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/transform.ts"],"names":[],"mappings":"","file":"transform.js","sourcesContent":["import type { FieldGetterFunction, LayoutViewBox } from '@visactor/vgrammar-util';\nimport type { SignalFunction, SignalReference } from './signal';\nimport type { IView } from './view';\nimport type { IData } from './grammar';\nimport type { SortConfigSpec } from './data';\n\nexport type TransformSpecValue =\n | {\n /** transform will depend a signal grammar instance as params */\n signal?: string;\n /** transform will depend a scale grammar instance as params, this should only be used in the transform of mark */\n scale?: string;\n /** transform will depend a data grammar instance as params, this should only be used in the transform of mark */\n data?: string;\n /** transform will depend a customized grammar instance as params, this should only be used in the transform of mark */\n customized?: string;\n }\n | any;\n\nexport type TransformFunctionCallback<T> = (parameters: any) => T;\n\nexport type TransformFunctionType<T> = T | SignalReference<T> | SignalFunction<TransformFunctionCallback<T>, T>;\n\nexport type ConvertTransformOptionToSpec<TransformOptionType> = {\n [Key in keyof TransformOptionType]?: TransformFunctionType<TransformOptionType[Key]>;\n};\n\nexport interface BinTransformOption {\n field: string;\n extent: [number, number];\n step?: number;\n bins?: number;\n as?: [string, string];\n}\n\nexport interface ContourTransformOption {\n field: string;\n row: number;\n column: number;\n thresholds?: number[];\n levels?: number;\n asThreshold?: string;\n asPoints?: string;\n}\n\nexport interface FilterTransformOption {\n callback: (entry: any, params: any) => boolean;\n}\n\nexport interface FunnelTransformOption {\n /** the field to of measure */\n field: string;\n /** the filed of transform ration(the value of next level/ the value of current level)**/\n asTransformRatio?: string;\n /** the filed of reach ration(the value of current level/ the value of prev level))*/\n asReachRatio?: string;\n /** the field of height ratio **/\n asHeightRatio?: string;\n /** the field of value ration(this value of current level / this value of first level ) */\n asValueRatio?: string;\n /** the field of last value ratio(the value of last level / this value of first level) */\n asLastValueRatio?: string;\n /** the field of next value ratio(the value of next level / this value of first level) */\n asNextValueRatio?: string;\n /** the field of current value */\n asCurrentValue?: string;\n /** the field of last value **/\n asLastValue?: string;\n /** the field of next value **/\n asNextValue?: string;\n /** whether or not the last level of the funnel is a cone */\n isCone?: boolean;\n /** whether or not the height will be encode to value**/\n heightVisual?: boolean;\n\n /** the range of value */\n range?: { min: number; max: number };\n}\n\nexport interface JoinTransformOption {\n from?: any[];\n key: string;\n fields: string[];\n values?: string[];\n as?: string[];\n default?: any;\n}\n\nexport interface KDETransformOption {\n dimension?: '1d' | '2d';\n field: string | string[];\n bandwidth?: number;\n extent?: [number, number] | [{ x: number; y: number }, { x: number; y: number }];\n bins?: number | number[];\n as?: string[];\n}\n\nexport interface MapTransformOption {\n callback: (entry: any, params?: any) => any;\n as?: string;\n all?: boolean;\n}\n\nexport interface PickTransformOption {\n as?: string[];\n fields: string[] | FieldGetterFunction[];\n}\n\nexport interface PieTransformOption {\n field: string;\n startAngle?: number;\n endAngle?: number;\n asStartAngle?: string;\n asEndAngle?: string;\n asMiddleAngle?: string;\n asRadian?: string;\n asRatio?: string;\n asQuadrant?: string;\n asK?: string;\n}\n\nexport interface RangeTransformOptions {\n start: number;\n stop: number;\n step?: number;\n as?: string;\n}\n\nexport interface SortTransformOptions {\n sort: SortConfigSpec | ((a: any, b: any) => number);\n}\n\nexport interface FoldTransformOptions {\n fields: string[];\n asKey?: string;\n asValue?: string;\n retains?: string[];\n}\n\nexport interface UnfoldTransformOptions {\n groupBy?: string[] | string;\n keyField: string;\n valueField: string;\n aggregateType?: 'sum' | 'min' | 'max' | 'count' | 'mean';\n}\n\nexport interface StackTransformOptions {\n // TODO: provide more order option referring to d3-shape\n order?: 'positive' | 'negative';\n offset?: 'none' | 'diverging' | 'silhouette' | 'wiggle';\n stackField: string;\n dimensionField: string;\n asStack?: string;\n asPrevStack?: string;\n asPercent?: string;\n asPercentStack?: string;\n asPrevPercentStack?: string;\n asSum?: string;\n}\n\nexport interface DodgeTransformOptions {\n /**\n * the gap for two graphic elements\n */\n innerGap?: number | string;\n /**\n * only used for rect / interval mark\n */\n maxWidth?: number;\n minWidth?: number;\n /** the gap between two category */\n categoryGap?: number | string;\n /**\n * specify the field to dodge, if this field is not specified, we'll use the `groupKey` of Element to dodge\n */\n dodgeBy?: string | string[];\n /**\n * specify the channel to dodge, if this field is not specified, we'll use the channel which is associated to a band scale\n */\n dodgeChannel?: 'x' | 'y';\n}\n\nexport interface JitterTransformOptions {\n bandWidth?: number;\n bandHeight?: number;\n widthRatio?: number;\n heightRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\n\nexport interface JitterXTransformOptions {\n bandWidth?: number;\n widthRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\nexport interface JitterYTransformOptions {\n bandHeight?: number;\n heightRatio?: number;\n random?: (index?: number, total?: number) => number;\n}\n\nexport type CircularRelationTransformOptions = LayoutViewBox & {\n field: string;\n radiusField?: string;\n radiusRange?: [number, number];\n center?: [string | number, string | number];\n startAngle?: number;\n endAngle?: number;\n innerRadius?: string | number;\n outerRadius?: string | number;\n};\n\nexport interface CircularRelationItem {\n x: number;\n y: number;\n radius: number;\n datum: any;\n}\n\nexport interface IdentifierTransformOptions {\n as: string;\n}\n\nexport interface MarkOverlapTransformOptions {\n direction: number;\n delta?: number;\n deltaMul?: number;\n radius?: boolean;\n hideMode?: number;\n forceUpdate?: boolean;\n forceUpdateStamp?: number;\n groupBy?: string;\n}\n\nexport interface SampleTransformOptions {\n size: number;\n factor?: number;\n skipfirst?: boolean;\n yfield?: string;\n groupBy?: string;\n mode?: 'lttb' | 'min' | 'max' | 'average' | 'sum';\n}\n\nexport interface SymmetryTransformOptions {\n channel?: 'x' | 'y';\n align?: 'min' | 'max';\n}\n\nexport interface BinTransformSpec extends BinTransformOption {\n type: 'bin';\n}\n\nexport interface ContourTransformSpec extends ContourTransformOption {\n type: 'contour';\n}\n\nexport interface FilterTransformSpec extends ConvertTransformOptionToSpec<FilterTransformOption> {\n type: 'filter';\n}\n\nexport interface FunnelTransformSpec extends FunnelTransformOption {\n type: 'funnel';\n}\n\nexport interface PieTransformSpec extends PieTransformOption {\n type: 'pie';\n}\n\nexport interface JoinTransformSpec extends ConvertTransformOptionToSpec<Omit<JoinTransformOption, 'from'>> {\n type: 'join';\n from?: TransformFunctionType<JoinTransformOption['from']> | { data: string | IData };\n}\n\nexport interface KDETransformSpec extends KDETransformOption {\n type: 'kde';\n}\n\nexport interface MapTransformSpec extends ConvertTransformOptionToSpec<Omit<MapTransformOption, 'callback'>> {\n type: 'map';\n callback: MapTransformOption['callback'];\n}\n\nexport interface PickTransformSpec extends ConvertTransformOptionToSpec<PickTransformOption> {\n type: 'pick';\n}\nexport interface RangeTransformSpec extends ConvertTransformOptionToSpec<RangeTransformOptions> {\n type: 'range';\n}\n\nexport interface SortTransformSpec extends ConvertTransformOptionToSpec<SortTransformOptions> {\n type: 'sort';\n}\nexport interface StackTransformSpec extends ConvertTransformOptionToSpec<StackTransformOptions> {\n type: 'stack';\n}\nexport interface DodgeTransformSpec extends ConvertTransformOptionToSpec<DodgeTransformOptions> {\n type: 'dodge';\n}\n\nexport interface IdentifierTransformSpec extends ConvertTransformOptionToSpec<IdentifierTransformOptions> {\n type: 'identifier';\n}\n\nexport interface MarkOverlapTransformSpec extends ConvertTransformOptionToSpec<MarkOverlapTransformOptions> {\n type: 'markoverlap';\n}\nexport interface SampleTransformSpec extends ConvertTransformOptionToSpec<SampleTransformOptions> {\n type: 'sampling';\n}\n\nexport interface JitterTransformSpec extends ConvertTransformOptionToSpec<JitterTransformOptions> {\n type: 'jitter';\n}\n\nexport interface JitterXTransformSpec extends ConvertTransformOptionToSpec<JitterXTransformOptions> {\n type: 'jitterX';\n}\n\nexport interface JitterYTransformSpec extends ConvertTransformOptionToSpec<JitterYTransformOptions> {\n type: 'jitterY';\n}\n\nexport type CircularRelationTransformSpec = ConvertTransformOptionToSpec<CircularRelationTransformOptions> & {\n type: 'circularRelation';\n};\n\nexport interface FoldTransformSpec extends ConvertTransformOptionToSpec<FoldTransformOptions> {\n type: 'fold';\n}\n\nexport interface UnfoldTransformSpec extends ConvertTransformOptionToSpec<UnfoldTransformOptions> {\n type: 'unfold';\n}\n\nexport interface SymmetryTransformSpec extends ConvertTransformOptionToSpec<SymmetryTransformOptions> {\n type: 'symmetry';\n}\n\nexport interface BaseTransformSpec {\n /** the type of transform */\n type: string;\n [key: string]: TransformSpecValue | TransformSpecValue[];\n}\n\nexport type TransformSpec =\n | FilterTransformSpec\n | FunnelTransformSpec\n | PieTransformSpec\n | JoinTransformSpec\n | MapTransformSpec\n | PickTransformSpec\n | RangeTransformSpec\n | SortTransformSpec\n | StackTransformSpec\n | DodgeTransformSpec\n | IdentifierTransformSpec\n | BaseTransformSpec\n | MarkOverlapTransformSpec\n | SampleTransformSpec\n | JitterTransformSpec\n | JitterXTransformSpec\n | JitterYTransformSpec\n | CircularRelationTransformSpec\n | FoldTransformSpec\n | UnfoldTransformSpec;\n\nexport interface IProgressiveTransformResult<Output = any> {\n /** is progressive finished */\n unfinished: () => boolean;\n /** return all the result */\n output: () => Output;\n /** the output result of current progressive run */\n progressiveOutput: () => Output;\n /** run in progressive mode */\n progressiveRun: () => void;\n /** release the progressive context */\n release: () => void;\n}\n\nexport interface IProgressiveTransform<Output = any> {\n progressive: IProgressiveTransformResult<Output>;\n}\n\nexport type IFunctionTransform<Options = any, Input = any, Output = any> = (\n options?: Options,\n data?: Input,\n params?: Record<string, any>,\n view?: IView\n) => Output | IProgressiveTransformResult<Output>;\nexport interface ITransform<Options = any, Input = any, Output = any> {\n type: string;\n markPhase?: 'beforeJoin' | 'afterEncode' | 'afterEncodeItems';\n /** 是否支持渐进流程 */\n canProgressive?: boolean;\n /** transform function */\n transform: IFunctionTransform<Options, Input, Output>;\n isBuiltIn?: boolean;\n}\n"]}
@@ -124,14 +124,11 @@ export interface IView {
124
124
  parseSpec: (spec: ViewSpec) => this;
125
125
  updateSpec: (spec: ViewSpec) => this;
126
126
  run: (runningConfig?: IRunningConfig) => this;
127
- runNextTick: (runningConfig?: IRunningConfig) => Promise<this>;
128
- runAsync: (runningConfig?: IRunningConfig) => Promise<this>;
129
- runSync: (runningConfig?: IRunningConfig) => this;
130
127
  runBefore: (callback: (view: IView) => void) => this;
131
128
  runAfter: (callback: (view: IView) => void) => this;
132
129
  theme: (theme: ITheme | string) => this;
133
130
  getCurrentTheme: () => ITheme;
134
- setCurrentTheme: (theme: ITheme | string, render?: boolean) => Promise<this>;
131
+ setCurrentTheme: (theme: ITheme | string, render?: boolean) => this;
135
132
  background: (value?: IColor) => IColor;
136
133
  width: (value?: number) => number;
137
134
  height: (value?: number) => number;
@@ -152,7 +149,7 @@ export interface IView {
152
149
  addEventListener: (type: string, handler: BaseEventHandler, options?: any) => this;
153
150
  removeEventListener: (type: string, handler: BaseEventHandler) => this;
154
151
  emit: <T extends EventEmitter.EventNames<string | symbol>>(event: T, ...args: EventEmitter.EventArgs<string | symbol, T>) => boolean;
155
- resize: (width: number, height: number, render?: boolean) => Promise<this>;
152
+ resize: (width: number, height: number, render?: boolean) => this;
156
153
  traverseMarkTree: (apply: (mark: IMark) => any, filter?: (mark: IMark) => boolean, leafFirst?: boolean) => this;
157
154
  getLayoutState: () => string;
158
155
  updateLayoutTag: () => this;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/view.ts"],"names":[],"mappings":"","file":"view.js","sourcesContent":["import type { EventEmitter, IBounds, ILogger } from '@visactor/vutils';\nimport type { EnvType, IStage, IColor, IOption3D, ILayer, IStageParams } from '@visactor/vrender-core';\nimport type { CoordinateType } from '@visactor/vgrammar-coordinate';\nimport type { DataSpec } from './data';\nimport type { SignalFunctionType, SignalSpec } from './signal';\nimport type {\n IData,\n ISignal,\n IScale,\n IMark,\n IGrammarBase,\n ICoordinate,\n IGlyphMark,\n IGroupMark,\n IComponent\n} from './grammar';\nimport type { ScaleSpec, GrammarScaleType } from './scale';\nimport type { MarkSpec, MarkType } from './mark';\nimport type { Hooks } from './hooks';\nimport type { ProjectionSpec } from './projection';\nimport type { BaseEventHandler, EventSpec } from './event';\nimport type { CommonPaddingSpec } from './base';\nimport type { IMorphAnimationConfig } from './morph';\nimport type { IBaseAnimate } from './animate';\nimport type { IRenderer } from './renderer';\nimport type { IAxis, IDatazoom, IGrid, ILabel, ILegend, IPlayer, IScrollbar, ISlider, ITitle } from './component';\nimport type { CoordinateSpec } from './coordinate';\nimport type { ITheme } from './theme';\nimport type { IInteraction, InteractionSpec } from './interaction';\n\nexport interface IViewThemeConfig {\n labelMonospace?: boolean;\n}\n\n/**\n * 获取state相关配置\n */\nexport interface IViewStateOptions {\n signals?: (name?: string, operator?: any) => boolean;\n data?: (name?: string, object?: any) => boolean;\n recurse?: boolean;\n}\n\nexport interface IEnvironmentOptions {\n /** 环境参数 */\n mode?: EnvType;\n /**\n * 环境带的配置\n */\n modeParams?: any;\n}\n\nexport interface IRendererOptions extends Partial<IStageParams> {\n /** 非浏览器环境下,如小程序,需要传入经过包装的伪 canvas 实例 */\n renderCanvas?: string | HTMLCanvasElement;\n /** vRender stage */\n stage?: IStage;\n rendererTitle?: string;\n /** vRender layer */\n layer?: ILayer;\n}\n\nexport interface ILayoutOptions {\n parseMarkBounds?: (bounds: IBounds, mark: IMark) => IBounds;\n doLayout?: (marks: IMark[], options: ILayoutOptions, view: IView) => void;\n}\n\n/** 事件配置 */\nexport interface IViewEventConfig {\n /**\n * preventDefaults相关配置\n */\n defaults?: {\n prevent?: boolean | Record<string, boolean>;\n allow?: boolean | Record<string, boolean>;\n };\n /**\n * whether permit events of view\n */\n view?: boolean | Record<string, boolean>;\n /** disable all the events */\n disable?: boolean;\n /** use gesture events or not */\n gesture?: boolean;\n /** use drag events or not */\n drag?: boolean;\n}\n\nexport interface srIOption3DType extends IOption3D {\n enable?: boolean;\n /* 是否支持3d视角变换 */\n enableView3dTranform?: boolean;\n}\nexport interface IViewOptions extends IEnvironmentOptions, IRendererOptions, ILayoutOptions {\n width?: number;\n height?: number;\n padding?: CommonPaddingSpec;\n autoFit?: boolean;\n\n options3d?: srIOption3DType;\n /** 外部传入的logger方法 */\n logger?: ILogger;\n /**\n * 0 - None\n * 1 - Error\n * 2 - Warn\n * 3 - Info\n * 4 - Debug\n */\n logLevel?: number;\n\n /** 生命周期等事件钩子 */\n hooks?: Hooks;\n\n /**\n * 事件相关配置\n * {\n * defaults: {\n * prevent: ['mousemove', 'mouseenter']\n * }\n * }\n */\n eventConfig?: IViewEventConfig;\n background?: IColor;\n disableTheme?: boolean;\n}\n\nexport interface IRunningConfig {\n /** whether enable reusing of grammar */\n reuse?: boolean;\n /** whether enable morph */\n morph?: boolean;\n /** force all marks to participate in morphing */\n morphAll?: boolean;\n /** morphing animation config */\n animation?: IMorphAnimationConfig;\n /** whether apply exit animations for released marks */\n enableExitAnimation?: boolean;\n}\n\nexport interface IView {\n readonly renderer: IRenderer;\n readonly rootMark: IGroupMark;\n readonly animate: IBaseAnimate;\n readonly grammars: IRecordedGrammars;\n readonly logger: ILogger;\n\n // --- Grammar API ---\n signal: <T>(value?: T, update?: SignalFunctionType<T>) => ISignal<T>;\n data: (values?: any[]) => IData;\n scale: (type: GrammarScaleType) => IScale;\n coordinate: (type: CoordinateType) => ICoordinate;\n mark: (\n type: MarkType,\n group: IGroupMark | string,\n markOptions?: { glyphType?: string; componentType?: string; mode?: '2d' | '3d' }\n ) => IMark;\n group: (group: IGroupMark | string) => IGroupMark;\n glyph: (glyphType: string, group: IGroupMark | string) => IGlyphMark;\n component: (componentType: string, group: IGroupMark | string, mode?: '2d' | '3d') => IComponent;\n axis: (group: IGroupMark | string, mode?: '2d' | '3d') => IAxis;\n grid: (group: IGroupMark | string, mode?: '2d' | '3d') => IGrid;\n legend: (group: IGroupMark | string) => ILegend;\n slider: (group: IGroupMark | string) => ISlider;\n label: (group: IGroupMark | string) => ILabel;\n datazoom: (group: IGroupMark | string) => IDatazoom;\n player: (group: IGroupMark | string) => IPlayer;\n title: (group: IGroupMark | string) => ITitle;\n scrollbar: (group: IGroupMark | string) => IScrollbar;\n\n interaction: (type: string, spec: Partial<InteractionSpec>) => IInteraction;\n removeInteraction: (type: string) => this;\n removeAllInteractions: () => this;\n\n addGrammar: (grammar: IGrammarBase) => this;\n removeGrammar: (grammar: string | IGrammarBase) => this;\n removeAllGrammars: () => this;\n removeAllGraphicItems: () => this;\n\n getGrammarById: (id: string) => IGrammarBase | null;\n getCustomizedById: (id: string) => IGrammarBase | null;\n getSignalById: <T>(id: string) => ISignal<T> | null;\n getDataById: (id: string) => IData | null;\n getScaleById: (id: string) => IScale | null;\n getCoordinateById: (id: string) => ICoordinate | null;\n getMarkById: (id: string) => IMark | null;\n getGrammarsByName: (name: string) => IGrammarBase[];\n getGrammarsByType: (grammarType: string) => IGrammarBase[];\n getMarksByType: (markType: string) => IMark[];\n getMarksByName: (name: string) => IMark[] | null;\n getMarksBySelector: (selector: string | string[] | IMark | IMark[]) => IMark[] | null;\n\n commit: (grammar: IGrammarBase) => this;\n\n // --- Spec API ---\n parseSpec: (spec: ViewSpec) => this;\n updateSpec: (spec: ViewSpec) => this;\n\n // --- Evaluate API ---\n run: (runningConfig?: IRunningConfig) => this;\n runNextTick: (runningConfig?: IRunningConfig) => Promise<this>;\n runAsync: (runningConfig?: IRunningConfig) => Promise<this>;\n runSync: (runningConfig?: IRunningConfig) => this;\n runBefore: (callback: (view: IView) => void) => this;\n runAfter: (callback: (view: IView) => void) => this;\n\n // --- Theme API ---\n theme: (theme: ITheme | string) => this;\n getCurrentTheme: () => ITheme;\n setCurrentTheme: (theme: ITheme | string, render?: boolean) => Promise<this>;\n\n // --- Global Config API ---\n background: (value?: IColor) => IColor;\n width: (value?: number) => number;\n height: (value?: number) => number;\n viewWidth: (value?: number) => number;\n viewHeight: (value?: number) => number;\n padding: (p?: number | { left?: number; right?: number; top?: number; bottom?: number }) => {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n getViewBox: () => IBounds;\n\n // --- Event API ---\n addEventListener: (type: string, handler: BaseEventHandler, options?: any) => this;\n removeEventListener: (type: string, handler: BaseEventHandler) => this;\n\n // --- Other API ---\n emit: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n\n resize: (width: number, height: number, render?: boolean) => Promise<this>;\n traverseMarkTree: (apply: (mark: IMark) => any, filter?: (mark: IMark) => boolean, leafFirst?: boolean) => this;\n\n getLayoutState: () => string;\n updateLayoutTag: () => this;\n\n pauseProgressive: () => boolean;\n resumeProgressive: () => boolean;\n restartProgressive: () => boolean;\n\n release: () => void;\n getImageBuffer: () => Buffer;\n}\n\nexport interface IViewConstructor {\n new (options?: IViewOptions, config?: IViewThemeConfig): IView;\n}\n\nexport interface ViewSpec {\n /** 梳理详细配置 */\n theme?: string;\n background?: IColor;\n width?: number;\n height?: number;\n padding?: number | { left?: number; right?: number; top?: number; bottom?: number };\n signals?: SignalSpec<any>[];\n projections?: ProjectionSpec[];\n data?: DataSpec[];\n scales?: ScaleSpec[];\n coordinates?: CoordinateSpec[];\n marks?: MarkSpec[];\n events?: EventSpec[];\n interactions?: InteractionSpec[];\n animation?: boolean;\n}\n\nexport interface IRecordedGrammars {\n record: (grammar: IGrammarBase) => this;\n unrecord: (grammar: IGrammarBase) => this;\n\n size: () => number;\n\n getSignal: <T>(key: string) => ISignal<T> | null;\n getData: (key: string) => IData | null;\n getScale: (key: string) => IScale | null;\n getCoordinate: (key: string) => ICoordinate | null;\n getMark: (key: string) => IMark | null;\n getCustomized: (key: string) => IGrammarBase | null;\n getGrammar: (key: string) => IGrammarBase | null;\n\n getAllSignals: () => ISignal<any>[];\n getAllData: () => IData[];\n getAllScales: () => IScale[];\n getAllCoordinates: () => ICoordinate[];\n getAllMarks: () => IMark[];\n getAllCustomized: () => IGrammarBase[];\n\n clear: () => void;\n\n traverse: (func: (grammar: IGrammarBase) => boolean | void) => void;\n find: (func: (grammar: IGrammarBase) => boolean) => IGrammarBase | null;\n filter: (func: (grammar: IGrammarBase) => boolean) => IGrammarBase[];\n\n release: () => void;\n}\n\nexport interface IMarkTreeNode {\n mark: IMark;\n parent: IMarkTreeNode;\n children: IMarkTreeNode[];\n}\n\nexport interface IRecordedTreeGrammars extends IRecordedGrammars {\n getAllMarkNodes: () => IMarkTreeNode[];\n}\n"]}
1
+ {"version":3,"sources":["../src/types/view.ts"],"names":[],"mappings":"","file":"view.js","sourcesContent":["import type { EventEmitter, IBounds, ILogger } from '@visactor/vutils';\nimport type { EnvType, IStage, IColor, IOption3D, ILayer, IStageParams } from '@visactor/vrender-core';\nimport type { CoordinateType } from '@visactor/vgrammar-coordinate';\nimport type { DataSpec } from './data';\nimport type { SignalFunctionType, SignalSpec } from './signal';\nimport type {\n IData,\n ISignal,\n IScale,\n IMark,\n IGrammarBase,\n ICoordinate,\n IGlyphMark,\n IGroupMark,\n IComponent\n} from './grammar';\nimport type { ScaleSpec, GrammarScaleType } from './scale';\nimport type { MarkSpec, MarkType } from './mark';\nimport type { Hooks } from './hooks';\nimport type { ProjectionSpec } from './projection';\nimport type { BaseEventHandler, EventSpec } from './event';\nimport type { CommonPaddingSpec } from './base';\nimport type { IMorphAnimationConfig } from './morph';\nimport type { IBaseAnimate } from './animate';\nimport type { IRenderer } from './renderer';\nimport type { IAxis, IDatazoom, IGrid, ILabel, ILegend, IPlayer, IScrollbar, ISlider, ITitle } from './component';\nimport type { CoordinateSpec } from './coordinate';\nimport type { ITheme } from './theme';\nimport type { IInteraction, InteractionSpec } from './interaction';\n\nexport interface IViewThemeConfig {\n labelMonospace?: boolean;\n}\n\n/**\n * 获取state相关配置\n */\nexport interface IViewStateOptions {\n signals?: (name?: string, operator?: any) => boolean;\n data?: (name?: string, object?: any) => boolean;\n recurse?: boolean;\n}\n\nexport interface IEnvironmentOptions {\n /** 环境参数 */\n mode?: EnvType;\n /**\n * 环境带的配置\n */\n modeParams?: any;\n}\n\nexport interface IRendererOptions extends Partial<IStageParams> {\n /** 非浏览器环境下,如小程序,需要传入经过包装的伪 canvas 实例 */\n renderCanvas?: string | HTMLCanvasElement;\n /** vRender stage */\n stage?: IStage;\n rendererTitle?: string;\n /** vRender layer */\n layer?: ILayer;\n}\n\nexport interface ILayoutOptions {\n parseMarkBounds?: (bounds: IBounds, mark: IMark) => IBounds;\n doLayout?: (marks: IMark[], options: ILayoutOptions, view: IView) => void;\n}\n\n/** 事件配置 */\nexport interface IViewEventConfig {\n /**\n * preventDefaults相关配置\n */\n defaults?: {\n prevent?: boolean | Record<string, boolean>;\n allow?: boolean | Record<string, boolean>;\n };\n /**\n * whether permit events of view\n */\n view?: boolean | Record<string, boolean>;\n /** disable all the events */\n disable?: boolean;\n /** use gesture events or not */\n gesture?: boolean;\n /** use drag events or not */\n drag?: boolean;\n}\n\nexport interface srIOption3DType extends IOption3D {\n enable?: boolean;\n /* 是否支持3d视角变换 */\n enableView3dTranform?: boolean;\n}\nexport interface IViewOptions extends IEnvironmentOptions, IRendererOptions, ILayoutOptions {\n width?: number;\n height?: number;\n padding?: CommonPaddingSpec;\n autoFit?: boolean;\n\n options3d?: srIOption3DType;\n /** 外部传入的logger方法 */\n logger?: ILogger;\n /**\n * 0 - None\n * 1 - Error\n * 2 - Warn\n * 3 - Info\n * 4 - Debug\n */\n logLevel?: number;\n\n /** 生命周期等事件钩子 */\n hooks?: Hooks;\n\n /**\n * 事件相关配置\n * {\n * defaults: {\n * prevent: ['mousemove', 'mouseenter']\n * }\n * }\n */\n eventConfig?: IViewEventConfig;\n background?: IColor;\n disableTheme?: boolean;\n}\n\nexport interface IRunningConfig {\n /** whether enable reusing of grammar */\n reuse?: boolean;\n /** whether enable morph */\n morph?: boolean;\n /** force all marks to participate in morphing */\n morphAll?: boolean;\n /** morphing animation config */\n animation?: IMorphAnimationConfig;\n /** whether apply exit animations for released marks */\n enableExitAnimation?: boolean;\n}\n\nexport interface IView {\n readonly renderer: IRenderer;\n readonly rootMark: IGroupMark;\n readonly animate: IBaseAnimate;\n readonly grammars: IRecordedGrammars;\n readonly logger: ILogger;\n\n // --- Grammar API ---\n signal: <T>(value?: T, update?: SignalFunctionType<T>) => ISignal<T>;\n data: (values?: any[]) => IData;\n scale: (type: GrammarScaleType) => IScale;\n coordinate: (type: CoordinateType) => ICoordinate;\n mark: (\n type: MarkType,\n group: IGroupMark | string,\n markOptions?: { glyphType?: string; componentType?: string; mode?: '2d' | '3d' }\n ) => IMark;\n group: (group: IGroupMark | string) => IGroupMark;\n glyph: (glyphType: string, group: IGroupMark | string) => IGlyphMark;\n component: (componentType: string, group: IGroupMark | string, mode?: '2d' | '3d') => IComponent;\n axis: (group: IGroupMark | string, mode?: '2d' | '3d') => IAxis;\n grid: (group: IGroupMark | string, mode?: '2d' | '3d') => IGrid;\n legend: (group: IGroupMark | string) => ILegend;\n slider: (group: IGroupMark | string) => ISlider;\n label: (group: IGroupMark | string) => ILabel;\n datazoom: (group: IGroupMark | string) => IDatazoom;\n player: (group: IGroupMark | string) => IPlayer;\n title: (group: IGroupMark | string) => ITitle;\n scrollbar: (group: IGroupMark | string) => IScrollbar;\n\n interaction: (type: string, spec: Partial<InteractionSpec>) => IInteraction;\n removeInteraction: (type: string) => this;\n removeAllInteractions: () => this;\n\n addGrammar: (grammar: IGrammarBase) => this;\n removeGrammar: (grammar: string | IGrammarBase) => this;\n removeAllGrammars: () => this;\n removeAllGraphicItems: () => this;\n\n getGrammarById: (id: string) => IGrammarBase | null;\n getCustomizedById: (id: string) => IGrammarBase | null;\n getSignalById: <T>(id: string) => ISignal<T> | null;\n getDataById: (id: string) => IData | null;\n getScaleById: (id: string) => IScale | null;\n getCoordinateById: (id: string) => ICoordinate | null;\n getMarkById: (id: string) => IMark | null;\n getGrammarsByName: (name: string) => IGrammarBase[];\n getGrammarsByType: (grammarType: string) => IGrammarBase[];\n getMarksByType: (markType: string) => IMark[];\n getMarksByName: (name: string) => IMark[] | null;\n getMarksBySelector: (selector: string | string[] | IMark | IMark[]) => IMark[] | null;\n\n commit: (grammar: IGrammarBase) => this;\n\n // --- Spec API ---\n parseSpec: (spec: ViewSpec) => this;\n updateSpec: (spec: ViewSpec) => this;\n\n // --- Evaluate API ---\n run: (runningConfig?: IRunningConfig) => this;\n runBefore: (callback: (view: IView) => void) => this;\n runAfter: (callback: (view: IView) => void) => this;\n\n // --- Theme API ---\n theme: (theme: ITheme | string) => this;\n getCurrentTheme: () => ITheme;\n setCurrentTheme: (theme: ITheme | string, render?: boolean) => this;\n\n // --- Global Config API ---\n background: (value?: IColor) => IColor;\n width: (value?: number) => number;\n height: (value?: number) => number;\n viewWidth: (value?: number) => number;\n viewHeight: (value?: number) => number;\n padding: (p?: number | { left?: number; right?: number; top?: number; bottom?: number }) => {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n getViewBox: () => IBounds;\n\n // --- Event API ---\n addEventListener: (type: string, handler: BaseEventHandler, options?: any) => this;\n removeEventListener: (type: string, handler: BaseEventHandler) => this;\n\n // --- Other API ---\n emit: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n\n resize: (width: number, height: number, render?: boolean) => this;\n traverseMarkTree: (apply: (mark: IMark) => any, filter?: (mark: IMark) => boolean, leafFirst?: boolean) => this;\n\n getLayoutState: () => string;\n updateLayoutTag: () => this;\n\n pauseProgressive: () => boolean;\n resumeProgressive: () => boolean;\n restartProgressive: () => boolean;\n\n release: () => void;\n getImageBuffer: () => Buffer;\n}\n\nexport interface IViewConstructor {\n new (options?: IViewOptions, config?: IViewThemeConfig): IView;\n}\n\nexport interface ViewSpec {\n /** 梳理详细配置 */\n theme?: string;\n background?: IColor;\n width?: number;\n height?: number;\n padding?: number | { left?: number; right?: number; top?: number; bottom?: number };\n signals?: SignalSpec<any>[];\n projections?: ProjectionSpec[];\n data?: DataSpec[];\n scales?: ScaleSpec[];\n coordinates?: CoordinateSpec[];\n marks?: MarkSpec[];\n events?: EventSpec[];\n interactions?: InteractionSpec[];\n animation?: boolean;\n}\n\nexport interface IRecordedGrammars {\n record: (grammar: IGrammarBase) => this;\n unrecord: (grammar: IGrammarBase) => this;\n\n size: () => number;\n\n getSignal: <T>(key: string) => ISignal<T> | null;\n getData: (key: string) => IData | null;\n getScale: (key: string) => IScale | null;\n getCoordinate: (key: string) => ICoordinate | null;\n getMark: (key: string) => IMark | null;\n getCustomized: (key: string) => IGrammarBase | null;\n getGrammar: (key: string) => IGrammarBase | null;\n\n getAllSignals: () => ISignal<any>[];\n getAllData: () => IData[];\n getAllScales: () => IScale[];\n getAllCoordinates: () => ICoordinate[];\n getAllMarks: () => IMark[];\n getAllCustomized: () => IGrammarBase[];\n\n clear: () => void;\n\n traverse: (func: (grammar: IGrammarBase) => boolean | void) => void;\n find: (func: (grammar: IGrammarBase) => boolean) => IGrammarBase | null;\n filter: (func: (grammar: IGrammarBase) => boolean) => IGrammarBase[];\n\n release: () => void;\n}\n\nexport interface IMarkTreeNode {\n mark: IMark;\n parent: IMarkTreeNode;\n children: IMarkTreeNode[];\n}\n\nexport interface IRecordedTreeGrammars extends IRecordedGrammars {\n getAllMarkNodes: () => IMarkTreeNode[];\n}\n"]}
package/es/util/data.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  import type { DataFormatSpec, Datum } from '../types';
2
2
  export declare const parseFormat: (data: any, format?: DataFormatSpec) => Datum[];
3
- export declare const load: (url: string) => Promise<string>;
package/es/util/data.js CHANGED
@@ -1,29 +1,3 @@
1
- var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
- return new (P || (P = Promise))((function(resolve, reject) {
3
- function fulfilled(value) {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- }
10
- function rejected(value) {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- }
17
- function step(result) {
18
- var value;
19
- result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
- resolve(value);
21
- }))).then(fulfilled, rejected);
22
- }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- }));
25
- };
26
-
27
1
  import { DataSet, DataView, csvParser, dsvParser, tsvParser } from "@visactor/vdataset";
28
2
 
29
3
  import { array, isString } from "@visactor/vutils";
@@ -49,12 +23,4 @@ export const parseFormat = (data, format) => {
49
23
  } : {};
50
24
  return parsers[format.type](data, options, new DataView(new DataSet));
51
25
  };
52
-
53
- export const load = url => __awaiter(void 0, void 0, void 0, (function*() {
54
- try {
55
- return (yield fetch(url)).text();
56
- } catch (error) {
57
- return null;
58
- }
59
- }));
60
26
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,GAAW,CAAC,IAAY,EAAE,UAAe,EAAE,EAAE,QAAkB,EAAE,EAAE;IACjF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAA2B;IACtC,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,MAAuB,EAAW,EAAE;IACzE,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAO,GAAW,EAAE,EAAE;IACxC,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAA,CAAC","file":"data.js","sourcesContent":["import type { Parser } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, DataView, csvParser, dsvParser, tsvParser } from '@visactor/vdataset';\nimport type { DataFormatSpec, Datum } from '../types';\nimport { array, isString } from '@visactor/vutils';\n\nconst jsonParser: Parser = (data: string, options: any = {}, dataView: DataView) => {\n if (!isString(data)) {\n return array(data);\n }\n try {\n return array(JSON.parse(data));\n } catch (e) {\n return [];\n }\n};\n\nconst parsers: Record<string, Parser> = {\n csv: csvParser,\n dsv: dsvParser,\n tsv: tsvParser,\n json: jsonParser\n};\n\nexport const parseFormat = (data: any, format?: DataFormatSpec): Datum[] => {\n if (!format || !parsers[format.type]) {\n return array(data);\n }\n const options = format.type === 'dsv' ? { delimiter: format.delimiter } : {};\n return parsers[format.type](data, options, new DataView(new DataSet()));\n};\n\n// TODO: use ResourceLoader instead\n// resource loader do not support plain text loading for now\nexport const load = async (url: string) => {\n try {\n const response = await fetch(url);\n return response.text();\n } catch (error) {\n return null;\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,GAAW,CAAC,IAAY,EAAE,UAAe,EAAE,EAAE,QAAkB,EAAE,EAAE;IACjF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAA2B;IACtC,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,MAAuB,EAAW,EAAE;IACzE,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC","file":"data.js","sourcesContent":["import type { Parser } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, DataView, csvParser, dsvParser, tsvParser } from '@visactor/vdataset';\nimport type { DataFormatSpec, Datum } from '../types';\nimport { array, isString } from '@visactor/vutils';\n\nconst jsonParser: Parser = (data: string, options: any = {}, dataView: DataView) => {\n if (!isString(data)) {\n return array(data);\n }\n try {\n return array(JSON.parse(data));\n } catch (e) {\n return [];\n }\n};\n\nconst parsers: Record<string, Parser> = {\n csv: csvParser,\n dsv: dsvParser,\n tsv: tsvParser,\n json: jsonParser\n};\n\nexport const parseFormat = (data: any, format?: DataFormatSpec): Datum[] => {\n if (!format || !parsers[format.type]) {\n return array(data);\n }\n const options = format.type === 'dsv' ? { delimiter: format.delimiter } : {};\n return parsers[format.type](data, options, new DataView(new DataSet()));\n};\n"]}
package/es/view/View.d.ts CHANGED
@@ -14,7 +14,6 @@ export default class View extends EventEmitter implements IView {
14
14
  hooks: Hooks;
15
15
  logger: ILogger;
16
16
  grammars: IRecordedGrammars;
17
- private _isReleased;
18
17
  private _spec;
19
18
  private _config;
20
19
  private _options;
@@ -25,8 +24,6 @@ export default class View extends EventEmitter implements IView {
25
24
  private _eventListeners;
26
25
  private _theme;
27
26
  private _dataflow;
28
- private _currentDataflow?;
29
- private _running?;
30
27
  private _needBuildLayoutTree?;
31
28
  private _layoutState?;
32
29
  private _layoutMarks?;
@@ -83,7 +80,7 @@ export default class View extends EventEmitter implements IView {
83
80
  private parseMarkSpec;
84
81
  theme(theme: ITheme | string): this;
85
82
  getCurrentTheme(): ITheme;
86
- setCurrentTheme(theme: ITheme | string, render?: boolean): Promise<this>;
83
+ setCurrentTheme(theme: ITheme | string, render?: boolean): this;
87
84
  background(value?: IColor): IColor;
88
85
  width(value?: number): number;
89
86
  height(value?: number): number;
@@ -110,13 +107,8 @@ export default class View extends EventEmitter implements IView {
110
107
  private handleRenderEnd;
111
108
  commit(grammar: IGrammarBase): this;
112
109
  run(runningConfig?: IRunningConfig): this;
113
- runSync(runningConfig?: IRunningConfig): this;
114
- isRunning(): Promise<this>;
115
- runAsync(runningConfig?: IRunningConfig): Promise<this>;
116
- runNextTick(runningConfig?: IRunningConfig): Promise<this>;
117
110
  private doRender;
118
111
  private evaluate;
119
- private evaluateSync;
120
112
  private reuseCachedGrammars;
121
113
  private detachCachedGrammar;
122
114
  private releaseCachedGrammars;
@@ -128,7 +120,7 @@ export default class View extends EventEmitter implements IView {
128
120
  private _unBindResizeEvent;
129
121
  private _getContainerSize;
130
122
  private _onResize;
131
- resize(width: number, height: number, render?: boolean): Promise<this>;
123
+ resize(width: number, height: number, render?: boolean): this;
132
124
  private _resizeRenderer;
133
125
  private bindEvents;
134
126
  event(eventSpec: EventSpec): void;
package/es/view/View.js CHANGED
@@ -1,29 +1,3 @@
1
- var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
- return new (P || (P = Promise))((function(resolve, reject) {
3
- function fulfilled(value) {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- }
10
- function rejected(value) {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- }
17
- function step(result) {
18
- var value;
19
- result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
- resolve(value);
21
- }))).then(fulfilled, rejected);
22
- }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- }));
25
- };
26
-
27
1
  import { EventEmitter, debounce, isObject, isString, getContainerSize, Logger, array, isNil } from "@visactor/vutils";
28
2
 
29
3
  import { vglobal } from "@visactor/vrender-core";
@@ -367,17 +341,10 @@ export default class View extends EventEmitter {
367
341
  return this._theme;
368
342
  }
369
343
  setCurrentTheme(theme, render = !0) {
370
- return __awaiter(this, void 0, void 0, (function*() {
371
- if (!this._isReleased) {
372
- if (this.theme(theme), this.grammars.getAllMarks().forEach((mark => {
373
- mark.commit();
374
- })), render) {
375
- if (yield this.evaluate(), this._isReleased) return;
376
- this.renderer.render(!0);
377
- } else yield this._dataflow.evaluate();
378
- return this;
379
- }
380
- }));
344
+ return this.theme(theme), this.grammars.getAllMarks().forEach((mark => {
345
+ mark.commit();
346
+ })), render ? (this.evaluate(), this.renderer.render(!0)) : this._dataflow.evaluate(),
347
+ this;
381
348
  }
382
349
  background(value) {
383
350
  return arguments.length ? (this._background = value, this.renderer.background(value),
@@ -462,71 +429,23 @@ export default class View extends EventEmitter {
462
429
  run(runningConfig) {
463
430
  return this.evaluate(runningConfig), this;
464
431
  }
465
- runSync(runningConfig) {
466
- return this.evaluateSync(runningConfig), this;
467
- }
468
- isRunning() {
469
- return this._running;
470
- }
471
- runAsync(runningConfig) {
472
- return __awaiter(this, void 0, void 0, (function*() {
473
- if (this._isReleased) return;
474
- for (;this._running && (yield this._running, !this._isReleased); ) ;
475
- const clear = () => {
476
- this._running = null;
477
- };
478
- return (this._running = this.evaluate(runningConfig)).then(clear, clear), this._running;
479
- }));
480
- }
481
- runNextTick(runningConfig) {
482
- return __awaiter(this, void 0, void 0, (function*() {
483
- return this._currentDataflow || (this._currentDataflow = Promise.resolve().then((() => this.runAsync(runningConfig).then((() => {
484
- this._currentDataflow = null;
485
- })).catch((e => {
486
- this._currentDataflow = null, this.logger.error(e);
487
- }))))), yield this._currentDataflow, this;
488
- }));
489
- }
490
432
  doRender(immediately) {
491
433
  this.emit(HOOK_EVENT.BEFORE_DO_RENDER), this.renderer && (this._progressiveMarks || this.animate.animate(),
492
434
  this.renderer.render(immediately), this.handleRenderEnd()), this.emit(HOOK_EVENT.AFTER_DO_RENDER);
493
435
  }
494
436
  evaluate(runningConfig) {
495
437
  var _a, _b, _c, _d;
496
- return __awaiter(this, void 0, void 0, (function*() {
497
- if (this._isReleased) return;
498
- const normalizedRunningConfig = normalizeRunningConfig(runningConfig), grammarWillDetach = this._cachedGrammars.size() > 0;
499
- grammarWillDetach && (this.reuseCachedGrammars(normalizedRunningConfig), this.detachCachedGrammar());
500
- const hasResize = this._resizeRenderer(), hasUpdate = this._dataflow.hasCommitted();
501
- if (!(grammarWillDetach || hasUpdate || this._layoutState || hasResize)) return this;
502
- if (this.clearProgressive(), null === (_a = this.renderer) || void 0 === _a || _a.preventRender(!0),
503
- yield this._dataflow.evaluate(), !this._isReleased) {
504
- if (this._needBuildLayoutTree && (this.buildLayoutTree(), this._needBuildLayoutTree = !1),
505
- this._layoutState) {
506
- if (this._layoutState = LayoutState.layouting, this.doLayout(), this._dataflow.hasCommitted() && (this._layoutState = LayoutState.reevaluate,
507
- yield this._dataflow.evaluate(), this._isReleased)) return;
508
- this._layoutState = LayoutState.after, (null === (_b = this._layoutMarks) || void 0 === _b ? void 0 : _b.length) && this.handleLayoutEnd();
509
- }
510
- return null === (_c = this.renderer) || void 0 === _c || _c.preventRender(!1), this._layoutState = null,
511
- this.findProgressiveMarks(), this._resizeRenderer(), this.doRender(!1), null === (_d = this._willMorphMarks) || void 0 === _d || _d.forEach((morphMarks => {
512
- this._morph.morph(morphMarks.prev, morphMarks.next, normalizedRunningConfig);
513
- })), this._willMorphMarks = null, this.releaseCachedGrammars(normalizedRunningConfig),
514
- this.doPreProgressive(), this;
515
- }
516
- }));
517
- }
518
- evaluateSync(runningConfig) {
519
- var _a, _b;
520
438
  const normalizedRunningConfig = normalizeRunningConfig(runningConfig), grammarWillDetach = this._cachedGrammars.size() > 0;
521
439
  grammarWillDetach && (this.reuseCachedGrammars(normalizedRunningConfig), this.detachCachedGrammar());
522
440
  const hasResize = this._resizeRenderer(), hasUpdate = this._dataflow.hasCommitted();
523
441
  return grammarWillDetach || hasUpdate || this._layoutState || hasResize ? (this.clearProgressive(),
524
- this._dataflow.evaluateSync(), this._needBuildLayoutTree && (this.buildLayoutTree(),
525
- this._needBuildLayoutTree = !1), this._layoutState && (this._layoutState = LayoutState.layouting,
526
- this.doLayout(), this._dataflow.hasCommitted() && (this._layoutState = LayoutState.reevaluate,
527
- this._dataflow.evaluateSync()), this._layoutState = LayoutState.after, (null === (_a = this._layoutMarks) || void 0 === _a ? void 0 : _a.length) && this.handleLayoutEnd()),
528
- this._layoutState = null, this.findProgressiveMarks(), this._resizeRenderer(), this.doRender(!0),
529
- null === (_b = this._willMorphMarks) || void 0 === _b || _b.forEach((morphMarks => {
442
+ null === (_a = this.renderer) || void 0 === _a || _a.preventRender(!0), this._dataflow.evaluate(),
443
+ this._needBuildLayoutTree && (this.buildLayoutTree(), this._needBuildLayoutTree = !1),
444
+ this._layoutState && (this._layoutState = LayoutState.layouting, this.doLayout(),
445
+ this._dataflow.hasCommitted() && (this._layoutState = LayoutState.reevaluate, this._dataflow.evaluate()),
446
+ this._layoutState = LayoutState.after, (null === (_b = this._layoutMarks) || void 0 === _b ? void 0 : _b.length) && this.handleLayoutEnd()),
447
+ null === (_c = this.renderer) || void 0 === _c || _c.preventRender(!1), this._layoutState = null,
448
+ this.findProgressiveMarks(), this._resizeRenderer(), this.doRender(!1), null === (_d = this._willMorphMarks) || void 0 === _d || _d.forEach((morphMarks => {
530
449
  this._morph.morph(morphMarks.prev, morphMarks.next, normalizedRunningConfig);
531
450
  })), this._willMorphMarks = null, this.releaseCachedGrammars(normalizedRunningConfig),
532
451
  this.doPreProgressive(), this) : this;
@@ -633,13 +552,10 @@ export default class View extends EventEmitter {
633
552
  return null;
634
553
  }
635
554
  resize(width, height, render = !0) {
636
- return __awaiter(this, void 0, void 0, (function*() {
637
- let needDataflow = !1;
638
- return width !== this.width() && (needDataflow = !0, this.updateSignal(SIGNAL_WIDTH, width)),
639
- height !== this.height() && (needDataflow = !0, this.updateSignal(SIGNAL_HEIGHT, height)),
640
- needDataflow && (render ? yield this.evaluate() : yield this._dataflow.evaluate()),
641
- this;
642
- }));
555
+ let needDataflow = !1;
556
+ return width !== this.width() && (needDataflow = !0, this.updateSignal(SIGNAL_WIDTH, width)),
557
+ height !== this.height() && (needDataflow = !0, this.updateSignal(SIGNAL_HEIGHT, height)),
558
+ needDataflow && (render ? this.evaluate() : this._dataflow.evaluate()), this;
643
559
  }
644
560
  _resizeRenderer() {
645
561
  const width = this.width(), height = this.height();
@@ -672,7 +588,7 @@ export default class View extends EventEmitter {
672
588
  hasCommitted = !0);
673
589
  }));
674
590
  }
675
- needPreventDefault && evt.preventDefault(), consume && evt.stopPropagation(), hasCommitted && this.runAsync();
591
+ needPreventDefault && evt.preventDefault(), consume && evt.stopPropagation(), hasCommitted && this.run();
676
592
  }), {
677
593
  throttle: throttle,
678
594
  debounce: debounce
@@ -767,8 +683,8 @@ export default class View extends EventEmitter {
767
683
  this._eventListeners = [], this._eventConfig = initializeEventConfig(this._options.eventConfig),
768
684
  this._theme = this._options.disableTheme ? null : ThemeManager.getDefaultTheme(),
769
685
  this.parseBuiltIn(), configureEnvironment(this._options), this.initializeRenderer(),
770
- this._eventConfig.disable || this.initEvent(), this._bindResizeEvent(), this._currentDataflow = null,
771
- this._needBuildLayoutTree = !0, this._layoutState = LayoutState.before, this.theme(this._theme);
686
+ this._eventConfig.disable || this.initEvent(), this._bindResizeEvent(), this._needBuildLayoutTree = !0,
687
+ this._layoutState = LayoutState.before, this.theme(this._theme);
772
688
  }
773
689
  pauseProgressive() {
774
690
  return !1;
@@ -803,7 +719,7 @@ export default class View extends EventEmitter {
803
719
  }
804
720
  release() {
805
721
  var _a, _b, _c;
806
- this._isReleased = !0, this._unBindResizeEvent(), this.clearProgressive(), Factory.unregisterRuntimeTransforms(),
722
+ this._unBindResizeEvent(), this.clearProgressive(), Factory.unregisterRuntimeTransforms(),
807
723
  this.animate.stop(), this.grammars.release(), this._cachedGrammars.release(), this._dataflow.release(),
808
724
  this._dataflow = null, null === (_b = null === (_a = this.renderer) || void 0 === _a ? void 0 : _a.release) || void 0 === _b || _b.call(_a),
809
725
  this.renderer = null, this._boundInteractions = null, this.removeAllListeners(),