import type { ComputedRef, Ref } from 'vue'; /** * 可拖拽容器 Emits */ export interface DraggableContainerEmits { /** 拖拽中 */ (e: 'dragging', position: PositionAndSize): void; /** 调整大小中 */ (e: 'resizing', position: PositionAndSize): void; /** 拖拽停止 */ (e: 'drag-stop', position: PositionAndSize): void; /** 调整大小停止 */ (e: 'resize-stop', position: PositionAndSize): void; /** 压缩状态变化 */ (e: 'compression-change', isCompressed: boolean): void; } /** * 可拖拽容器 Expose */ export interface DraggableContainerExpose { /** 是否压缩状态 */ isCompressed: Ref; /** 侧面板是否已展开 */ isSidePanelExpanded: Ref; /** 当前位置和大小 */ positionAndSize: ComputedRef; /** 折叠侧面板并恢复容器原始宽度 */ collapseSidePanel: () => void; /** 为侧面板展开扩展容器宽度 */ expandForSidePanel: (extraWidth: number) => void; /** 切换压缩状态 */ toggleCompression: () => void; /** 更新位置 */ updatePosition: (x: number, y: number) => void; /** 同时更新位置和大小 */ updatePositionAndSize: (x: number, y: number, width: number, height: number) => void; /** 更新大小 */ updateSize: (width: number, height: number) => void; } /** * 可拖拽容器 Props */ export interface DraggableContainerProps { /** 自定义类名 */ className?: string; /** 压缩状态下的高度 */ compressedHeight?: number; /** 压缩状态下的边距 */ compressedPadding?: number; /** 初始高度 */ defaultHeight?: number; /** 初始宽度 */ defaultWidth?: number; /** 初始 X 位置 */ defaultX?: number; /** 初始 Y 位置 */ defaultY?: number; /** 是否可拖拽 */ draggable?: boolean; /** 拖拽手柄选择器 */ dragHandle?: string; /** 最大宽度 */ maxWidth?: number | string; /** 最大宽度百分比(相对于视窗) */ maxWidthPercent?: number; /** 最小高度 */ minHeight?: number; /** 最小宽度 */ minWidth?: number; /** 是否可调整大小 */ resizable?: boolean; /** 传送目标 */ teleportTo?: string; /** 是否显示 */ visible?: boolean; } /** * 位置和大小 */ export interface PositionAndSize { height: number; width: number; x: number; y: number; } /** * useDraggable 配置选项 */ export interface UseDraggableOptions { /** 压缩状态下的高度 */ compressedHeight?: number; /** 压缩状态下的边距 */ compressedPadding?: number; /** 默认高度 */ defaultHeight?: number; /** 默认左侧位置 */ defaultLeft?: number; /** 默认顶部位置 */ defaultTop?: number; /** 初始宽度 */ initWidth?: number; /** 最大宽度百分比 */ maxWidthPercent?: number; /** 最小高度 */ minHeight?: number; /** 最小宽度 */ minWidth?: number; } /** * useDraggable 返回值 */ export interface UseDraggableReturn { height: Ref; isCompressed: Ref; isSidePanelExpanded: Ref; left: Ref; maxWidth: Ref; minHeight: number; minWidth: number; top: Ref; width: Ref; collapseSidePanel: () => void; expandForSidePanel: (extraWidth: number) => void; handleDragging: (x: number, y: number) => void; handleDragStop: (x: number, y: number) => void; handleResizeStop: (x: number, y: number, width: number, height: number) => void; handleResizing: (x: number, y: number, width: number, height: number) => void; toggleCompression: () => void; updatePosition: (x: number, y: number) => void; updatePositionAndSize: (x: number, y: number, width: number, height: number) => void; updateSize: (width: number, height: number) => void; } //# sourceMappingURL=types.d.ts.map