Skip to content

Instantly share code, notes, and snippets.

@johnloy
Last active August 27, 2021 18:49
Show Gist options
  • Save johnloy/34ab0fb7920785a589819eb349a5365b to your computer and use it in GitHub Desktop.
Save johnloy/34ab0fb7920785a589819eb349a5365b to your computer and use it in GitHub Desktop.
const allCustomElements = [];
function isCustomElement(el) {
const isAttr = el.getAttribute('is');
// Check for <super-button> and <button is="super-button">.
return el.localName.includes('-') || isAttr && isAttr.includes('-');
}
function findAllCustomElements(nodes) {
for (let i = 0, el; el = nodes[i]; ++i) {
if (isCustomElement(el)) {
allCustomElements.push(el);
}
// If the element has shadow DOM, dig deeper.
if (el.shadowRoot) {
findAllCustomElements(el.shadowRoot.querySelectorAll('*'));
}
}
}
findAllCustomElements(document.querySelectorAll('*'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment