UNPKG

@vuesax-alpha/nightly

Version:
44 lines (39 loc) 1.68 kB
'use strict'; 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