This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
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.
46 lines
1.6 KiB
46 lines
1.6 KiB
/** |
|
* Copyright (c) 2013-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @providesModule getScrollPosition |
|
* @typechecks |
|
*/ |
|
|
|
'use strict'; |
|
|
|
const getDocumentScrollElement = require('./getDocumentScrollElement'); |
|
const getUnboundedScrollPosition = require('./getUnboundedScrollPosition'); |
|
|
|
/** |
|
* Gets the scroll position of the supplied element or window. |
|
* |
|
* The return values are bounded. This means that if the scroll position is |
|
* negative or exceeds the element boundaries (which is possible using inertial |
|
* scrolling), you will get zero or the maximum scroll position, respectively. |
|
* |
|
* If you need the unbound scroll position, use `getUnboundedScrollPosition`. |
|
* |
|
* @param {DOMWindow|DOMElement} scrollable |
|
* @return {object} Map with `x` and `y` keys. |
|
*/ |
|
function getScrollPosition(scrollable) { |
|
const documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document); |
|
if (scrollable.Window && scrollable instanceof scrollable.Window) { |
|
scrollable = documentScrollElement; |
|
} |
|
const scrollPosition = getUnboundedScrollPosition(scrollable); |
|
|
|
const viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable; |
|
|
|
const xMax = scrollable.scrollWidth - viewport.clientWidth; |
|
const yMax = scrollable.scrollHeight - viewport.clientHeight; |
|
|
|
scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax)); |
|
scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax)); |
|
|
|
return scrollPosition; |
|
} |
|
|
|
module.exports = getScrollPosition; |