refactor(core): trigger el functions before checking arr length

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2023-03-02 08:47:38 +01:00
committed by Braks
parent b509b11bfc
commit fc867878fa
+20 -15
View File
@@ -286,24 +286,25 @@ export function useActions(state: State, getters: ComputedGetters): Actions {
} }
const setNodes: Actions['setNodes'] = (nodes) => { const setNodes: Actions['setNodes'] = (nodes) => {
if (!state.initialized && !nodes.length) return const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes
if (!state.nodes) state.nodes = []
const curr = nodes instanceof Function ? nodes(state.nodes) : nodes if (!state.initialized && !nextNodes.length) return
state.nodes = createGraphNodes(curr, findNode, state.nodes) state.nodes = createGraphNodes(nextNodes, findNode, state.nodes)
} }
const setEdges: Actions['setEdges'] = (edges) => { const setEdges: Actions['setEdges'] = (edges) => {
if (!state.initialized && !edges.length) return const nextEdges = edges instanceof Function ? edges(state.edges) : edges
const curr = edges instanceof Function ? edges(state.edges) : edges
state.edges = curr.reduce<GraphEdge[]>((res, edge) => { if (!state.initialized && !nextEdges.length) return
state.edges = nextEdges.reduce<GraphEdge[]>((res, edge) => {
const sourceNode = findNode(edge.source)! const sourceNode = findNode(edge.source)!
const targetNode = findNode(edge.target)! const targetNode = findNode(edge.target)!
const missingSource = !sourceNode || typeof sourceNode === 'undefined' const missingSource = !sourceNode || typeof sourceNode === 'undefined'
const missingTarget = !targetNode || typeof targetNode === 'undefined' const missingTarget = !targetNode || typeof targetNode === 'undefined'
if (missingSource) warn(`Couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`) if (missingSource) warn(`Couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`)
if (missingTarget) warn(`Couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`) if (missingTarget) warn(`Couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`)
if (missingSource || missingTarget) return res if (missingSource || missingTarget) return res
@@ -321,26 +322,28 @@ export function useActions(state: State, getters: ComputedGetters): Actions {
} }
const setElements: Actions['setElements'] = (elements) => { const setElements: Actions['setElements'] = (elements) => {
if (!state.initialized && !elements.length) return const nextElements = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements
const curr = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements
setNodes(curr.filter(isNode)) if (!state.initialized && !nextElements.length) return
setEdges(curr.filter(isEdge))
setNodes(nextElements.filter(isNode))
setEdges(nextElements.filter(isEdge))
} }
const addNodes: Actions['addNodes'] = (nodes) => { const addNodes: Actions['addNodes'] = (nodes) => {
const curr = nodes instanceof Function ? nodes(state.nodes) : nodes const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes
const graphNodes = createGraphNodes(nextNodes, findNode, state.nodes)
const graphNodes = createGraphNodes(curr, findNode, state.nodes)
const changes = graphNodes.map(createAdditionChange) const changes = graphNodes.map(createAdditionChange)
if (changes.length) state.hooks.nodesChange.trigger(changes) if (changes.length) state.hooks.nodesChange.trigger(changes)
} }
const addEdges: Actions['addEdges'] = (params) => { const addEdges: Actions['addEdges'] = (params) => {
const curr = params instanceof Function ? params(state.edges) : params const nextEdges = params instanceof Function ? params(state.edges) : params
const changes = curr.reduce((acc, param) => { const changes = nextEdges.reduce((acc, param) => {
const edge = addEdgeToStore( const edge = addEdgeToStore(
{ {
...param, ...param,
@@ -348,12 +351,14 @@ export function useActions(state: State, getters: ComputedGetters): Actions {
}, },
state.edges, state.edges,
) )
if (edge) { if (edge) {
const sourceNode = findNode(edge.source)! const sourceNode = findNode(edge.source)!
const targetNode = findNode(edge.target)! const targetNode = findNode(edge.target)!
const missingSource = !sourceNode || typeof sourceNode === 'undefined' const missingSource = !sourceNode || typeof sourceNode === 'undefined'
const missingTarget = !targetNode || typeof targetNode === 'undefined' const missingTarget = !targetNode || typeof targetNode === 'undefined'
if (missingSource) warn(`Couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`) if (missingSource) warn(`Couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`)
if (missingTarget) warn(`Couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`) if (missingTarget) warn(`Couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`)
if (missingTarget || missingSource) return acc if (missingTarget || missingSource) return acc