chore(core): cleanup

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2023-01-18 20:47:32 +01:00
committed by Braks
parent fba7b55f1f
commit 84ffd50429
4 changed files with 28 additions and 21 deletions
@@ -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) : []),
], ],
() => { () => {
+4 -4
View File
@@ -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