You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import getBasePlacement from "./getBasePlacement.js"; import getVariation from "./getVariation.js"; import getMainAxisFromPlacement from "./getMainAxisFromPlacement.js"; import { top, right, bottom, left, start, end } from "../enums.js"; export default function computeOffsets(_ref) { var reference = _ref.reference, element = _ref.element, placement = _ref.placement; var basePlacement = placement ? getBasePlacement(placement) : null; var variation = placement ? getVariation(placement) : null; var commonX = reference.x + reference.width / 2 - element.width / 2; var commonY = reference.y + reference.height / 2 - element.height / 2; var offsets;
switch (basePlacement) { case top: offsets = { x: commonX, y: reference.y - element.height }; break;
case bottom: offsets = { x: commonX, y: reference.y + reference.height }; break;
case right: offsets = { x: reference.x + reference.width, y: commonY }; break;
case left: offsets = { x: reference.x - element.width, y: commonY }; break;
default: offsets = { x: reference.x, y: reference.y }; }
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) { var len = mainAxis === 'y' ? 'height' : 'width';
switch (variation) { case start: offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); break;
case end: offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); break;
default: } }
return offsets; }
|