Files
vue-flow/packages/core/src/components/Edges/SmoothStepEdge.ts
T

49 lines
1.1 KiB
TypeScript

import { defineComponent, h } from 'vue'
import type { SmoothStepEdgeProps } from '../../types'
import { Position } from '../../types'
import BaseEdge from './BaseEdge.vue'
import { getSmoothStepPath } from './utils'
const SmoothStepEdge = defineComponent<SmoothStepEdgeProps>({
name: 'SmoothStepEdge',
props: [
'sourcePosition',
'targetPosition',
'label',
'labelStyle',
'labelShowBg',
'labelBgStyle',
'labelBgPadding',
'labelBgBorderRadius',
'sourceY',
'sourceX',
'targetX',
'targetY',
'borderRadius',
'markerEnd',
'markerStart',
'interactionWidth',
'offset',
] as any,
compatConfig: { MODE: 3 },
setup(props, { attrs }) {
return () => {
const [path, labelX, labelY] = getSmoothStepPath({
...props,
sourcePosition: props.sourcePosition ?? Position.Bottom,
targetPosition: props.targetPosition ?? Position.Top,
})
return h(BaseEdge as any, {
path,
labelX,
labelY,
...attrs,
...props,
})
}
},
})
export default SmoothStepEdge