/// import type { Chart, Color, Point } from 'chart.js'; export type Mode = 'x' | 'y' | 'xy'; export type ModeFn = (context: { chart: Chart; }) => Mode; export type ModeOption = Mode | ModeFn; export type ModifierKey = 'ctrl' | 'alt' | 'shift' | 'meta'; export type DrawTime = 'afterDraw' | 'afterDatasetsDraw' | 'beforeDraw' | 'beforeDatasetsDraw'; export type ZoomTrigger = 'api' | 'drag' | 'wheel' | 'pinch'; export type PanTrigger = 'api' | 'drag' | 'wheel' | 'other'; type RejectableStartEvent = (context: { chart: Chart; event: T; point: Point; }) => boolean | undefined; type RejectEvent = (context: { chart: Chart; event: T; }) => void; type GenericEvent = (context: { chart: Chart; }) => void; export interface WheelOptions { /** * Enable the zoom via mouse wheel */ enabled?: boolean; /** * Speed of zoom via mouse wheel * (percentage of zoom on a wheel event) */ speed?: number; /** * Modifier key required for zooming with mouse */ modifierKey?: ModifierKey | null; } export interface DragOptions { /** * Enable the zoom via drag */ enabled?: boolean; /** * Minimal zoom distance required before actually applying zoom */ threshold?: number; /** * Border color of the drag area */ borderColor?: Color; /** * Border width of the drag area */ borderWidth?: number; /** * Background color of the drag area */ backgroundColor?: Color; /** * Modifier key required for drag-to-zoom */ modifierKey?: ModifierKey | null; /** * Draw time required for drag-to-zoom */ drawTime?: DrawTime; /** * Maintain aspect ratio of the drag rectangle */ maintainAspectRatio?: boolean; } export interface PinchOptions { /** * Enable the zoom via pinch */ enabled?: boolean; } /** * Container for zoom options */ export interface ZoomOptions { /** * Zooming directions. Remove the appropriate direction to disable * E.g. 'y' would only allow zooming in the y direction * A function that is called as the user is zooming and returns the * available directions can also be used: * mode: function({ chart }) { * return 'xy'; * }, */ mode?: ModeOption; /** * Options of the mouse wheel mode */ wheel?: WheelOptions; /** * Options of the drag-to-zoom mode */ drag?: DragOptions; /** * Options of the pinch mode */ pinch?: PinchOptions; scaleMode?: ModeOption; /** @deprecated Use scaleMode instead */ overScaleMode?: ModeOption; /** * Function called while the user is zooming */ onZoom?: (context: { chart: Chart; trigger: ZoomTrigger; amount?: { x: number; y: number; } & { focalPoint: Point; }; }) => void; /** * Function called once zooming is completed */ onZoomComplete?: GenericEvent; /** * Function called when wheel input occurs without modifier key */ onZoomRejected?: RejectEvent; onZoomStart?: RejectableStartEvent; } /** * Container for pan options */ export interface PanOptions { /** * Boolean to enable panning */ enabled?: boolean; /** * Panning directions. Remove the appropriate direction to disable * E.g. 'y' would only allow panning in the y direction * A function that is called as the user is panning and returns the * available directions can also be used: * mode: function({ chart }) { * return 'xy'; * }, */ mode?: ModeOption; /** * Modifier key required for panning with mouse */ modifierKey?: ModifierKey | null; scaleMode?: ModeOption; /** @deprecated Use scaleMode instead */ overScaleMode?: ModeOption; /** * Minimal pan distance required before actually applying pan */ threshold?: number; /** * Function called while the user is panning */ onPan?: (context: { chart: Chart; trigger: PanTrigger; delta: { x: number; y: number; }; }) => void; /** * Function called once panning is completed */ onPanComplete?: GenericEvent; /** * Function called when pan fails because modifier key was not detected. * event is the Hammer event that failed - see https://hammerjs.github.io/api#event-object */ onPanRejected?: RejectEvent; onPanStart?: RejectableStartEvent; } export interface ScaleLimits { min?: number | 'original'; max?: number | 'original'; minRange?: number; } export interface LimitOptions { [axisId: string]: ScaleLimits; } export interface ZoomPluginOptions { pan?: PanOptions; limits?: LimitOptions; zoom?: ZoomOptions; } export {}; //# sourceMappingURL=options.d.ts.map