You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// @flow import getWindow from './getWindow'; import getDocumentElement from './getDocumentElement'; import getWindowScrollBarX from './getWindowScrollBarX'; import isLayoutViewport from './isLayoutViewport'; import type { PositioningStrategy } from '../types';
export default function getViewportRect( element: Element, strategy: PositioningStrategy ) { const win = getWindow(element); const html = getDocumentElement(element); const visualViewport = win.visualViewport;
let width = html.clientWidth; let height = html.clientHeight; let x = 0; let y = 0;
if (visualViewport) { width = visualViewport.width; height = visualViewport.height;
const layoutViewport = isLayoutViewport();
if (layoutViewport || (!layoutViewport && strategy === 'fixed')) { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } }
return { width, height, x: x + getWindowScrollBarX(element), y, }; }
|