/** * @license * Copyright 2024 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { ReactiveControllerHost } from 'lit'; import { BaseCanvasController } from './base.controller.js'; import { CanvasHost } from '../interfaces/index.js'; import type { WorkflowNode, WorkflowEdge, Position, UndoProvider } from '../workflow-canvas.types.js'; /** * Controller for undo/redo operations. * Delegates all undo/redo logic to an externally-provided UndoProvider * so the UI library never imports from the redux store. */ export declare class UndoController extends BaseCanvasController { private _undoProvider; constructor(host: CanvasHost & ReactiveControllerHost); /** * Set the undo provider (injected by the host) */ set undoProvider(provider: UndoProvider | null); get undoProvider(): UndoProvider | null; /** * Get the current workflow ID */ private getWorkflowId; /** * Execute undo */ performUndo(): boolean; /** * Execute redo */ performRedo(): boolean; /** * Check if undo is available */ canUndo(): boolean; /** * Check if redo is available */ canRedo(): boolean; /** * Get undo tooltip text */ getUndoTooltip(): string; /** * Get redo tooltip text */ getRedoTooltip(): string; /** * Record that a node was added */ recordNodeAdded(node: WorkflowNode): void; /** * Record that a node was deleted */ recordNodeDeleted(node: WorkflowNode, connectedEdges: WorkflowEdge[]): void; /** * Record that nodes were moved */ recordNodesMoved(moves: Array<{ nodeId: string; oldPosition: Position; newPosition: Position; }>): void; /** * Record that a node's configuration was updated */ recordNodeConfigUpdated(nodeId: string, changes: Partial, previousState: Partial): void; /** * Record that an edge was added */ recordEdgeAdded(edge: WorkflowEdge): void; /** * Record that an edge was deleted */ recordEdgeDeleted(edge: WorkflowEdge): void; /** * Record a bulk delete operation */ recordBulkDeleted(nodes: WorkflowNode[], edges: WorkflowEdge[]): void; /** * Record that nodes were pasted */ recordNodesPasted(nodes: WorkflowNode[], edges: WorkflowEdge[]): void; /** * Record that nodes were duplicated */ recordNodesDuplicated(nodes: WorkflowNode[], edges: WorkflowEdge[]): void; /** * Flush any pending operations (call before undo) */ flushPending(): void; /** * Clear undo history for the current workflow */ clearHistory(): void; } //# sourceMappingURL=undo.controller.d.ts.map