volleyball-dev-frontend/node_modules/@react-aria/utils/src/domHelpers.ts
Marc Wieland 33181acf83
Some checks are pending
Deploy Volleyball CMS / deploy (push) Waiting to run
Last
2025-06-02 18:56:22 +02:00

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;
}