import type { CSSProperties } from 'vue' import type { KeyFilter } from '@vueuse/core' import type { DefaultEdgeOptions, Edge, EdgeUpdatable, GraphEdge } from './edge' import type { CoordinateExtent, GraphNode, Node } from './node' import type { ConnectionLineOptions, ConnectionLineType, ConnectionMode, Connector } from './connection' import type { PanOnScrollMode } from './zoom' import type { EdgeTypesObject, NodeTypesObject } from './components' export declare type ElementData = any /** A flow element (after parsing into state) */ export declare type FlowElement = GraphNode | GraphEdge export declare type FlowElements = FlowElement[] /** Initial elements (before parsing into state) */ export declare type Element = Node | Edge export declare type Elements = Element[] export declare type CustomThemeVars = Record export declare type CSSVars = | '--vf-node-color' | '--vf-box-shadow' | '--vf-node-bg' | '--vf-node-text' | '--vf-connection-path' | '--vf-handle' export declare type ThemeVars = { [key in CSSVars]?: CSSProperties['color'] } export declare type Styles = CSSProperties & ThemeVars & CustomThemeVars export declare type ClassFunc = (element: ElementType) => string | void export declare type StyleFunc = (element: ElementType) => Styles | void /** Handle Positions */ export declare enum Position { Left = 'left', Top = 'top', Right = 'right', Bottom = 'bottom', } export interface XYPosition { x: number y: number } export declare type XYZPosition = XYPosition & { z: number } export interface Dimensions { width: number height: number } export interface Box extends XYPosition { x2: number y2: number } export interface Rect extends Dimensions, XYPosition {} export declare type SnapGrid = [number, number] export declare enum BackgroundVariant { Lines = 'lines', Dots = 'dots', } export interface SelectionRect extends Rect { startX: number startY: number draw: boolean } export interface FlowExportObject { nodes: GraphNode[] edges: GraphEdge[] position: [number, number] zoom: number } export interface FlowProps { id?: string modelValue?: Elements nodes?: Node[] edges?: Edge[] /** either use the edgeTypes prop to define your edge-types or use slots (