import { Point } from "../../utils/misc"; import { CameraMux } from "../../camera-mux"; import BoardCamera from "../../board-camera"; /** * @description The unsubscribe to user raw input. * * @category Event Parser */ export type UnsubscribeToUserRawInput = () => void; /** * @description The raw user pan input event payload. * * @category Event Parser */ export type RawUserPanInputEventPayload = { diff: Point; }; /** * @description The raw user pan input event. * Use type to discriminate between pan, zoom, and rotate events. * * @category Event Parser */ export type RawUserPanInputEvent = { type: "pan"; } & RawUserPanInputEventPayload; /** * @description The raw user zoom input event payload. * * @category Event Parser */ export type RawUserZoomInputEventPayload = { deltaZoomAmount: number; anchorPoint: Point; }; /** * @description The raw user zoom input event. * Use type to discriminate between pan, zoom, and rotate events. * * @category Event Parser */ export type RawUserZoomInputEvent = { type: "zoom"; } & RawUserZoomInputEventPayload; /** * @description The raw user rotate input event payload. * * @category Event Parser */ export type RawUserRotateInputEventPayload = { deltaRotation: number; }; /** * @description The raw user rotate input event. * Use type to discriminate between pan, zoom, and rotate events. * * @category Event Parser */ export type RawUserRotateInputEvent = { type: "rotate"; } & RawUserRotateInputEventPayload; /** * @description The raw user input event map. * * @category Event Parser */ export type RawUserInputEventMap = { "pan": RawUserPanInputEventPayload; "zoom": RawUserZoomInputEventPayload; "rotate": RawUserRotateInputEventPayload; "all": RawUserInputEvent; }; /** * @description The raw user input event. * Use type to discriminate between pan, zoom, and rotate events. * * @category Event Parser */ export type RawUserInputEvent = RawUserPanInputEvent | RawUserZoomInputEvent | RawUserRotateInputEvent; /** * @description The raw user input callback. * This is the function type of callbacks for raw user input events. * * @category Event Parser */ export type RawUserInputCallback = (event: RawUserInputEventMap[K]) => void; export interface UserInputPublisher { notifyPan(diff: Point): void; notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void; notifyRotate(deltaRotation: number): void; on(eventName: K, callback: (event: RawUserInputEventMap[K]) => void): UnsubscribeToUserRawInput; } /** * @description The raw user input publisher. * Publishs raw user input events to the input flow control, and subscribers. * * @category Event Parser */ export declare class RawUserInputPublisher implements UserInputPublisher { private pan; private zoom; private rotate; private all; private _cameraMux; constructor(cameraMux: CameraMux); notifyPan(diff: Point): void; notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void; notifyRotate(deltaRotation: number): void; on(eventName: K, callback: (event: RawUserInputEventMap[K]) => void): UnsubscribeToUserRawInput; get cameraMux(): CameraMux; set cameraMux(cameraMux: CameraMux); } /** * @description Creates a default raw user input publisher. * * @category Event Parser */ export declare function createDefaultRawUserInputPublisher(camera: BoardCamera): RawUserInputPublisher; export declare class RawUserInputPublisherWithWebWorkerRelay implements UserInputPublisher { private pan; private zoom; private rotate; private all; private webWorker; constructor(webWorker: Worker); notifyPan(diff: Point): void; notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void; notifyRotate(deltaRotation: number): void; on(eventName: K, callback: (event: RawUserInputEventMap[K]) => void): UnsubscribeToUserRawInput; }