Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo-mod-jslibs-dist.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'popperjs/package/lib/dom-utils/getParentNode.js.flow')
-rw-r--r--popperjs/package/lib/dom-utils/getParentNode.js.flow21
1 files changed, 21 insertions, 0 deletions
diff --git a/popperjs/package/lib/dom-utils/getParentNode.js.flow b/popperjs/package/lib/dom-utils/getParentNode.js.flow
new file mode 100644
index 0000000..c2c379b
--- /dev/null
+++ b/popperjs/package/lib/dom-utils/getParentNode.js.flow
@@ -0,0 +1,21 @@
+// @flow
+import getNodeName from './getNodeName';
+import getDocumentElement from './getDocumentElement';
+import { isShadowRoot } from './instanceOf';
+
+export default function getParentNode(element: Node | ShadowRoot): Node {
+ 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
+ );
+}