@yandex/ui
Version:
Yandex UI components
38 lines (37 loc) • 1.5 kB
JavaScript
// Не используем константы из popper, так как они отсутствуют в commonjs сборке.
// Например, при тестировании с помощью jest можно из-за этого столкнуться с непонятными проблемами.
// https://github.com/popperjs/popper-core/issues/1259
export var top = 'top';
export var left = 'left';
export var right = 'right';
export var bottom = 'bottom';
export function getLayoutRect(element) {
return {
x: element.offsetLeft,
y: element.offsetTop,
width: element.offsetWidth,
height: element.offsetHeight,
};
}
export default function getBasePlacement(placement) {
return placement.split('-')[0];
}
export function distanceAndSkiddingToXY(placement, offset) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var skidding = offset[0] || 0;
var distance = (offset[1] || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0
? { x: distance, y: skidding }
: { x: skidding, y: distance };
}
export function getElementsFromRefs(boundary) {
var refs = Array.isArray(boundary) ? boundary : [boundary];
var elements = refs.reduce(function (acc, ref) {
if (ref && ref.current) {
acc.push(ref.current);
}
return acc;
}, []);
return elements.length ? elements : undefined;
}