diff --git a/examples/vite/src/Basic/BasicOptionsAPI.vue b/examples/vite/src/Basic/BasicOptionsAPI.vue index bc33e983..16c2e8ff 100644 --- a/examples/vite/src/Basic/BasicOptionsAPI.vue +++ b/examples/vite/src/Basic/BasicOptionsAPI.vue @@ -43,7 +43,7 @@ export default defineComponent({ }, onPaneReady(instance: FlowEvents['paneReady']) { instance.fitView() - this.instance = instance + this.instance = instance as any }, onConnect(params: FlowEvents['connect']) { addEdge(params, this.elements) diff --git a/examples/vite/src/CustomConnectionLine/ConnectionLine.vue b/examples/vite/src/CustomConnectionLine/ConnectionLine.vue index af6c81d7..16926fde 100644 --- a/examples/vite/src/CustomConnectionLine/ConnectionLine.vue +++ b/examples/vite/src/CustomConnectionLine/ConnectionLine.vue @@ -5,6 +5,7 @@ interface CustomConnectionLineProps { targetX: number targetY: number } + const props = defineProps() diff --git a/examples/vite/src/DragNDrop/DnD.vue b/examples/vite/src/DragNDrop/DnD.vue index 1474c28e..7a2a9b27 100644 --- a/examples/vite/src/DragNDrop/DnD.vue +++ b/examples/vite/src/DragNDrop/DnD.vue @@ -6,7 +6,7 @@ import Sidebar from './Sidebar.vue' let id = 0 const getId = () => `dndnode_${id++}` -const { instance, onConnect, nodes, edges, addEdges, addNodes } = useVueFlow({ +const { onConnect, nodes, edges, addEdges, addNodes, project } = useVueFlow({ nodes: [ { id: '1', @@ -26,17 +26,15 @@ const onDragOver = (event: DragEvent) => { onConnect((params) => addEdges([params])) const onDrop = (event: DragEvent) => { - if (instance.value) { - const type = event.dataTransfer?.getData('application/vueflow') - const position = instance.value.project({ x: event.clientX, y: event.clientY - 40 }) - const newNode = { - id: getId(), - type, - position, - label: `${type} node`, - } as Node - addNodes([newNode]) - } + const type = event.dataTransfer?.getData('application/vueflow') + const position = project({ x: event.clientX, y: event.clientY - 40 }) + const newNode = { + id: getId(), + type, + position, + label: `${type} node`, + } as Node + addNodes([newNode]) } diff --git a/examples/vite/src/EdgeTypes/EdgeTypesExample.vue b/examples/vite/src/EdgeTypes/EdgeTypesExample.vue index 9238e91f..b72560a5 100644 --- a/examples/vite/src/EdgeTypes/EdgeTypesExample.vue +++ b/examples/vite/src/EdgeTypes/EdgeTypesExample.vue @@ -5,7 +5,7 @@ import { getElements } from './utils' const onLoad = (flowInstance: VueFlowStore) => { flowInstance.fitView() - console.log(flowInstance.getElements()) + console.log(flowInstance.getElements.value) } const elements = getElements() diff --git a/examples/vite/src/FloatingEdges/FloatingEdges.vue b/examples/vite/src/FloatingEdges/FloatingEdges.vue index f6b2de2c..ef354842 100644 --- a/examples/vite/src/FloatingEdges/FloatingEdges.vue +++ b/examples/vite/src/FloatingEdges/FloatingEdges.vue @@ -1,5 +1,5 @@ diff --git a/examples/vite/src/UpdatableEdge/UpdatableEdgeExample.vue b/examples/vite/src/UpdatableEdge/UpdatableEdgeExample.vue index 9c5d5217..c9eba8c6 100644 --- a/examples/vite/src/UpdatableEdge/UpdatableEdgeExample.vue +++ b/examples/vite/src/UpdatableEdge/UpdatableEdgeExample.vue @@ -25,8 +25,8 @@ const initialElements: Elements = [ const elements = ref(initialElements) const onLoad = (flowInstance: VueFlowStore) => flowInstance.fitView() -const onEdgeUpdateStart = (edge: Edge) => console.log('start update', edge) -const onEdgeUpdateEnd = (edge: Edge) => console.log('end update', edge) +const onEdgeUpdateStart = ({ edge }: FlowEvents['edgeUpdateStart']) => console.log('start update', edge) +const onEdgeUpdateEnd = ({ edge }: FlowEvents['edgeUpdateEnd']) => console.log('end update', edge) const onEdgeUpdate = ({ edge, connection }: FlowEvents['edgeUpdate']) => { elements.value = updateEdge(edge, connection, elements.value) } diff --git a/packages/vue-flow/src/container/VueFlow/VueFlow.vue b/packages/vue-flow/src/container/VueFlow/VueFlow.vue index 7423989a..100a2577 100644 --- a/packages/vue-flow/src/container/VueFlow/VueFlow.vue +++ b/packages/vue-flow/src/container/VueFlow/VueFlow.vue @@ -8,6 +8,7 @@ import { Slots } from '../../context' import type { Connection, EdgeChange, + EdgeUpdateEvent, GraphEdge, GraphNode, NodeChange, @@ -79,13 +80,13 @@ const emit = defineEmits<{ (event: 'paneContextMenu', paneEvent: MouseEvent): void (event: 'edgeContextMenu', edgeMouseEvent: EdgeMouseEvent): void (event: 'edgeMouseEnter', edgeMouseEvent: EdgeMouseEvent): void - (event: 'edgeMouseMove', edgeMouseEvent: MouseEvent): void - (event: 'edgeMouseLeave', edgeMouseEvent: MouseEvent): void - (event: 'edgeDoubleClick', edgeMouseEvent: MouseEvent): void - (event: 'edgeClick', edgeMouseEvent: MouseEvent): void - (event: 'edgeUpdateStart', edgeMouseEvent: MouseEvent): void - (event: 'edgeUpdate', edgeMouseEvent: MouseEvent): void - (event: 'edgeUpdateEnd', edgeMouseEvent: MouseEvent): void + (event: 'edgeMouseMove', edgeMouseEvent: EdgeMouseEvent): void + (event: 'edgeMouseLeave', edgeMouseEvent: EdgeMouseEvent): void + (event: 'edgeDoubleClick', edgeMouseEvent: EdgeMouseEvent): void + (event: 'edgeClick', edgeMouseEvent: EdgeMouseEvent): void + (event: 'edgeUpdateStart', edgeMouseEvent: EdgeMouseEvent): void + (event: 'edgeUpdate', edgeMouseEvent: EdgeUpdateEvent): void + (event: 'edgeUpdateEnd', edgeMouseEvent: EdgeMouseEvent): void (event: 'updateNodeInternals', id: string): void /** v-model event definitions */ diff --git a/packages/vue-flow/src/types/components.ts b/packages/vue-flow/src/types/components.ts index fd731ec3..af9a8189 100644 --- a/packages/vue-flow/src/types/components.ts +++ b/packages/vue-flow/src/types/components.ts @@ -10,6 +10,10 @@ type GlobalComponentName = string /** Node Components can either be a component definition or a string name */ export type NodeComponent = Component | DefineComponent | GlobalComponentName +export type NodeTypesObject = { [key in keyof DefaultNodeTypes]?: NodeComponent } & Record + +export type EdgeTypesObject = { [key in keyof DefaultEdgeTypes]?: EdgeComponent } & Record + /** Edge Components can either be a component definition or a string name */ export type EdgeComponent = Component | DefineComponent | GlobalComponentName diff --git a/packages/vue-flow/src/types/flow.ts b/packages/vue-flow/src/types/flow.ts index 21b0974c..4467715d 100644 --- a/packages/vue-flow/src/types/flow.ts +++ b/packages/vue-flow/src/types/flow.ts @@ -3,7 +3,7 @@ import type { DefaultEdgeOptions, Edge, GraphEdge } from './edge' import type { CoordinateExtent, GraphNode, Node } from './node' import type { ConnectionLineOptions, ConnectionLineType, ConnectionMode, Connector } from './connection' import type { KeyCode, PanOnScrollMode } from './zoom' -import type { DefaultEdgeTypes, DefaultNodeTypes, EdgeComponent, NodeComponent } from './components' +import type { EdgeTypesObject, NodeTypesObject } from './components' export type ElementData = any @@ -81,9 +81,9 @@ export interface FlowProps { nodes?: Node[] edges?: Edge[] /** either use the edgeTypes prop to define your edge-types or use slots (