import type { Dict } from '@visactor/vutils'; import type { IPadding, StringOrNumber } from '../../../typings'; import type { IAxis } from '../../axis/interface'; import type { LineCrosshair, RectCrosshair, Tag } from '@visactor/vrender-components'; import type { IGroup, IRichTextGraphicAttribute, IText, ITextGraphicAttribute } from '@visactor/vrender-core'; export type AxisCurrentValueMap = Map; export type IBound = { x1: number; y1: number; x2: number; y2: number; }; export type IAxisInfo = Map; export interface IHair { visible: boolean; type: 'rect' | 'line'; style?: Dict; label?: { visible: boolean; formatMethod?: (text: StringOrNumber | string[], position: string) => string | string[]; formatter?: string | string[]; textStyle?: Dict; minWidth?: number; maxWidth?: number; padding?: IPadding | number | number[]; panel?: Dict; zIndex?: number; syncAxisLabelAngle?: boolean; }; smooth?: boolean; } export interface IHairRadius extends IHair { smooth?: boolean; } export interface ICrosshairLabelInfo { visible: boolean; text: StringOrNumber; dx?: number; dy?: number; x?: number; y?: number; offset?: number; defaultFormatter?: (value: StringOrNumber) => StringOrNumber; } export interface ICrosshairInfo { coordRange: [number, number]; sizeRange: [number, number]; coord: number; labels: Record; labelsTextStyle?: Record | Partial>; visible: boolean; _isCache?: boolean; axis: IAxis; axisLabel?: IText; sides?: number; } export interface CrossHairStateItem { coordKey: string; anotherAxisKey: string; currentValue: AxisCurrentValueMap; attributes?: IHair | undefined; cacheInfo?: ICrosshairInfo | undefined; crosshairComp?: LineCrosshair | RectCrosshair | IGroup; labelsComp?: Record; bandSize?: number; offsetSize?: number; } export type CrossHairStateByField = Record;