@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering.
45 lines • 1.3 kB
JavaScript
import { resolve } from './util';
const middleSide = function (view, magnet, refPoint, options) {
let bbox;
let angle = 0;
let center;
const node = view.cell;
if (options.rotate) {
bbox = view.getUnrotatedBBoxOfElement(magnet);
center = node.getBBox().getCenter();
angle = node.getAngle();
}
else {
bbox = view.getBBoxOfElement(magnet);
}
const padding = options.padding;
if (padding != null && isFinite(padding)) {
bbox.inflate(padding);
}
if (options.rotate) {
refPoint.rotate(angle, center);
}
const side = bbox.getNearestSideToPoint(refPoint);
let result;
switch (side) {
case 'left':
result = bbox.getLeftMiddle();
break;
case 'right':
result = bbox.getRightMiddle();
break;
case 'top':
result = bbox.getTopCenter();
break;
case 'bottom':
result = bbox.getBottomCenter();
break;
}
return options.rotate ? result.rotate(-angle, center) : result;
};
/**
* Places the anchor of the edge in the middle of the side of view bbox
* closest to the other endpoint.
*/
export const midSide = resolve(middleSide);
//# sourceMappingURL=middle-side.js.map