import type { Datum, IMarkSpec, IMarkTheme, ISeriesSpec, IOrientType, IPathMarkSpec, IPolygonMarkSpec, IRuleMarkSpec, ITextMarkSpec, IPercent, IComposedTextMarkSpec, IFormatMethod } from '../../typings'; import type { IAnimationSpec } from '../../animation/spec'; import type { SeriesMarkNameEnum } from '../interface/type'; import type { ILabelSpec } from '../../component/label/interface'; type FunnelMarks = 'funnel'; export type FunnelAppearPreset = 'clipIn' | 'fadeIn'; export interface IFunnelSeriesSpec extends ISeriesSpec, IAnimationSpec { type: 'funnel'; categoryField: string; valueField: string; funnelOrient?: IOrientType; shape?: 'rect' | 'trapezoid'; isTransform?: boolean; isCone?: boolean; funnelAlign?: 'left' | 'center' | 'right'; gap?: number; range?: { min?: number; max?: number; }; maxSize?: number | IPercent; minSize?: number | IPercent; heightRatio?: number; transformRatioText?: string; [SeriesMarkNameEnum.funnel]?: IMarkSpec; [SeriesMarkNameEnum.transform]?: IMarkSpec; [SeriesMarkNameEnum.label]?: IFunnelLabelSpec; [SeriesMarkNameEnum.outerLabel]?: IFunnelOuterLabelSpec; [SeriesMarkNameEnum.transformLabel]?: IFunnelLabelSpec; } interface IFunnelLabelSpec extends Omit { limit?: 'shapeSize' | number; } export interface IFunnelOuterLabelSpec extends IMarkSpec { formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum]>; position?: 'left' | 'right' | 'top' | 'bottom'; spaceWidth?: number; alignLabel?: boolean; style?: ITextMarkSpec; line?: { minLength?: number; } & IMarkSpec; } export interface IFunnelSeriesTheme { [SeriesMarkNameEnum.funnel]?: Partial>; [SeriesMarkNameEnum.transform]?: Partial>; [SeriesMarkNameEnum.label]?: Partial>; [SeriesMarkNameEnum.outerLabel]?: Partial> & { line?: Partial>; }; [SeriesMarkNameEnum.transformLabel]?: Partial>; } export {};