Files
vue-flow/docs/components/home/edges/Custom.vue
2022-10-08 23:25:34 +02:00

58 lines
1.3 KiB
Vue

<script lang="ts" setup>
import { computed } from 'vue'
import type { EdgeProps, MarkerType, Position } from '@vue-flow/core'
import { getBezierPath } from '@vue-flow/core'
interface CustomEdgeProps extends EdgeProps {
source: string
target: string
sourceHandleId?: string
targetHandleId?: string
id: string
sourceX: number
sourceY: number
targetX: number
targetY: number
sourcePosition: Position
targetPosition: Position
markerEnd?: MarkerType
data?: {
text?: string
color?: 'red' | 'green' | 'blue'
}
}
const props = defineProps<CustomEdgeProps>()
const edgePath = computed(() =>
getBezierPath({
sourceX: props.sourceX,
sourceY: props.sourceY,
sourcePosition: props.sourcePosition,
targetX: props.targetX,
targetY: props.targetY,
targetPosition: props.targetPosition,
}),
)
</script>
<script lang="ts">
export default {
inheritAttrs: false,
}
</script>
<template>
<path
:id="props.id"
class="vue-flow__edge-path"
:style="{ stroke: props.data?.color }"
:d="edgePath"
:marker-end="props.markerEnd"
/>
<text>
<textPath :href="`#${props.id}`" :style="{ fontSize: '1.25rem', fill: 'white' }" startOffset="50%" text-anchor="middle">
{{ props.data?.text }}
</textPath>
</text>
</template>