diff --git a/packages/parse5/lib/common/html.ts b/packages/parse5/lib/common/html.ts index 48e27317f64e45ffbb55126a59d3179a99126158..593eac21fcc278dd13f229f9d97b154e1b8e2de2 100644 --- a/packages/parse5/lib/common/html.ts +++ b/packages/parse5/lib/common/html.ts @@ -174,6 +174,25 @@ export enum TAG_NAMES { WBR = 'wbr', XMP = 'xmp', +// Unique self closing label + WEB = 'web', + XCOMPONENT = 'xcomponent', + RATING = 'rating', + CANVAS = 'canvas', + CAMERA = 'camera', + AUDIO = 'audio', + VIDEO = 'video', + SWITCH = 'switch', + QRCODE = 'qrcode', + PICKER_VIEW = 'picker-view', + PICKER = 'picker', + PROGRESS = 'progress', + SEARCH = 'search', + SLIDER = 'slider', + CHART = 'chart', + CALENDAR = 'calendar', + DIVIDER = 'divider', + IMAGE_ANIMATOR = 'image-animator', } /** @@ -327,6 +346,24 @@ export enum TAG_ID { WBR, XMP, + WEB, + XCOMPONENT, + RATING, + CANVAS, + CAMERA, + AUDIO, + VIDEO, + SWITCH, + QRCODE, + PICKER_VIEW, + PICKER, + PROGRESS, + SEARCH, + SLIDER, + CHART, + CALENDAR, + DIVIDER, + IMAGE_ANIMATOR, } const TAG_NAME_TO_ID = new Map([ @@ -452,6 +489,24 @@ const TAG_NAME_TO_ID = new Map([ [TAG_NAMES.VAR, TAG_ID.VAR], [TAG_NAMES.WBR, TAG_ID.WBR], [TAG_NAMES.XMP, TAG_ID.XMP], + [TAG_NAMES.WEB, TAG_ID.WEB], + [TAG_NAMES.XCOMPONENT, TAG_ID.XCOMPONENT], + [TAG_NAMES.RATING, TAG_ID.RATING], + [TAG_NAMES.CANVAS, TAG_ID.CANVAS], + [TAG_NAMES.CAMERA, TAG_ID.CAMERA], + [TAG_NAMES.AUDIO, TAG_ID.AUDIO], + [TAG_NAMES.VIDEO, TAG_ID.VIDEO], + [TAG_NAMES.SWITCH, TAG_ID.SWITCH], + [TAG_NAMES.QRCODE, TAG_ID.QRCODE], + [TAG_NAMES.PICKER_VIEW, TAG_ID.PICKER_VIEW], + [TAG_NAMES.PICKER, TAG_ID.PICKER], + [TAG_NAMES.PROGRESS, TAG_ID.PROGRESS], + [TAG_NAMES.SEARCH, TAG_ID.SEARCH], + [TAG_NAMES.SLIDER, TAG_ID.SLIDER], + [TAG_NAMES.CHART, TAG_ID.CHART], + [TAG_NAMES.CALENDAR, TAG_ID.CALENDAR], + [TAG_NAMES.DIVIDER, TAG_ID.DIVIDER], + [TAG_NAMES.IMAGE_ANIMATOR, TAG_ID.IMAGE_ANIMATOR], ]); export function getTagID(tagName: string): TAG_ID { @@ -543,6 +598,24 @@ export const SPECIAL_ELEMENTS: Record> = { $.UL, $.WBR, $.XMP, + $.WEB, + $.XCOMPONENT, + $.RATING, + $.CANVAS, + $.CAMERA, + $.AUDIO, + $.VIDEO, + $.SWITCH, + $.QRCODE, + $.PICKER_VIEW, + $.PICKER, + $.PROGRESS, + $.SEARCH, + $.SLIDER, + $.CHART, + $.CALENDAR, + $.DIVIDER, + $.IMAGE_ANIMATOR, ]), [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), diff --git a/packages/parse5/lib/parser/index.ts b/packages/parse5/lib/parser/index.ts index 00fb7af8c205d75768aaa3b26f4a71a64f68fc64..68159570f04d4e9fb474d6eca9b947c469b7b7d8 100644 --- a/packages/parse5/lib/parser/index.ts +++ b/packages/parse5/lib/parser/index.ts @@ -2165,6 +2165,24 @@ function startTagInBody(p: Parser, token: TagTo case $.WBR: case $.AREA: case $.EMBED: + case $.WEB: + case $.XCOMPONENT: + case $.RATING: + case $.CANVAS: + case $.CAMERA: + case $.AUDIO: + case $.VIDEO: + case $.SWITCH: + case $.QRCODE: + case $.PICKER_VIEW: + case $.PICKER: + case $.PROGRESS: + case $.SEARCH: + case $.SLIDER: + case $.CHART: + case $.CALENDAR: + case $.DIVIDER: + case $.IMAGE_ANIMATOR: case $.KEYGEN: { areaStartTagInBody(p, token); break;