chore(core): cleanup
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import EdgeAnchor from './EdgeAnchor'
|
import EdgeAnchor from './EdgeAnchor'
|
||||||
import type { Connection, EdgeComponent, EdgeUpdatable, GraphEdge, GraphNode, HandleType } from '~/types'
|
import type { Connection, EdgeComponent, EdgeUpdatable, GraphEdge, HandleType } from '~/types'
|
||||||
import { ConnectionMode, Position } from '~/types'
|
import { ConnectionMode, Position } from '~/types'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -10,12 +10,10 @@ interface Props {
|
|||||||
focusable?: boolean
|
focusable?: boolean
|
||||||
updatable?: EdgeUpdatable
|
updatable?: EdgeUpdatable
|
||||||
edge: GraphEdge
|
edge: GraphEdge
|
||||||
sourceNode: GraphNode
|
|
||||||
targetNode: GraphNode
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const EdgeWrapper = defineComponent({
|
const EdgeWrapper = defineComponent({
|
||||||
props: ['name', 'type', 'id', 'updatable', 'selectable', 'focusable', 'edge', 'sourceNode', 'targetNode'],
|
props: ['name', 'type', 'id', 'updatable', 'selectable', 'focusable', 'edge'],
|
||||||
setup(props: Props) {
|
setup(props: Props) {
|
||||||
const {
|
const {
|
||||||
id: vueFlowId,
|
id: vueFlowId,
|
||||||
@@ -28,6 +26,7 @@ const EdgeWrapper = defineComponent({
|
|||||||
getEdgeTypes,
|
getEdgeTypes,
|
||||||
removeSelectedEdges,
|
removeSelectedEdges,
|
||||||
findEdge,
|
findEdge,
|
||||||
|
findNode,
|
||||||
} = useVueFlow()
|
} = useVueFlow()
|
||||||
|
|
||||||
const hooks = useEdgeHooks(props.edge, emits)
|
const hooks = useEdgeHooks(props.edge, emits)
|
||||||
@@ -35,12 +34,17 @@ const EdgeWrapper = defineComponent({
|
|||||||
const edge = $(useVModel(props, 'edge'))
|
const edge = $(useVModel(props, 'edge'))
|
||||||
|
|
||||||
let mouseOver = $ref(false)
|
let mouseOver = $ref(false)
|
||||||
|
|
||||||
let updating = $ref(false)
|
let updating = $ref(false)
|
||||||
|
|
||||||
const nodeId = ref('')
|
const nodeId = ref('')
|
||||||
|
|
||||||
const handleId = ref<string | null>(null)
|
const handleId = ref<string | null>(null)
|
||||||
|
|
||||||
const type = ref<HandleType>('source')
|
const type = ref<HandleType>('source')
|
||||||
|
|
||||||
const elementEdgeUpdaterType = ref<HandleType>('source')
|
const elementEdgeUpdaterType = ref<HandleType>('source')
|
||||||
|
|
||||||
const mouseEvent = ref<MouseEvent>()
|
const mouseEvent = ref<MouseEvent>()
|
||||||
|
|
||||||
const edgeEl = ref<SVGElement>()
|
const edgeEl = ref<SVGElement>()
|
||||||
@@ -48,6 +52,10 @@ const EdgeWrapper = defineComponent({
|
|||||||
provide(EdgeId, props.id)
|
provide(EdgeId, props.id)
|
||||||
provide(EdgeRef, edgeEl)
|
provide(EdgeRef, edgeEl)
|
||||||
|
|
||||||
|
const sourceNode = $computed(() => findNode(edge.source))
|
||||||
|
|
||||||
|
const targetNode = $computed(() => findNode(edge.target))
|
||||||
|
|
||||||
const onEdgeUpdaterMouseEnter = () => (mouseOver = true)
|
const onEdgeUpdaterMouseEnter = () => (mouseOver = true)
|
||||||
|
|
||||||
const onEdgeUpdaterMouseOut = () => (mouseOver = false)
|
const onEdgeUpdaterMouseOut = () => (mouseOver = false)
|
||||||
@@ -128,22 +136,22 @@ const EdgeWrapper = defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (!props.sourceNode || !props.targetNode) return null
|
if (!sourceNode || !targetNode) return null
|
||||||
|
|
||||||
let sourceNodeHandles
|
let sourceNodeHandles
|
||||||
if (connectionMode.value === ConnectionMode.Strict) {
|
if (connectionMode.value === ConnectionMode.Strict) {
|
||||||
sourceNodeHandles = props.sourceNode.handleBounds.source
|
sourceNodeHandles = sourceNode.handleBounds.source
|
||||||
} else {
|
} else {
|
||||||
sourceNodeHandles = [...(props.sourceNode.handleBounds.source || []), ...(props.sourceNode.handleBounds.target || [])]
|
sourceNodeHandles = [...(sourceNode.handleBounds.source || []), ...(sourceNode.handleBounds.target || [])]
|
||||||
}
|
}
|
||||||
|
|
||||||
const sourceHandle = getHandle(sourceNodeHandles, edge.sourceHandle)
|
const sourceHandle = getHandle(sourceNodeHandles, edge.sourceHandle)
|
||||||
|
|
||||||
let targetNodeHandles
|
let targetNodeHandles
|
||||||
if (connectionMode.value === ConnectionMode.Strict) {
|
if (connectionMode.value === ConnectionMode.Strict) {
|
||||||
targetNodeHandles = props.targetNode.handleBounds.target
|
targetNodeHandles = targetNode.handleBounds.target
|
||||||
} else {
|
} else {
|
||||||
targetNodeHandles = [...(props.targetNode.handleBounds.target || []), ...(props.targetNode.handleBounds.source || [])]
|
targetNodeHandles = [...(targetNode.handleBounds.target || []), ...(targetNode.handleBounds.source || [])]
|
||||||
}
|
}
|
||||||
|
|
||||||
const targetHandle = getHandle(targetNodeHandles, edge.targetHandle)
|
const targetHandle = getHandle(targetNodeHandles, edge.targetHandle)
|
||||||
@@ -153,10 +161,10 @@ const EdgeWrapper = defineComponent({
|
|||||||
const targetPosition = targetHandle ? targetHandle.position : Position.Top
|
const targetPosition = targetHandle ? targetHandle.position : Position.Top
|
||||||
|
|
||||||
const { sourceX, sourceY, targetY, targetX } = getEdgePositions(
|
const { sourceX, sourceY, targetY, targetX } = getEdgePositions(
|
||||||
props.sourceNode,
|
sourceNode,
|
||||||
sourceHandle,
|
sourceHandle,
|
||||||
sourcePosition,
|
sourcePosition,
|
||||||
props.targetNode,
|
targetNode,
|
||||||
targetHandle,
|
targetHandle,
|
||||||
targetPosition,
|
targetPosition,
|
||||||
)
|
)
|
||||||
@@ -197,8 +205,8 @@ const EdgeWrapper = defineComponent({
|
|||||||
? null
|
? null
|
||||||
: h(props.type === false ? getEdgeTypes.value.default : props.type, {
|
: h(props.type === false ? getEdgeTypes.value.default : props.type, {
|
||||||
id: props.id,
|
id: props.id,
|
||||||
sourceNode: props.sourceNode,
|
sourceNode,
|
||||||
targetNode: props.targetNode,
|
targetNode,
|
||||||
source: edge.source,
|
source: edge.source,
|
||||||
target: edge.target,
|
target: edge.target,
|
||||||
type: edge.type,
|
type: edge.type,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { isNumber } from '@vueuse/core'
|
import { isNumber } from '@vueuse/core'
|
||||||
import type { ReactiveVariable } from 'vue/macros'
|
|
||||||
import type { GraphNode, HandleConnectable, NodeComponent } from '../../types'
|
import type { GraphNode, HandleConnectable, NodeComponent } from '../../types'
|
||||||
import { ARIA_NODE_DESC_KEY } from '../../utils/a11y'
|
import { ARIA_NODE_DESC_KEY } from '../../utils/a11y'
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@ const {
|
|||||||
|
|
||||||
const updateNodePositions = useUpdateNodePositions()
|
const updateNodePositions = useUpdateNodePositions()
|
||||||
|
|
||||||
const node: ReactiveVariable<GraphNode> = $(useVModel(props, 'node'))
|
const node = $(useVModel(props, 'node'))
|
||||||
|
|
||||||
const parentNode = $computed(() => (node.parentNode ? getNode(node.parentNode) : undefined))
|
const parentNode = $computed(() => (node.parentNode ? getNode(node.parentNode) : undefined))
|
||||||
|
|
||||||
|
|||||||
@@ -57,9 +57,9 @@ let stop: WatchStopHandle
|
|||||||
onPaneReady(() => {
|
onPaneReady(() => {
|
||||||
stop = watch(
|
stop = watch(
|
||||||
[
|
[
|
||||||
$$(getSelectedNodes),
|
() => getEdges.length,
|
||||||
$$(getEdges),
|
|
||||||
() => getEdges.map((e) => e.zIndex),
|
() => getEdges.map((e) => e.zIndex),
|
||||||
|
() => (elevateEdgesOnSelect ? getSelectedNodes.length : 0),
|
||||||
() => (elevateEdgesOnSelect ? getNodesInitialized.map((n) => n.computedPosition.z) : []),
|
() => (elevateEdgesOnSelect ? getNodesInitialized.map((n) => n.computedPosition.z) : []),
|
||||||
],
|
],
|
||||||
() => {
|
() => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { isNumber } from '@vueuse/core'
|
import { isNumber } from '@vueuse/core'
|
||||||
import type { EdgePositions, Getters, GraphEdge, GraphNode, HandleElement, Rect, ViewportTransform, XYPosition } from '~/types'
|
import type { Actions, EdgePositions, GraphEdge, GraphNode, HandleElement, Rect, ViewportTransform, XYPosition } from '~/types'
|
||||||
import { Position } from '~/types'
|
import { Position } from '~/types'
|
||||||
|
|
||||||
export const getHandlePosition = (position: Position, rect: Rect, handle?: HandleElement): XYPosition => {
|
export const getHandlePosition = (position: Position, rect: Rect, handle?: HandleElement): XYPosition => {
|
||||||
@@ -127,15 +127,15 @@ export function isEdgeVisible({
|
|||||||
return overlappingArea > 0
|
return overlappingArea > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
export const groupEdgesByZLevel = (edges: GraphEdge[], getNode: Getters['getNode'], elevateEdgesOnSelect = false) => {
|
export const groupEdgesByZLevel = (edges: GraphEdge[], findNode: Actions['findNode'], elevateEdgesOnSelect = false) => {
|
||||||
let maxLevel = -1
|
let maxLevel = -1
|
||||||
|
|
||||||
const levelLookup = edges.reduce<Record<string, GraphEdge[]>>((tree, edge) => {
|
const levelLookup = edges.reduce<Record<string, GraphEdge[]>>((tree, edge) => {
|
||||||
const hasZIndex = isNumber(edge.zIndex)
|
const hasZIndex = isNumber(edge.zIndex)
|
||||||
let z = hasZIndex ? edge.zIndex! : 0
|
let z = hasZIndex ? edge.zIndex! : 0
|
||||||
|
|
||||||
const source = getNode(edge.source)
|
const source = findNode(edge.source)
|
||||||
const target = getNode(edge.target)
|
const target = findNode(edge.target)
|
||||||
|
|
||||||
if (!source || !target) return tree
|
if (!source || !target) return tree
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user