deepseek-pc/node_modules/seemly/es/dom/get-scroll-parent.js

29 lines
795 B
JavaScript
Raw Normal View History

2025-02-28 19:43:11 +08:00
function getParentNode(node) {
// document type
if (node.nodeType === 9) {
return null;
}
return node.parentNode;
}
export function getScrollParent(node) {
if (node === null)
return null;
const parentNode = getParentNode(node);
if (parentNode === null) {
return null;
}
// Document
if (parentNode.nodeType === 9) {
return document.documentElement;
}
// Element
if (parentNode.nodeType === 1) {
// Firefox want us to check `-x` and `-y` variations as well
const { overflow, overflowX, overflowY } = getComputedStyle(parentNode);
if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
return parentNode;
}
}
return getScrollParent(parentNode);
}