update(store): filter edges by visibility
* add getSelectedElements getter Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
+26
-5
@@ -1,5 +1,6 @@
|
|||||||
import { FlowGetters, FlowState, GraphEdge, GraphNode } from '~/types'
|
import { defaultEdgeTypes, defaultNodeTypes } from './state'
|
||||||
import { defaultEdgeTypes, defaultNodeTypes, getNodesInside, isGraphNode } from '~/utils'
|
import { FlowElements, FlowGetters, FlowState, GraphEdge, GraphNode } from '~/types'
|
||||||
|
import { getNodesInside, isEdgeVisible } from '~/utils'
|
||||||
|
|
||||||
export default (state: FlowState): FlowGetters => {
|
export default (state: FlowState): FlowGetters => {
|
||||||
const getEdgeTypes = computed(() => {
|
const getEdgeTypes = computed(() => {
|
||||||
@@ -41,12 +42,32 @@ export default (state: FlowState): FlowGetters => {
|
|||||||
|
|
||||||
const getEdges = computed<GraphEdge[]>(() => {
|
const getEdges = computed<GraphEdge[]>(() => {
|
||||||
if (state.isReady && state.dimensions.width && state.dimensions.height) {
|
if (state.isReady && state.dimensions.width && state.dimensions.height) {
|
||||||
return state.edges.filter((e) => !e.hidden)
|
if (!state.onlyRenderVisibleElements) return state.edges
|
||||||
|
else
|
||||||
|
return state.edges.filter(
|
||||||
|
(e) =>
|
||||||
|
!e.hidden &&
|
||||||
|
e.sourceNode.dimensions.width &&
|
||||||
|
e.sourceNode.dimensions.height &&
|
||||||
|
e.targetNode.dimensions.width &&
|
||||||
|
e.targetNode.dimensions.height &&
|
||||||
|
isEdgeVisible({
|
||||||
|
sourcePos: e.sourceNode.position || { x: 0, y: 0 },
|
||||||
|
targetPos: e.targetNode.position || { x: 0, y: 0 },
|
||||||
|
sourceWidth: e.sourceNode.dimensions.width,
|
||||||
|
sourceHeight: e.sourceNode.dimensions.height,
|
||||||
|
targetWidth: e.targetNode.dimensions.width,
|
||||||
|
targetHeight: e.targetNode.dimensions.height,
|
||||||
|
width: state.dimensions.width,
|
||||||
|
height: state.dimensions.height,
|
||||||
|
transform: state.transform,
|
||||||
|
}),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
})
|
})
|
||||||
|
|
||||||
const getSelectedNodes = computed<GraphNode[]>(() => state.selectedElements?.filter(isGraphNode) ?? [])
|
const getSelectedElements = computed<FlowElements>(() => [...(state.selectedNodes ?? []), ...(state.selectedEdges ?? [])])
|
||||||
|
|
||||||
const getNode: FlowGetters['getNode'] = computed(() => (id: string) => state.nodes.find((node) => node.id === id))
|
const getNode: FlowGetters['getNode'] = computed(() => (id: string) => state.nodes.find((node) => node.id === id))
|
||||||
const getEdge: FlowGetters['getEdge'] = computed(() => (id: string) => state.edges.find((edge) => edge.id === id))
|
const getEdge: FlowGetters['getEdge'] = computed(() => (id: string) => state.edges.find((edge) => edge.id === id))
|
||||||
@@ -58,6 +79,6 @@ export default (state: FlowState): FlowGetters => {
|
|||||||
getNodeTypes,
|
getNodeTypes,
|
||||||
getEdges,
|
getEdges,
|
||||||
getNodes,
|
getNodes,
|
||||||
getSelectedNodes,
|
getSelectedElements,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user