1
This commit is contained in:
42
app/src/vendor/muuri-src/utils/getScrollableAncestors.js
vendored
Normal file
42
app/src/vendor/muuri-src/utils/getScrollableAncestors.js
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Haltu Oy
|
||||
* Released under the MIT license
|
||||
* https://github.com/haltu/muuri/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
import isScrollable from './isScrollable';
|
||||
|
||||
/**
|
||||
* Collect element's ancestors that are potentially scrollable elements. The
|
||||
* provided element is also also included in the check, meaning that if it is
|
||||
* scrollable it is added to the result array.
|
||||
*
|
||||
* @param {HTMLElement} element
|
||||
* @param {Array} [result]
|
||||
* @returns {Array}
|
||||
*/
|
||||
export default function getScrollableAncestors(element, result) {
|
||||
result = result || [];
|
||||
|
||||
// Find scroll parents.
|
||||
while (element && element !== document) {
|
||||
// If element is inside ShadowDOM let's get it's host node from the real
|
||||
// DOM and continue looping.
|
||||
if (element.getRootNode && element instanceof DocumentFragment) {
|
||||
element = element.getRootNode().host;
|
||||
continue;
|
||||
}
|
||||
|
||||
// If element is scrollable let's add it to the scrollable list.
|
||||
if (isScrollable(element)) {
|
||||
result.push(element);
|
||||
}
|
||||
|
||||
element = element.parentNode;
|
||||
}
|
||||
|
||||
// Always add window to the results.
|
||||
result.push(window);
|
||||
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user