diff options
Diffstat (limited to 'popperjs/package/dist/esm/dom-utils/contains.js')
-rw-r--r-- | popperjs/package/dist/esm/dom-utils/contains.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/popperjs/package/dist/esm/dom-utils/contains.js b/popperjs/package/dist/esm/dom-utils/contains.js new file mode 100644 index 0000000..2a53772 --- /dev/null +++ b/popperjs/package/dist/esm/dom-utils/contains.js @@ -0,0 +1,23 @@ +import { isShadowRoot } from "./instanceOf.js"; +export default function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; +}
\ No newline at end of file |