273 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const NS = (exports.NAMESPACES = {
 | 
						|
    HTML: 'http://www.w3.org/1999/xhtml',
 | 
						|
    MATHML: 'http://www.w3.org/1998/Math/MathML',
 | 
						|
    SVG: 'http://www.w3.org/2000/svg',
 | 
						|
    XLINK: 'http://www.w3.org/1999/xlink',
 | 
						|
    XML: 'http://www.w3.org/XML/1998/namespace',
 | 
						|
    XMLNS: 'http://www.w3.org/2000/xmlns/'
 | 
						|
});
 | 
						|
 | 
						|
exports.ATTRS = {
 | 
						|
    TYPE: 'type',
 | 
						|
    ACTION: 'action',
 | 
						|
    ENCODING: 'encoding',
 | 
						|
    PROMPT: 'prompt',
 | 
						|
    NAME: 'name',
 | 
						|
    COLOR: 'color',
 | 
						|
    FACE: 'face',
 | 
						|
    SIZE: 'size'
 | 
						|
};
 | 
						|
 | 
						|
exports.DOCUMENT_MODE = {
 | 
						|
    NO_QUIRKS: 'no-quirks',
 | 
						|
    QUIRKS: 'quirks',
 | 
						|
    LIMITED_QUIRKS: 'limited-quirks'
 | 
						|
};
 | 
						|
 | 
						|
