UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

52 lines (51 loc) 1.63 kB
"use strict"; 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; }