Some checks are pending
Deploy Volleyball CMS / deploy (push) Waiting to run
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
export const getOwnerDocument = (el: Element | null | undefined): Document => {
|
|
return el?.ownerDocument ?? document;
|
|
};
|
|
|
|
export const getOwnerWindow = (
|
|
el: (Window & typeof global) | Element | null | undefined
|
|
): Window & typeof global => {
|
|
if (el && 'window' in el && el.window === el) {
|
|
return el;
|
|
}
|
|
|
|
const doc = getOwnerDocument(el as Element | null | undefined);
|
|
return doc.defaultView || window;
|
|
};
|
|
|
|
/**
|
|
* Type guard that checks if a value is a Node. Verifies the presence and type of the nodeType property.
|
|
*/
|
|
function isNode(value: unknown): value is Node {
|
|
return value !== null &&
|
|
typeof value === 'object' &&
|
|
'nodeType' in value &&
|
|
typeof (value as Node).nodeType === 'number';
|
|
}
|
|
/**
|
|
* Type guard that checks if a node is a ShadowRoot. Uses nodeType and host property checks to
|
|
* distinguish ShadowRoot from other DocumentFragments.
|
|
*/
|
|
export function isShadowRoot(node: Node | null): node is ShadowRoot {
|
|
return isNode(node) &&
|
|
node.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&
|
|
'host' in node;
|
|
}
|