Skip to content

Commit 196cafd

Browse files
committed
feat(core): add slots and emits type definition
1 parent 2b99b77 commit 196cafd

File tree

1 file changed

+96
-4
lines changed

1 file changed

+96
-4
lines changed

packages/core/src/types/flow.ts

Lines changed: 96 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
import type { CSSProperties } from 'vue'
22
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'
615
import type { PanOnScrollMode, ViewportTransform } from './zoom'
716
import type { EdgeTypesObject, NodeTypesObject } from './components'
8-
import type { CustomEvent } from './hooks'
17+
import type { CustomEvent, EdgeMouseEvent, EdgeUpdateEvent, NodeDragEvent, NodeMouseEvent } from './hooks'
918
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'
1022

1123
export type ElementData = any
1224

@@ -192,3 +204,83 @@ export interface FlowProps {
192204

193205
// Todo: Remove in next major version
194206
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

Comments
 (0)