import type { Direction, DragAxis, IDragRefConfig, IPoint } from './Types'; /** * Reference to a draggable element. * Core class for drag functionality - framework agnostic. * * @public */ export declare class DragRef { private readonly _element; private _rootElement; private readonly _config; private readonly _state; private readonly _registry; private _dropContainer; private _boundaryElement; private readonly _listeners; private _dragStartTimer; private _data; private _handles; private _pointerDownListener; private readonly _nextDropListRef; private _parentDragRef; /** * @param element - Element to make draggable. * @param config - Configuration options. * * @public */ constructor(element: HTMLElement, config?: IDragRefConfig); /** * The native element. * * @public */ get element(): HTMLElement; /** * Whether dragging is currently active. * * @public */ get isDragging(): boolean; /** * Whether dragging is disabled. * * @public */ get disabled(): boolean; set disabled(value: boolean); /** * Lock axis. * * @public */ get lockAxis(): DragAxis; set lockAxis(value: DragAxis); /** * Arbitrary data attached to this drag item. * * @public */ get data(): TData | undefined; set data(value: TData | undefined); /** * Scale factor. * * @public */ get scale(): number; set scale(value: number); /** * Reset drag item to its original position. * * @public */ reset(): void; /** * Reset drag item to boundary edge if outside boundary. * * @public */ resetToBoundary(): void; /** * Get free drag position (for standalone dragging). * * @returns Current position. * * @public */ getFreeDragPosition(): Readonly; /** * Set free drag position programmatically. * * @param value - Position to set. * * @public */ setFreeDragPosition(value: IPoint): void; /** * Get placeholder element. * * @returns Placeholder element or null. * * @public */ getPlaceholderElement(): HTMLElement | null; /** * Get root element. * * @returns Root element. * * @public */ getRootElement(): HTMLElement; /** * Get visible element (returns preview during drag, root element otherwise). * * @returns Currently visible element. * * @public */ getVisibleElement(): HTMLElement; /** * Add a drag handle. * * @param handle - Handle element. * * @public */ withHandles(handles: Array): this; /** * Update root element. * * @param element - New root element. * * @public */ withRootElement(element: HTMLElement): this; /** * Update boundary element. * * @param boundary - Boundary element or selector. * * @public */ withBoundaryElement(boundary: string | HTMLElement | null): this; /** * Set preview container element. * * @param container - Container for preview element. * * @public */ withPreviewContainer(container: HTMLElement | null): this; /** * Disable a specific drag handle. * * @param handle - Handle element to disable. * * @public */ disableHandle(handle: HTMLElement): void; /** * Enable a specific drag handle. * * @param handle - Handle element to enable. * * @public */ enableHandle(handle: HTMLElement): void; /** * Set layout direction (ltr/rtl). * * @param direction - Layout direction. * * @public */ withDirection(direction: Direction): this; /** * Set parent DragRef (for nested draggables). * * @param parent - Parent DragRef. * * @public */ withParent(parent: DragRef | null): this; /** * Set custom preview template. * * @param template - Preview template element or factory function. * * @public */ withPreviewTemplate(template: HTMLElement | (() => HTMLElement) | null): this; /** * Set custom placeholder template. * * @param template - Placeholder template element or factory function. * * @public */ withPlaceholderTemplate(template: HTMLElement | (() => HTMLElement) | null): this; /** * Dispose of this drag ref. * * @public */ dispose(): void; /** * Attach pointer event listeners. * * @private */ private attachPointerListeners; /** * Detach pointer event listeners. * * @private */ private detachPointerListeners; /** * Reattach pointer listeners (after handle changes). * * @private */ private reattachPointerListeners; /** * Handle pointerdown event. * * @param event - Pointer event. * * @private */ private onPointerDown; /** * Initialize drag sequence. * * @param event - Trigger event. * * @private */ private initializeDragSequence; /** * Start drag sequence (after start event). * * @param event - Trigger event. * * @private */ private startDragSequence; /** * Handle pointermove during drag. * * @param event - Pointer event. * * @private */ private onPointerMove; /** * Handle pointerup (end drag). * * @param event - Pointer event. * * @private */ private onPointerUp; /** * Handle lost pointer capture. * * @private */ private onLostPointerCapture; /** * Calculate target position based on pointer. * * @param pointerPosition - Current pointer position. * @returns Target position for element (transform delta from initial position). * * @private */ private calculateTargetPosition; /** * Apply all constraints to a position. * * @param position - Unconstrained position. * @returns Constrained position. * * @private */ private applyConstraints; /** * Update drag position (transform). * * @param position - New position. * * @private */ private updateDragPosition; /** * Update pointer direction. * * @param currentPosition - Current pointer position. * * @private */ private updatePointerDirection; /** * Create preview element (ghost). * * @private */ private createPreviewElement; /** * Get container for preview element. * * @returns Container element. * * @private */ private getPreviewContainer; /** * Create placeholder element. * * @private */ private createPlaceholderElement; /** * Remove preview element. * * @private */ private removePreviewElement; /** * Remove placeholder element. * * @private */ private removePlaceholderElement; /** * Check if pointer intersects with a drop list. * * @param pointerPosition - Current pointer position. * * @private */ private checkDropListIntersection; /** * Enter a drop list. * * @param dropList - Drop list to enter. * @param pointerPosition - Pointer position. * * @private */ private enterDropList; /** * Exit a drop list. * * @param dropList - Drop list to exit. * * @private */ private exitDropList; /** * End drag sequence. * * @param dropped - Whether item was dropped (true) or cancelled (false). * * @private */ private endDragSequence; /** * Animate preview back to placeholder position. * * @param callback - Callback when animation completes. * * @private */ private animatePreviewToPlaceholder; /** * Cleanup drag artifacts. * * @private */ private cleanupDragArtifacts; /** * Finalize drag sequence. * * @private */ private finalizeDragSequence; /** * Attach drag event listeners. * * @private */ private attachDragListeners; /** * Detach drag event listeners. * * @private */ private detachDragListeners; /** * Create base event detail. * * @param event - Native event (optional). * @returns Base event detail. * * @private */ private createBaseEventDetail; /** * Create drag start event. * * @param event - Native event. * @returns Drag start event. * * @private */ private createDragStartEvent; /** * Create drag move event. * * @param event - Native event. * @returns Drag move event. * * @private */ private createDragMoveEvent; /** * Create drag release event. * * @returns Drag release event. * * @private */ private createDragReleaseEvent; /** * Create drag end event. * * @param dropped - Whether item was dropped. * @returns Drag end event. * * @private */ private createDragEndEvent; /** * Create drag enter event. * * @param container - Container being entered. * @returns Drag enter event. * * @private */ private createDragEnterEvent; /** * Create drag exit event. * * @param container - Container being exited. * @returns Drag exit event. * * @private */ private createDragExitEvent; /** * Apply default configuration values. * * @param config - User config. * @returns Full config with defaults. * * @private */ private applyConfigDefaults; /** * Get start delay based on pointer type. * * @param event - Pointer event. * @returns Delay in ms. * * @private */ private getStartDelay; } /** * Create a new DragRef instance. * * @param element - Element to make draggable. * @param config - Configuration options. * @returns DragRef instance. * * @public */ export declare function createDragRef(element: HTMLElement, config?: IDragRefConfig): DragRef; //# sourceMappingURL=DragRef.d.ts.map