diff options
Diffstat (limited to 'popperjs/package/lib/dom-utils/getParentNode.js')
-rw-r--r-- | popperjs/package/lib/dom-utils/getParentNode.js | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/popperjs/package/lib/dom-utils/getParentNode.js b/popperjs/package/lib/dom-utils/getParentNode.js new file mode 100644 index 0000000..06d3e98 --- /dev/null +++ b/popperjs/package/lib/dom-utils/getParentNode.js @@ -0,0 +1,19 @@ +import getNodeName from "./getNodeName.js"; +import getDocumentElement from "./getDocumentElement.js"; +import { isShadowRoot } from "./instanceOf.js"; +export default function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); +}
\ No newline at end of file |