import type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from 'react'; /** * Convert pointer events into slide-canvas coordinates. * * The slide `.viewport` is CSS-scaled (`transform: scale(canvasScale)`) and * left unsized so absolute children are not laid out twice. Pair `clientX/Y` * with the `.viewport-wrapper` rect (already in visual pixels) and divide by * canvasScale, times any ancestor CSS zoom (`rect.width / offsetWidth`). */ export type ReactPointerEvent = ReactMouseEvent | ReactTouchEvent; export type PointerLike = MouseEvent | TouchEvent | ReactPointerEvent | { clientX: number; clientY: number; }; export declare function nativePointerEvent(e: ReactPointerEvent | MouseEvent | TouchEvent): MouseEvent | TouchEvent; export declare function getPointerClient(e: PointerLike): { x: number; y: number; }; export declare function renderedScale(renderedSize: number, unscaledSize: number, fallback: number): number; export declare function clientToCanvasPoint(clientX: number, clientY: number, originX: number, originY: number, scale: number): { x: number; y: number; }; export declare function clientDeltaToCanvas(dx: number, dy: number, scale: number): { x: number; y: number; }; export declare function findSlideViewport(from?: EventTarget | null): HTMLElement | null; /** * The slide `.viewport` is intentionally unsized (absolute children + CSS * scale). Measuring it would be 0×0 and assigning it the unscaled slide size * double-applies zoom against `.viewport-wrapper`. Use the wrapper — already * sized to the *visual* slide — and multiply by the store canvas scale. */ export declare function getScaleRoot(viewport: HTMLElement | null): HTMLElement | null; export declare function getViewportRenderedScale(viewport: HTMLElement | null, fallbackScale: number): number; export declare function clientToCanvas(e: PointerLike, viewport: HTMLElement, fallbackScale: number): { x: number; y: number; }; /** Wrapper-local visual pixels — same space as HitLayer / `elementVisualHitRect`. */ export declare function clientToWrapper(e: PointerLike, viewport: HTMLElement): { x: number; y: number; }; export declare function pointerDeltaToCanvas(start: { x: number; y: number; }, current: PointerLike, viewport: HTMLElement | null, fallbackScale: number): { x: number; y: number; };