连接

一个自定义连接线组件,用于基于 Vue Flow 的画布,具有动画贝塞尔曲线样式。

Connection 组件为 Vue Flow 画布提供了一条样式化的连接线。 它在目标端渲染一条带有圆形指示器的动画贝塞尔曲线,通过 CSS 变量使用一致的主题。

使用 CLI 安装

AI Elements Vue
shadcn-vue CLI
npx ai-elements-vue@latest add connection

手动安装

将以下代码复制并粘贴到同一文件夹中。

Connection.vue
index.ts
<script setup lang="ts">
import type { ConnectionLineProps } from '@vue-flow/core'
import { computed } from 'vue'

const props = defineProps<ConnectionLineProps>()

const HALF = 0.5

const pathD = computed(() => {
  const { sourceX, sourceY, targetX, targetY } = props
  const controlX1 = sourceX + (targetX - sourceX) * HALF
  const controlX2 = sourceX + (targetX - sourceX) * HALF
  return `M${sourceX},${sourceY} C ${controlX1},${sourceY} ${controlX2},${targetY} ${targetX},${targetY}`
})
</script>

<template>
  <g>
    <path
      class="animated"
      fill="none"
      stroke="var(--color-ring)"
      :stroke-width="1"
      :d="pathD"
    />

    <circle
      :cx="targetX"
      :cy="targetY"
      fill="#fff"
      :r="3"
      stroke="var(--color-ring)"
      :stroke-width="1"
    />
  </g>
</template>

特性

  • 连接线的平滑贝塞尔曲线动画
  • 目标位置的可视化指示器圆圈
  • 使用 CSS 变量的主题感知样式
  • 用于自然流动的三次贝塞尔曲线计算
  • 轻量级实现,具有最少的 props
  • 具有 Vue Flow 类型的完整 TypeScript 支持
  • 与 Vue Flow 的连接系统兼容

Props

<Connection />

sourceXnumber
连接起点的 x 坐标。
sourceYnumber
连接起点的 y 坐标。
targetXnumber
连接终点的 x 坐标。
targetYnumber
连接终点的 y 坐标。