const $ = (exports.TAG_NAMES = {
 | 
						|
    A: 'a',
 | 
						|
    ADDRESS: 'address',
 | 
						|
    ANNOTATION_XML: 'annotation-xml',
 | 
						|
    APPLET: 'applet',
 | 
						|
    AREA: 'area',
 | 
						|
    ARTICLE: 'article',
 | 
						|
    ASIDE: 'aside',
 | 
						|
 | 
						|
    B: 'b',
 | 
						|
    BASE: 'base',
 | 
						|
    BASEFONT: 'basefont',
 | 
						|
    BGSOUND: 'bgsound',
 | 
						|
    BIG: 'big',
 | 
						|
    BLOCKQUOTE: 'blockquote',
 | 
						|
    BODY: 'body',
 | 
						|
    BR: 'br',
 | 
						|
    BUTTON: 'button',
 | 
						|
 | 
						|
    CAPTION: 'caption',
 | 
						|
    CENTER: 'center',
 | 
						|
    CODE: 'code',
 | 
						|
    COL: 'col',
 | 
						|
    COLGROUP: 'colgroup',
 | 
						|
 | 
						|
    DD: 'dd',
 | 
						|
    DESC: 'desc',
 | 
						|
    DETAILS: 'details',
 | 
						|
    DIALOG: 'dialog',
 | 
						|
    DIR: 'dir',
 | 
						|
    DIV: 'div',
 | 
						|
    DL: 'dl',
 | 
						|
    DT: 'dt',
 | 
						|
 | 
						|
    EM: 'em',
 | 
						|
    EMBED: 'embed',
 | 
						|
 | 
						|
    FIELDSET: 'fieldset',
 | 
						|
    FIGCAPTION: 'figcaption',
 | 
						|
    FIGURE: 'figure',
 | 
						|
    FONT: 'font',
 | 
						|
    FOOTER: 'footer',
 | 
						|
    FOREIGN_OBJECT: 'foreignObject',
 | 
						|
    FORM: 'form',
 | 
						|
    FRAME: 'frame',
 | 
						|
    FRAMESET: 'frameset',
 | 
						|
 | 
						|
    H1: 'h1',
 | 
						|
    H2: 'h2',
 | 
						|
    H3: 'h3',
 | 
						|
    H4: 'h4',
 | 
						|
    H5: 'h5',
 | 
						|
    H6: 'h6',
 | 
						|
    HEAD: 'head',
 | 
						|
    HEADER: 'header',
 | 
						|
    HGROUP: 'hgroup',
 | 
						|
    HR: 'hr',
 | 
						|
    HTML: 'html',
 | 
						|
 | 
						|
    I: 'i',
 | 
						|
    IMG: 'img',
 | 
						|
    IMAGE: 'image',
 | 
						|
    INPUT: 'input',
 | 
						|
    IFRAME: 'iframe',
 | 
						|
 | 
						|
    KEYGEN: 'keygen',
 | 
						|
 | 
						|
    LABEL: 'label',
 | 
						|
    LI: 'li',
 | 
						|
    LINK: 'link',
 | 
						|
    LISTING: 'listing',
 | 
						|
 | 
						|
    MAIN: 'main',
 | 
						|
    MALIGNMARK: 'malignmark',
 | 
						|
    MARQUEE: 'marquee',
 | 
						|
    MATH: 'math',
 | 
						|
    MENU: 'menu',
 | 
						|
    META: 'meta',
 | 
						|
    MGLYPH: 'mglyph',
 | 
						|
    MI: 'mi',
 | 
						|
    MO: 'mo',
 | 
						|
    MN: 'mn',
 | 
						|
    MS: 'ms',
 | 
						|
    MTEXT: 'mtext',
 | 
						|
 | 
						|
    NAV: 'nav',
 | 
						|
    NOBR: 'nobr',
 | 
						|
    NOFRAMES: 'noframes',
 | 
						|
    NOEMBED: 'noembed',
 | 
						|
    NOSCRIPT: 'noscript',
 | 
						|
 | 
						|
    OBJECT: 'object',
 | 
						|
    OL: 'ol',
 | 
						|
    OPTGROUP: 'optgroup',
 | 
						|
    OPTION: 'option',
 | 
						|
 | 
						|
    P: 'p',
 | 
						|
    PARAM: 'param',
 | 
						|
    PLAINTEXT: 'plaintext',
 | 
						|
    PRE: 'pre',
 | 
						|
 | 
						|
    RB: 'rb',
 | 
						|
    RP: 'rp',
 | 
						|
    RT: 'rt',
 | 
						|
    RTC: 'rtc',
 | 
						|
    RUBY: 'ruby',
 | 
						|
 | 
						|
    S: 's',
 | 
						|
    SCRIPT: 'script',
 | 
						|
    SECTION: 'section',
 | 
						|
    SELECT: 'select',
 | 
						|
    SOURCE: 'source',
 | 
						|
    SMALL: 'small',
 | 
						|
    SPAN: 'span',
 | 
						|
    STRIKE: 'strike',
 | 
						|
    STRONG: 'strong',
 | 
						|
    STYLE: 'style',
 | 
						|
    SUB: 'sub',
 | 
						|
    SUMMARY: 'summary',
 | 
						|
    SUP: 'sup',
 | 
						|
 | 
						|
    TABLE: 'table',
 | 
						|
    TBODY: 'tbody',
 | 
						|
    TEMPLATE: 'template',
 | 
						|
    TEXTAREA: 'textarea',
 | 
						|
    TFOOT: 'tfoot',
 | 
						|
    TD: 'td',
 | 
						|
    TH: 'th',
 | 
						|
    THEAD: 'thead',
 | 
						|
    TITLE: 'title',
 | 
						|
    TR: 'tr',
 | 
						|
    TRACK: 'track',
 | 
						|
    TT: 'tt',
 | 
						|
 | 
						|
    U: 'u',
 | 
						|
    UL: 'ul',
 | 
						|
 | 
						|
    SVG: 'svg',
 | 
						|
 | 
						|
    VAR: 'var',
 | 
						|
 | 
						|
    WBR: 'wbr',
 | 
						|
 | 
						|
    XMP: 'xmp'
 | 
						|
});
 | 
						|
 | 
						|
