-
Notifications
You must be signed in to change notification settings - Fork 420
/
BaseLayouter.js
47 lines (40 loc) · 1.14 KB
/
BaseLayouter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* @typedef {import('../core/Types').ElementLike} Element
* @typedef {import('../core/Types').ConnectionLike} Connection
*
* @typedef {import('../util').Point} Point
*
* @typedef { {
* connectionStart?: Point;
* connectionEnd?: Point;
* source?: Element;
* target?: Element;
* } } LayoutConnectionHints
*/
import {
getMid
} from './LayoutUtil';
/**
* A base connection layouter implementation
* that layouts the connection by directly connecting
* mid(source) + mid(target).
*/
export default function BaseLayouter() {}
/**
* Return the new layouted waypoints for the given connection.
*
* The connection passed is still unchanged; you may figure out about
* the new connection start / end via the layout hints provided.
*
* @param {Connection} connection
* @param {LayoutConnectionHints} [hints]
*
* @return {Point[]} The waypoints of the laid out connection.
*/
BaseLayouter.prototype.layoutConnection = function(connection, hints) {
hints = hints || {};
return [
hints.connectionStart || getMid(hints.source || connection.source),
hints.connectionEnd || getMid(hints.target || connection.target)
];
};