import { ReactiveController, ReactiveControllerHost } from 'lit'; import { Ref } from 'lit/directives/ref.js'; export interface DragControllerOptions { /** The element to make draggable */ targetElementRef: Ref; /** The drag handle element reference */ dragHandleRef: Ref; /** Whether to snap back to viewport bounds on release (default: true) */ snapToViewport?: boolean; /** Whether keyboard navigation should be constrained to viewport (default: true) */ constrainKeyboardNavigation?: boolean; /** Step size for keyboard navigation in pixels (default: 10) */ keyboardStep?: number; /** Animation duration for snap-back in milliseconds (default: 200) */ snapAnimationDuration?: number; /** Whether the element can be dragged outside viewport boundaries during drag (default: true) */ allowOutOfBounds?: boolean; } export declare class DragController implements ReactiveController { private _host; private _options; private _isDragging; private _currentTransformX; private _currentTransformY; private _dragOffsetX; private _dragOffsetY; private _dragAbortController?; constructor(host: ReactiveControllerHost, options: DragControllerOptions); hostConnected(): void; hostDisconnected(): void; /** * Gets whether the element is currently being dragged */ get isDragging(): boolean; /** * Gets the current transform values */ get currentTransform(): { x: number; y: number; }; /** * Resets the drag position to original location */ resetPosition(): void; /** * Cleanup method for removing event listeners and resetting state */ cleanup(): void; /** * Handle pointer down event to start dragging */ handlePointerDown: (event: PointerEvent) => void; /** * Handle keyboard navigation for drag handle */ handleKeyDown: (event: KeyboardEvent) => void; private _handlePointerMove; private _handlePointerUp; private _snapToViewport; private _constrainToViewport; private _getOriginalPosition; private _getCurrentTransform; private _addDragListeners; private _removeDragListeners; }