exports.SPECIAL_ELEMENTS = {
 | 
						|
    [NS.HTML]: {
 | 
						|
        [$.ADDRESS]: true,
 | 
						|
        [$.APPLET]: true,
 | 
						|
        [$.AREA]: true,
 | 
						|
        [$.ARTICLE]: true,
 | 
						|
        [$.ASIDE]: true,
 | 
						|
        [$.BASE]: true,
 | 
						|
        [$.BASEFONT]: true,
 | 
						|
        [$.BGSOUND]: true,
 | 
						|
        [$.BLOCKQUOTE]: true,
 | 
						|
        [$.BODY]: true,
 | 
						|
        [$.BR]: true,
 | 
						|
        [$.BUTTON]: true,
 | 
						|
        [$.CAPTION]: true,
 | 
						|
        [$.CENTER]: true,
 | 
						|
        [$.COL]: true,
 | 
						|
        [$.COLGROUP]: true,
 | 
						|
        [$.DD]: true,
 | 
						|
        [$.DETAILS]: true,
 | 
						|
        [$.DIR]: true,
 | 
						|
        [$.DIV]: true,
 | 
						|
        [$.DL]: true,
 | 
						|
        [$.DT]: true,
 | 
						|
        [$.EMBED]: true,
 | 
						|
        [$.FIELDSET]: true,
 | 
						|
        [$.FIGCAPTION]: true,
 | 
						|
        [$.FIGURE]: true,
 | 
						|
        [$.FOOTER]: true,
 | 
						|
        [$.FORM]: true,
 | 
						|
        [$.FRAME]: true,
 | 
						|
        [$.FRAMESET]: true,
 | 
						|
        [$.H1]: true,
 | 
						|
        [$.H2]: true,
 | 
						|
        [$.H3]: true,
 | 
						|
        [$.H4]: true,
 | 
						|
        [$.H5]: true,
 | 
						|
        [$.H6]: true,
 | 
						|
        [$.HEAD]: true,
 | 
						|
        [$.HEADER]: true,
 | 
						|
        [$.HGROUP]: true,
 | 
						|
        [$.HR]: true,
 | 
						|
        [$.HTML]: true,
 | 
						|
        [$.IFRAME]: true,
 | 
						|
        [$.IMG]: true,
 | 
						|
        [$.INPUT]: true,
 | 
						|
        [$.LI]: true,
 | 
						|
        [$.LINK]: true,
 | 
						|
        [$.LISTING]: true,
 | 
						|
        [$.MAIN]: true,
 | 
						|
        [$.MARQUEE]: true,
 | 
						|
        [$.MENU]: true,
 | 
						|
        [$.META]: true,
 | 
						|
        [$.NAV]: true,
 | 
						|
        [$.NOEMBED]: true,
 | 
						|
        [$.NOFRAMES]: true,
 | 
						|
        [$.NOSCRIPT]: true,
 | 
						|
        [$.OBJECT]: true,
 | 
						|
        [$.OL]: true,
 | 
						|
        [$.P]: true,
 | 
						|
        [$.PARAM]: true,
 | 
						|
        [$.PLAINTEXT]: true,
 | 
						|
        [$.PRE]: true,
 | 
						|
        [$.SCRIPT]: true,
 | 
						|
        [$.SECTION]: true,
 | 
						|
        [$.SELECT]: true,
 | 
						|
        [$.SOURCE]: true,
 | 
						|
        [$.STYLE]: true,
 | 
						|
        [$.SUMMARY]: true,
 | 
						|
        [$.TABLE]: true,
 | 
						|
        [$.TBODY]: true,
 | 
						|
        [$.TD]: true,
 | 
						|
        [$.TEMPLATE]: true,
 | 
						|
        [$.TEXTAREA]: true,
 | 
						|
        [$.TFOOT]: true,
 | 
						|
        [$.TH]: true,
 | 
						|
        [$.THEAD]: true,
 | 
						|
        [$.TITLE]: true,
 | 
						|
        [$.TR]: true,
 | 
						|
        [$.TRACK]: true,
 | 
						|
        [$.UL]: true,
 | 
						|
        [$.WBR]: true,
 | 
						|
        [$.XMP]: true
 | 
						|
    },
 | 
						|
    [NS.MATHML]: {
 | 
						|
        [$.MI]: true,
 | 
						|
        [$.MO]: true,
 | 
						|
        [$.MN]: true,
 | 
						|
        [$.MS]: true,
 | 
						|
        [$.MTEXT]: true,
 | 
						|
        [$.ANNOTATION_XML]: true
 | 
						|
    },
 | 
						|
    [NS.SVG]: {
 | 
						|
        [$.TITLE]: true,
 | 
						|
        [$.FOREIGN_OBJECT]: true,
 | 
						|
        [$.DESC]: true
 | 
						|
    }
 | 
						|
};
 |