@@ -33,7 +33,7 @@ const OBJECT = 'object';
3333 * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is
3434 * specified then `""` (blank) element is assumed.
3535 *
36- * NOTE: The blank element inherits from root `* ` element, the super element of all elements.
36+ * NOTE: The blank element inherits from root `[Element] ` element, the super element of all elements.
3737 *
3838 * NOTE an element prefix such as `:svg:` has no special meaning to the schema.
3939 *
@@ -72,86 +72,86 @@ const OBJECT = 'object';
7272// =================================================================================================
7373
7474const SCHEMA : string [ ] = ( [
75- '*|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop' ,
76- 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^*|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate' ,
77- 'media^abbr|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,%srcObject,#volume' ,
78- ':svg:^abbr|*abort,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex' ,
75+ '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop' ,
76+ '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate' ,
77+ 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate' ,
78+ 'media^[HTMLElement]|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,%srcObject,#volume' ,
79+ ':svg:^[HTMLElement]|*abort,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex' ,
7980 ':svg:graphics^:svg:|' ,
8081 ':svg:animation^:svg:|*begin,*end,*repeat' ,
8182 ':svg:geometry^:svg:|' ,
8283 ':svg:componentTransferFunction^:svg:|' ,
8384 ':svg:gradient^:svg:|' ,
8485 ':svg:textContent^:svg:graphics|' ,
8586 ':svg:textPositioning^:svg:textContent|' ,
86- 'abbr^*|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate' ,
87- 'a^abbr|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username' ,
88- 'area^abbr|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,search,shape,target,username' ,
87+ 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username' ,
88+ 'area^[HTMLElement]|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,search,shape,target,username' ,
8989 'audio^media|' ,
90- 'br^abbr |clear' ,
91- 'base^abbr |href,target' ,
92- 'body^abbr |aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink' ,
93- 'button^abbr |!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value' ,
94- 'canvas^abbr |#height,#width' ,
95- 'content^abbr |select' ,
96- 'dl^abbr |!compact' ,
97- 'datalist^abbr |' ,
98- 'details^abbr |!open' ,
99- 'dialog^abbr |!open,returnValue' ,
100- 'dir^abbr |!compact' ,
101- 'div^abbr |align' ,
102- 'embed^abbr |align,height,name,src,type,width' ,
103- 'fieldset^abbr |!disabled,name' ,
104- 'font^abbr |color,face,size' ,
105- 'form^abbr |acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target' ,
106- 'frame^abbr |frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src' ,
107- 'frameset^abbr |cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows' ,
108- 'hr^abbr |align,color,!noShade,size,width' ,
109- 'head^abbr |' ,
110- 'h1,h2,h3,h4,h5,h6^abbr |align' ,
111- 'html^abbr |version' ,
112- 'iframe^abbr |align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width' ,
113- 'img^abbr |align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width' ,
114- 'input^abbr |accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width' ,
115- 'keygen^abbr |!autofocus,challenge,!disabled,keytype,name' ,
116- 'li^abbr |type,#value' ,
117- 'label^abbr |htmlFor' ,
118- 'legend^abbr |align' ,
119- 'link^abbr |as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type' ,
120- 'map^abbr |name' ,
121- 'marquee^abbr |behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width' ,
122- 'menu^abbr |!compact' ,
123- 'meta^abbr |content,httpEquiv,name,scheme' ,
124- 'meter^abbr |#high,#low,#max,#min,#optimum,#value' ,
125- 'ins,del^abbr |cite,dateTime' ,
126- 'ol^abbr |!compact,!reversed,#start,type' ,
127- 'object^abbr |align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width' ,
128- 'optgroup^abbr |!disabled,label' ,
129- 'option^abbr |!defaultSelected,!disabled,label,!selected,text,value' ,
130- 'output^abbr |defaultValue,%htmlFor,name,value' ,
131- 'p^abbr |align' ,
132- 'param^abbr |name,type,value,valueType' ,
133- 'picture^abbr |' ,
134- 'pre^abbr |#width' ,
135- 'progress^abbr |#max,#value' ,
136- 'q,blockquote,cite^abbr |' ,
137- 'script^abbr |!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type' ,
138- 'select^abbr |!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value' ,
139- 'shadow^abbr |' ,
140- 'source^abbr |media,sizes,src,srcset,type' ,
141- 'span^abbr |' ,
142- 'style^abbr |!disabled,media,type' ,
143- 'caption^abbr |align' ,
144- 'th,td^abbr |abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width' ,
145- 'col,colgroup^abbr |align,ch,chOff,#span,vAlign,width' ,
146- 'table^abbr |align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width' ,
147- 'tr^abbr |align,bgColor,ch,chOff,vAlign' ,
148- 'tfoot,thead,tbody^abbr |align,ch,chOff,vAlign' ,
149- 'template^abbr |' ,
150- 'textarea^abbr |autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap' ,
151- 'title^abbr |text' ,
152- 'track^abbr |!default,kind,label,src,srclang' ,
153- 'ul^abbr |!compact,type' ,
154- 'unknown^abbr |' ,
90+ 'br^[HTMLElement] |clear' ,
91+ 'base^[HTMLElement] |href,target' ,
92+ 'body^[HTMLElement] |aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink' ,
93+ 'button^[HTMLElement] |!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value' ,
94+ 'canvas^[HTMLElement] |#height,#width' ,
95+ 'content^[HTMLElement] |select' ,
96+ 'dl^[HTMLElement] |!compact' ,
97+ 'datalist^[HTMLElement] |' ,
98+ 'details^[HTMLElement] |!open' ,
99+ 'dialog^[HTMLElement] |!open,returnValue' ,
100+ 'dir^[HTMLElement] |!compact' ,
101+ 'div^[HTMLElement] |align' ,
102+ 'embed^[HTMLElement] |align,height,name,src,type,width' ,
103+ 'fieldset^[HTMLElement] |!disabled,name' ,
104+ 'font^[HTMLElement] |color,face,size' ,
105+ 'form^[HTMLElement] |acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target' ,
106+ 'frame^[HTMLElement] |frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src' ,
107+ 'frameset^[HTMLElement] |cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows' ,
108+ 'hr^[HTMLElement] |align,color,!noShade,size,width' ,
109+ 'head^[HTMLElement] |' ,
110+ 'h1,h2,h3,h4,h5,h6^[HTMLElement] |align' ,
111+ 'html^[HTMLElement] |version' ,
112+ 'iframe^[HTMLElement] |align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width' ,
113+ 'img^[HTMLElement] |align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width' ,
114+ 'input^[HTMLElement] |accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width' ,
115+ 'keygen^[HTMLElement] |!autofocus,challenge,!disabled,keytype,name' ,
116+ 'li^[HTMLElement] |type,#value' ,
117+ 'label^[HTMLElement] |htmlFor' ,
118+ 'legend^[HTMLElement] |align' ,
119+ 'link^[HTMLElement] |as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type' ,
120+ 'map^[HTMLElement] |name' ,
121+ 'marquee^[HTMLElement] |behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width' ,
122+ 'menu^[HTMLElement] |!compact' ,
123+ 'meta^[HTMLElement] |content,httpEquiv,name,scheme' ,
124+ 'meter^[HTMLElement] |#high,#low,#max,#min,#optimum,#value' ,
125+ 'ins,del^[HTMLElement] |cite,dateTime' ,
126+ 'ol^[HTMLElement] |!compact,!reversed,#start,type' ,
127+ 'object^[HTMLElement] |align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width' ,
128+ 'optgroup^[HTMLElement] |!disabled,label' ,
129+ 'option^[HTMLElement] |!defaultSelected,!disabled,label,!selected,text,value' ,
130+ 'output^[HTMLElement] |defaultValue,%htmlFor,name,value' ,
131+ 'p^[HTMLElement] |align' ,
132+ 'param^[HTMLElement] |name,type,value,valueType' ,
133+ 'picture^[HTMLElement] |' ,
134+ 'pre^[HTMLElement] |#width' ,
135+ 'progress^[HTMLElement] |#max,#value' ,
136+ 'q,blockquote,cite^[HTMLElement] |' ,
137+ 'script^[HTMLElement] |!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type' ,
138+ 'select^[HTMLElement] |!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value' ,
139+ 'shadow^[HTMLElement] |' ,
140+ 'source^[HTMLElement] |media,sizes,src,srcset,type' ,
141+ 'span^[HTMLElement] |' ,
142+ 'style^[HTMLElement] |!disabled,media,type' ,
143+ 'caption^[HTMLElement] |align' ,
144+ 'th,td^[HTMLElement] |abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width' ,
145+ 'col,colgroup^[HTMLElement] |align,ch,chOff,#span,vAlign,width' ,
146+ 'table^[HTMLElement] |align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width' ,
147+ 'tr^[HTMLElement] |align,bgColor,ch,chOff,vAlign' ,
148+ 'tfoot,thead,tbody^[HTMLElement] |align,ch,chOff,vAlign' ,
149+ 'template^[HTMLElement] |' ,
150+ 'textarea^[HTMLElement] |autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap' ,
151+ 'title^[HTMLElement] |text' ,
152+ 'track^[HTMLElement] |!default,kind,label,src,srclang' ,
153+ 'ul^[HTMLElement] |!compact,type' ,
154+ 'unknown^[HTMLElement] |' ,
155155 'video^media|#height,poster,#width' ,
156156 ':svg:a^:svg:graphics|' ,
157157 ':svg:animate^:svg:animation|' ,
@@ -235,12 +235,12 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry {
235235 constructor ( ) {
236236 super ( ) ;
237237 SCHEMA . forEach ( encodedType => {
238+ let type : { [ property : string ] : string } = { } ;
238239 const [ strType , strProperties ] = encodedType . split ( '|' ) ;
239240 const properties = strProperties . split ( ',' ) ;
240241 const [ typeNames , superName ] = strType . split ( '^' ) ;
241- const type : { [ property : string ] : string } = { } ;
242242 typeNames . split ( ',' ) . forEach ( tag => this . _schema [ tag . toLowerCase ( ) ] = type ) ;
243- const superType = this . _schema [ superName ] ;
243+ const superType = superName && this . _schema [ superName . toLowerCase ( ) ] ;
244244 if ( superType ) {
245245 Object . keys ( superType ) . forEach ( ( prop : string ) => { type [ prop ] = superType [ prop ] ; } ) ;
246246 }
0 commit comments