JSFiddle - React, Tailwind, and code Playground

JavaScript

// Lists primarily based on MSHTML support IE5 through IE11
 
// Namespaces
const nsXHTML = "http://www.w3.org/1999/xhtml";
const nsSVG = "http://www.w3.org/2000/svg";
const nsMATHML = "http://www.w3.org/1998/Math/MathML";
const nsXML = "http://www.w3.org/XML/1998/namespace";
 
// "x-ms-webview" added for WWA
// "main" tag added for EdgeHTML
var xhtml_tags = [
  "a", "abbr", "acronym", "address", "applet", "area", "article", 
  "aside", "b", "base", "basefont", "bdo", "bgsound", "big", "blink",
  "blockquote", "body", "br", "button", "canvas", "caption", "center",
  "cite", "code", "col", "colgroup", "comment", "dd", "del", "dfn", 
  "dir", "div", "dl", "DOCTYPE", "dt", "em", "embed", "fieldset", 
  "figcaption", "figure", "font", "footer", "form", "frame", "frameset",
  "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr",
  "html", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "keygen", 
  "label", "legend", "li", "link", "listing", "map", "mark", "marquee",
  "menu", "meta", "nav", "nextid", "nobr", "noembed", "noframes", "noscript",
  "object", "ol", "option", "p", "param", "plaintext", "pre", "processinginstruction",
  "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small",
  "span", "strike", "strong", "style", "sub", "sup", "table", "tbody", "td",
  "textarea", "tfoot", "th", "thead", "title", "tr", "tt", "u", "ul", "var",
  "wbr", "xmp", "audio", "source", "video", "progress", "datalist", "track", 
  "command", "details", "summary", "x-ms-webview", "optgroup", "image", "main"
];
var mathml_tags = [
  "annotation-xml", "math", "mi", "mn", "mo", "ms", "mtext"
];
var svg_tags = [
  "a", "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor", 
  "animateMotion", "animateTransform", "circle", "clipPath", "color-profile",
  "cursor", "definition-src", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", 
  "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting",
 ...