/** * @sgratzl/chartjs-chart-boxplot * https://github.com/sgratzl/chartjs-chart-boxplot * * Copyright (c) 2019-2023 Samuel Gratzl */ import { TooltipModel, Element, ChartType, ScriptableAndArrayOptions, CommonHoverOptions, ScriptableContext, BarController, Scale, ChartMeta, UpdateMode, ControllerDatasetOptions, BarControllerDatasetOptions, AnimationOptions, CartesianScaleTypeRegistry, Chart, ChartItem, ChartConfiguration } from 'chart.js'; interface ExtendedTooltip extends TooltipModel<'boxplot' | 'violin'> { _tooltipOutlier?: { index: number; datasetIndex: number; }; _tooltipItem?: { index: number; datasetIndex: number; }; } interface IStatsBaseOptions { backgroundColor: string; borderColor: string; borderWidth: number; outlierStyle: 'circle' | 'triangle' | 'rect' | 'rectRounded' | 'rectRot' | 'cross' | 'crossRot' | 'star' | 'line' | 'dash'; outlierRadius: number; outlierBackgroundColor: string; outlierBorderColor: string; outlierBorderWidth: number; itemStyle: 'circle' | 'triangle' | 'rect' | 'rectRounded' | 'rectRot' | 'cross' | 'crossRot' | 'star' | 'line' | 'dash'; itemRadius: number; itemBackgroundColor: string; itemBorderColor: string; itemBorderWidth: number; itemHitRadius: number; hitPadding: number; outlierHitRadius: number; meanStyle: 'circle' | 'triangle' | 'rect' | 'rectRounded' | 'rectRot' | 'cross' | 'crossRot' | 'star' | 'line' | 'dash'; meanRadius: number; meanBackgroundColor: string; meanBorderColor: string; meanBorderWidth: number; } interface IStatsBaseProps { x: number; y: number; width: number; height: number; items: number[]; outliers: number[]; } declare class StatsBase$1 extends Element { _datasetIndex: number; horizontal: boolean; _index: number; isVertical(): boolean; protected _drawItems(ctx: CanvasRenderingContext2D): void; protected _drawOutliers(ctx: CanvasRenderingContext2D): void; protected _drawMeanDot(ctx: CanvasRenderingContext2D): void; _getBounds(_useFinalPosition?: boolean): { left: number; top: number; right: number; bottom: number; }; _getHitBounds(useFinalPosition?: boolean): { left: number; top: number; right: number; bottom: number; }; inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): boolean; inXRange(mouseX: number, useFinalPosition?: boolean): boolean; inYRange(mouseY: number, useFinalPosition?: boolean): boolean; protected _outlierIndexInRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): { index: number; x: number; y: number; } | null; protected _itemIndexInRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): { index: number; x: number; y: number; } | null; protected _boxInRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): boolean; getCenterPoint(useFinalPosition?: boolean): { x: number; y: number; }; protected _getOutliers(useFinalPosition?: boolean): number[]; tooltipPosition(eventPosition?: { x: number; y: number; } | boolean, tooltip?: ExtendedTooltip): { x: number; y: number; }; } interface IBoxAndWhiskersOptions extends IStatsBaseOptions { medianColor: string; lowerBackgroundColor: string; } interface IBoxAndWhiskerProps extends IStatsBaseProps { q1: number; q3: number; median: number; whiskerMin: number; whiskerMax: number; mean: number; } declare class BoxAndWiskers extends StatsBase$1 { draw(ctx: CanvasRenderingContext2D): void; protected _drawBoxPlot(ctx: CanvasRenderingContext2D): void; protected _drawBoxPlotVertical(ctx: CanvasRenderingContext2D): void; protected _drawBoxPlotHorizontal(ctx: CanvasRenderingContext2D): void; _getBounds(useFinalPosition?: boolean): { left: number; top: number; right: number; bottom: number; }; static id: string; static defaults: { medianColor: string; lowerBackgroundColor: string; borderWidth: number; outlierStyle: string; outlierRadius: number; outlierBorderWidth: number; itemStyle: string; itemRadius: number; itemBorderWidth: number; itemHitRadius: number; meanStyle: string; meanRadius: number; meanBorderWidth: number; hitPadding: number; outlierHitRadius: number; }; static defaultRoutes: { outlierBackgroundColor: string; outlierBorderColor: string; itemBackgroundColor: string; itemBorderColor: string; meanBackgroundColor: string; meanBorderColor: string; }; } declare module 'chart.js' { interface ElementOptionsByType { boxandwhiskers: ScriptableAndArrayOptions>; } } interface IBaseStats { min: number; max: number; q1: number; q3: number; median: number; mean: number; items: readonly number[]; outliers: readonly number[]; } interface IBoxPlot extends IBaseStats { whiskerMax: number; whiskerMin: number; } interface IKDEPoint { v: number; estimate: number; } interface IViolin extends IBaseStats { maxEstimate: number; coords: IKDEPoint[]; } type QuantileMethod = 7 | 'quantiles' | 'hinges' | 'fivenum' | 'linear' | 'lower' | 'higher' | 'nearest' | 'midpoint' | ((arr: ArrayLike, length?: number | undefined) => { q1: number; median: number; q3: number; }); interface IBaseOptions { minStats?: 'min' | 'q1' | 'whiskerMin'; maxStats?: 'max' | 'q3' | 'whiskerMax'; coef?: number; quantiles?: QuantileMethod; whiskersMode?: 'nearest' | 'exact'; } type IBoxplotOptions = IBaseOptions; interface IViolinOptions extends IBaseOptions { points: number; } type IViolinElementOptions = IStatsBaseOptions; interface IViolinElementProps extends IStatsBaseProps { min: number; max: number; median: number; coords: IKDEPoint[]; maxEstimate?: number; } declare class Violin extends StatsBase$1 { draw(ctx: CanvasRenderingContext2D): void; protected _drawCoords(ctx: CanvasRenderingContext2D, props: Pick): void; _getBounds(useFinalPosition?: boolean): { left: number; top: number; right: number; bottom: number; }; static id: string; static defaults: { borderWidth: number; outlierStyle: string; outlierRadius: number; outlierBorderWidth: number; itemStyle: string; itemRadius: number; itemBorderWidth: number; itemHitRadius: number; meanStyle: string; meanRadius: number; meanBorderWidth: number; hitPadding: number; outlierHitRadius: number; }; static defaultRoutes: { outlierBackgroundColor: string; outlierBorderColor: string; itemBackgroundColor: string; itemBorderColor: string; meanBackgroundColor: string; meanBorderColor: string; }; } declare module 'chart.js' { interface ElementOptionsByType { violin: ScriptableAndArrayOptions>; } } declare abstract class StatsBase> extends BarController { options: C; protected _transformStats(target: any, source: S, mapper: (v: number) => T): void; getMinMax(scale: Scale, canStack?: boolean | undefined): { min: number; max: number; }; parsePrimitiveData(meta: ChartMeta, data: any[], start: number, count: number): Record[]; parseArrayData(meta: ChartMeta, data: any[], start: number, count: number): Record[]; parseObjectData(meta: ChartMeta, data: any[], start: number, count: number): Record[]; protected abstract _parseStats(value: any, options: C): S | undefined; getLabelAndValue(index: number): { label: string; value: string & { raw: S; hoveredOutlierIndex: number; hoveredItemIndex: number; } & S; }; protected _toStringStats(b: S): string; updateElement(rectangle: Element, index: number, properties: any, mode: UpdateMode): void; } declare class BoxPlotController extends StatsBase> { protected _parseStats(value: unknown, config: IBoxplotOptions): IBoxPlot | undefined; protected _transformStats(target: any, source: IBoxPlot, mapper: (v: number) => T): void; static readonly id = "boxplot"; static readonly defaults: any; static readonly overrides: any; } interface BoxPlotControllerDatasetOptions extends ControllerDatasetOptions, Pick, IBoxplotOptions, ScriptableAndArrayOptions>, ScriptableAndArrayOptions>, AnimationOptions<'boxplot'> { } type BoxPlotDataPoint = number[] | (Partial & Pick); type IBoxPlotChartOptions = IBoxplotOptions; declare module 'chart.js' { interface ChartTypeRegistry { boxplot: { chartOptions: IBoxPlotChartOptions; datasetOptions: BoxPlotControllerDatasetOptions; defaultDataPoint: BoxPlotDataPoint; scales: keyof CartesianScaleTypeRegistry; metaExtensions: object; parsedDataType: IBoxPlot & ChartTypeRegistry['bar']['parsedDataType']; }; } } declare class BoxPlotChart extends Chart<'boxplot', DATA, LABEL> { static id: string; constructor(item: ChartItem, config: Omit, 'type'>); } declare class ViolinController extends StatsBase> { protected _parseStats(value: any, config: IViolinOptions): IViolin | undefined; protected _transformStats(target: any, source: IViolin, mapper: (v: number) => T): void; static readonly id = "violin"; static readonly defaults: any; static readonly overrides: any; } type ViolinDataPoint = number[] | (Partial & Pick); interface ViolinControllerDatasetOptions extends ControllerDatasetOptions, Pick, IViolinOptions, ScriptableAndArrayOptions>, ScriptableAndArrayOptions>, AnimationOptions<'violin'> { } type IViolinChartOptions = IViolinOptions; declare module 'chart.js' { interface ChartTypeRegistry { violin: { chartOptions: IViolinChartOptions; datasetOptions: ViolinControllerDatasetOptions; defaultDataPoint: ViolinDataPoint; scales: keyof CartesianScaleTypeRegistry; metaExtensions: object; parsedDataType: IViolin & ChartTypeRegistry['bar']['parsedDataType']; }; } } declare class ViolinChart extends Chart<'violin', DATA, LABEL> { static id: string; constructor(item: ChartItem, config: Omit, 'type'>); } export { BoxAndWiskers, BoxPlotChart, BoxPlotController, StatsBase$1 as StatsBase, Violin, ViolinChart, ViolinController }; export type { BoxPlotControllerDatasetOptions, BoxPlotDataPoint, ExtendedTooltip, IBaseOptions, IBaseStats, IBoxAndWhiskerProps, IBoxAndWhiskersOptions, IBoxPlot, IBoxPlotChartOptions, IBoxplotOptions, IKDEPoint, IStatsBaseOptions, IStatsBaseProps, IViolin, IViolinChartOptions, IViolinElementOptions, IViolinElementProps, IViolinOptions, QuantileMethod, ViolinControllerDatasetOptions, ViolinDataPoint }; //# sourceMappingURL=index.d.ts.map