/** * chartjs-chart-venn * https://github.com/upsetjs/chartjs-chart-venn * * Copyright (c) 2019-2023 Samuel Gratzl */ import { ChartType, ScriptableAndArrayOptions, CommonElementOptions, CommonHoverOptions, ScriptableContext, Element, VisualElement, CoreChartOptions, ControllerDatasetOptions, CartesianScaleTypeRegistry, DatasetController, UpdateMode, Chart, ChartItem, ChartConfiguration } from 'chart.js'; interface ITextLocation { text: { x: number; y: number; }; } interface ICircle { r: number; cx: number; cy: number; } interface IEllipse { rx: number; ry: number; rotation: number; cx: number; cy: number; } interface ITextCircle extends ICircle, ITextLocation { align: 'start' | 'end' | 'middle'; verticalAlign: 'top' | 'bottom'; } interface ITextEllipse extends IEllipse, ITextLocation { align: 'start' | 'end' | 'middle'; verticalAlign: 'top' | 'bottom'; } interface IArc { x2: number; y2: number; sweep: boolean; large: boolean; ref: number; mode: 'i' | 'o'; } interface IArcSlice { sets: readonly number[]; x1: number; y1: number; arcs: readonly IArc[]; path?: string; } interface ITextArcSlice extends IArcSlice, ITextLocation { } interface IVennDiagramLayout$1 { sets: (ITextCircle | ITextEllipse)[]; intersections: ITextArcSlice[]; } interface IBoundingBox { x: number; y: number; width: number; height: number; } interface IArcSliceOptions extends CommonElementOptions, Record { } interface IArcSliceProps extends ITextArcSlice { refs: (ICircle | IEllipse)[]; } declare class ArcSlice extends Element implements VisualElement { static readonly id = "arcSlice"; static readonly defaults: { backgroundColor: string; }; static readonly defaultRoutes: { borderColor: string; }; inRange(mouseX: number, mouseY: number): boolean; inXRange(mouseX: number): boolean; inYRange(mouseY: number): boolean; getCenterPoint(): { x: number; y: number; }; tooltipPosition(): { x: number; y: number; }; hasValue(): boolean; draw(ctx: CanvasRenderingContext2D): void; } declare module 'chart.js' { interface ElementOptionsByType { arcSlice: ScriptableAndArrayOptions>; } } interface IVennDiagramLayout { sets: (ITextCircle | ITextEllipse)[]; intersections: ITextArcSlice[]; } interface IGenerateOptions { label?: string; } interface IRawSet { label: string; values: readonly T[]; } interface ISet { label: string; sets: readonly string[]; value: number; values: readonly T[]; degree: number; } declare function extractSets(data: readonly IRawSet[], options?: IGenerateOptions): { labels: string[]; datasets: [{ label: string; data: ISet[]; }]; }; declare class VennDiagramController extends DatasetController<'venn', ArcSlice> { static readonly id: string; static readonly defaults: { dataElementType: string; }; static readonly overrides: any; initialize(): void; update(mode: UpdateMode): void; protected computeLayout(size: IBoundingBox): IVennDiagramLayout; updateElements(slices: ArcSlice[], start: number, count: number, mode: UpdateMode): void; draw(): void; private drawLabels; } interface IVennDiagramControllerDatasetOptions extends ControllerDatasetOptions, ScriptableAndArrayOptions>, ScriptableAndArrayOptions> { } declare module 'chart.js' { interface ChartTypeRegistry { venn: { chartOptions: CoreChartOptions<'venn'>; datasetOptions: IVennDiagramControllerDatasetOptions; defaultDataPoint: number | ISet; metaExtensions: Record; parsedDataType: { x: number; y: number; }; scales: keyof CartesianScaleTypeRegistry; }; } } declare class VennDiagramChart extends Chart<'venn', DATA, LABEL> { static id: "venn"; constructor(item: ChartItem, config: Omit, 'type'>); } declare class EulerDiagramController extends VennDiagramController { static readonly id = "euler"; static readonly defaults: { dataElementType: string; }; protected computeLayout(size: IBoundingBox): IVennDiagramLayout; } type IEulerDiagramControllerDatasetOptions = IVennDiagramControllerDatasetOptions; declare module 'chart.js' { interface ChartTypeRegistry { euler: { chartOptions: CoreChartOptions<'euler'>; datasetOptions: IEulerDiagramControllerDatasetOptions; defaultDataPoint: number | ISet; metaExtensions: Record; parsedDataType: { x: number; y: number; }; scales: keyof CartesianScaleTypeRegistry; }; } } declare class EulerDiagramChart extends Chart<'euler', DATA, LABEL> { static id: string; constructor(item: ChartItem, config: Omit, 'type'>); } export { ArcSlice, EulerDiagramChart, EulerDiagramController, VennDiagramChart, VennDiagramController, extractSets }; export type { IArc, IArcSlice, IArcSliceOptions, IArcSliceProps, IBoundingBox, ICircle, IEllipse, IEulerDiagramControllerDatasetOptions, IGenerateOptions, IRawSet, ISet, ITextArcSlice, ITextCircle, ITextEllipse, ITextLocation, IVennDiagramControllerDatasetOptions, IVennDiagramLayout$1 as IVennDiagramLayout }; //# sourceMappingURL=index.d.ts.map