Соединения
Соединение связывает две конечные точки блоков и рисуется как SVG-путь между их посчитанными портами.
Описание соединения
ConnectionDescriptor
id
string
Уникальный id соединения.
from
ConnectionEndpoint
Начальная конечная точка соединения — смотрите «Конечные точки соединения» ниже.
to
ConnectionEndpoint
Конечная точка соединения — смотрите «Конечные точки соединения» ниже.
style
ConnectionStyle · по умолчанию: — (не задано, используются настройки по умолчанию уровня инстанса)
Переопределения кривой/цвета/маркеров для конкретного соединения — смотрите Стилизация соединений.
hoverable
boolean · по умолчанию: берётся из interaction.hover
Включает или выключает состояние hover и курсор-указатель только для этого соединения; локальное значение сильнее глобального. См. Визуальные состояния.
ariaLabel
string · по умолчанию: "Connection: {id блока from} → {id блока to}"
Доступное имя линии — её aria-label. См. Выделение и доступность.
labels
ConnectionLabel[] · по умолчанию: — (не задано, в Vue один слот #connection-label посередине)
Подписи вдоль линии — любое число и в любом месте. Подпись с text рисует библиотека, подпись без него — позиция для вашего содержимого. См. Подписи соединений.
Пример — все поля сразу:
linker.setConnections([
{
id: 'task1-task2', // уникальный id
from: { blockId: 'task-1', portId: 'output' }, // начинается на порту "output" блока "task-1"
to: { blockId: 'task-2' }, // заканчивается на границе блока "task-2" — без portId, значит side: 'auto'
style: { curve: 'smoothstep', color: '#6366f1' }, // опционально — см. «Стилизация соединений»
ariaLabel: 'Задача 1 передаёт данные задаче 2', // опционально — доступное имя линии
labels: [{ id: 'kind', position: 'middle', text: 'передаёт' }], // опционально — любое число подписей вдоль линии
},
])Конечные точки соединения
ConnectionEndpoint
blockId
string
Должен совпадать с id зарегистрированного блока.
portId
string · по умолчанию: — (не задано, граница блока с side: 'auto')
Должен совпадать с одним из ports[].id этого блока — смотрите Блоки и порты.
Пример:
{
from: { blockId: 'a', portId: 'output' }, // выходит с блока "a" именно через порт "output"
to: { blockId: 'b' }, // приходит на границу блока "b" — у b нет массива ports, так что это единственный вариант
}Типы кривых
Задаётся для всех соединений через lines.curve в конфигурации, либо для конкретного соединения через style.curve (побеждает, если задано):
bezier(по умолчанию) — плавная кубическая кривая:curvature/curveMinReach/curveMaxReachуправляют тем, насколько сильно она выгибается, аcurveAngleBlend/curveAngleMaxOffset— насколько угол входа/выхода наклоняется в сторону второго конца вместо того, чтобы оставаться перпендикулярным границе блока.smoothstep— ортогональная трассировка (строго горизонтальные/вертикальные сегменты со скруглёнными углами), учитывающая соседние соединения, которые делят один и тот же порт и сторону: они расходятся веером от общей скруглённой точки ветвления вместо того, чтобы накладываться друг на друга.cornerRadiusуправляет радиусом изгиба,maxTrunkReachограничивает, как далеко тянется общий ствол перед разветвлением.straight— обычная прямая линия между двумя посчитанными точками, без какой-либо геометрии кривой.
linker.setConnections([
{ id: 'c1', from: { blockId: 'a' }, to: { blockId: 'b' } }, // bezier — дефолт, style не нужен
{ id: 'c2', from: { blockId: 'a' }, to: { blockId: 'c' }, style: { curve: 'smoothstep' } }, // ортогональная трассировка
{ id: 'c3', from: { blockId: 'a' }, to: { blockId: 'd' }, style: { curve: 'straight' } }, // обычная прямая линия
])Все поля геометрии кривой, упомянутые выше, находятся в ConnectionStyle — смотрите Стилизация соединений.