/** * @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 { WorkflowNode, ResizeHandle, AggregatedPort } from '../workflow-canvas.types.js'; /** * Controller for frame node operations including: * - Resize functionality * - Containment detection * - Move with contents * - Collapse/expand * - Aggregated ports calculation */ export declare class FrameController extends BaseCanvasController { private resizeState; private readonly MIN_FRAME_WIDTH; private readonly MIN_FRAME_HEIGHT; constructor(host: CanvasHost & ReactiveControllerHost); /** * Start resizing a frame from a specific handle */ startResize(event: MouseEvent, frame: WorkflowNode, handle: ResizeHandle): void; private handleResizeDragWithCoords; private handleResizeDrag; private readonly handleResizeTouchDrag; stopResize: () => void; private readonly stopResizeTouch; /** * Check if a node's center is within a frame's bounds */ isNodeInFrame(node: WorkflowNode, frame: WorkflowNode): boolean; /** * Update frame's containedNodeIds based on current node positions */ updateFrameContainment(frame: WorkflowNode): void; /** * Update all frames' containment after node move * @param triggerUpdate If true, triggers a workflow update after containment changes */ updateAllFrameContainments(triggerUpdate?: boolean): void; /** * Get all nodes contained in a frame */ getContainedNodes(frame: WorkflowNode): WorkflowNode[]; /** * Move a frame and all its contained nodes by delta */ moveFrameWithContents(frame: WorkflowNode, deltaX: number, deltaY: number): void; /** * Toggle frame collapsed state */ toggleCollapsed(frame: WorkflowNode): void; /** * Set visibility of nodes contained in a frame */ private setContainedNodesVisibility; /** * Calculate aggregated ports for a collapsed frame */ getAggregatedPorts(frame: WorkflowNode): { inputs: AggregatedPort[]; outputs: AggregatedPort[]; }; /** * Auto-resize frame to fit its contained nodes with padding */ fitToContents(frame: WorkflowNode, padding?: number): void; /** * Create a new frame around currently selected nodes */ createFrameFromSelection(): WorkflowNode | null; /** * Delete a frame * @param deleteContents If true, also delete contained nodes */ deleteFrame(frame: WorkflowNode, deleteContents?: boolean): void; /** * Check if a frame is collapsed */ isFrameCollapsed(frame: WorkflowNode): boolean; /** * Get node icons and colors for collapsed frame preview */ getContainedNodePreviews(frame: WorkflowNode, maxCount?: number): Array<{ icon: string; color: string; name: string; }>; } //# sourceMappingURL=frame.controller.d.ts.map