feat(edges,nodes): add removeNodes and removeEdges utilities to store
This commit is contained in:
@@ -4,11 +4,13 @@ import type {
|
|||||||
ComputedGetters,
|
ComputedGetters,
|
||||||
CoordinateExtent,
|
CoordinateExtent,
|
||||||
EdgeChange,
|
EdgeChange,
|
||||||
|
EdgeRemoveChange,
|
||||||
GraphEdge,
|
GraphEdge,
|
||||||
GraphNode,
|
GraphNode,
|
||||||
NodeChange,
|
NodeChange,
|
||||||
NodeDimensionChange,
|
NodeDimensionChange,
|
||||||
NodePositionChange,
|
NodePositionChange,
|
||||||
|
NodeRemoveChange,
|
||||||
State,
|
State,
|
||||||
} from '~/types'
|
} from '~/types'
|
||||||
import {
|
import {
|
||||||
@@ -16,6 +18,7 @@ import {
|
|||||||
applyChanges,
|
applyChanges,
|
||||||
createAdditionChange,
|
createAdditionChange,
|
||||||
createGraphNodes,
|
createGraphNodes,
|
||||||
|
createRemoveChange,
|
||||||
createSelectionChange,
|
createSelectionChange,
|
||||||
getDimensions,
|
getDimensions,
|
||||||
getHandleBounds,
|
getHandleBounds,
|
||||||
@@ -254,6 +257,26 @@ export default (state: State, getters: ComputedGetters): Actions => {
|
|||||||
if (changes.length) state.hooks.edgesChange.trigger(changes)
|
if (changes.length) state.hooks.edgesChange.trigger(changes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const removeNodes: Actions['removeNodes'] = (nodes) => {
|
||||||
|
const curr = nodes instanceof Function ? nodes(state.nodes) : nodes
|
||||||
|
const changes: NodeRemoveChange[] = []
|
||||||
|
curr.forEach((item) => {
|
||||||
|
changes.push(createRemoveChange(typeof item === 'string' ? item : item.id))
|
||||||
|
})
|
||||||
|
|
||||||
|
state.hooks.nodesChange.trigger(changes)
|
||||||
|
}
|
||||||
|
|
||||||
|
const removeEdges: Actions['removeEdges'] = (edges) => {
|
||||||
|
const curr = edges instanceof Function ? edges(state.edges) : edges
|
||||||
|
const changes: EdgeRemoveChange[] = []
|
||||||
|
curr.forEach((item) => {
|
||||||
|
changes.push(createRemoveChange(typeof item === 'string' ? item : item.id))
|
||||||
|
})
|
||||||
|
|
||||||
|
state.hooks.edgesChange.trigger(changes)
|
||||||
|
}
|
||||||
|
|
||||||
const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection) =>
|
const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection) =>
|
||||||
updateEdgeAction(oldEdge, newConnection, state.edges, addEdges)
|
updateEdgeAction(oldEdge, newConnection, state.edges, addEdges)
|
||||||
|
|
||||||
@@ -297,6 +320,8 @@ export default (state: State, getters: ComputedGetters): Actions => {
|
|||||||
setEdges,
|
setEdges,
|
||||||
addNodes,
|
addNodes,
|
||||||
addEdges,
|
addEdges,
|
||||||
|
removeNodes,
|
||||||
|
removeEdges,
|
||||||
updateEdge,
|
updateEdge,
|
||||||
applyEdgeChanges,
|
applyEdgeChanges,
|
||||||
applyNodeChanges,
|
applyNodeChanges,
|
||||||
|
|||||||
@@ -106,6 +106,8 @@ export type SetElements = (elements: Elements | ((elements: FlowElements) => Ele
|
|||||||
export type SetNodes = (nodes: Node[] | ((nodes: GraphNode[]) => Node[]), extent?: CoordinateExtent) => void
|
export type SetNodes = (nodes: Node[] | ((nodes: GraphNode[]) => Node[]), extent?: CoordinateExtent) => void
|
||||||
export type SetEdges = (edges: Edge[] | ((edges: GraphEdge[]) => Edge[])) => void
|
export type SetEdges = (edges: Edge[] | ((edges: GraphEdge[]) => Edge[])) => void
|
||||||
export type AddNodes = (nodes: Node[] | ((nodes: GraphNode[]) => Node[]), extent?: CoordinateExtent) => void
|
export type AddNodes = (nodes: Node[] | ((nodes: GraphNode[]) => Node[]), extent?: CoordinateExtent) => void
|
||||||
|
export type RemoveNodes = (nodes: (Node[] | string[]) | ((nodes: GraphNode[]) => Node[] | string[])) => void
|
||||||
|
export type RemoveEdges = (edges: (Edge[] | string[]) | ((edges: GraphEdge[]) => Edge[] | string[])) => void
|
||||||
export type AddEdges = (edgesOrConnections: (Edge | Connection)[] | ((edges: GraphEdge[]) => (Edge | Connection)[])) => void
|
export type AddEdges = (edgesOrConnections: (Edge | Connection)[] | ((edges: GraphEdge[]) => (Edge | Connection)[])) => void
|
||||||
export type UpdateEdge = (oldEdge: GraphEdge, newConnection: Connection) => GraphEdge | false
|
export type UpdateEdge = (oldEdge: GraphEdge, newConnection: Connection) => GraphEdge | false
|
||||||
export type SetState = (
|
export type SetState = (
|
||||||
@@ -127,6 +129,10 @@ export interface Actions {
|
|||||||
addNodes: AddNodes
|
addNodes: AddNodes
|
||||||
/** parses edges and adds to state */
|
/** parses edges and adds to state */
|
||||||
addEdges: AddEdges
|
addEdges: AddEdges
|
||||||
|
/** parses nodes and adds to state */
|
||||||
|
removeNodes: RemoveNodes
|
||||||
|
/** parses edges and adds to state */
|
||||||
|
removeEdges: RemoveEdges
|
||||||
/** updates an edge */
|
/** updates an edge */
|
||||||
updateEdge: UpdateEdge
|
updateEdge: UpdateEdge
|
||||||
/** applies default edge change handler */
|
/** applies default edge change handler */
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type {
|
|||||||
Edge,
|
Edge,
|
||||||
EdgeAddChange,
|
EdgeAddChange,
|
||||||
EdgeChange,
|
EdgeChange,
|
||||||
|
EdgeRemoveChange,
|
||||||
EdgeSelectionChange,
|
EdgeSelectionChange,
|
||||||
ElementChange,
|
ElementChange,
|
||||||
FlowElement,
|
FlowElement,
|
||||||
@@ -12,6 +13,7 @@ import type {
|
|||||||
Node,
|
Node,
|
||||||
NodeAddChange,
|
NodeAddChange,
|
||||||
NodeChange,
|
NodeChange,
|
||||||
|
NodeRemoveChange,
|
||||||
NodeSelectionChange,
|
NodeSelectionChange,
|
||||||
} from '~/types'
|
} from '~/types'
|
||||||
|
|
||||||
@@ -155,6 +157,11 @@ export const createAdditionChange = <
|
|||||||
type: 'add',
|
type: 'add',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const createRemoveChange = (id: string): NodeRemoveChange | EdgeRemoveChange => ({
|
||||||
|
id,
|
||||||
|
type: 'remove',
|
||||||
|
})
|
||||||
|
|
||||||
export const getSelectionChanges = (items: FlowElements, selectedIds: string[]) => {
|
export const getSelectionChanges = (items: FlowElements, selectedIds: string[]) => {
|
||||||
return items.reduce((res, item) => {
|
return items.reduce((res, item) => {
|
||||||
const willBeSelected = selectedIds.includes(item.id)
|
const willBeSelected = selectedIds.includes(item.id)
|
||||||
|
|||||||
Reference in New Issue
Block a user