@antv/g2
Version:
the Grammar of Graphics in Javascript
160 lines (159 loc) • 4.76 kB
TypeScript
import { Coordinate } from '@antv/coord';
import { DisplayObject, TextStyleProps } from '@antv/g';
import { G2GuideComponentOptions, G2Mark, G2ViewTree } from './options';
import { LabelTransform, Scale } from './component';
import { MarkProps } from './mark';
import { G2Theme } from './theme';
export type { G2Theme };
export type G2Title = {
/**
* Height of title, default is 36.
*/
size?: number;
/**
* Text of title.
*/
title?: string;
/**
* Text of subtitle.
*/
subtitle?: string | null;
} & WithPrefix<Omit<TextStyleProps, 'x' | 'y' | 'text'>, 'title'> & // G.Text style for title.
WithPrefix<Omit<TextStyleProps, 'x' | 'y' | 'text'>, 'subtitle'> & {
titleAlign?: 'left' | 'center' | 'right';
subtitleAlign?: 'left' | 'center' | 'right';
/**
* Align method for title.
*/
align?: 'left' | 'center' | 'right';
/**
* The vertical spacing between title and subtitle, default is 2.
*/
spacing?: number;
};
export type G2ViewDescriptor = {
scale: Record<string, Scale>;
coordinate: Coordinate;
theme: G2Theme;
markState: Map<G2Mark, G2MarkState>;
components: G2GuideComponentOptions[];
layout: Layout;
key: string;
clip: boolean;
labelTransform: LabelTransform;
style: Record<string, any>;
};
export type G2ViewInstance = {
view: G2ViewDescriptor;
container: DisplayObject;
options: G2ViewTree;
update: (options: G2ViewTree, source?: string | string[], callback?: any) => Promise<any>;
};
export type ChannelGroups = {
name?: string;
scaleKey?: string;
scale?: Record<string, any>;
values?: {
name?: string;
value?: Primitive[];
field?: string;
}[];
};
export type G2MarkState = {
index?: number[];
data?: Record<string, any>[];
channels?: ChannelGroups[];
tooltip?: any;
} & Omit<MarkProps, 'channels'>;
export type MaybeArray<T> = T | T[];
export type Primitive = number | string | boolean | Date;
export type TabularData = Record<string, Primitive>[];
export type WithPrefix<O extends Record<string, any>, P extends string> = {
[K in keyof O as `${P}${Capitalize<K & string>}`]?: O[K];
};
export type EncodeFunction = (data: Record<string, MaybeArray<Primitive>>[]) => MaybeArray<Primitive>[];
export type Encoding = {
type: string;
[key: string]: any;
} | Primitive | ((...args: any[]) => any);
export type Encodings = Record<string | symbol, MaybeArray<Encoding>>;
export type Value = {
x?: number[][];
y?: number[][];
position?: number[][];
[key: string]: MaybeArray<Primitive>[];
};
export type IndexedValue = {
index: number[];
value: Value;
};
export type ChannelValue = MaybeArray<Primitive>[];
export type Channel = {
name?: string;
scale?: string;
quantitative?: string;
ordinal?: string;
scaleName?: string;
required?: boolean;
value?: Primitive[];
type?: string;
independent?: boolean;
field?: string | string[];
visual?: boolean;
range?: any[];
scaleKey?: string;
};
export type Vector2 = [number, number];
export type Vector3 = [number, number, number];
export type BBox = {
x?: number;
y?: number;
width?: number;
height?: number;
};
export type GuidePrimitivePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'inner' | 'outer';
export type GuideCompositePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
export type GuideComponentPosition = GuidePrimitivePosition | GuideCompositePosition;
export type GuideComponentOrientation = 'horizontal' | 'vertical' | number;
export type GuideComponentPlane = 'xy' | 'xz' | 'yz';
export type Layout = {
paddingLeft?: number;
paddingRight?: number;
paddingBottom?: number;
paddingTop?: number;
insetLeft?: number;
insetRight?: number;
insetBottom?: number;
insetTop?: number;
width?: number;
height?: number;
innerWidth?: number;
innerHeight?: number;
margin?: number;
marginLeft?: number;
marginBottom?: number;
marginTop?: number;
marginRight?: number;
x?: number;
y?: number;
z?: number;
depth?: number;
};
export type Direction = 'horizontal' | 'vertical' | 'center';
export type FlexLayout = {
flexDirection?: 'row' | 'column';
justifyContent?: 'flex-start' | 'flex-end' | 'center';
alignItems?: 'flex-start' | 'flex-end' | 'center';
};
export type SectionArea = [
x: number,
y: number,
width: number,
height: number,
direction: Direction,
reverse: boolean,
comparator: (a: Primitive, b: Primitive) => number,
minX?: number,
totalWidth?: number
];
export type Section = Record<GuideComponentPosition, SectionArea>;