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.
16 lines
546 B
16 lines
546 B
import getParentNode from "./getParentNode.js";
|
|
import isScrollParent from "./isScrollParent.js";
|
|
import getNodeName from "./getNodeName.js";
|
|
import { isHTMLElement } from "./instanceOf.js";
|
|
export default function getScrollParent(node) {
|
|
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
|
// $FlowFixMe[incompatible-return]: assume body is always available
|
|
return node.ownerDocument.body;
|
|
}
|
|
|
|
if (isHTMLElement(node) && isScrollParent(node)) {
|
|
return node;
|
|
}
|
|
|
|
return getScrollParent(getParentNode(node));
|
|
}
|