@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
44 lines (39 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var index = require('../../utils/index.js');
var dom = require('../../utils/dom.js');
var getBoundingClientRect = require('./get-bounding-client-rect.js');
var getWindowScrollbarX = require('./get-window-scrollbar-x.js');
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
const isOffsetParentAnElement = dom.isHTMLElement(offsetParent);
const documentElement = dom.getDocumentElement(offsetParent);
const isFixed = strategy === "fixed";
const rect = getBoundingClientRect.getBoundingClientRect(element, true, isFixed, offsetParent);
let scroll = { scrollLeft: 0, scrollTop: 0 };
const offsets = index.createCoords(0);
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (dom.getNodeName(offsetParent) !== "body" || dom.isOverflowElement(documentElement)) {
scroll = dom.getNodeScroll(offsetParent);
}
if (isOffsetParentAnElement) {
const offsetRect = getBoundingClientRect.getBoundingClientRect(
offsetParent,
true,
isFixed,
offsetParent
);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollbarX.getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
exports.getRectRelativeToOffsetParent = getRectRelativeToOffsetParent;
//# sourceMappingURL=get-rect-relative-to-offset-parent.js.map