53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import { Line } from '@antv/x6-geometry';
|
|
export function offset(p1, p2, offset) {
|
|
let tx;
|
|
if (typeof offset === 'object') {
|
|
if (Number.isFinite(offset.y)) {
|
|
const line = new Line(p2, p1);
|
|
const { start, end } = line.parallel(offset.y);
|
|
p2 = start; // eslint-disable-line
|
|
p1 = end; // eslint-disable-line
|
|
}
|
|
tx = offset.x;
|
|
}
|
|
else {
|
|
tx = offset;
|
|
}
|
|
if (tx == null || !Number.isFinite(tx)) {
|
|
return p1;
|
|
}
|
|
const length = p1.distance(p2);
|
|
if (tx === 0 && length > 0) {
|
|
return p1;
|
|
}
|
|
return p1.move(p2, -Math.min(tx, length - 1));
|
|
}
|
|
export function getStrokeWidth(magnet) {
|
|
const stroke = magnet.getAttribute('stroke-width');
|
|
if (stroke === null) {
|
|
return 0;
|
|
}
|
|
return parseFloat(stroke) || 0;
|
|
}
|
|
export function findShapeNode(magnet) {
|
|
if (magnet == null) {
|
|
return null;
|
|
}
|
|
let node = magnet;
|
|
do {
|
|
let tagName = node.tagName;
|
|
if (typeof tagName !== 'string')
|
|
return null;
|
|
tagName = tagName.toUpperCase();
|
|
if (tagName === 'G') {
|
|
node = node.firstElementChild;
|
|
}
|
|
else if (tagName === 'TITLE') {
|
|
node = node.nextElementSibling;
|
|
}
|
|
else
|
|
break;
|
|
} while (node);
|
|
return node;
|
|
}
|
|
//# sourceMappingURL=util.js.map
|