|
1 | 1 | import type { CSSProperties } from 'vue'
|
2 | 2 | import type { KeyFilter } from '@vueuse/core'
|
3 |
| -import type { DefaultEdgeOptions, Edge, EdgeUpdatable, GraphEdge } from './edge' |
4 |
| -import type { CoordinateExtent, CoordinateExtentRange, GraphNode, Node } from './node' |
5 |
| -import type { Connection, ConnectionLineOptions, ConnectionLineType, ConnectionMode, Connector } from './connection' |
| 3 | +import type { D3ZoomEvent } from 'd3-zoom' |
| 4 | +import type { DefaultEdgeOptions, Edge, EdgeProps, EdgeUpdatable, GraphEdge } from './edge' |
| 5 | +import type { CoordinateExtent, CoordinateExtentRange, GraphNode, Node, NodeProps } from './node' |
| 6 | +import type { |
| 7 | + Connection, |
| 8 | + ConnectionLineOptions, |
| 9 | + ConnectionLineProps, |
| 10 | + ConnectionLineType, |
| 11 | + ConnectionMode, |
| 12 | + Connector, |
| 13 | + OnConnectStartParams, |
| 14 | +} from './connection' |
6 | 15 | import type { PanOnScrollMode, ViewportTransform } from './zoom'
|
7 | 16 | import type { EdgeTypesObject, NodeTypesObject } from './components'
|
8 |
| -import type { CustomEvent } from './hooks' |
| 17 | +import type { CustomEvent, EdgeMouseEvent, EdgeUpdateEvent, NodeDragEvent, NodeMouseEvent } from './hooks' |
9 | 18 | import type { ValidConnectionFunc } from './handle'
|
| 19 | +import type { EdgeChange, NodeChange } from '~/types/changes' |
| 20 | +import type { VueFlowStore } from '~/types/store' |
| 21 | +import type { VueFlowError } from '~/utils' |
10 | 22 |
|
11 | 23 | export type ElementData = any
|
12 | 24 |
|
@@ -192,3 +204,83 @@ export interface FlowProps {
|
192 | 204 |
|
193 | 205 | // Todo: Remove in next major version
|
194 | 206 | export type FlowOptions = FlowProps
|
| 207 | + |
| 208 | +export interface FlowEmits { |
| 209 | + (event: 'nodesChange', changes: NodeChange[]): void |
| 210 | + (event: 'edgesChange', changes: EdgeChange[]): void |
| 211 | + (event: 'nodeDoubleClick', nodeMouseEvent: NodeMouseEvent): void |
| 212 | + (event: 'nodeClick', nodeMouseEvent: NodeMouseEvent): void |
| 213 | + (event: 'nodeMouseEnter', nodeMouseEvent: NodeMouseEvent): void |
| 214 | + (event: 'nodeMouseMove', nodeMouseEvent: NodeMouseEvent): void |
| 215 | + (event: 'nodeMouseLeave', nodeMouseEvent: NodeMouseEvent): void |
| 216 | + (event: 'nodeContextMenu', nodeMouseEvent: NodeMouseEvent): void |
| 217 | + (event: 'nodeDragStart', nodeDragEvent: NodeDragEvent): void |
| 218 | + (event: 'nodeDrag', nodeDragEvent: NodeDragEvent): void |
| 219 | + (event: 'nodeDragStop', nodeDragEvent: NodeDragEvent): void |
| 220 | + (event: 'nodesInitialized'): void |
| 221 | + (event: 'miniMapNodeClick', nodeMouseEvent: NodeMouseEvent): void |
| 222 | + (event: 'miniMapNodeDoubleClick', nodeMouseEvent: NodeMouseEvent): void |
| 223 | + (event: 'miniMapNodeMouseEnter', nodeMouseEvent: NodeMouseEvent): void |
| 224 | + (event: 'miniMapNodeMouseMove', nodeMouseEvent: NodeMouseEvent): void |
| 225 | + (event: 'miniMapNodeMouseLeave', nodeMouseEvent: NodeMouseEvent): void |
| 226 | + (event: 'connect', connectionEvent: Connection): void |
| 227 | + ( |
| 228 | + event: 'connectStart', |
| 229 | + connectionEvent: { |
| 230 | + event?: MouseEvent |
| 231 | + } & OnConnectStartParams, |
| 232 | + ): void |
| 233 | + (event: 'connectEnd', connectionEvent?: MouseEvent): void |
| 234 | + ( |
| 235 | + event: 'clickConnectStart', |
| 236 | + connectionEvent: { |
| 237 | + event?: MouseEvent |
| 238 | + } & OnConnectStartParams, |
| 239 | + ): void |
| 240 | + (event: 'clickConnectEnd', connectionEvent?: MouseEvent): void |
| 241 | + (event: 'moveStart', moveEvent: { event: D3ZoomEvent<HTMLDivElement, any>; flowTransform: ViewportTransform }): void |
| 242 | + (event: 'move', moveEvent: { event: D3ZoomEvent<HTMLDivElement, any>; flowTransform: ViewportTransform }): void |
| 243 | + (event: 'moveEnd', moveEvent: { event: D3ZoomEvent<HTMLDivElement, any>; flowTransform: ViewportTransform }): void |
| 244 | + (event: 'selectionDragStart', selectionEvent: NodeDragEvent): void |
| 245 | + (event: 'selectionDrag', selectionEvent: NodeDragEvent): void |
| 246 | + (event: 'selectionDragStop', selectionEvent: NodeDragEvent): void |
| 247 | + (event: 'selectionContextMenu', selectionEvent: { event: MouseEvent; nodes: GraphNode[] }): void |
| 248 | + (event: 'selectionStart', selectionEvent: MouseEvent): void |
| 249 | + (event: 'selectionEnd', selectionEvent: MouseEvent): void |
| 250 | + (event: 'viewportChangeStart', viewport: ViewportTransform): void |
| 251 | + (event: 'viewportChange', viewport: ViewportTransform): void |
| 252 | + (event: 'viewportChangeEnd', viewport: ViewportTransform): void |
| 253 | + (event: 'paneReady', paneEvent: VueFlowStore): void |
| 254 | + (event: 'paneScroll', paneEvent: WheelEvent | undefined): void |
| 255 | + (event: 'paneClick', paneEvent: MouseEvent): void |
| 256 | + (event: 'paneContextMenu', paneEvent: MouseEvent): void |
| 257 | + (event: 'paneMouseEnter', paneEvent: MouseEvent): void |
| 258 | + (event: 'paneMouseMove', paneEvent: MouseEvent): void |
| 259 | + (event: 'paneMouseLeave', paneEvent: MouseEvent): void |
| 260 | + (event: 'edgeContextMenu', edgeMouseEvent: EdgeMouseEvent): void |
| 261 | + (event: 'edgeMouseEnter', edgeMouseEvent: EdgeMouseEvent): void |
| 262 | + (event: 'edgeMouseMove', edgeMouseEvent: EdgeMouseEvent): void |
| 263 | + (event: 'edgeMouseLeave', edgeMouseEvent: EdgeMouseEvent): void |
| 264 | + (event: 'edgeDoubleClick', edgeMouseEvent: EdgeMouseEvent): void |
| 265 | + (event: 'edgeClick', edgeMouseEvent: EdgeMouseEvent): void |
| 266 | + (event: 'edgeUpdateStart', edgeMouseEvent: EdgeMouseEvent): void |
| 267 | + (event: 'edgeUpdate', edgeUpdateEvent: EdgeUpdateEvent): void |
| 268 | + (event: 'edgeUpdateEnd', edgeMouseEvent: EdgeMouseEvent): void |
| 269 | + (event: 'updateNodeInternals'): void |
| 270 | + (event: 'error', error: VueFlowError): void |
| 271 | + |
| 272 | + /** v-model event definitions */ |
| 273 | + (event: 'update:modelValue', value: FlowElements): void |
| 274 | + (event: 'update:nodes', value: GraphNode[]): void |
| 275 | + (event: 'update:edges', value: GraphEdge[]): void |
| 276 | +} |
| 277 | + |
| 278 | +export interface NodeSlots extends Record<`node-${string}`, (nodeProps: NodeProps) => any> {} |
| 279 | + |
| 280 | +export interface EdgeSlots extends Record<`edge-${string}`, (edgeProps: EdgeProps) => any> {} |
| 281 | + |
| 282 | +export interface FlowSlots extends NodeSlots, EdgeSlots { |
| 283 | + 'connection-line': (connectionLineProps: ConnectionLineProps) => any |
| 284 | + 'zoom-pane': () => any |
| 285 | + 'default': () => any |
| 286 | +} |
0 commit comments