react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
52 lines (51 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.bottom = void 0;
exports.default = getBasePlacement;
exports.distanceAndSkiddingToXY = distanceAndSkiddingToXY;
exports.getElementsFromRefs = getElementsFromRefs;
exports.getLayoutRect = getLayoutRect;
exports.top = exports.right = exports.left = void 0;
// Don't use const from popper such as they is not export in commonjs bundle
// This make problems while testing (for example with jest)
// Original issue: https://github.com/popperjs/popper-core/issues/1259
var top = exports.top = 'top';
var left = exports.left = 'left';
var right = exports.right = 'right';
var bottom = exports.bottom = 'bottom';
function getLayoutRect(element) {
return {
x: element.offsetLeft,
y: element.offsetTop,
width: element.offsetWidth,
height: element.offsetHeight
};
}
function getBasePlacement(placement) {
return placement.split('-')[0];
}
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
};
}
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;
}