@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
47 lines (42 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var index = require('../utils/index.js');
function computeCoordsFromPlacement({ reference, floating }, placement, rtl) {
const sideAxis = index.getSideAxis(placement);
const alignmentAxis = index.getAlignmentAxis(placement);
const alignLength = index.getAxisLength(alignmentAxis);
const side = index.getSide(placement);
const isVertical = sideAxis === "y";
const commonX = reference.x + reference.width / 2 - floating.width / 2;
const commonY = reference.y + reference.height / 2 - floating.height / 2;
const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
let coords;
switch (side) {
case "top":
coords = { x: commonX, y: reference.y - floating.height };
break;
case "bottom":
coords = { x: commonX, y: reference.y + reference.height };
break;
case "right":
coords = { x: reference.x + reference.width, y: commonY };
break;
case "left":
coords = { x: reference.x - floating.width, y: commonY };
break;
default:
coords = { x: reference.x, y: reference.y };
}
switch (index.getAlignment(placement)) {
case "start":
coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
break;
case "end":
coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
break;
default:
}
return coords;
}
exports.computeCoordsFromPlacement = computeCoordsFromPlacement;
//# sourceMappingURL=compute-coord-from-placement.js.map