/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { TabsHost, BaseTabsController } from './base.controller.js'; import { ReactiveControllerHost } from 'lit'; /** * Drag and drop controller interface for tabs components */ export interface DragDropController { handleDragStart(event: DragEvent): void; handleDragOver(event: DragEvent): void; handleDragEnter(event: DragEvent): void; handleDragLeave(event: DragEvent): void; handleDrop(event: DragEvent): void; } /** * Enhanced tabs host interface for drag and drop functionality */ export interface TabsDragDropHost extends TabsHost { editable?: { canMove?: boolean; }; dispatchEventWithMetadata(eventName: string, detail: any): void; } /** * Drag and drop controller manages drag and drop functionality for tabs components * Handles all drag events and tab reordering */ export declare class TabsDragDropController extends BaseTabsController implements DragDropController { protected _host: TabsDragDropHost & ReactiveControllerHost; private dragOverHandler; constructor(host: TabsDragDropHost & ReactiveControllerHost); get host(): TabsDragDropHost & ReactiveControllerHost; hostConnected(): void; hostDisconnected(): void; /** * Handle drag start event * @param event - The drag event */ handleDragStart(event: DragEvent): void; /** * Handle drag over event * @param event - The drag event */ handleDragOver(event: DragEvent): void; /** * Handle drag enter event * @param event - The drag event */ handleDragEnter(event: DragEvent): void; /** * Handle drag leave event * @param event - The drag event */ handleDragLeave(event: DragEvent): void; /** * Handle drop event * @param event - The drag event */ handleDrop(event: DragEvent): void; /** * Check if tab can be moved (drag and drop enabled) */ canMoveTab(): boolean; /** * Validate if tab reorder is valid */ private isValidTabReorder; /** * Perform tab reordering */ private performTabReorder; /** * Clean up drag-related CSS classes */ private cleanupDragClasses; /** * Get draggable state for tab element */ getDraggableState(): boolean; } //# sourceMappingURL=dragdrop.controller.d.ts.map