@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.
- package/cjs/component/label.js.map +1 -1
- package/cjs/graph/animation/animator.js +3 -4
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/attributes/line.d.ts +2 -0
- package/cjs/graph/attributes/line.js +38 -5
- package/cjs/graph/attributes/line.js.map +1 -1
- package/cjs/graph/element.js +15 -6
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/enums.d.ts +2 -1
- package/cjs/graph/enums.js +1 -1
- package/cjs/graph/enums.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-filter.js +1 -2
- package/cjs/interactions/crosshair.js +2 -2
- package/cjs/interactions/crosshair.js.map +1 -1
- package/cjs/interactions/dimension-tooltip.js +2 -2
- package/cjs/interactions/dimension-tooltip.js.map +1 -1
- package/cjs/interactions/element-active.js +2 -2
- package/cjs/interactions/element-active.js.map +1 -1
- package/cjs/interactions/element-highlight-by-group.js +4 -3
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.js +2 -2
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.js +2 -2
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/interactions/element-highlight.d.ts +5 -2
- package/cjs/interactions/element-highlight.js +10 -25
- package/cjs/interactions/element-highlight.js.map +1 -1
- package/cjs/interactions/element-select.d.ts +6 -3
- package/cjs/interactions/element-select.js +26 -34
- package/cjs/interactions/element-select.js.map +1 -1
- package/cjs/interactions/filter.js +1 -1
- package/cjs/interactions/filter.js.map +1 -1
- package/cjs/interactions/fish-eye.js +3 -3
- package/cjs/interactions/fish-eye.js.map +1 -1
- package/cjs/interactions/index.js +5 -2
- package/cjs/interactions/index.js.map +1 -1
- package/cjs/interactions/legend-filter.js +1 -1
- package/cjs/interactions/player-filter.js +1 -1
- package/cjs/interactions/roll-up.js +3 -3
- package/cjs/interactions/roll-up.js.map +1 -1
- package/cjs/interactions/scrollbar-filter.js +1 -1
- package/cjs/interactions/slider-filter.js +1 -1
- package/cjs/interactions/toggle-state-mixin.d.ts +8 -0
- package/cjs/interactions/toggle-state-mixin.js +30 -0
- package/cjs/interactions/toggle-state-mixin.js.map +1 -0
- package/cjs/interactions/tooltip.js +3 -3
- package/cjs/interactions/tooltip.js.map +1 -1
- package/cjs/interactions/utils.d.ts +2 -1
- package/cjs/interactions/utils.js +14 -1
- package/cjs/interactions/utils.js.map +1 -1
- package/cjs/interactions/view-navigation-base.js +1 -1
- package/cjs/interactions/view-navigation-base.js.map +1 -1
- package/cjs/interactions/view-roam.js +3 -3
- package/cjs/interactions/view-roam.js.map +1 -1
- package/cjs/interactions/view-zoom.js +2 -2
- package/cjs/interactions/view-zoom.js.map +1 -1
- package/cjs/parse/coordinate.js +1 -1
- package/cjs/parse/event.js +1 -1
- package/cjs/parse/mark.js +1 -1
- package/cjs/parse/option.js +1 -1
- package/cjs/parse/scale.js +2 -1
- package/cjs/parse/transform.js +1 -1
- package/cjs/parse/util.js +1 -1
- package/cjs/parse/view.js +1 -1
- package/cjs/transforms/data/sampling.js.map +1 -1
- package/cjs/types/dataflow.d.ts +1 -2
- package/cjs/types/dataflow.js.map +1 -1
- package/cjs/types/grammar.d.ts +0 -1
- package/cjs/types/grammar.js.map +1 -1
- package/cjs/types/interaction.d.ts +14 -10
- package/cjs/types/interaction.js.map +1 -1
- package/cjs/types/mark.d.ts +1 -1
- package/cjs/types/mark.js.map +1 -1
- package/cjs/types/plot.d.ts +0 -1
- package/cjs/types/plot.js.map +1 -1
- package/cjs/types/transform.d.ts +1 -1
- package/cjs/types/transform.js.map +1 -1
- package/cjs/types/view.d.ts +2 -5
- package/cjs/types/view.js.map +1 -1
- package/cjs/util/data.d.ts +0 -1
- package/cjs/util/data.js +1 -37
- package/cjs/util/data.js.map +1 -1
- package/cjs/view/View.d.ts +2 -10
- package/cjs/view/View.js +20 -103
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/data.d.ts +1 -2
- package/cjs/view/data.js +7 -49
- package/cjs/view/data.js.map +1 -1
- package/cjs/view/dataflow.d.ts +1 -6
- package/cjs/view/dataflow.js +7 -72
- package/cjs/view/dataflow.js.map +1 -1
- package/cjs/view/grammar-base.d.ts +3 -6
- package/cjs/view/grammar-base.js +0 -46
- package/cjs/view/grammar-base.js.map +1 -1
- package/cjs/view/mark.d.ts +1 -2
- package/cjs/view/mark.js +9 -38
- package/cjs/view/mark.js.map +1 -1
- package/es/component/label.js.map +1 -1
- package/es/graph/animation/animator.js +2 -3
- package/es/graph/animation/animator.js.map +1 -1
- package/es/graph/attributes/line.d.ts +2 -0
- package/es/graph/attributes/line.js +34 -5
- package/es/graph/attributes/line.js.map +1 -1
- package/es/graph/element.js +17 -8
- package/es/graph/element.js.map +1 -1
- package/es/graph/enums.d.ts +2 -1
- package/es/graph/enums.js +1 -1
- package/es/graph/enums.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interactions/crosshair.js +2 -2
- package/es/interactions/crosshair.js.map +1 -1
- package/es/interactions/dimension-tooltip.js +2 -2
- package/es/interactions/dimension-tooltip.js.map +1 -1
- package/es/interactions/element-active.js +2 -2
- package/es/interactions/element-active.js.map +1 -1
- package/es/interactions/element-highlight-by-group.js +2 -2
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.js +2 -2
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-name.js +2 -2
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/element-highlight.d.ts +5 -2
- package/es/interactions/element-highlight.js +11 -24
- package/es/interactions/element-highlight.js.map +1 -1
- package/es/interactions/element-select.d.ts +6 -3
- package/es/interactions/element-select.js +25 -31
- package/es/interactions/element-select.js.map +1 -1
- package/es/interactions/filter.js +1 -1
- package/es/interactions/filter.js.map +1 -1
- package/es/interactions/fish-eye.js +3 -3
- package/es/interactions/fish-eye.js.map +1 -1
- package/es/interactions/index.js +4 -2
- package/es/interactions/index.js.map +1 -1
- package/es/interactions/roll-up.js +2 -2
- package/es/interactions/roll-up.js.map +1 -1
- package/es/interactions/toggle-state-mixin.d.ts +8 -0
- package/es/interactions/toggle-state-mixin.js +22 -0
- package/es/interactions/toggle-state-mixin.js.map +1 -0
- package/es/interactions/tooltip.js +2 -2
- package/es/interactions/tooltip.js.map +1 -1
- package/es/interactions/utils.d.ts +2 -1
- package/es/interactions/utils.js +12 -1
- package/es/interactions/utils.js.map +1 -1
- package/es/interactions/view-navigation-base.js +1 -1
- package/es/interactions/view-navigation-base.js.map +1 -1
- package/es/interactions/view-roam.js +3 -3
- package/es/interactions/view-roam.js.map +1 -1
- package/es/interactions/view-zoom.js +2 -2
- package/es/interactions/view-zoom.js.map +1 -1
- package/es/transforms/data/sampling.js.map +1 -1
- package/es/types/dataflow.d.ts +1 -2
- package/es/types/dataflow.js.map +1 -1
- package/es/types/grammar.d.ts +0 -1
- package/es/types/grammar.js.map +1 -1
- package/es/types/interaction.d.ts +14 -10
- package/es/types/interaction.js.map +1 -1
- package/es/types/mark.d.ts +1 -1
- package/es/types/mark.js.map +1 -1
- package/es/types/plot.d.ts +0 -1
- package/es/types/plot.js.map +1 -1
- package/es/types/transform.d.ts +1 -1
- package/es/types/transform.js.map +1 -1
- package/es/types/view.d.ts +2 -5
- package/es/types/view.js.map +1 -1
- package/es/util/data.d.ts +0 -1
- package/es/util/data.js +0 -34
- package/es/util/data.js.map +1 -1
- package/es/view/View.d.ts +2 -10
- package/es/view/View.js +19 -103
- package/es/view/View.js.map +1 -1
- package/es/view/data.d.ts +1 -2
- package/es/view/data.js +8 -49
- package/es/view/data.js.map +1 -1
- package/es/view/dataflow.d.ts +1 -6
- package/es/view/dataflow.js +7 -72
- package/es/view/dataflow.js.map +1 -1
- package/es/view/grammar-base.d.ts +3 -6
- package/es/view/grammar-base.js +0 -45
- package/es/view/grammar-base.js.map +1 -1
- package/es/view/mark.d.ts +1 -2
- package/es/view/mark.js +8 -39
- package/es/view/mark.js.map +1 -1
- package/package.json +6 -6
package/es/types/plot.js.map
CHANGED
|
@@ -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"]}
|
package/es/types/transform.d.ts
CHANGED
|
@@ -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 |
|
|
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"]}
|
package/es/types/view.d.ts
CHANGED
|
@@ -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) =>
|
|
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) =>
|
|
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;
|
package/es/types/view.js.map
CHANGED
|
@@ -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
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
|
package/es/util/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"
|
|
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):
|
|
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):
|
|
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
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
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.
|
|
525
|
-
this._needBuildLayoutTree
|
|
526
|
-
this.
|
|
527
|
-
this._dataflow.
|
|
528
|
-
this._layoutState =
|
|
529
|
-
null === (
|
|
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
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
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.
|
|
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.
|
|
771
|
-
this.
|
|
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.
|
|
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(),
|