import type { CSSProperties } from 'vue' import type { KeyFilter } from '@vueuse/core' import type { D3ZoomEvent } from 'd3-zoom' import type { VueFlowError } from '../utils' import type { DefaultEdgeOptions, Edge, EdgeProps, EdgeUpdatable, GraphEdge } from './edge' import type { CoordinateExtent, CoordinateExtentRange, GraphNode, Node, NodeProps } from './node' import type { Connection, ConnectionLineOptions, ConnectionLineProps, ConnectionLineType, ConnectionMode, Connector, OnConnectStartParams, } from './connection' import type { PanOnScrollMode, ViewportTransform } from './zoom' import type { EdgeTypesObject, NodeTypesObject } from './components' import type { CustomEvent, EdgeMouseEvent, EdgeUpdateEvent, NodeDragEvent, NodeMouseEvent } from './hooks' import type { ValidConnectionFunc } from './handle' import type { EdgeChange, NodeChange } from './changes' import type { VueFlowStore } from './store' export type ElementData = any /** A flow element (after parsing into state) */ export type FlowElement< NodeData = ElementData, EdgeData = ElementData, NodeEvents extends Record = any, EdgeEvents extends Record = any, > = GraphNode | GraphEdge export type FlowElements< NodeData = ElementData, EdgeData = ElementData, NodeEvents extends Record = any, EdgeEvents extends Record = any, > = FlowElement[] /** Initial elements (before parsing into state) */ export type Element< NodeData = ElementData, EdgeData = ElementData, NodeEvents extends Record = any, EdgeEvents extends Record = any, > = Node | Edge export type Elements< NodeData = ElementData, EdgeData = ElementData, NodeEvents extends Record = any, EdgeEvents extends Record = any, > = Element[] export type MaybeElement = Node | Edge | Connection | FlowElement | Element export interface CustomThemeVars { [key: string]: string | number | undefined } export type CSSVars = | '--vf-node-color' | '--vf-box-shadow' | '--vf-node-bg' | '--vf-node-text' | '--vf-connection-path' | '--vf-handle' export type ThemeVars = { [key in CSSVars]?: CSSProperties['color'] } export type Styles = CSSProperties & ThemeVars & CustomThemeVars /** @deprecated will be removed in the next major version */ export type ClassFunc = (element: ElementType) => string | void /** @deprecated will be removed in the next major version */ export 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 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 type SnapGrid = [x: number, y: number] export interface SelectionRect extends Rect { startX: number startY: number } export declare enum SelectionMode { Partial = 'partial', Full = 'full', } export interface FlowExportObject { nodes: Node[] edges: Edge[] /** @deprecated use `viewport` instead */ position: [x: number, y: number] /** @deprecated use `viewport` instead */ zoom: number viewport: ViewportTransform } export interface FlowProps { id?: string modelValue?: Elements nodes?: Node[] edges?: Edge[] /** either use the edgeTypes prop to define your edge-types or use slots (