/** * Borrow from https://github.com/excalidraw/excalidraw/blob/f55ecb96cc8db9a2417d48cd8077833c3822d64e/packages/excalidraw/snapping.ts */ import { AABB, API } from '..'; type PointPair = [[number, number], [number, number]]; export type PointSnap = { type: 'point'; points: PointPair; offset: number; }; export type Gap = { startBounds: AABB; endBounds: AABB; startSide: [[number, number], [number, number]]; endSide: [[number, number], [number, number]]; overlap: [number, number]; length: number; }; export type GapSnap = { type: 'gap'; direction: 'center_horizontal' | 'center_vertical' | 'side_left' | 'side_right' | 'side_top' | 'side_bottom'; gap: Gap; offset: number; }; export type Snap = GapSnap | PointSnap; export type Snaps = Snap[]; export type PointSnapLine = { type: 'points'; points: [number, number][]; }; export type GapSnapLine = { type: 'gap'; direction: 'horizontal' | 'vertical'; points: PointPair; }; export type SnapLine = PointSnapLine | GapSnapLine; export declare const snapDraggedElements: (api: API, dragOffset: [number, number]) => { snapOffset: [number, number]; snapLines: { type: string; points: [number, number][]; }[]; }; export declare const calculateOffset: (commonBounds: [number, number], dragOffset: [number, number], snapOffset: [number, number], gridSize: number) => [number, number]; export declare const getGridPoint: (x: number, y: number, gridSize: number) => [number, number]; export {};