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.
38 lines
1.1 KiB
38 lines
1.1 KiB
/** |
|
* Copyright 2013-2015, Facebook, Inc. |
|
* All rights reserved. |
|
* |
|
* This source code is licensed under the BSD-style license found in the |
|
* LICENSE file in the root directory of this source tree. An additional grant |
|
* of patent rights can be found in the PATENTS file in the same directory. |
|
* |
|
* @providesModule getUnboundedScrollPosition |
|
* @typechecks |
|
*/ |
|
|
|
"use strict"; |
|
|
|
/** |
|
* Gets the scroll position of the supplied element or window. |
|
* |
|
* The return values are unbounded, unlike `getScrollPosition`. This means they |
|
* may be negative or exceed the element boundaries (which is possible using |
|
* inertial scrolling). |
|
* |
|
* @param {DOMWindow|DOMElement} scrollable |
|
* @return {object} Map with `x` and `y` keys. |
|
*/ |
|
function getUnboundedScrollPosition(scrollable) { |
|
if (scrollable === window) { |
|
return { |
|
x: window.pageXOffset || document.documentElement.scrollLeft, |
|
y: window.pageYOffset || document.documentElement.scrollTop |
|
}; |
|
} |
|
return { |
|
x: scrollable.scrollLeft, |
|
y: scrollable.scrollTop |
|
}; |
|
} |
|
|
|
module.exports = getUnboundedScrollPosition;
|
|
|