import type { IMarkSpec, IMarkTheme } from '../../typings/spec'; import type { IArcMarkSpec, IPathMarkSpec, IRectMarkSpec } from '../../typings/visual'; import type { IProgressLikeSeriesSpec, IProgressLikeSeriesTheme, ProgressLikeAppearPreset } from '../polar/progress-like/interface'; import type { IAnimationSpec } from '../../animation/spec'; import type { SeriesMarkNameEnum } from '../interface/type'; import type { ILabelSpec } from '../../component/label/interface'; export type GaugePointerMarks = 'pointer' | 'pin' | 'pinBackground'; export interface IGaugePointerSeriesSpec extends IProgressLikeSeriesSpec, IAnimationSpec { type: 'gaugePointer'; valueField: string | string[]; radiusField: string; [SeriesMarkNameEnum.pin]?: IMarkSpec & PinMarkSpec; [SeriesMarkNameEnum.pinBackground]?: IMarkSpec & PinMarkSpec; [SeriesMarkNameEnum.pointer]?: IMarkSpec & PointerMarkSpec; } export type PointerMarkSpec = { type?: 'path' | 'rect'; width?: number; height?: number; innerPadding?: number; outerPadding?: number; center?: [number, number]; isOnCenter?: boolean; }; export type PinMarkSpec = { width?: number; height?: number; isOnCenter?: boolean; }; export interface IGaugePointerSeriesTheme extends IProgressLikeSeriesTheme { [SeriesMarkNameEnum.pin]?: Partial & PinMarkSpec>; [SeriesMarkNameEnum.pinBackground]?: Partial & PinMarkSpec>; [SeriesMarkNameEnum.pointer]?: Partial & PointerMarkSpec>; } export type GaugeMarks = 'segment' | 'track'; export interface IGaugeSeriesSpec extends IProgressLikeSeriesSpec, IAnimationSpec { type: 'gauge'; padAngle?: number; [SeriesMarkNameEnum.segment]?: IMarkSpec; [SeriesMarkNameEnum.track]?: IMarkSpec; [SeriesMarkNameEnum.label]?: IGaugeLabelSpec; } export interface IGaugeSeriesTheme extends IProgressLikeSeriesTheme { padAngle?: number; [SeriesMarkNameEnum.segment]?: Partial>; [SeriesMarkNameEnum.track]?: Partial>; [SeriesMarkNameEnum.label]?: IGaugeLabelSpec; } export type IGaugeLabelSpec = ILabelSpec;