react-plot
Version:
Library of React components to render SVG 2D plots.
27 lines • 1.6 kB
TypeScript
import type { RefObject } from 'react';
import type { TrackingResult } from '../../components/Tracking.js';
type EventHandler<NativeEventType extends MouseEvent> = (result: TrackingResult<NativeEventType>) => void;
type PointerEventName = 'onPointerEnter' | 'onPointerDown' | 'onPointerMove' | 'onPointerUp' | 'onPointerLeave';
type ClickEventName = 'onClick' | 'onDoubleClick';
type WheelEventName = 'onWheel';
export type EventName = PointerEventName | ClickEventName | WheelEventName;
type PointerEventHandlers = Partial<Record<PointerEventName, EventHandler<PointerEvent>>>;
type ClickEventHandlers = Partial<Record<ClickEventName, EventHandler<MouseEvent>>>;
type WheelEventHandlers = Partial<Record<WheelEventName, EventHandler<WheelEvent>>>;
export type EventsHandlers = PointerEventHandlers & ClickEventHandlers & WheelEventHandlers;
type EventMap = Record<PointerEventName, PointerEvent> & Record<ClickEventName, MouseEvent> & Record<WheelEventName, WheelEvent>;
export interface PlotEventsUserActions {
registerHandlers: (handlersRef: RefObject<EventsHandlers>) => void;
unregisterHandlers: (handlersRef: RefObject<EventsHandlers>) => void;
}
export interface PlotEventsPlotActions {
registerPlot: (plotId: string) => void;
unregisterPlot: (plotId: string) => void;
handleEvent: <T extends EventName>(plotId: string, eventName: T, eventData: TrackingResult<EventMap[T]>) => void;
}
export declare function usePlotEventsState(): {
userActions: PlotEventsUserActions;
plotActions: PlotEventsPlotActions;
};
export {};
//# sourceMappingURL=usePlotEvents.d.ts.map