isCustomElement.mjs 606 B

1234567891011121314151617181920212223242526272829303132333435
  1. import svgTags from 'svg-tags';
  2. import mathMLTags from './mathMLTags.mjs';
  3. /**
  4. * Check whether a type selector is a custom element
  5. *
  6. * @param {string} selector
  7. * @returns {boolean}
  8. */
  9. export default function isCustomElement(selector) {
  10. if (!/^[a-z]/.test(selector)) {
  11. return false;
  12. }
  13. if (!selector.includes('-')) {
  14. return false;
  15. }
  16. const selectorLowerCase = selector.toLowerCase();
  17. if (selectorLowerCase !== selector) {
  18. return false;
  19. }
  20. if (svgTags.includes(selectorLowerCase)) {
  21. return false;
  22. }
  23. if (mathMLTags.includes(selectorLowerCase)) {
  24. return false;
  25. }
  26. return true;
  27. }