feat(utils): make addEdge and removeElement mutate the array passed in
Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -7,13 +7,10 @@ import {
|
|||||||
Connection,
|
Connection,
|
||||||
Edge,
|
Edge,
|
||||||
Elements,
|
Elements,
|
||||||
FlowElement,
|
|
||||||
FlowInstance,
|
FlowInstance,
|
||||||
addEdge,
|
addEdge,
|
||||||
isNode,
|
isNode,
|
||||||
removeElements,
|
removeElements,
|
||||||
Node,
|
|
||||||
useVueFlow,
|
|
||||||
} from '~/index'
|
} from '~/index'
|
||||||
|
|
||||||
const onNodeDragStop = (e) => console.log('drag stop', e)
|
const onNodeDragStop = (e) => console.log('drag stop', e)
|
||||||
@@ -27,8 +24,8 @@ const elements = ref<Elements>([
|
|||||||
{ id: 'e1-3', source: '1', target: '3' },
|
{ id: 'e1-3', source: '1', target: '3' },
|
||||||
])
|
])
|
||||||
const vfInstance = ref<FlowInstance>()
|
const vfInstance = ref<FlowInstance>()
|
||||||
const onElementsRemove = (elementsToRemove: Elements) => (elements.value = removeElements(elementsToRemove, elements.value))
|
const onElementsRemove = (elementsToRemove: Elements) => removeElements(elementsToRemove, elements.value)
|
||||||
const onConnect = (params: Edge | Connection) => (elements.value = addEdge(params, elements.value))
|
const onConnect = (params: Edge | Connection) => addEdge(params, elements.value)
|
||||||
const onLoad = (flowInstance: FlowInstance) => {
|
const onLoad = (flowInstance: FlowInstance) => {
|
||||||
flowInstance.fitView({ padding: 0.1 })
|
flowInstance.fitView({ padding: 0.1 })
|
||||||
vfInstance.value = flowInstance
|
vfInstance.value = flowInstance
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ export {
|
|||||||
updateEdge,
|
updateEdge,
|
||||||
getTransformForBounds,
|
getTransformForBounds,
|
||||||
getRectOfNodes,
|
getRectOfNodes,
|
||||||
isInputDOMNode,
|
|
||||||
graphPosToZoomedPos,
|
graphPosToZoomedPos,
|
||||||
} from './utils/graph'
|
} from './utils/graph'
|
||||||
export { defaultEdgeTypes, defaultNodeTypes } from './utils/store'
|
export { defaultEdgeTypes, defaultNodeTypes } from './utils/store'
|
||||||
|
|||||||
+8
-5
@@ -69,11 +69,14 @@ export const getIncomers = (node: GraphNode, elements: Elements) => getConnected
|
|||||||
|
|
||||||
export const removeElements = (elementsToRemove: Elements, elements: Elements) => {
|
export const removeElements = (elementsToRemove: Elements, elements: Elements) => {
|
||||||
const nodeIdsToRemove = elementsToRemove.map((n) => n.id)
|
const nodeIdsToRemove = elementsToRemove.map((n) => n.id)
|
||||||
|
const shouldRemove = (element: Node | Edge) => {
|
||||||
return elements.filter((element) => {
|
|
||||||
const { target, source } = isEdge(element) ? element : { target: '', source: '' }
|
const { target, source } = isEdge(element) ? element : { target: '', source: '' }
|
||||||
return !(nodeIdsToRemove.includes(element.id) || nodeIdsToRemove.includes(target) || nodeIdsToRemove.includes(source))
|
return nodeIdsToRemove.includes(element.id) || nodeIdsToRemove.includes(target) || nodeIdsToRemove.includes(source)
|
||||||
|
}
|
||||||
|
elements.forEach((element, i) => {
|
||||||
|
if (shouldRemove(element)) elements.splice(i, 1)
|
||||||
})
|
})
|
||||||
|
return elements.filter((element) => !shouldRemove(element))
|
||||||
}
|
}
|
||||||
|
|
||||||
const getEdgeId = ({ source, sourceHandle, target, targetHandle }: Connection): ElementId =>
|
const getEdgeId = ({ source, sourceHandle, target, targetHandle }: Connection): ElementId =>
|
||||||
@@ -106,8 +109,8 @@ export const addEdge = (edgeParams: Edge | Connection, elements: Elements) => {
|
|||||||
} as Edge
|
} as Edge
|
||||||
}
|
}
|
||||||
if (connectionExists(edge, elements)) return elements
|
if (connectionExists(edge, elements)) return elements
|
||||||
|
elements.push(edge)
|
||||||
return elements.push(edge)
|
return [...elements, edge]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateEdge = (oldEdge: Edge, newConnection: Connection, elements: Elements) => {
|
export const updateEdge = (oldEdge: Edge, newConnection: Connection, elements: Elements) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user