@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
43 lines (41 loc) • 1.32 kB
JavaScript
'use client';
function findElementBySelector(selector, root = document) {
const element = root.querySelector(selector);
if (element) {
return element;
}
const allElements = root.querySelectorAll("*");
for (let i = 0; i < allElements.length; i += 1) {
const el = allElements[i];
if (el.shadowRoot) {
const shadowElement = findElementBySelector(selector, el.shadowRoot);
if (shadowElement) {
return shadowElement;
}
}
}
return null;
}
function findElementsBySelector(selector, root = document) {
const results = [];
const elements = root.querySelectorAll(selector);
results.push(...Array.from(elements));
const allElements = root.querySelectorAll("*");
for (let i = 0; i < allElements.length; i += 1) {
const el = allElements[i];
if (el.shadowRoot) {
const shadowElements = findElementsBySelector(selector, el.shadowRoot);
results.push(...shadowElements);
}
}
return results;
}
function getRootElement(targetElement) {
if (!targetElement) {
return document;
}
const root = targetElement.getRootNode();
return root instanceof ShadowRoot || root instanceof Document ? root : document;
}
export { findElementBySelector, findElementsBySelector, getRootElement };
//# sourceMappingURL=find-element-in-shadow-dom.mjs.map