/* @flow */ "use strict"; const htmlTags = require("html-tags"); const keywordSets = require("../reference/keywordSets"); const mathMLTags = require("mathml-tag-names"); const svgTags = require("svg-tags"); /** * Check whether a type selector is a custom element */ module.exports = function(selector /*: string*/) /*: boolean*/ { if (!/^[a-z]/.test(selector)) { return false; } if (selector.indexOf("-") === -1) { return false; } const selectorLowerCase = selector.toLowerCase(); if (selectorLowerCase !== selector) { return false; } if (svgTags.indexOf(selectorLowerCase) !== -1) { return false; } if (htmlTags.indexOf(selectorLowerCase) !== -1) { return false; } if (keywordSets.nonStandardHtmlTags.has(selectorLowerCase)) { return false; } if (mathMLTags.indexOf(selectorLowerCase) !== -1) { return false; } return true; };