@yandex/ui
Version:
Yandex UI components
45 lines (44 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getElementsFromRefs = exports.distanceAndSkiddingToXY = exports.getLayoutRect = exports.bottom = exports.right = exports.left = exports.top = void 0;
// Не используем константы из popper, так как они отсутствуют в commonjs сборке.
// Например, при тестировании с помощью jest можно из-за этого столкнуться с непонятными проблемами.
// https://github.com/popperjs/popper-core/issues/1259
exports.top = 'top';
exports.left = 'left';
exports.right = 'right';
exports.bottom = 'bottom';
function getLayoutRect(element) {
return {
x: element.offsetLeft,
y: element.offsetTop,
width: element.offsetWidth,
height: element.offsetHeight,
};
}
exports.getLayoutRect = getLayoutRect;
function getBasePlacement(placement) {
return placement.split('-')[0];
}
exports.default = getBasePlacement;
function distanceAndSkiddingToXY(placement, offset) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [exports.left, exports.top].indexOf(basePlacement) >= 0 ? -1 : 1;
var skidding = offset[0] || 0;
var distance = (offset[1] || 0) * invertDistance;
return [exports.left, exports.right].indexOf(basePlacement) >= 0
? { x: distance, y: skidding }
: { x: skidding, y: distance };
}
exports.distanceAndSkiddingToXY = distanceAndSkiddingToXY;
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;
}
exports.getElementsFromRefs = getElementsFromRefs;