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

    );
}