UNPKG

vuesax-alpha

Version:
58 lines (53 loc) 2.33 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var index = require('../../utils/index.js'); var dom = require('../../utils/dom.js'); var getScale = require('../platform/get-scale.js'); var isElement = require('../platform/is-element.js'); var getVisualOffsets = require('./get-visual-offsets.js'); var unwrapElement = require('./unwrap-element.js'); function getBoundingClientRect(element, includeScale = false, isFixedStrategy = false, offsetParent) { const clientRect = element.getBoundingClientRect(); const domElement = unwrapElement.unwrapElement(element); let scale = index.createCoords(1); if (includeScale) { if (offsetParent) { if (isElement.isElement(offsetParent)) { scale = getScale.getScale(offsetParent); } } else { scale = getScale.getScale(element); } } const visualOffsets = getVisualOffsets.shouldAddVisualOffsets( domElement, isFixedStrategy, offsetParent ) ? getVisualOffsets.getVisualOffsets(domElement) : index.createCoords(0); let x = (clientRect.left + visualOffsets.x) / scale.x; let y = (clientRect.top + visualOffsets.y) / scale.y; let width = clientRect.width / scale.x; let height = clientRect.height / scale.y; if (domElement) { const win = dom.getWindow(domElement); const offsetWin = offsetParent && isElement.isElement(offsetParent) ? dom.getWindow(offsetParent) : offsetParent; let currentIFrame = win.frameElement; while (currentIFrame && offsetParent && offsetWin !== win) { const iframeScale = getScale.getScale(currentIFrame); const iframeRect = currentIFrame.getBoundingClientRect(); const css = dom.getComputedStyle(currentIFrame); const left = iframeRect.left + (currentIFrame.clientLeft + Number.parseFloat(css.paddingLeft)) * iframeScale.x; const top = iframeRect.top + (currentIFrame.clientTop + Number.parseFloat(css.paddingTop)) * iframeScale.y; x *= iframeScale.x; y *= iframeScale.y; width *= iframeScale.x; height *= iframeScale.y; x += left; y += top; currentIFrame = dom.getWindow(currentIFrame).frameElement; } } return index.rectToClientRect({ width, height, x, y }); } exports.getBoundingClientRect = getBoundingClientRect; //# sourceMappingURL=get-bounding-client-rect.js.map