@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
30 lines • 1.37 kB
JavaScript
import { getBoundingClientRect } from './getBoundingClientRect';
import { getElementScroll } from './getElementScroll';
import { isHTMLElement, isOverflowElement } from './is.utils';
import { getNodeName } from './node';
export const convertOffsetParentRelativeRectToViewportRelativeRect = ({ rect, offsetParent, strategy, }) => {
const isOffsetParentAnElement = isHTMLElement(offsetParent);
const documentElement = window.document.documentElement;
if (offsetParent === documentElement) {
return rect;
}
let scroll = { scrollLeft: 0, scrollTop: 0 };
const offsets = { x: 0, y: 0 };
if (isOffsetParentAnElement || (!isOffsetParentAnElement && strategy !== 'fixed')) {
if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
scroll = getElementScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
const offsetRect = getBoundingClientRect(offsetParent);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
}
}
return {
width: rect.width,
height: rect.height,
x: rect.x - scroll.scrollLeft + offsets.x,
y: rect.y - scroll.scrollTop + offsets.y,
};
};
//# sourceMappingURL=convertOffsetParentRelativeRectToViewportRelativeRect.js.map