import type { GeometricMaskShape, ICreateCanvas, TextShapeMask } from '../interface/wordcloud'; export type TagItemAttribute = T | ((d?: any) => T); export type TagItemFunction = (d?: any, i?: number) => T; export type Bounds = [{ x: number; y: number; }, { x: number; y: number; }]; export interface Rect { x: number; y: number; width: number; height: number; } export interface IBaseLayoutOptions { text?: TagItemAttribute; fontFamily?: TagItemAttribute; fontWeight?: TagItemAttribute; fontSize?: TagItemAttribute; fontStyle?: TagItemAttribute; color?: 'random-dark' | 'random-light' | TagItemAttribute; drawOutOfBound?: boolean; shrink?: boolean; clip?: boolean; minFontSize?: number; useRandomRotate?: boolean; minRotation?: number; maxRotation?: number; rotationSteps?: number; rotateRatio?: number; rotate?: TagItemAttribute | number[]; random?: boolean; randomVisible?: boolean; shape?: string | ((theta: number) => number) | TextShapeMask | GeometricMaskShape; progressiveTime?: number; outputCallback?: (res: any[]) => any[]; progressiveStep?: number; repeatFill?: boolean; fillTextFontSize?: number; maxFailCount?: number; maxSingleWordTryCount?: number; onUpdateMaskCanvas?: (canvas?: HTMLCanvasElement) => void; createCanvas: ICreateCanvas; } export interface TagOutputItem { datum: any; x: number; y: number; fontFamily: string; fontSize: number; fontStyle: string; fontWeight: string; angle: number; width: number; height: number; text: string; color?: string; }