47 lines
No EOL
1.1 KiB
TypeScript
47 lines
No EOL
1.1 KiB
TypeScript
/**
|
|
* Type definitions for drag and drop functionality
|
|
*/
|
|
|
|
export interface MousePosition {
|
|
x: number;
|
|
y: number;
|
|
clientX?: number;
|
|
clientY?: number;
|
|
}
|
|
|
|
export interface DragOffset {
|
|
x: number;
|
|
y: number;
|
|
offsetX?: number;
|
|
offsetY?: number;
|
|
}
|
|
|
|
export interface DragState {
|
|
isDragging: boolean;
|
|
draggedElement: HTMLElement | null;
|
|
draggedClone: HTMLElement | null;
|
|
eventId: string | null;
|
|
startColumn: string | null;
|
|
currentColumn: string | null;
|
|
mouseOffset: DragOffset;
|
|
}
|
|
|
|
export interface DragEndPosition {
|
|
column: string;
|
|
y: number;
|
|
snappedY: number;
|
|
time?: Date;
|
|
}
|
|
|
|
export interface StackLinkData {
|
|
prev?: string;
|
|
next?: string;
|
|
isFirst?: boolean;
|
|
isLast?: boolean;
|
|
}
|
|
|
|
export interface DragEventHandlers {
|
|
handleDragStart?(originalElement: HTMLElement, eventId: string, mouseOffset: DragOffset, column: string): void;
|
|
handleDragMove?(eventId: string, snappedY: number, column: string, mouseOffset: DragOffset): void;
|
|
handleDragEnd?(eventId: string, originalElement: HTMLElement, draggedClone: HTMLElement, finalColumn: string, finalY: number): void;
|
|
} |