import { type Ref } from "vue"; import type { DataGridColumnSnapshot, DataGridRowNode, DataGridSelectionSnapshot, DataGridVirtualSelectionOperation, DataGridVirtualSelectionServerCapabilities } from "@affino/datagrid-core"; import type { DataGridCopyRange } from "../advanced"; import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime"; import type { DataGridAppMode } from "./useDataGridAppControls"; export type DataGridAppPendingClipboardOperation = "none" | "copy" | "cut"; export type DataGridAppPendingClipboardEdge = "top" | "right" | "bottom" | "left"; export type DataGridAppPasteMode = "default" | "values"; export type DataGridAppClipboardPasteStatus = "idle" | "pending" | "rejected"; export interface DataGridAppPasteOptions { mode?: DataGridAppPasteMode; } export interface DataGridAppClipboardPasteState { status: DataGridAppClipboardPasteStatus; operationId: number | null; trigger: "keyboard" | "context-menu" | null; mode: DataGridAppPasteMode; message: string | null; } export interface DataGridAppServerClipboardOperationResult { ok: boolean; message?: string | null; payload?: string | null; } export interface DataGridAppServerClipboardSourceRequest { operation: Exclude; trigger: "keyboard" | "context-menu"; range: DataGridCopyRange; ranges: readonly DataGridCopyRange[]; columns: readonly string[]; selectionSnapshot: DataGridSelectionSnapshot | null; } export interface DataGridAppServerClipboardPasteRequest { trigger: "keyboard" | "context-menu"; mode: DataGridAppPasteMode; targetRanges: readonly DataGridCopyRange[]; columns: readonly string[]; matrix: readonly (readonly string[])[]; pendingOperation: DataGridAppPendingClipboardOperation; sourceRange: DataGridCopyRange | null; selectionSnapshot: DataGridSelectionSnapshot | null; } export interface DataGridAppServerClipboardOperations { capabilities?: DataGridVirtualSelectionServerCapabilities; copy?: (request: DataGridAppServerClipboardSourceRequest) => DataGridAppServerClipboardOperationResult | Promise; cut?: (request: DataGridAppServerClipboardSourceRequest) => DataGridAppServerClipboardOperationResult | Promise; paste?: (request: DataGridAppServerClipboardPasteRequest) => DataGridAppServerClipboardOperationResult | Promise; } export interface UseDataGridAppClipboardOptions { mode: Ref; runtime: Pick, "api" | "getBodyRowAtIndex">; ensureEditableRowAtIndex?: (rowIndex: number) => DataGridRowNode | null; totalRows: Ref; visibleColumns: Ref; viewportRowStart: Ref; resolveSelectionRange: () => DataGridCopyRange | null; resolveSelectionRanges?: () => readonly DataGridCopyRange[]; resolveSelectionSnapshot?: () => DataGridSelectionSnapshot | null; resolveCurrentCellCoord: () => { rowIndex: number; columnIndex: number; } | null; applySelectionRange: (range: DataGridCopyRange) => void; clearCellSelection: () => void; setLastAction?: (message: string) => void; captureRowsSnapshot: () => TSnapshot; captureRowsSnapshotForRowIds?: (rowIds: readonly (string | number)[]) => TSnapshot; recordEditTransaction: (beforeSnapshot: TSnapshot, afterSnapshotOverride?: TSnapshot, label?: string) => void; readCell: (row: DataGridRowNode, columnKey: string) => string; readClipboardCell?: (row: DataGridRowNode, columnKey: string) => string; isCellEditable: (row: DataGridRowNode, rowIndex: number, columnKey: string, columnIndex: number) => boolean; syncViewport: () => void; applyClipboardEdits?: (range: DataGridCopyRange, matrix: string[][], options?: { recordHistory?: boolean; recordHistoryLabel?: string; }) => number | Promise; serverClipboardOperations?: DataGridAppServerClipboardOperations; buildFillMatrixFromRange?: (range: DataGridCopyRange) => string[][]; buildPasteSpecialMatrixFromRange?: (range: DataGridCopyRange, mode: Exclude) => string[][]; } export interface UseDataGridAppClipboardResult { pendingClipboardOperation: Ref; pendingClipboardRange: Ref; pendingClipboardRanges: Ref; clipboardPasteState: Ref; normalizeClipboardRange: (range: DataGridCopyRange) => DataGridCopyRange | null; applyClipboardEdits: (range: DataGridCopyRange, matrix: string[][], options?: { recordHistory?: boolean; recordHistoryLabel?: string; }) => number | Promise; rangesEqual: (left: DataGridCopyRange | null, right: DataGridCopyRange | null) => boolean; buildFillMatrixFromRange: (range: DataGridCopyRange) => string[][]; clearPendingClipboardOperation: (clearSelection: boolean, clearBufferedClipboardPayload?: boolean) => boolean; copySelectedCells: (trigger?: "keyboard" | "context-menu") => Promise; pasteSelectedCells: (trigger?: "keyboard" | "context-menu", options?: DataGridAppPasteOptions) => Promise; cutSelectedCells: (trigger?: "keyboard" | "context-menu") => Promise; clearRejectedClipboardPaste: () => boolean; isCellInPendingClipboardRange: (rowOffset: number, columnIndex: number) => boolean; isCellOnPendingClipboardEdge: (rowOffset: number, columnIndex: number, edge: DataGridAppPendingClipboardEdge) => boolean; } export declare function isDataGridRowMissingOrPlaceholder(row: DataGridRowNode | null | undefined): boolean; export declare function resolveMissingRowIndexInRange(getBodyRowAtIndex: (rowIndex: number) => DataGridRowNode | null | undefined, range: DataGridCopyRange): number | null; export declare function resolveGroupRowIndexInRange(getBodyRowAtIndex: (rowIndex: number) => DataGridRowNode | null | undefined, range: DataGridCopyRange): number | null; export interface DataGridVirtualSelectionOperationGuardResult { blocked: boolean; message: string | null; mode?: "materialized" | "server" | "virtual" | "blocked"; } export interface ResolveDataGridVirtualSelectionOperationGuardOptions { range?: DataGridCopyRange | null; capabilities?: DataGridVirtualSelectionServerCapabilities; allowServerDelegation?: boolean; blockedMessage?: string; serverUnavailableMessage?: string; staleMessage?: string; } export declare function resolveDataGridVirtualSelectionOperationGuard(operation: DataGridVirtualSelectionOperation, snapshot: DataGridSelectionSnapshot | null | undefined, normalizeRange: (range: DataGridCopyRange) => DataGridCopyRange | null, options?: ResolveDataGridVirtualSelectionOperationGuardOptions): DataGridVirtualSelectionOperationGuardResult; export declare function useDataGridAppClipboard(options: UseDataGridAppClipboardOptions): UseDataGridAppClipboardResult; //# sourceMappingURL=useDataGridAppClipboard.d.ts.map