|
|
@@ -1,176 +1,28 @@
|
|
|
-const HTMLTagSet = new Set([
|
|
|
- 'html',
|
|
|
- 'body',
|
|
|
- 'base',
|
|
|
- 'head',
|
|
|
- 'link',
|
|
|
- 'meta',
|
|
|
- 'style',
|
|
|
- 'title',
|
|
|
- 'address',
|
|
|
- 'article',
|
|
|
- 'aside',
|
|
|
- 'footer',
|
|
|
- 'header',
|
|
|
- 'h1',
|
|
|
- 'h2',
|
|
|
- 'h3',
|
|
|
- 'h4',
|
|
|
- 'h5',
|
|
|
- 'h6',
|
|
|
- 'hgroup',
|
|
|
- 'nav',
|
|
|
- 'section',
|
|
|
- 'div',
|
|
|
- 'dd',
|
|
|
- 'dl',
|
|
|
- 'dt',
|
|
|
- 'figcaption',
|
|
|
- 'figure',
|
|
|
- 'picture',
|
|
|
- 'hr',
|
|
|
- 'img',
|
|
|
- 'li',
|
|
|
- 'main',
|
|
|
- 'ol',
|
|
|
- 'p',
|
|
|
- 'pre',
|
|
|
- 'ul',
|
|
|
- 'a',
|
|
|
- 'b',
|
|
|
- 'abbr',
|
|
|
- 'bdi',
|
|
|
- 'bdo',
|
|
|
- 'br',
|
|
|
- 'cite',
|
|
|
- 'code',
|
|
|
- 'data',
|
|
|
- 'dfn',
|
|
|
- 'em',
|
|
|
- 'i',
|
|
|
- 'kbd',
|
|
|
- 'mark',
|
|
|
- 'q',
|
|
|
- 'rp',
|
|
|
- 'rt',
|
|
|
- 'rtc',
|
|
|
- 'ruby',
|
|
|
- 's',
|
|
|
- 'samp',
|
|
|
- 'small',
|
|
|
- 'span',
|
|
|
- 'strong',
|
|
|
- 'sub',
|
|
|
- 'sup',
|
|
|
- 'time',
|
|
|
- 'u',
|
|
|
- 'var',
|
|
|
- 'wbr',
|
|
|
- 'area',
|
|
|
- 'audio',
|
|
|
- 'map',
|
|
|
- 'track',
|
|
|
- 'video',
|
|
|
- 'embed',
|
|
|
- 'object',
|
|
|
- 'param',
|
|
|
- 'source',
|
|
|
- 'canvas',
|
|
|
- 'script',
|
|
|
- 'noscript',
|
|
|
- 'del',
|
|
|
- 'ins',
|
|
|
- 'caption',
|
|
|
- 'col',
|
|
|
- 'colgroup',
|
|
|
- 'table',
|
|
|
- 'thead',
|
|
|
- 'tbody',
|
|
|
- 'td',
|
|
|
- 'th',
|
|
|
- 'tr',
|
|
|
- 'button',
|
|
|
- 'datalist',
|
|
|
- 'fieldset',
|
|
|
- 'form',
|
|
|
- 'input',
|
|
|
- 'label',
|
|
|
- 'legend',
|
|
|
- 'meter',
|
|
|
- 'optgroup',
|
|
|
- 'option',
|
|
|
- 'output',
|
|
|
- 'progress',
|
|
|
- 'select',
|
|
|
- 'textarea',
|
|
|
- 'details',
|
|
|
- 'dialog',
|
|
|
- 'menu',
|
|
|
- 'menuitem',
|
|
|
- 'summary',
|
|
|
- 'content',
|
|
|
- 'element',
|
|
|
- 'shadow',
|
|
|
- 'template',
|
|
|
- 'blockquote',
|
|
|
- 'iframe',
|
|
|
- 'tfoot'
|
|
|
-])
|
|
|
+import { makeMap } from './makeMap'
|
|
|
+
|
|
|
+const HTML_TAGS =
|
|
|
+ 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +
|
|
|
+ 'header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,' +
|
|
|
+ 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +
|
|
|
+ 'data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,' +
|
|
|
+ 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +
|
|
|
+ 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +
|
|
|
+ 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +
|
|
|
+ 'option,output,progress,select,textarea,details,dialog,menu,menuitem,' +
|
|
|
+ 'summary,content,element,shadow,template,blockquote,iframe,tfoot'
|
|
|
|
|
|
/**
|
|
|
* this list is intentionally selective, only covering SVG elements that may
|
|
|
* contain child elements.
|
|
|
*/
|
|
|
-const SVGTagSet = new Set([
|
|
|
- 'svg',
|
|
|
- 'animate',
|
|
|
- 'circle',
|
|
|
- 'clippath',
|
|
|
- 'cursor',
|
|
|
- 'defs',
|
|
|
- 'desc',
|
|
|
- 'ellipse',
|
|
|
- 'filter',
|
|
|
- 'font-face',
|
|
|
- 'foreignObject',
|
|
|
- 'g',
|
|
|
- 'glyph',
|
|
|
- 'image',
|
|
|
- 'line',
|
|
|
- 'marker',
|
|
|
- 'mask',
|
|
|
- 'missing-glyph',
|
|
|
- 'path',
|
|
|
- 'pattern',
|
|
|
- 'polygon',
|
|
|
- 'polyline',
|
|
|
- 'rect',
|
|
|
- 'switch',
|
|
|
- 'symbol',
|
|
|
- 'text',
|
|
|
- 'textpath',
|
|
|
- 'tspan',
|
|
|
- 'use',
|
|
|
- 'view'
|
|
|
-])
|
|
|
+const SVG_TAGS =
|
|
|
+ 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
|
|
|
+ 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
|
|
|
+ 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view'
|
|
|
|
|
|
-const VoidTagSet = new Set([
|
|
|
- 'area',
|
|
|
- 'base',
|
|
|
- 'br',
|
|
|
- 'col',
|
|
|
- 'embed',
|
|
|
- 'hr',
|
|
|
- 'img',
|
|
|
- 'input',
|
|
|
- 'link',
|
|
|
- 'meta',
|
|
|
- 'param',
|
|
|
- 'source',
|
|
|
- 'track',
|
|
|
- 'wbr'
|
|
|
-])
|
|
|
+const VOID_TAGS =
|
|
|
+ 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr'
|
|
|
|
|
|
-export const isVoidTag = (tag: string) => VoidTagSet.has(tag)
|
|
|
-export const isHTMLTag = (tag: string) => HTMLTagSet.has(tag)
|
|
|
-export const isSVGTag = (tag: string) => SVGTagSet.has(tag)
|
|
|
+export const isHTMLTag = makeMap(HTML_TAGS)
|
|
|
+export const isSVGTag = makeMap(SVG_TAGS)
|
|
|
+export const isVoidTag = makeMap(VOID_TAGS)
|