@ibyar/elements 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/ast/dom.d.ts +7 -0
- package/ast/dom.js.map +1 -1
- package/attributes/tags.d.ts +2 -2
- package/attributes/tags.js +9 -2
- package/attributes/tags.js.map +1 -1
- package/node/html-parser.js +2 -1
- package/node/html-parser.js.map +1 -1
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
[![NPM Version][npm-image]][npm-url]
|
|
4
4
|
[![NPM Downloads][downloads-image]][downloads-url]
|
|
5
5
|
[![LICENSE][license-img]][license-url]
|
|
6
|
-
![npm-dependencies][npm-dep-url]
|
|
7
6
|
[![lerna][lerna-img]][lerna-url]
|
|
8
7
|
![GitHub contributors][contributors]
|
|
9
8
|
|
|
10
|
-
[npm-image]: https://img.shields.io/npm/v/@ibyar/elements.svg
|
|
9
|
+
[npm-image]: https://img.shields.io/npm/v/@ibyar/elements.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen
|
|
11
10
|
[npm-url]: https://npmjs.org/package/@ibyar/elements
|
|
12
11
|
[downloads-image]: https://img.shields.io/npm/dt/@ibyar/elements
|
|
13
12
|
[downloads-url]: https://npmjs.org/package/@ibyar/elements
|
|
14
13
|
[license-img]: https://img.shields.io/github/license/ibyar/aurora
|
|
15
14
|
[license-url]: https://github.com/ibyar/aurora/blob/master/LICENSE
|
|
16
|
-
[npm-dep-url]: https://img.shields.io/david/ibyar/elements.svg?maxAge=2592000
|
|
17
15
|
[lerna-img]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
|
|
18
16
|
[lerna-url]: https://lerna.js.org/
|
|
19
17
|
[contributors]: https://img.shields.io/github/contributors/ibyar/aurora
|
package/ast/dom.d.ts
CHANGED
|
@@ -3,11 +3,16 @@ export declare class Attribute<N, V> {
|
|
|
3
3
|
value: V;
|
|
4
4
|
constructor(name: N, value: V);
|
|
5
5
|
}
|
|
6
|
+
declare type ExpressionEvent = {
|
|
7
|
+
[key: string]: ExpressionEvent;
|
|
8
|
+
};
|
|
6
9
|
export declare class ElementAttribute<N, V, E> extends Attribute<N, V> {
|
|
7
10
|
expression: E;
|
|
11
|
+
expressionEvent: ExpressionEvent;
|
|
8
12
|
}
|
|
9
13
|
export declare class LiveAttribute<E> extends ElementAttribute<string, string, E> {
|
|
10
14
|
callbackExpression: E;
|
|
15
|
+
callbackExpressionEvent: ExpressionEvent;
|
|
11
16
|
}
|
|
12
17
|
export declare class TextContent extends Attribute<'textContent', string> {
|
|
13
18
|
static propName: "textContent";
|
|
@@ -15,6 +20,7 @@ export declare class TextContent extends Attribute<'textContent', string> {
|
|
|
15
20
|
}
|
|
16
21
|
export declare class LiveTextContent<E> extends TextContent {
|
|
17
22
|
expression: E;
|
|
23
|
+
expressionEvent: ExpressionEvent;
|
|
18
24
|
}
|
|
19
25
|
export declare class CommentNode {
|
|
20
26
|
comment: string;
|
|
@@ -58,3 +64,4 @@ export declare type DOMNode<E> = DOMFragmentNode<E> | DOMElementNode<E> | DOMDir
|
|
|
58
64
|
export declare type DOMRenderNode<T, E> = (model: T) => DOMNode<E>;
|
|
59
65
|
export declare function parseTextChild<E>(text: string): Array<TextContent | LiveTextContent<E>>;
|
|
60
66
|
export declare function parseStringTemplate(text: string): string;
|
|
67
|
+
export {};
|
package/ast/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/elements/ast/dom.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * a normal attribute with its source value without any binding.\n */\nexport class Attribute<N, V> {\n\tconstructor(public name: N, public value: V) { }\n}\n\nexport class ElementAttribute<N, V, E> extends Attribute<N, V> {\n\texpression: E;\n}\n\n/**\n * an attribute with its source value for binding\n */\nexport class LiveAttribute<E> extends ElementAttribute<string, string, E> {\n\tcallbackExpression: E;\n}\n\n/**\n * a normal text\n */\nexport class TextContent extends Attribute<'textContent', string> {\n\tstatic propName = 'textContent' as 'textContent';\n\tconstructor(text: string) {\n\t\tsuper(TextContent.propName, text);\n\t}\n}\n\n/**\n * a text that its content is binding to variable from the component model.\n */\nexport class LiveTextContent<E> extends TextContent {\n\texpression: E;\n}\n\n/**\n * to comment in dom\n */\nexport class CommentNode {\n\tconstructor(public comment: string) { }\n}\n\nexport class DOMParentNode<E> {\n\t/**\n\t * element children list\n\t */\n\tchildren: DOMChild<E>[];\n\n\taddChild(child: DOMChild<E>) {\n\t\tif (this.children) {\n\t\t\tthis.children.push(child);\n\t\t} else {\n\t\t\tthis.children = [child];\n\t\t}\n\t}\n\n\taddTextChild(text: string) {\n\t\tif (!this.children) {\n\t\t\tthis.children = [];\n\t\t}\n\t\tparseTextChild<E>(text).forEach(childText => this.children.push(childText));\n\t}\n\n}\n\n/**\n * parent for a list of elements \n */\nexport class DOMFragmentNode<E> extends DOMParentNode<E> {\n\tconstructor(children?: DOMChild<E>[]) {\n\t\tsuper();\n\t\tif (children) {\n\t\t\tthis.children = children;\n\t\t}\n\t}\n}\n\nexport class BaseNode<E> extends DOMParentNode<E> {\n\n\t/**\n\t * hold static attr and event that will resolve normally from the global window.\n\t */\n\tattributes: ElementAttribute<string, string | number | boolean | object, E>[];\n\n\t/**\n\t * hold the attrs/inputs name marked as one way binding\n\t */\n\tinputs: LiveAttribute<E>[];\n\n\t/**\n\t * hold the name of events that should be connected to a listener\n\t */\n\toutputs: ElementAttribute<string, string, E>[];\n\n\t/**\n\t * hold the name of attributes marked for 2 way data binding\n\t */\n\ttwoWayBinding: LiveAttribute<E>[];\n\n\t/**\n\t * directive attribute\n\t */\n\ttemplateAttrs: LiveAttribute<E>[];\n\n\taddAttribute(attrName: string, value?: string | number | boolean | object) {\n\t\tif (this.attributes) {\n\t\t\tthis.attributes.push(new ElementAttribute(attrName, value ?? true));\n\t\t} else {\n\t\t\tthis.attributes = [new ElementAttribute(attrName, value ?? true)];\n\t\t}\n\t}\n\n\taddInput(attrName: string, valueSource: string) {\n\t\tif (this.inputs) {\n\t\t\tthis.inputs.push(new LiveAttribute<E>(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.inputs = [new LiveAttribute<E>(attrName, valueSource)];\n\t\t}\n\t}\n\n\taddOutput(eventName: string, handlerSource: string) {\n\t\tif (this.outputs) {\n\t\t\tthis.outputs.push(new LiveAttribute<E>(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.outputs = [new LiveAttribute<E>(eventName, handlerSource)];\n\t\t}\n\t}\n\n\taddTwoWayBinding(eventName: string, handlerSource: string) {\n\t\tif (this.twoWayBinding) {\n\t\t\tthis.twoWayBinding.push(new LiveAttribute<E>(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.twoWayBinding = [new LiveAttribute<E>(eventName, handlerSource)];\n\t\t}\n\t}\n\n\taddTemplateAttr(attrName: string, valueSource: string) {\n\t\tvalueSource = valueSource.trim();\n\t\tif (/^\\{\\{(.+)\\}\\}$/g.test(valueSource)) {\n\t\t\t// as one way binding\n\t\t\tconst substring = valueSource.substring(2, valueSource.length - 2);\n\t\t\tif (!(/\\{\\{(.+)\\}\\}/g).test(substring)) {\n\t\t\t\tthis.addInput(attrName, substring);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// as string \n\t\tvalueSource = parseStringTemplate(valueSource);\n\t\tif (this.templateAttrs) {\n\t\t\tthis.templateAttrs.push(new LiveAttribute<E>(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.templateAttrs = [new LiveAttribute<E>(attrName, valueSource)];\n\t\t}\n\t}\n\n}\n\n/**\n * structural directive \n */\nexport class DOMDirectiveNode<E> extends DOMParentNode<E>{\n\n\t/**\n\t * name of the directive \n\t */\n\tdirectiveName: string;\n\n\t/**\n\t * value of the directive \n\t */\n\tdirectiveValue: string;\n\n\tconstructor(directiveName: string, directiveValue: string) {\n\t\tsuper();\n\t\tthis.directiveName = directiveName;\n\t\tthis.directiveValue = directiveValue;\n\t}\n}\n\nexport class DOMElementNode<E> extends BaseNode<E> {\n\n\t/**\n\t * the tag name of the element \n\t */\n\ttagName: string;\n\n\t/**\n\t * used to upgrade an element to another custom-element name\n\t */\n\tis?: string;\n\n\t/**\n\t * a given name for element\n\t */\n\ttemplateRefName: Attribute<string, string | undefined>;\n\n\tconstructor(tagName: string, is?: string) {\n\t\tsuper();\n\t\tthis.tagName = tagName;\n\t\tif (is) {\n\t\t\tthis.is = is;\n\t\t}\n\t}\n\n\tsetTagName(tagName: string) {\n\t\tthis.tagName = tagName;\n\t}\n\n\tsetTemplateRefName(name: string, value?: string) {\n\t\tthis.templateRefName = new Attribute(name, value);\n\t}\n\n}\n\nexport type DOMChild<E> = DOMElementNode<E> | DOMDirectiveNode<E> | CommentNode | TextContent | LiveTextContent<E>;\n\nexport type DOMNode<E> = DOMFragmentNode<E> | DOMElementNode<E> | DOMDirectiveNode<E> | CommentNode | TextContent | LiveTextContent<E>;\n\nexport type DOMRenderNode<T, E> = (model: T) => DOMNode<E>;\n\nexport function parseTextChild<E>(text: string): Array<TextContent | LiveTextContent<E>> {\n\t// split from end with '}}', then search for the first '{{'\n\tlet all: (TextContent | LiveTextContent<E>)[] = [];\n\tlet temp = text;\n\tlet last = temp.lastIndexOf('}}');\n\tlet first: number;\n\twhile (last > -1) {\n\t\tfirst = text.lastIndexOf('{{', last);\n\t\tif (first > -1) {\n\t\t\tlet lastPart = temp.substring(last + 2);\n\t\t\tif (lastPart) {\n\t\t\t\tall.push(new TextContent(lastPart));\n\t\t\t}\n\t\t\tlet liveText = new LiveTextContent<E>(temp.substring(first + 2, last));\n\t\t\tall.push(liveText);\n\t\t\ttemp = temp.substring(0, first);\n\t\t\tlast = temp.lastIndexOf('}}');\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (temp) {\n\t\tall.push(new TextContent(temp));\n\t}\n\treturn all.reverse();\n}\n\nexport function parseStringTemplate(text: string): string {\n\tconst node = parseTextChild(text);\n\tconst map = node.map(str => (str instanceof LiveTextContent ? '${' + str.value + '}' : str.value)).join('');\n\treturn '`' + map + '`';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/elements/ast/dom.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * a normal attribute with its source value without any binding.\n */\nexport class Attribute<N, V> {\n\tconstructor(public name: N, public value: V) { }\n}\n\ntype ExpressionEvent = { [key: string]: ExpressionEvent };\n\nexport class ElementAttribute<N, V, E> extends Attribute<N, V> {\n\texpression: E;\n\texpressionEvent: ExpressionEvent;\n}\n\n/**\n * an attribute with its source value for binding\n */\nexport class LiveAttribute<E> extends ElementAttribute<string, string, E> {\n\tcallbackExpression: E;\n\tcallbackExpressionEvent: ExpressionEvent;\n}\n\n/**\n * a normal text\n */\nexport class TextContent extends Attribute<'textContent', string> {\n\tstatic propName = 'textContent' as 'textContent';\n\tconstructor(text: string) {\n\t\tsuper(TextContent.propName, text);\n\t}\n}\n\n/**\n * a text that its content is binding to variable from the component model.\n */\nexport class LiveTextContent<E> extends TextContent {\n\texpression: E;\n\texpressionEvent: ExpressionEvent;\n}\n\n/**\n * to comment in dom\n */\nexport class CommentNode {\n\tconstructor(public comment: string) { }\n}\n\nexport class DOMParentNode<E> {\n\t/**\n\t * element children list\n\t */\n\tchildren: DOMChild<E>[];\n\n\taddChild(child: DOMChild<E>) {\n\t\tif (this.children) {\n\t\t\tthis.children.push(child);\n\t\t} else {\n\t\t\tthis.children = [child];\n\t\t}\n\t}\n\n\taddTextChild(text: string) {\n\t\tif (!this.children) {\n\t\t\tthis.children = [];\n\t\t}\n\t\tparseTextChild<E>(text).forEach(childText => this.children.push(childText));\n\t}\n\n}\n\n/**\n * parent for a list of elements \n */\nexport class DOMFragmentNode<E> extends DOMParentNode<E> {\n\tconstructor(children?: DOMChild<E>[]) {\n\t\tsuper();\n\t\tif (children) {\n\t\t\tthis.children = children;\n\t\t}\n\t}\n}\n\nexport class BaseNode<E> extends DOMParentNode<E> {\n\n\t/**\n\t * hold static attr and event that will resolve normally from the global window.\n\t */\n\tattributes: ElementAttribute<string, string | number | boolean | object, E>[];\n\n\t/**\n\t * hold the attrs/inputs name marked as one way binding\n\t */\n\tinputs: LiveAttribute<E>[];\n\n\t/**\n\t * hold the name of events that should be connected to a listener\n\t */\n\toutputs: ElementAttribute<string, string, E>[];\n\n\t/**\n\t * hold the name of attributes marked for 2 way data binding\n\t */\n\ttwoWayBinding: LiveAttribute<E>[];\n\n\t/**\n\t * directive attribute\n\t */\n\ttemplateAttrs: LiveAttribute<E>[];\n\n\taddAttribute(attrName: string, value?: string | number | boolean | object) {\n\t\tif (this.attributes) {\n\t\t\tthis.attributes.push(new ElementAttribute(attrName, value ?? true));\n\t\t} else {\n\t\t\tthis.attributes = [new ElementAttribute(attrName, value ?? true)];\n\t\t}\n\t}\n\n\taddInput(attrName: string, valueSource: string) {\n\t\tif (this.inputs) {\n\t\t\tthis.inputs.push(new LiveAttribute<E>(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.inputs = [new LiveAttribute<E>(attrName, valueSource)];\n\t\t}\n\t}\n\n\taddOutput(eventName: string, handlerSource: string) {\n\t\tif (this.outputs) {\n\t\t\tthis.outputs.push(new LiveAttribute<E>(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.outputs = [new LiveAttribute<E>(eventName, handlerSource)];\n\t\t}\n\t}\n\n\taddTwoWayBinding(eventName: string, handlerSource: string) {\n\t\tif (this.twoWayBinding) {\n\t\t\tthis.twoWayBinding.push(new LiveAttribute<E>(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.twoWayBinding = [new LiveAttribute<E>(eventName, handlerSource)];\n\t\t}\n\t}\n\n\taddTemplateAttr(attrName: string, valueSource: string) {\n\t\tvalueSource = valueSource.trim();\n\t\tif (/^\\{\\{(.+)\\}\\}$/g.test(valueSource)) {\n\t\t\t// as one way binding\n\t\t\tconst substring = valueSource.substring(2, valueSource.length - 2);\n\t\t\tif (!(/\\{\\{(.+)\\}\\}/g).test(substring)) {\n\t\t\t\tthis.addInput(attrName, substring);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// as string \n\t\tvalueSource = parseStringTemplate(valueSource);\n\t\tif (this.templateAttrs) {\n\t\t\tthis.templateAttrs.push(new LiveAttribute<E>(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.templateAttrs = [new LiveAttribute<E>(attrName, valueSource)];\n\t\t}\n\t}\n\n}\n\n/**\n * structural directive \n */\nexport class DOMDirectiveNode<E> extends DOMParentNode<E>{\n\n\t/**\n\t * name of the directive \n\t */\n\tdirectiveName: string;\n\n\t/**\n\t * value of the directive \n\t */\n\tdirectiveValue: string;\n\n\tconstructor(directiveName: string, directiveValue: string) {\n\t\tsuper();\n\t\tthis.directiveName = directiveName;\n\t\tthis.directiveValue = directiveValue;\n\t}\n}\n\nexport class DOMElementNode<E> extends BaseNode<E> {\n\n\t/**\n\t * the tag name of the element \n\t */\n\ttagName: string;\n\n\t/**\n\t * used to upgrade an element to another custom-element name\n\t */\n\tis?: string;\n\n\t/**\n\t * a given name for element\n\t */\n\ttemplateRefName: Attribute<string, string | undefined>;\n\n\tconstructor(tagName: string, is?: string) {\n\t\tsuper();\n\t\tthis.tagName = tagName;\n\t\tif (is) {\n\t\t\tthis.is = is;\n\t\t}\n\t}\n\n\tsetTagName(tagName: string) {\n\t\tthis.tagName = tagName;\n\t}\n\n\tsetTemplateRefName(name: string, value?: string) {\n\t\tthis.templateRefName = new Attribute(name, value);\n\t}\n\n}\n\nexport type DOMChild<E> = DOMElementNode<E> | DOMDirectiveNode<E> | CommentNode | TextContent | LiveTextContent<E>;\n\nexport type DOMNode<E> = DOMFragmentNode<E> | DOMElementNode<E> | DOMDirectiveNode<E> | CommentNode | TextContent | LiveTextContent<E>;\n\nexport type DOMRenderNode<T, E> = (model: T) => DOMNode<E>;\n\nexport function parseTextChild<E>(text: string): Array<TextContent | LiveTextContent<E>> {\n\t// split from end with '}}', then search for the first '{{'\n\tlet all: (TextContent | LiveTextContent<E>)[] = [];\n\tlet temp = text;\n\tlet last = temp.lastIndexOf('}}');\n\tlet first: number;\n\twhile (last > -1) {\n\t\tfirst = text.lastIndexOf('{{', last);\n\t\tif (first > -1) {\n\t\t\tlet lastPart = temp.substring(last + 2);\n\t\t\tif (lastPart) {\n\t\t\t\tall.push(new TextContent(lastPart));\n\t\t\t}\n\t\t\tlet liveText = new LiveTextContent<E>(temp.substring(first + 2, last));\n\t\t\tall.push(liveText);\n\t\t\ttemp = temp.substring(0, first);\n\t\t\tlast = temp.lastIndexOf('}}');\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (temp) {\n\t\tall.push(new TextContent(temp));\n\t}\n\treturn all.reverse();\n}\n\nexport function parseStringTemplate(text: string): string {\n\tconst node = parseTextChild(text);\n\tconst map = node.map(str => (str instanceof LiveTextContent ? '${' + str.value + '}' : str.value)).join('');\n\treturn '`' + map + '`';\n}\n"]}
|
package/attributes/tags.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare type TagClassRef = typeof HTMLElement;
|
|
2
2
|
export interface Tag {
|
|
3
|
-
readonly name
|
|
3
|
+
readonly name?: string;
|
|
4
4
|
readonly classRef: TagClassRef;
|
|
5
5
|
}
|
|
6
6
|
export declare function getClassRef(htmlElementName: string): TagClassRef;
|
|
@@ -11,7 +11,7 @@ export declare function isTagNameNative(tagName: string): boolean;
|
|
|
11
11
|
export declare const CustomElementRegex: RegExp;
|
|
12
12
|
export declare function isValidCustomElementName(tagName: string): boolean;
|
|
13
13
|
export declare function isHTMLUnknownElementTagName(tagName: string): boolean;
|
|
14
|
-
export declare function getTagName(classRef: TagClassRef): string |
|
|
14
|
+
export declare function getTagName(classRef: TagClassRef): string | undefined;
|
|
15
15
|
export declare const EmptyElements: string[];
|
|
16
16
|
export declare function isEmptyElement(tagName: string): boolean;
|
|
17
17
|
export declare const VoidElements: string[];
|
package/attributes/tags.js
CHANGED
|
@@ -13,7 +13,7 @@ function isMedia(name) {
|
|
|
13
13
|
name = name.toLowerCase();
|
|
14
14
|
return name.includes('video') || name.includes('audio');
|
|
15
15
|
}
|
|
16
|
-
export const DefaultTag = {
|
|
16
|
+
export const DefaultTag = Object.freeze({ classRef: HTMLElement });
|
|
17
17
|
export const NativeTags = [
|
|
18
18
|
{ name: 'a', classRef: HTMLAnchorElement },
|
|
19
19
|
{ name: 'abbr', classRef: HTMLElement },
|
|
@@ -309,6 +309,13 @@ export function findByTagName(tagName) {
|
|
|
309
309
|
if (!tagName || tagName === '' || tagName === 'none' || tagName === 'child') {
|
|
310
310
|
return DefaultTag;
|
|
311
311
|
}
|
|
312
|
+
if (isValidCustomElementName(tagName)) {
|
|
313
|
+
const classRef = customElements.get(tagName);
|
|
314
|
+
if (classRef) {
|
|
315
|
+
return { classRef };
|
|
316
|
+
}
|
|
317
|
+
throw new Error('Custom Element is not defined yet');
|
|
318
|
+
}
|
|
312
319
|
for (const tag of NativeTags) {
|
|
313
320
|
if (tag.name === tagName) {
|
|
314
321
|
return tag;
|
|
@@ -340,7 +347,7 @@ export function getTagName(classRef) {
|
|
|
340
347
|
return tag.name;
|
|
341
348
|
}
|
|
342
349
|
}
|
|
343
|
-
return
|
|
350
|
+
return undefined;
|
|
344
351
|
}
|
|
345
352
|
export const EmptyElements = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
|
|
346
353
|
export function isEmptyElement(tagName) {
|
package/attributes/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/elements/attributes/tags.ts"],"names":[],"mappings":"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","sourcesContent":["\nexport type TagClassRef = typeof HTMLElement;\n\nexport interface Tag {\n\treadonly name: string | null;\n\treadonly classRef: TagClassRef;\n}\n\nexport function getClassRef(htmlElementName: string): TagClassRef {\n\tif (Reflect.has(window, htmlElementName)) {\n\t\treturn Reflect.get(window, htmlElementName) as TagClassRef;\n\t} else if (isMedia(htmlElementName)) {\n\t\treturn getClassRef('HTMLMediaElement');\n\t} else {\n\t\treturn HTMLElement;\n\t}\n}\n\nfunction isMedia(name: string) {\n\tname = name.toLowerCase();\n\treturn name.includes('video') || name.includes('audio');\n}\n\nexport const DefaultTag: Tag = { name: null, classRef: HTMLElement };\n\n/**\n * see https://html.spec.whatwg.org/multipage/indices.html#element-interfaces\n */\nexport const NativeTags: Tag[] = [\n\t{ name: 'a', classRef: HTMLAnchorElement },\n\t{ name: 'abbr', classRef: HTMLElement },\n\t{ name: 'address', classRef: HTMLElement },\n\t{ name: 'area', classRef: HTMLAreaElement },\n\t{ name: 'article', classRef: HTMLElement },\n\t{ name: 'aside', classRef: HTMLElement },\n\t{ name: 'audio', classRef: HTMLAudioElement },\n\t{ name: 'b', classRef: HTMLElement },\n\t{ name: 'base', classRef: HTMLBaseElement },\n\t{ name: 'bdi', classRef: HTMLElement },\n\t{ name: 'bdo', classRef: HTMLElement },\n\t{ name: 'blockquote', classRef: HTMLQuoteElement },\n\t{ name: 'body', classRef: HTMLBodyElement },\n\t{ name: 'br', classRef: HTMLBRElement },\n\t{ name: 'button', classRef: HTMLButtonElement },\n\t{ name: 'canvas', classRef: HTMLCanvasElement },\n\t{ name: 'caption', classRef: HTMLTableCaptionElement },\n\t{ name: 'cite', classRef: HTMLElement },\n\t{ name: 'code', classRef: HTMLElement },\n\t{ name: 'col', classRef: HTMLTableColElement },\n\t{ name: 'colgroup', classRef: HTMLTableColElement },\n\t{ name: 'data', classRef: HTMLDataElement },\n\t{ name: 'datalist', classRef: HTMLDataListElement },\n\t{ name: 'dd', classRef: HTMLElement },\n\t{ name: 'del', classRef: HTMLModElement },\n\t{ name: 'details', classRef: HTMLDetailsElement },\n\t{ name: 'dfn', classRef: HTMLElement },\n\t// { name: 'dialog', classRef: window.HTMLDialogElement || HTMLElement },\n\t{ name: 'div', classRef: HTMLDivElement },\n\t{ name: 'dl', classRef: HTMLDListElement },\n\t{ name: 'dt', classRef: HTMLElement },\n\t{ name: 'em', classRef: HTMLElement },\n\t{ name: 'embed', classRef: HTMLEmbedElement },\n\t{ name: 'fieldset', classRef: HTMLFieldSetElement },\n\t{ name: 'figcaption', classRef: HTMLElement },\n\t{ name: 'figure', classRef: HTMLElement },\n\t{ name: 'footer', classRef: HTMLElement },\n\t{ name: 'form', classRef: HTMLFormElement },\n\t{ name: 'h1', classRef: HTMLHeadingElement },\n\t{ name: 'h2', classRef: HTMLHeadingElement },\n\t{ name: 'h3', classRef: HTMLHeadingElement },\n\t{ name: 'h4', classRef: HTMLHeadingElement },\n\t{ name: 'h5', classRef: HTMLHeadingElement },\n\t{ name: 'h6', classRef: HTMLHeadingElement },\n\t{ name: 'head', classRef: HTMLHeadElement },\n\t{ name: 'header', classRef: HTMLElement },\n\t{ name: 'hgroup', classRef: HTMLElement },\n\t{ name: 'hr', classRef: HTMLHRElement },\n\t{ name: 'html', classRef: HTMLHtmlElement },\n\t{ name: 'i', classRef: HTMLElement },\n\t{ name: 'iframe', classRef: HTMLIFrameElement },\n\t{ name: 'img', classRef: HTMLImageElement },\n\t{ name: 'input', classRef: HTMLInputElement },\n\t{ name: 'ins', classRef: HTMLModElement },\n\t{ name: 'kbd', classRef: HTMLElement },\n\t{ name: 'label', classRef: HTMLLabelElement },\n\t{ name: 'legend', classRef: HTMLLegendElement },\n\t{ name: 'li', classRef: HTMLLIElement },\n\t{ name: 'link', classRef: HTMLLinkElement },\n\t{ name: 'main', classRef: HTMLElement },\n\t{ name: 'map', classRef: HTMLMapElement },\n\t{ name: 'mark', classRef: HTMLElement },\n\t{ name: 'menu', classRef: HTMLMenuElement },\n\t{ name: 'meta', classRef: HTMLMetaElement },\n\t{ name: 'meter', classRef: HTMLMeterElement },\n\t{ name: 'nav', classRef: HTMLElement },\n\t{ name: 'noscript', classRef: HTMLElement },\n\t{ name: 'object', classRef: HTMLObjectElement },\n\t{ name: 'ol', classRef: HTMLOListElement },\n\t{ name: 'optgroup', classRef: HTMLOptGroupElement },\n\t{ name: 'option', classRef: HTMLOptionElement },\n\t{ name: 'output', classRef: HTMLOutputElement },\n\t{ name: 'p', classRef: HTMLParagraphElement },\n\t{ name: 'param', classRef: HTMLParamElement },\n\t{ name: 'picture', classRef: HTMLPictureElement },\n\t{ name: 'pre', classRef: HTMLPreElement },\n\t{ name: 'progress', classRef: HTMLProgressElement },\n\t{ name: 'q', classRef: HTMLQuoteElement },\n\t{ name: 'rp', classRef: HTMLElement },\n\t{ name: 'rt', classRef: HTMLElement },\n\t{ name: 'ruby', classRef: HTMLElement },\n\t{ name: 's', classRef: HTMLElement },\n\t{ name: 'samp', classRef: HTMLElement },\n\t{ name: 'script', classRef: HTMLScriptElement },\n\t{ name: 'section', classRef: HTMLElement },\n\t{ name: 'select', classRef: HTMLSelectElement },\n\t{ name: 'slot', classRef: HTMLSlotElement },\n\t{ name: 'small', classRef: HTMLElement },\n\t{ name: 'source', classRef: HTMLSourceElement },\n\t{ name: 'span', classRef: HTMLSpanElement },\n\t{ name: 'strong', classRef: HTMLElement },\n\t{ name: 'style', classRef: HTMLStyleElement },\n\t{ name: 'sub', classRef: HTMLElement },\n\t{ name: 'summary', classRef: HTMLElement },\n\t{ name: 'sup', classRef: HTMLElement },\n\t{ name: 'table', classRef: HTMLTableElement },\n\t{ name: 'tbody', classRef: HTMLTableSectionElement },\n\t{ name: 'td', classRef: HTMLTableCellElement },\n\t{ name: 'template', classRef: HTMLTemplateElement },\n\t{ name: 'textarea', classRef: HTMLTextAreaElement },\n\t{ name: 'tfoot', classRef: HTMLTableSectionElement },\n\t{ name: 'th', classRef: HTMLTableCellElement },\n\t{ name: 'thead', classRef: HTMLTableSectionElement },\n\t{ name: 'time', classRef: HTMLTimeElement },\n\t{ name: 'title', classRef: HTMLTitleElement },\n\t{ name: 'tr', classRef: HTMLTableRowElement },\n\t{ name: 'track', classRef: HTMLTrackElement },\n\t{ name: 'u', classRef: HTMLElement },\n\t{ name: 'ul', classRef: HTMLUListElement },\n\t{ name: 'var', classRef: HTMLElement },\n\t{ name: 'video', classRef: HTMLVideoElement },\n\t{ name: 'wbr', classRef: HTMLElement },\n];\n\nconst HTMLElementTagNameMap = {\n\ta: HTMLAnchorElement,\n\tabbr: HTMLElement,\n\taddress: HTMLElement,\n\tarea: HTMLAreaElement,\n\tarticle: HTMLElement,\n\taside: HTMLElement,\n\taudio: HTMLAudioElement,\n\tb: HTMLElement,\n\tbase: HTMLBaseElement,\n\tbdi: HTMLElement,\n\tbdo: HTMLElement,\n\tblockquote: HTMLQuoteElement,\n\tbody: HTMLBodyElement,\n\tbr: HTMLBRElement,\n\tbutton: HTMLButtonElement,\n\tcanvas: HTMLCanvasElement,\n\tcaption: HTMLTableCaptionElement,\n\tcite: HTMLElement,\n\tcode: HTMLElement,\n\tcol: HTMLTableColElement,\n\tcolgroup: HTMLTableColElement,\n\tdata: HTMLDataElement,\n\tdatalist: HTMLDataListElement,\n\tdd: HTMLElement,\n\tdel: HTMLModElement,\n\tdetails: HTMLDetailsElement,\n\tdfn: HTMLElement,\n\tdiv: HTMLDivElement,\n\tdl: HTMLDListElement,\n\tdt: HTMLElement,\n\tem: HTMLElement,\n\tembed: HTMLEmbedElement,\n\tfieldset: HTMLFieldSetElement,\n\tfigcaption: HTMLElement,\n\tfigure: HTMLElement,\n\tfooter: HTMLElement,\n\tform: HTMLFormElement,\n\th1: HTMLHeadingElement,\n\th2: HTMLHeadingElement,\n\th3: HTMLHeadingElement,\n\th4: HTMLHeadingElement,\n\th5: HTMLHeadingElement,\n\th6: HTMLHeadingElement,\n\thead: HTMLHeadElement,\n\theader: HTMLElement,\n\thgroup: HTMLElement,\n\thr: HTMLHRElement,\n\thtml: HTMLHtmlElement,\n\ti: HTMLElement,\n\tiframe: HTMLIFrameElement,\n\timg: HTMLImageElement,\n\tinput: HTMLInputElement,\n\tins: HTMLModElement,\n\tkbd: HTMLElement,\n\tlabel: HTMLLabelElement,\n\tlegend: HTMLLegendElement,\n\tli: HTMLLIElement,\n\tlink: HTMLLinkElement,\n\tmain: HTMLElement,\n\tmap: HTMLMapElement,\n\tmark: HTMLElement,\n\tmenu: HTMLMenuElement,\n\tmeta: HTMLMetaElement,\n\tmeter: HTMLMeterElement,\n\tnav: HTMLElement,\n\tnoscript: HTMLElement,\n\tobject: HTMLObjectElement,\n\tol: HTMLOListElement,\n\toptgroup: HTMLOptGroupElement,\n\toption: HTMLOptionElement,\n\toutput: HTMLOutputElement,\n\tp: HTMLParagraphElement,\n\tparam: HTMLParamElement,\n\tpicture: HTMLPictureElement,\n\tpre: HTMLPreElement,\n\tprogress: HTMLProgressElement,\n\tq: HTMLQuoteElement,\n\trp: HTMLElement,\n\trt: HTMLElement,\n\truby: HTMLElement,\n\ts: HTMLElement,\n\tsamp: HTMLElement,\n\tscript: HTMLScriptElement,\n\tsection: HTMLElement,\n\tselect: HTMLSelectElement,\n\tslot: HTMLSlotElement,\n\tsmall: HTMLElement,\n\tsource: HTMLSourceElement,\n\tspan: HTMLSpanElement,\n\tstrong: HTMLElement,\n\tstyle: HTMLStyleElement,\n\tsub: HTMLElement,\n\tsummary: HTMLElement,\n\tsup: HTMLElement,\n\ttable: HTMLTableElement,\n\ttbody: HTMLTableSectionElement,\n\ttd: HTMLTableCellElement,\n\ttemplate: HTMLTemplateElement,\n\ttextarea: HTMLTextAreaElement,\n\ttfoot: HTMLTableSectionElement,\n\tth: HTMLTableCellElement,\n\tthead: HTMLTableSectionElement,\n\ttime: HTMLTimeElement,\n\ttitle: HTMLTitleElement,\n\ttr: HTMLTableRowElement,\n\ttrack: HTMLTrackElement,\n\tu: HTMLElement,\n\tul: HTMLUListElement,\n\tvar: HTMLElement,\n\tvideo: HTMLVideoElement,\n\twbr: HTMLElement,\n}\n\nconst SVGElementTagNameMap = {\n\ta: SVGAElement,\n\tanimate: SVGAnimateElement,\n\tanimateMotion: SVGAnimateMotionElement,\n\tanimateTransform: SVGAnimateTransformElement,\n\tcircle: SVGCircleElement,\n\tclipPath: SVGClipPathElement,\n\tdefs: SVGDefsElement,\n\tdesc: SVGDescElement,\n\tellipse: SVGEllipseElement,\n\tfeBlend: SVGFEBlendElement,\n\tfeColorMatrix: SVGFEColorMatrixElement,\n\tfeComponentTransfer: SVGFEComponentTransferElement,\n\tfeComposite: SVGFECompositeElement,\n\tfeConvolveMatrix: SVGFEConvolveMatrixElement,\n\tfeDiffuseLighting: SVGFEDiffuseLightingElement,\n\tfeDisplacementMap: SVGFEDisplacementMapElement,\n\tfeDistantLight: SVGFEDistantLightElement,\n\tfeDropShadow: SVGFEDropShadowElement,\n\tfeFlood: SVGFEFloodElement,\n\tfeFuncA: SVGFEFuncAElement,\n\tfeFuncB: SVGFEFuncBElement,\n\tfeFuncG: SVGFEFuncGElement,\n\tfeFuncR: SVGFEFuncRElement,\n\tfeGaussianBlur: SVGFEGaussianBlurElement,\n\tfeImage: SVGFEImageElement,\n\tfeMerge: SVGFEMergeElement,\n\tfeMergeNode: SVGFEMergeNodeElement,\n\tfeMorphology: SVGFEMorphologyElement,\n\tfeOffset: SVGFEOffsetElement,\n\tfePointLight: SVGFEPointLightElement,\n\tfeSpecularLighting: SVGFESpecularLightingElement,\n\tfeSpotLight: SVGFESpotLightElement,\n\tfeTile: SVGFETileElement,\n\tfeTurbulence: SVGFETurbulenceElement,\n\tfilter: SVGFilterElement,\n\tforeignObject: SVGForeignObjectElement,\n\tg: SVGGElement,\n\timage: SVGImageElement,\n\tline: SVGLineElement,\n\tlinearGradient: SVGLinearGradientElement,\n\tmarker: SVGMarkerElement,\n\tmask: SVGMaskElement,\n\tmetadata: SVGMetadataElement,\n\tmpath: SVGMPathElement,\n\tpath: SVGPathElement,\n\tpattern: SVGPatternElement,\n\tpolygon: SVGPolygonElement,\n\tpolyline: SVGPolylineElement,\n\tradialGradient: SVGRadialGradientElement,\n\trect: SVGRectElement,\n\tscript: SVGScriptElement,\n\tset: SVGSetElement,\n\tstop: SVGStopElement,\n\tstyle: SVGStyleElement,\n\tsvg: SVGSVGElement,\n\tswitch: SVGSwitchElement,\n\tsymbol: SVGSymbolElement,\n\ttext: SVGTextElement,\n\ttextPath: SVGTextPathElement,\n\ttitle: SVGTitleElement,\n\ttspan: SVGTSpanElement,\n\tuse: SVGUseElement,\n\tview: SVGViewElement,\n}\n\nexport function findByTagName(tagName: string | undefined): Tag {\n\tif (!tagName || tagName === '' || tagName === 'none' || tagName === 'child') {\n\t\treturn DefaultTag;\n\t}\n\tfor (const tag of NativeTags) {\n\t\tif (tag.name === tagName) {\n\t\t\treturn tag;\n\t\t}\n\t}\n\treturn DefaultTag;\n}\n\nexport function isTagNameNative(tagName: string): boolean {\n\treturn (tagName in HTMLElementTagNameMap) || (tagName in SVGElementTagNameMap);\n}\n\n/**\n * see https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * see https://github.com/mathiasbynens/mothereff.in/blob/master/custom-element-name/vendor/is-potential-custom-element-name.js\n * @param tagName\n */\nexport const CustomElementRegex = /^[a-z](?:[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*-(?:[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n\nexport function isValidCustomElementName(tagName: string): boolean {\n\treturn CustomElementRegex.test(tagName);\n}\n\nexport function isHTMLUnknownElementTagName(tagName: string): boolean {\n\tfor (const tag of NativeTags) {\n\t\tif (tag.name === tagName) {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport function getTagName(classRef: TagClassRef): string | null {\n\tfor (const tag of NativeTags) {\n\t\tif (tag.classRef === classRef) {\n\t\t\treturn tag.name;\n\t\t}\n\t}\n\treturn null;\n}\n\nexport const EmptyElements = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\nexport function isEmptyElement(tagName: string) {\n\treturn EmptyElements.includes(tagName);\n}\n\nexport const VoidElements = EmptyElements;\nexport const isVoidElement = isEmptyElement;\n"]}
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/elements/attributes/tags.ts"],"names":[],"mappings":"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","sourcesContent":["\nexport type TagClassRef = typeof HTMLElement;\n\nexport interface Tag {\n\treadonly name?: string;\n\treadonly classRef: TagClassRef;\n}\n\nexport function getClassRef(htmlElementName: string): TagClassRef {\n\tif (Reflect.has(window, htmlElementName)) {\n\t\treturn Reflect.get(window, htmlElementName) as TagClassRef;\n\t} else if (isMedia(htmlElementName)) {\n\t\treturn getClassRef('HTMLMediaElement');\n\t} else {\n\t\treturn HTMLElement;\n\t}\n}\n\nfunction isMedia(name: string) {\n\tname = name.toLowerCase();\n\treturn name.includes('video') || name.includes('audio');\n}\n\nexport const DefaultTag: Tag = Object.freeze({ classRef: HTMLElement });\n\n/**\n * see https://html.spec.whatwg.org/multipage/indices.html#element-interfaces\n */\nexport const NativeTags: Tag[] = [\n\t{ name: 'a', classRef: HTMLAnchorElement },\n\t{ name: 'abbr', classRef: HTMLElement },\n\t{ name: 'address', classRef: HTMLElement },\n\t{ name: 'area', classRef: HTMLAreaElement },\n\t{ name: 'article', classRef: HTMLElement },\n\t{ name: 'aside', classRef: HTMLElement },\n\t{ name: 'audio', classRef: HTMLAudioElement },\n\t{ name: 'b', classRef: HTMLElement },\n\t{ name: 'base', classRef: HTMLBaseElement },\n\t{ name: 'bdi', classRef: HTMLElement },\n\t{ name: 'bdo', classRef: HTMLElement },\n\t{ name: 'blockquote', classRef: HTMLQuoteElement },\n\t{ name: 'body', classRef: HTMLBodyElement },\n\t{ name: 'br', classRef: HTMLBRElement },\n\t{ name: 'button', classRef: HTMLButtonElement },\n\t{ name: 'canvas', classRef: HTMLCanvasElement },\n\t{ name: 'caption', classRef: HTMLTableCaptionElement },\n\t{ name: 'cite', classRef: HTMLElement },\n\t{ name: 'code', classRef: HTMLElement },\n\t{ name: 'col', classRef: HTMLTableColElement },\n\t{ name: 'colgroup', classRef: HTMLTableColElement },\n\t{ name: 'data', classRef: HTMLDataElement },\n\t{ name: 'datalist', classRef: HTMLDataListElement },\n\t{ name: 'dd', classRef: HTMLElement },\n\t{ name: 'del', classRef: HTMLModElement },\n\t{ name: 'details', classRef: HTMLDetailsElement },\n\t{ name: 'dfn', classRef: HTMLElement },\n\t// { name: 'dialog', classRef: window.HTMLDialogElement || HTMLElement },\n\t{ name: 'div', classRef: HTMLDivElement },\n\t{ name: 'dl', classRef: HTMLDListElement },\n\t{ name: 'dt', classRef: HTMLElement },\n\t{ name: 'em', classRef: HTMLElement },\n\t{ name: 'embed', classRef: HTMLEmbedElement },\n\t{ name: 'fieldset', classRef: HTMLFieldSetElement },\n\t{ name: 'figcaption', classRef: HTMLElement },\n\t{ name: 'figure', classRef: HTMLElement },\n\t{ name: 'footer', classRef: HTMLElement },\n\t{ name: 'form', classRef: HTMLFormElement },\n\t{ name: 'h1', classRef: HTMLHeadingElement },\n\t{ name: 'h2', classRef: HTMLHeadingElement },\n\t{ name: 'h3', classRef: HTMLHeadingElement },\n\t{ name: 'h4', classRef: HTMLHeadingElement },\n\t{ name: 'h5', classRef: HTMLHeadingElement },\n\t{ name: 'h6', classRef: HTMLHeadingElement },\n\t{ name: 'head', classRef: HTMLHeadElement },\n\t{ name: 'header', classRef: HTMLElement },\n\t{ name: 'hgroup', classRef: HTMLElement },\n\t{ name: 'hr', classRef: HTMLHRElement },\n\t{ name: 'html', classRef: HTMLHtmlElement },\n\t{ name: 'i', classRef: HTMLElement },\n\t{ name: 'iframe', classRef: HTMLIFrameElement },\n\t{ name: 'img', classRef: HTMLImageElement },\n\t{ name: 'input', classRef: HTMLInputElement },\n\t{ name: 'ins', classRef: HTMLModElement },\n\t{ name: 'kbd', classRef: HTMLElement },\n\t{ name: 'label', classRef: HTMLLabelElement },\n\t{ name: 'legend', classRef: HTMLLegendElement },\n\t{ name: 'li', classRef: HTMLLIElement },\n\t{ name: 'link', classRef: HTMLLinkElement },\n\t{ name: 'main', classRef: HTMLElement },\n\t{ name: 'map', classRef: HTMLMapElement },\n\t{ name: 'mark', classRef: HTMLElement },\n\t{ name: 'menu', classRef: HTMLMenuElement },\n\t{ name: 'meta', classRef: HTMLMetaElement },\n\t{ name: 'meter', classRef: HTMLMeterElement },\n\t{ name: 'nav', classRef: HTMLElement },\n\t{ name: 'noscript', classRef: HTMLElement },\n\t{ name: 'object', classRef: HTMLObjectElement },\n\t{ name: 'ol', classRef: HTMLOListElement },\n\t{ name: 'optgroup', classRef: HTMLOptGroupElement },\n\t{ name: 'option', classRef: HTMLOptionElement },\n\t{ name: 'output', classRef: HTMLOutputElement },\n\t{ name: 'p', classRef: HTMLParagraphElement },\n\t{ name: 'param', classRef: HTMLParamElement },\n\t{ name: 'picture', classRef: HTMLPictureElement },\n\t{ name: 'pre', classRef: HTMLPreElement },\n\t{ name: 'progress', classRef: HTMLProgressElement },\n\t{ name: 'q', classRef: HTMLQuoteElement },\n\t{ name: 'rp', classRef: HTMLElement },\n\t{ name: 'rt', classRef: HTMLElement },\n\t{ name: 'ruby', classRef: HTMLElement },\n\t{ name: 's', classRef: HTMLElement },\n\t{ name: 'samp', classRef: HTMLElement },\n\t{ name: 'script', classRef: HTMLScriptElement },\n\t{ name: 'section', classRef: HTMLElement },\n\t{ name: 'select', classRef: HTMLSelectElement },\n\t{ name: 'slot', classRef: HTMLSlotElement },\n\t{ name: 'small', classRef: HTMLElement },\n\t{ name: 'source', classRef: HTMLSourceElement },\n\t{ name: 'span', classRef: HTMLSpanElement },\n\t{ name: 'strong', classRef: HTMLElement },\n\t{ name: 'style', classRef: HTMLStyleElement },\n\t{ name: 'sub', classRef: HTMLElement },\n\t{ name: 'summary', classRef: HTMLElement },\n\t{ name: 'sup', classRef: HTMLElement },\n\t{ name: 'table', classRef: HTMLTableElement },\n\t{ name: 'tbody', classRef: HTMLTableSectionElement },\n\t{ name: 'td', classRef: HTMLTableCellElement },\n\t{ name: 'template', classRef: HTMLTemplateElement },\n\t{ name: 'textarea', classRef: HTMLTextAreaElement },\n\t{ name: 'tfoot', classRef: HTMLTableSectionElement },\n\t{ name: 'th', classRef: HTMLTableCellElement },\n\t{ name: 'thead', classRef: HTMLTableSectionElement },\n\t{ name: 'time', classRef: HTMLTimeElement },\n\t{ name: 'title', classRef: HTMLTitleElement },\n\t{ name: 'tr', classRef: HTMLTableRowElement },\n\t{ name: 'track', classRef: HTMLTrackElement },\n\t{ name: 'u', classRef: HTMLElement },\n\t{ name: 'ul', classRef: HTMLUListElement },\n\t{ name: 'var', classRef: HTMLElement },\n\t{ name: 'video', classRef: HTMLVideoElement },\n\t{ name: 'wbr', classRef: HTMLElement },\n];\n\nconst HTMLElementTagNameMap = {\n\ta: HTMLAnchorElement,\n\tabbr: HTMLElement,\n\taddress: HTMLElement,\n\tarea: HTMLAreaElement,\n\tarticle: HTMLElement,\n\taside: HTMLElement,\n\taudio: HTMLAudioElement,\n\tb: HTMLElement,\n\tbase: HTMLBaseElement,\n\tbdi: HTMLElement,\n\tbdo: HTMLElement,\n\tblockquote: HTMLQuoteElement,\n\tbody: HTMLBodyElement,\n\tbr: HTMLBRElement,\n\tbutton: HTMLButtonElement,\n\tcanvas: HTMLCanvasElement,\n\tcaption: HTMLTableCaptionElement,\n\tcite: HTMLElement,\n\tcode: HTMLElement,\n\tcol: HTMLTableColElement,\n\tcolgroup: HTMLTableColElement,\n\tdata: HTMLDataElement,\n\tdatalist: HTMLDataListElement,\n\tdd: HTMLElement,\n\tdel: HTMLModElement,\n\tdetails: HTMLDetailsElement,\n\tdfn: HTMLElement,\n\tdiv: HTMLDivElement,\n\tdl: HTMLDListElement,\n\tdt: HTMLElement,\n\tem: HTMLElement,\n\tembed: HTMLEmbedElement,\n\tfieldset: HTMLFieldSetElement,\n\tfigcaption: HTMLElement,\n\tfigure: HTMLElement,\n\tfooter: HTMLElement,\n\tform: HTMLFormElement,\n\th1: HTMLHeadingElement,\n\th2: HTMLHeadingElement,\n\th3: HTMLHeadingElement,\n\th4: HTMLHeadingElement,\n\th5: HTMLHeadingElement,\n\th6: HTMLHeadingElement,\n\thead: HTMLHeadElement,\n\theader: HTMLElement,\n\thgroup: HTMLElement,\n\thr: HTMLHRElement,\n\thtml: HTMLHtmlElement,\n\ti: HTMLElement,\n\tiframe: HTMLIFrameElement,\n\timg: HTMLImageElement,\n\tinput: HTMLInputElement,\n\tins: HTMLModElement,\n\tkbd: HTMLElement,\n\tlabel: HTMLLabelElement,\n\tlegend: HTMLLegendElement,\n\tli: HTMLLIElement,\n\tlink: HTMLLinkElement,\n\tmain: HTMLElement,\n\tmap: HTMLMapElement,\n\tmark: HTMLElement,\n\tmenu: HTMLMenuElement,\n\tmeta: HTMLMetaElement,\n\tmeter: HTMLMeterElement,\n\tnav: HTMLElement,\n\tnoscript: HTMLElement,\n\tobject: HTMLObjectElement,\n\tol: HTMLOListElement,\n\toptgroup: HTMLOptGroupElement,\n\toption: HTMLOptionElement,\n\toutput: HTMLOutputElement,\n\tp: HTMLParagraphElement,\n\tparam: HTMLParamElement,\n\tpicture: HTMLPictureElement,\n\tpre: HTMLPreElement,\n\tprogress: HTMLProgressElement,\n\tq: HTMLQuoteElement,\n\trp: HTMLElement,\n\trt: HTMLElement,\n\truby: HTMLElement,\n\ts: HTMLElement,\n\tsamp: HTMLElement,\n\tscript: HTMLScriptElement,\n\tsection: HTMLElement,\n\tselect: HTMLSelectElement,\n\tslot: HTMLSlotElement,\n\tsmall: HTMLElement,\n\tsource: HTMLSourceElement,\n\tspan: HTMLSpanElement,\n\tstrong: HTMLElement,\n\tstyle: HTMLStyleElement,\n\tsub: HTMLElement,\n\tsummary: HTMLElement,\n\tsup: HTMLElement,\n\ttable: HTMLTableElement,\n\ttbody: HTMLTableSectionElement,\n\ttd: HTMLTableCellElement,\n\ttemplate: HTMLTemplateElement,\n\ttextarea: HTMLTextAreaElement,\n\ttfoot: HTMLTableSectionElement,\n\tth: HTMLTableCellElement,\n\tthead: HTMLTableSectionElement,\n\ttime: HTMLTimeElement,\n\ttitle: HTMLTitleElement,\n\ttr: HTMLTableRowElement,\n\ttrack: HTMLTrackElement,\n\tu: HTMLElement,\n\tul: HTMLUListElement,\n\tvar: HTMLElement,\n\tvideo: HTMLVideoElement,\n\twbr: HTMLElement,\n}\n\nconst SVGElementTagNameMap = {\n\ta: SVGAElement,\n\tanimate: SVGAnimateElement,\n\tanimateMotion: SVGAnimateMotionElement,\n\tanimateTransform: SVGAnimateTransformElement,\n\tcircle: SVGCircleElement,\n\tclipPath: SVGClipPathElement,\n\tdefs: SVGDefsElement,\n\tdesc: SVGDescElement,\n\tellipse: SVGEllipseElement,\n\tfeBlend: SVGFEBlendElement,\n\tfeColorMatrix: SVGFEColorMatrixElement,\n\tfeComponentTransfer: SVGFEComponentTransferElement,\n\tfeComposite: SVGFECompositeElement,\n\tfeConvolveMatrix: SVGFEConvolveMatrixElement,\n\tfeDiffuseLighting: SVGFEDiffuseLightingElement,\n\tfeDisplacementMap: SVGFEDisplacementMapElement,\n\tfeDistantLight: SVGFEDistantLightElement,\n\tfeDropShadow: SVGFEDropShadowElement,\n\tfeFlood: SVGFEFloodElement,\n\tfeFuncA: SVGFEFuncAElement,\n\tfeFuncB: SVGFEFuncBElement,\n\tfeFuncG: SVGFEFuncGElement,\n\tfeFuncR: SVGFEFuncRElement,\n\tfeGaussianBlur: SVGFEGaussianBlurElement,\n\tfeImage: SVGFEImageElement,\n\tfeMerge: SVGFEMergeElement,\n\tfeMergeNode: SVGFEMergeNodeElement,\n\tfeMorphology: SVGFEMorphologyElement,\n\tfeOffset: SVGFEOffsetElement,\n\tfePointLight: SVGFEPointLightElement,\n\tfeSpecularLighting: SVGFESpecularLightingElement,\n\tfeSpotLight: SVGFESpotLightElement,\n\tfeTile: SVGFETileElement,\n\tfeTurbulence: SVGFETurbulenceElement,\n\tfilter: SVGFilterElement,\n\tforeignObject: SVGForeignObjectElement,\n\tg: SVGGElement,\n\timage: SVGImageElement,\n\tline: SVGLineElement,\n\tlinearGradient: SVGLinearGradientElement,\n\tmarker: SVGMarkerElement,\n\tmask: SVGMaskElement,\n\tmetadata: SVGMetadataElement,\n\tmpath: SVGMPathElement,\n\tpath: SVGPathElement,\n\tpattern: SVGPatternElement,\n\tpolygon: SVGPolygonElement,\n\tpolyline: SVGPolylineElement,\n\tradialGradient: SVGRadialGradientElement,\n\trect: SVGRectElement,\n\tscript: SVGScriptElement,\n\tset: SVGSetElement,\n\tstop: SVGStopElement,\n\tstyle: SVGStyleElement,\n\tsvg: SVGSVGElement,\n\tswitch: SVGSwitchElement,\n\tsymbol: SVGSymbolElement,\n\ttext: SVGTextElement,\n\ttextPath: SVGTextPathElement,\n\ttitle: SVGTitleElement,\n\ttspan: SVGTSpanElement,\n\tuse: SVGUseElement,\n\tview: SVGViewElement,\n}\n\nexport function findByTagName(tagName: string | undefined): Tag {\n\tif (!tagName || tagName === '' || tagName === 'none' || tagName === 'child') {\n\t\treturn DefaultTag;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\tconst classRef = customElements.get(tagName);\n\t\tif (classRef) {\n\t\t\treturn { classRef };\n\t\t}\n\t\tthrow new Error('Custom Element is not defined yet');\n\t}\n\tfor (const tag of NativeTags) {\n\t\tif (tag.name === tagName) {\n\t\t\treturn tag;\n\t\t}\n\t}\n\treturn DefaultTag;\n}\n\nexport function isTagNameNative(tagName: string): boolean {\n\treturn (tagName in HTMLElementTagNameMap) || (tagName in SVGElementTagNameMap);\n}\n\n/**\n * see https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * see https://github.com/mathiasbynens/mothereff.in/blob/master/custom-element-name/vendor/is-potential-custom-element-name.js\n * @param tagName\n */\nexport const CustomElementRegex = /^[a-z](?:[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*-(?:[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n\nexport function isValidCustomElementName(tagName: string): boolean {\n\treturn CustomElementRegex.test(tagName);\n}\n\nexport function isHTMLUnknownElementTagName(tagName: string): boolean {\n\tfor (const tag of NativeTags) {\n\t\tif (tag.name === tagName) {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport function getTagName(classRef: TagClassRef): string | undefined {\n\tfor (const tag of NativeTags) {\n\t\tif (tag.classRef === classRef) {\n\t\t\treturn tag.name;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport const EmptyElements = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\nexport function isEmptyElement(tagName: string) {\n\treturn EmptyElements.includes(tagName);\n}\n\nexport const VoidElements = EmptyElements;\nexport const isVoidElement = isEmptyElement;\n"]}
|
package/node/html-parser.js
CHANGED
|
@@ -116,7 +116,8 @@ export class NodeParser {
|
|
|
116
116
|
}
|
|
117
117
|
parseCloseTag(token) {
|
|
118
118
|
if (token === '>') {
|
|
119
|
-
if (!isEmptyElement(this.currentNode.tagName)
|
|
119
|
+
if (!isEmptyElement(this.currentNode.tagName)
|
|
120
|
+
&& this.currentNode.tagName.trim().toLowerCase() !== this.tempText.trim().toLowerCase()) {
|
|
120
121
|
throw 'Wrong closed tag at char ' + this.index;
|
|
121
122
|
}
|
|
122
123
|
this.popElement();
|
package/node/html-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-parser.js","sourceRoot":"","sources":["../../../src/elements/node/html-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmptyElement } from '../attributes/tags.js';\nimport {\n\tDOMElementNode, CommentNode, parseTextChild,\n\tTextContent, LiveTextContent, DOMFragmentNode,\n\tDOMDirectiveNode, DOMNode, DOMChild, ElementAttribute\n} from '../ast/dom.js';\nimport { NodeFactory } from '../ast/factory.js';\n\ntype Token = (token: string) => Token;\n\ntype ChildNode = DOMElementNode<any> | CommentNode | string;\n\nexport class EscapeHTMLCharacter {\n\tstatic ESCAPE_MAP: { [key: string]: string } = {\n\t\t'&': '&',\n\t\t'<': '<',\n\t\t'>': '>',\n\t\t'"': '\"',\n\t\t''': \"'\",\n\t\t'`': '`'\n\t};\n\ttest: RegExp;\n\treplace: RegExp;\n\tconstructor() {\n\t\tconst escapeRegexSource = '(?:' + Object.keys(EscapeHTMLCharacter.ESCAPE_MAP).join('|') + ')';\n\t\tthis.test = new RegExp(escapeRegexSource);\n\t\tthis.replace = new RegExp(escapeRegexSource, 'g');\n\t}\n\n\tescaper(match: string): string {\n\t\treturn EscapeHTMLCharacter.ESCAPE_MAP[match];\n\t}\n\n\tunescape(text: string): string {\n\t\tif (!text) {\n\t\t\treturn text;\n\t\t}\n\t\treturn this.test.test(text) ? text.replace(this.replace, this.escaper) : text;\n\t}\n}\n\nexport class NodeParser {\n\n\tprivate index: number;\n\tprivate stateFn: Token;\n\n\tprivate tagNameRegExp = /[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/;\n\n\tprivate childStack: DOMChild<any>[];\n\tprivate stackTrace: ChildNode[];\n\n\tprivate get currentNode(): DOMElementNode<any> {\n\t\treturn this.stackTrace[this.stackTrace.length - 1] as DOMElementNode<any>;\n\t}\n\n\tprivate commentOpenCount = 0;\n\tprivate commentCloseCount = 0;\n\n\tprivate tempText: string;\n\n\tprivate propertyName: string;\n\tprivate propertyValue: string;\n\tprivate propType: 'attr' | 'ref-name' | 'input' | 'output' | 'two-way';\n\n\tprivate escaper = new EscapeHTMLCharacter();\n\n\tparse(html: string)/*: DomNode*/ {\n\t\tthis.reset();\n\t\tfor (; this.index < html.length; this.index++) {\n\t\t\tthis.stateFn = this.stateFn(html[this.index]);\n\t\t}\n\t\tif (this.tempText && this.stateFn === this.parseText) {\n\t\t\tthis.stateFn('<');\n\t\t}\n\t\tif (this.stackTrace.length > 0) {\n\t\t\tconsole.error(this.stackTrace);\n\t\t\tthrow new Error(`error parsing html, had ${this.stackTrace.length} element, with no closing tag`);\n\t\t}\n\t\tlet stack = this.childStack;\n\t\tthis.reset();\n\t\treturn stack;\n\t}\n\n\tprivate reset() {\n\t\tthis.index = 0;\n\t\tthis.childStack = [];\n\t\tthis.stackTrace = [];\n\t\tthis.propType = 'attr';\n\t\tthis.commentOpenCount = 0;\n\t\tthis.commentCloseCount = 0;\n\t\tthis.stateFn = this.parseText;\n\t\tthis.propertyName = this.propertyValue = this.tempText = '';\n\t}\n\n\tprivate parseText(token: string) {\n\t\tif (token === '<') {\n\t\t\tif (this.tempText) {\n\t\t\t\tthis.tempText = this.escaper.unescape(this.tempText);\n\t\t\t\tthis.stackTrace.push(this.tempText);\n\t\t\t\tthis.popElement();\n\t\t\t\tthis.tempText = '';\n\t\t\t}\n\t\t\treturn this.parseTag;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseText;\n\t}\n\n\tprivate parseTag(token: string) {\n\t\tif (token === '/') {\n\t\t\treturn this.parseCloseTag;\n\t\t}\n\t\tif (token === '!') {\n\t\t\tthis.commentOpenCount = 0;\n\t\t\tthis.commentCloseCount = 0;\n\t\t\treturn this.parseComment;\n\t\t}\n\t\tthis.index--;\n\t\treturn this.parseOpenTag;\n\t}\n\n\tprivate parseComment(token: string) {\n\t\tif (token === '-') {\n\t\t\tif (this.commentOpenCount < 2) {\n\t\t\t\tthis.commentOpenCount++;\n\t\t\t} else {\n\t\t\t\tthis.commentCloseCount++;\n\t\t\t}\n\t\t\treturn this.parseComment;\n\t\t}\n\t\telse if (token === '>' && this.commentCloseCount === 2) {\n\t\t\tthis.tempText = this.escaper.unescape(this.tempText);\n\t\t\tthis.stackTrace.push(new CommentNode(this.tempText.trim()));\n\t\t\tthis.popElement();\n\t\t\tthis.tempText = '';\n\t\t\tthis.commentOpenCount = 0;\n\t\t\tthis.commentCloseCount = 0;\n\t\t\treturn this.parseText;\n\t\t}\n\t\tif (this.commentCloseCount > 0) {\n\t\t\tfor (let i = 0; i < this.commentCloseCount; i++) {\n\t\t\t\tthis.tempText += '-';\n\t\t\t}\n\t\t\tthis.commentCloseCount = 0;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseComment;\n\t}\n\n\tprivate parseCloseTag(token: string) {\n\t\tif (token === '>') {\n\t\t\tif (!isEmptyElement(this.currentNode.tagName) && this.currentNode.tagName !== this.tempText) {\n\t\t\t\tthrow 'Wrong closed tag at char ' + this.index;\n\t\t\t}\n\t\t\tthis.popElement();\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseCloseTag;\n\t}\n\n\tprivate parseOpenTag(token: string) {\n\t\tif (token === '>') {\n\t\t\tthis.stackTrace.push(new DOMElementNode(this.tempText));\n\t\t\tif (isEmptyElement(this.tempText)) {\n\t\t\t\tthis.popElement();\n\t\t\t}\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\telse if (this.tagNameRegExp.test(token)) {\n\t\t\tthis.tempText += token;\n\t\t\treturn this.parseOpenTag;\n\t\t}\n\t\telse if (/\\s/.test(token)) {\n\t\t\tthis.stackTrace.push(new DOMElementNode(this.tempText));\n\t\t\tthis.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t}\n\n\tprivate parsePropertyName(token: string) {\n\t\tif (token === '>') {\n\t\t\tif (this.tempText.trim()) {\n\t\t\t\tthis.propertyName = this.tempText;\n\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\t}\n\t\t\tif (isEmptyElement(this.currentNode.tagName)) {\n\t\t\t\tthis.popElement();\n\t\t\t}\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\telse if (token === '/') {\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\telse if (/\\[/.test(token)) {\n\t\t\tthis.propType = 'input';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\\(|@/.test(token)) {\n\t\t\tthis.propType = 'output';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/#/.test(token)) {\n\t\t\tthis.propType = 'ref-name';\n\t\t\treturn this.parseRefName;\n\t\t}\n\t\telse if (/=/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyName;\n\t\t} else if (/\"/.test(token)) {\n\t\t\treturn this.parsePropertyValue;\n\t\t} else if (/\\d/.test(token)) {\n\t\t\tthis.tempText += token;\n\t\t\treturn this.parsePropertyValue;\n\t\t}\n\t\telse if (/\\s/.test(token)) {\n\t\t\tif (this.tempText.trim()) {\n\t\t\t\tthis.propertyName = this.tempText;\n\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\t}\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parsePropertyName;\n\t}\n\n\n\n\tprivate parseRefName(token: string) {\n\t\tif (/=/.test(token)) {\n\t\t\treturn this.parseRefName;\n\t\t}\n\t\telse if (/\"/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyValue;\n\t\t} else if (/\\s/.test(token)) {\n\t\t\tthis.currentNode.setTemplateRefName(this.tempText, '');\n\t\t\tthis.propertyName = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t} else if (/>/.test(token)) {\n\t\t\tthis.currentNode.setTemplateRefName(this.tempText, '');\n\t\t\tthis.propertyName = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parseText;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseRefName;\n\t}\n\n\tprivate parseInputOutput(token: string) {\n\t\tif (/\\(/.test(token)) {\n\t\t\tthis.propType = 'two-way';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\\)|\\]|=/.test(token)) {\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\"/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyValue;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseInputOutput;\n\t}\n\n\tprivate parsePropertyValue(token: string) {\n\t\tif (/\"/.test(token)) {\n\t\t\tthis.propertyValue = this.tempText;\n\t\t\tswitch (this.propType) {\n\t\t\t\tcase 'input':\n\t\t\t\t\tthis.currentNode.addInput(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'output':\n\t\t\t\t\tthis.currentNode.addOutput(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'two-way':\n\t\t\t\t\tthis.currentNode.addTwoWayBinding(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ref-name':\n\t\t\t\t\tthis.currentNode.setTemplateRefName(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'attr':\n\t\t\t\tdefault:\n\t\t\t\t\tif (/^([-+]?\\d*\\.?\\d+)(?:[eE]([-+]?\\d+))?$/.test(this.propertyValue.trim())) {\n\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, +this.propertyValue.trim());\n\t\t\t\t\t} else if (/^(true|false)$/.test(this.propertyValue.trim().toLowerCase())) {\n\t\t\t\t\t\tif (this.propertyValue.trim().toLowerCase() === 'true') {\n\t\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, this.propertyValue);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parsePropertyValue;\n\t}\n\n\n\tprivate popElement() {\n\t\tconst element = this.stackTrace.pop();\n\t\tif (element) {\n\t\t\tconst parent = this.stackTrace.pop();\n\t\t\tif (parent && parent instanceof DOMElementNode) {\n\t\t\t\tif (typeof element === 'string') {\n\t\t\t\t\tparent.addTextChild(element);\n\t\t\t\t} else if (element instanceof DOMElementNode) {\n\t\t\t\t\tparent.addChild(this.checkNode(element));\n\t\t\t\t} else {\n\t\t\t\t\tparent.addChild(element);\n\t\t\t\t}\n\t\t\t\tthis.stackTrace.push(parent);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (typeof element === 'string') {\n\t\t\t\t\tparseTextChild(element).forEach(text => this.childStack.push(text));\n\t\t\t\t} else if (element instanceof DOMElementNode) {\n\t\t\t\t\tthis.childStack.push(this.checkNode(element));\n\t\t\t\t} else {\n\t\t\t\t\tthis.childStack.push(element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckNode(node: DOMElementNode<any>): DOMElementNode<any> | DOMDirectiveNode<any> {\n\t\tif (node.attributes) {\n\t\t\tlet temp: ElementAttribute<string, any, any> | ElementAttribute<string, any, any>[] | undefined = node.attributes.find(attr => attr.name === 'is');\n\t\t\tif (temp) {\n\t\t\t\tnode.attributes.splice(node.attributes.indexOf(temp), 1);\n\t\t\t\tnode.is = temp.value as string;\n\t\t\t}\n\t\t\ttemp = node.attributes.filter(attr => {\n\t\t\t\treturn typeof attr.value === 'string' && (/\\{\\{(.+)\\}\\}/g).test(attr.value);\n\t\t\t});\n\t\t\tif (temp) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tnode.attributes.splice(node.attributes.indexOf(templateAttrs), 1);\n\t\t\t\t\tnode.addTemplateAttr(templateAttrs.name, templateAttrs.value as string);\n\t\t\t\t});\n\t\t\t}\n\t\t\ttemp = node.attributes.filter(attr => attr.name.startsWith('on'));\n\t\t\tif (temp) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tnode.attributes.splice(node.attributes.indexOf(templateAttrs), 1);\n\t\t\t\t\tnode.addOutput(templateAttrs.name.substring(2), templateAttrs.value as string);\n\t\t\t\t});\n\t\t\t}\n\t\t\ttemp = node.attributes.find(attr => attr.name?.startsWith('*'));\n\t\t\tif (temp) {\n\t\t\t\tnode.attributes.splice(node.attributes.indexOf(temp), 1);\n\t\t\t\tconst directive = new DOMDirectiveNode(temp.name, temp.value as string);\n\t\t\t\tdirective.addChild(node);\n\t\t\t\treturn directive;\n\t\t\t}\n\t\t\tif (NodeFactory.StructuralDirectives.includes(node.tagName)) {\n\t\t\t\t// try to find expression attribute\n\t\t\t\t// <if expression=\"a === b\">child text <div>...</div></if>\n\t\t\t\ttemp = node.attributes.find(attr => attr.name === 'expression');\n\t\t\t\tif (temp) {\n\t\t\t\t\tconst directive = new DOMDirectiveNode('*' + node.tagName, temp.value as string);\n\t\t\t\t\tdirective.children = node.children;\n\t\t\t\t\treturn directive;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n}\n\nexport class HTMLParser {\n\n\tnodeParser = new NodeParser();\n\n\tparse(html: string): DOMChild<any>[] {\n\t\treturn this.nodeParser.parse(html);\n\t}\n\n\ttoDomRootNode(html: string): DOMNode<any> {\n\t\tlet stack = this.nodeParser.parse(html);\n\t\tif (!stack || stack.length === 0) {\n\t\t\treturn new DOMFragmentNode([new TextContent('')]);\n\t\t} else if (stack?.length === 1) {\n\t\t\treturn stack[0];\n\t\t} else {\n\t\t\treturn new DOMFragmentNode(stack);\n\t\t}\n\t}\n\n\tstringify(stack: DOMNode<any>[]) {\n\t\tlet html = '';\n\t\tstack?.forEach(node => {\n\t\t\tif (node instanceof TextContent) {\n\t\t\t\thtml += node.value;\n\t\t\t} else if (node instanceof LiveTextContent) {\n\t\t\t\thtml += `{{${node.value}}}`;\n\t\t\t} else if (node instanceof CommentNode) {\n\t\t\t\thtml += `<!-- ${node.comment} -->`;\n\t\t\t} else if (node instanceof DOMElementNode) {\n\t\t\t\tlet attrs = '';\n\t\t\t\tif (node.attributes) {\n\t\t\t\t\tattrs += node.attributes.map(attr => `${attr.name}=\"${attr.value}\"`).join(' ') + ' ';\n\t\t\t\t}\n\t\t\t\tif (node.twoWayBinding) {\n\t\t\t\t\tattrs += node.twoWayBinding.map(attr => `[(${attr.name})]=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.inputs) {\n\t\t\t\t\tattrs += node.inputs.map(attr => `[${attr.name}]=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.outputs) {\n\t\t\t\t\tattrs += node.outputs.map(attr => `(${attr.name})=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.templateAttrs) {\n\t\t\t\t\tattrs += node.templateAttrs.map(attr => `${attr.name}=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (isEmptyElement(node.tagName)) {\n\t\t\t\t\tif (attrs) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}/>`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thtml += `<${node.tagName} />`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet children = this.stringify(node.children);\n\t\t\t\t\tif (attrs && children) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}>${children}</${node.tagName}>`;\n\t\t\t\t\t}\n\t\t\t\t\telse if (attrs) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}></${node.tagName}>`;\n\t\t\t\t\t} else if (children) {\n\t\t\t\t\t\thtml += `<${node.tagName}>${children}<</${node.tagName}>`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thtml += `<${node.tagName}></${node.tagName}>`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn html;\n\t}\n\n}\n\nexport const htmlParser = new HTMLParser();\n\n"]}
|
|
1
|
+
{"version":3,"file":"html-parser.js","sourceRoot":"","sources":["../../../src/elements/node/html-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmptyElement } from '../attributes/tags.js';\nimport {\n\tDOMElementNode, CommentNode, parseTextChild,\n\tTextContent, LiveTextContent, DOMFragmentNode,\n\tDOMDirectiveNode, DOMNode, DOMChild, ElementAttribute\n} from '../ast/dom.js';\nimport { NodeFactory } from '../ast/factory.js';\n\ntype Token = (token: string) => Token;\n\ntype ChildNode = DOMElementNode<any> | CommentNode | string;\n\nexport class EscapeHTMLCharacter {\n\tstatic ESCAPE_MAP: { [key: string]: string } = {\n\t\t'&': '&',\n\t\t'<': '<',\n\t\t'>': '>',\n\t\t'"': '\"',\n\t\t''': \"'\",\n\t\t'`': '`'\n\t};\n\ttest: RegExp;\n\treplace: RegExp;\n\tconstructor() {\n\t\tconst escapeRegexSource = '(?:' + Object.keys(EscapeHTMLCharacter.ESCAPE_MAP).join('|') + ')';\n\t\tthis.test = new RegExp(escapeRegexSource);\n\t\tthis.replace = new RegExp(escapeRegexSource, 'g');\n\t}\n\n\tescaper(match: string): string {\n\t\treturn EscapeHTMLCharacter.ESCAPE_MAP[match];\n\t}\n\n\tunescape(text: string): string {\n\t\tif (!text) {\n\t\t\treturn text;\n\t\t}\n\t\treturn this.test.test(text) ? text.replace(this.replace, this.escaper) : text;\n\t}\n}\n\nexport class NodeParser {\n\n\tprivate index: number;\n\tprivate stateFn: Token;\n\n\tprivate tagNameRegExp = /[\\-\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/;\n\n\tprivate childStack: DOMChild<any>[];\n\tprivate stackTrace: ChildNode[];\n\n\tprivate get currentNode(): DOMElementNode<any> {\n\t\treturn this.stackTrace[this.stackTrace.length - 1] as DOMElementNode<any>;\n\t}\n\n\tprivate commentOpenCount = 0;\n\tprivate commentCloseCount = 0;\n\n\tprivate tempText: string;\n\n\tprivate propertyName: string;\n\tprivate propertyValue: string;\n\tprivate propType: 'attr' | 'ref-name' | 'input' | 'output' | 'two-way';\n\n\tprivate escaper = new EscapeHTMLCharacter();\n\n\tparse(html: string)/*: DomNode*/ {\n\t\tthis.reset();\n\t\tfor (; this.index < html.length; this.index++) {\n\t\t\tthis.stateFn = this.stateFn(html[this.index]);\n\t\t}\n\t\tif (this.tempText && this.stateFn === this.parseText) {\n\t\t\tthis.stateFn('<');\n\t\t}\n\t\tif (this.stackTrace.length > 0) {\n\t\t\tconsole.error(this.stackTrace);\n\t\t\tthrow new Error(`error parsing html, had ${this.stackTrace.length} element, with no closing tag`);\n\t\t}\n\t\tlet stack = this.childStack;\n\t\tthis.reset();\n\t\treturn stack;\n\t}\n\n\tprivate reset() {\n\t\tthis.index = 0;\n\t\tthis.childStack = [];\n\t\tthis.stackTrace = [];\n\t\tthis.propType = 'attr';\n\t\tthis.commentOpenCount = 0;\n\t\tthis.commentCloseCount = 0;\n\t\tthis.stateFn = this.parseText;\n\t\tthis.propertyName = this.propertyValue = this.tempText = '';\n\t}\n\n\tprivate parseText(token: string) {\n\t\tif (token === '<') {\n\t\t\tif (this.tempText) {\n\t\t\t\tthis.tempText = this.escaper.unescape(this.tempText);\n\t\t\t\tthis.stackTrace.push(this.tempText);\n\t\t\t\tthis.popElement();\n\t\t\t\tthis.tempText = '';\n\t\t\t}\n\t\t\treturn this.parseTag;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseText;\n\t}\n\n\tprivate parseTag(token: string) {\n\t\tif (token === '/') {\n\t\t\treturn this.parseCloseTag;\n\t\t}\n\t\tif (token === '!') {\n\t\t\tthis.commentOpenCount = 0;\n\t\t\tthis.commentCloseCount = 0;\n\t\t\treturn this.parseComment;\n\t\t}\n\t\tthis.index--;\n\t\treturn this.parseOpenTag;\n\t}\n\n\tprivate parseComment(token: string) {\n\t\tif (token === '-') {\n\t\t\tif (this.commentOpenCount < 2) {\n\t\t\t\tthis.commentOpenCount++;\n\t\t\t} else {\n\t\t\t\tthis.commentCloseCount++;\n\t\t\t}\n\t\t\treturn this.parseComment;\n\t\t}\n\t\telse if (token === '>' && this.commentCloseCount === 2) {\n\t\t\tthis.tempText = this.escaper.unescape(this.tempText);\n\t\t\tthis.stackTrace.push(new CommentNode(this.tempText.trim()));\n\t\t\tthis.popElement();\n\t\t\tthis.tempText = '';\n\t\t\tthis.commentOpenCount = 0;\n\t\t\tthis.commentCloseCount = 0;\n\t\t\treturn this.parseText;\n\t\t}\n\t\tif (this.commentCloseCount > 0) {\n\t\t\tfor (let i = 0; i < this.commentCloseCount; i++) {\n\t\t\t\tthis.tempText += '-';\n\t\t\t}\n\t\t\tthis.commentCloseCount = 0;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseComment;\n\t}\n\n\tprivate parseCloseTag(token: string) {\n\t\tif (token === '>') {\n\t\t\tif (!isEmptyElement(this.currentNode.tagName)\n\t\t\t\t&& this.currentNode.tagName.trim().toLowerCase() !== this.tempText.trim().toLowerCase()\n\t\t\t) {\n\t\t\t\tthrow 'Wrong closed tag at char ' + this.index;\n\t\t\t}\n\t\t\tthis.popElement();\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseCloseTag;\n\t}\n\n\tprivate parseOpenTag(token: string) {\n\t\tif (token === '>') {\n\t\t\tthis.stackTrace.push(new DOMElementNode(this.tempText));\n\t\t\tif (isEmptyElement(this.tempText)) {\n\t\t\t\tthis.popElement();\n\t\t\t}\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\telse if (this.tagNameRegExp.test(token)) {\n\t\t\tthis.tempText += token;\n\t\t\treturn this.parseOpenTag;\n\t\t}\n\t\telse if (/\\s/.test(token)) {\n\t\t\tthis.stackTrace.push(new DOMElementNode(this.tempText));\n\t\t\tthis.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t}\n\n\tprivate parsePropertyName(token: string) {\n\t\tif (token === '>') {\n\t\t\tif (this.tempText.trim()) {\n\t\t\t\tthis.propertyName = this.tempText;\n\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\t}\n\t\t\tif (isEmptyElement(this.currentNode.tagName)) {\n\t\t\t\tthis.popElement();\n\t\t\t}\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parseText;\n\t\t}\n\t\telse if (token === '/') {\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\telse if (/\\[/.test(token)) {\n\t\t\tthis.propType = 'input';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\\(|@/.test(token)) {\n\t\t\tthis.propType = 'output';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/#/.test(token)) {\n\t\t\tthis.propType = 'ref-name';\n\t\t\treturn this.parseRefName;\n\t\t}\n\t\telse if (/=/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyName;\n\t\t} else if (/\"/.test(token)) {\n\t\t\treturn this.parsePropertyValue;\n\t\t} else if (/\\d/.test(token)) {\n\t\t\tthis.tempText += token;\n\t\t\treturn this.parsePropertyValue;\n\t\t}\n\t\telse if (/\\s/.test(token)) {\n\t\t\tif (this.tempText.trim()) {\n\t\t\t\tthis.propertyName = this.tempText;\n\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\t}\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parsePropertyName;\n\t}\n\n\n\n\tprivate parseRefName(token: string) {\n\t\tif (/=/.test(token)) {\n\t\t\treturn this.parseRefName;\n\t\t}\n\t\telse if (/\"/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyValue;\n\t\t} else if (/\\s/.test(token)) {\n\t\t\tthis.currentNode.setTemplateRefName(this.tempText, '');\n\t\t\tthis.propertyName = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t} else if (/>/.test(token)) {\n\t\t\tthis.currentNode.setTemplateRefName(this.tempText, '');\n\t\t\tthis.propertyName = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parseText;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseRefName;\n\t}\n\n\tprivate parseInputOutput(token: string) {\n\t\tif (/\\(/.test(token)) {\n\t\t\tthis.propType = 'two-way';\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\\)|\\]|=/.test(token)) {\n\t\t\treturn this.parseInputOutput;\n\t\t}\n\t\telse if (/\"/.test(token)) {\n\t\t\tthis.propertyName = this.tempText;\n\t\t\tthis.tempText = '';\n\t\t\treturn this.parsePropertyValue;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parseInputOutput;\n\t}\n\n\tprivate parsePropertyValue(token: string) {\n\t\tif (/\"/.test(token)) {\n\t\t\tthis.propertyValue = this.tempText;\n\t\t\tswitch (this.propType) {\n\t\t\t\tcase 'input':\n\t\t\t\t\tthis.currentNode.addInput(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'output':\n\t\t\t\t\tthis.currentNode.addOutput(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'two-way':\n\t\t\t\t\tthis.currentNode.addTwoWayBinding(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ref-name':\n\t\t\t\t\tthis.currentNode.setTemplateRefName(this.propertyName, this.propertyValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'attr':\n\t\t\t\tdefault:\n\t\t\t\t\tif (/^([-+]?\\d*\\.?\\d+)(?:[eE]([-+]?\\d+))?$/.test(this.propertyValue.trim())) {\n\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, +this.propertyValue.trim());\n\t\t\t\t\t} else if (/^(true|false)$/.test(this.propertyValue.trim().toLowerCase())) {\n\t\t\t\t\t\tif (this.propertyValue.trim().toLowerCase() === 'true') {\n\t\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.currentNode.addAttribute(this.propertyName, this.propertyValue);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.propertyName, this.propertyValue = this.tempText = '';\n\t\t\tthis.propType = 'attr';\n\t\t\treturn this.parsePropertyName;\n\t\t}\n\t\tthis.tempText += token;\n\t\treturn this.parsePropertyValue;\n\t}\n\n\n\tprivate popElement() {\n\t\tconst element = this.stackTrace.pop();\n\t\tif (element) {\n\t\t\tconst parent = this.stackTrace.pop();\n\t\t\tif (parent && parent instanceof DOMElementNode) {\n\t\t\t\tif (typeof element === 'string') {\n\t\t\t\t\tparent.addTextChild(element);\n\t\t\t\t} else if (element instanceof DOMElementNode) {\n\t\t\t\t\tparent.addChild(this.checkNode(element));\n\t\t\t\t} else {\n\t\t\t\t\tparent.addChild(element);\n\t\t\t\t}\n\t\t\t\tthis.stackTrace.push(parent);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (typeof element === 'string') {\n\t\t\t\t\tparseTextChild(element).forEach(text => this.childStack.push(text));\n\t\t\t\t} else if (element instanceof DOMElementNode) {\n\t\t\t\t\tthis.childStack.push(this.checkNode(element));\n\t\t\t\t} else {\n\t\t\t\t\tthis.childStack.push(element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckNode(node: DOMElementNode<any>): DOMElementNode<any> | DOMDirectiveNode<any> {\n\t\tif (node.attributes) {\n\t\t\tlet temp: ElementAttribute<string, any, any> | ElementAttribute<string, any, any>[] | undefined = node.attributes.find(attr => attr.name === 'is');\n\t\t\tif (temp) {\n\t\t\t\tnode.attributes.splice(node.attributes.indexOf(temp), 1);\n\t\t\t\tnode.is = temp.value as string;\n\t\t\t}\n\t\t\ttemp = node.attributes.filter(attr => {\n\t\t\t\treturn typeof attr.value === 'string' && (/\\{\\{(.+)\\}\\}/g).test(attr.value);\n\t\t\t});\n\t\t\tif (temp) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tnode.attributes.splice(node.attributes.indexOf(templateAttrs), 1);\n\t\t\t\t\tnode.addTemplateAttr(templateAttrs.name, templateAttrs.value as string);\n\t\t\t\t});\n\t\t\t}\n\t\t\ttemp = node.attributes.filter(attr => attr.name.startsWith('on'));\n\t\t\tif (temp) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tnode.attributes.splice(node.attributes.indexOf(templateAttrs), 1);\n\t\t\t\t\tnode.addOutput(templateAttrs.name.substring(2), templateAttrs.value as string);\n\t\t\t\t});\n\t\t\t}\n\t\t\ttemp = node.attributes.find(attr => attr.name?.startsWith('*'));\n\t\t\tif (temp) {\n\t\t\t\tnode.attributes.splice(node.attributes.indexOf(temp), 1);\n\t\t\t\tconst directive = new DOMDirectiveNode(temp.name, temp.value as string);\n\t\t\t\tdirective.addChild(node);\n\t\t\t\treturn directive;\n\t\t\t}\n\t\t\tif (NodeFactory.StructuralDirectives.includes(node.tagName)) {\n\t\t\t\t// try to find expression attribute\n\t\t\t\t// <if expression=\"a === b\">child text <div>...</div></if>\n\t\t\t\ttemp = node.attributes.find(attr => attr.name === 'expression');\n\t\t\t\tif (temp) {\n\t\t\t\t\tconst directive = new DOMDirectiveNode('*' + node.tagName, temp.value as string);\n\t\t\t\t\tdirective.children = node.children;\n\t\t\t\t\treturn directive;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n}\n\nexport class HTMLParser {\n\n\tnodeParser = new NodeParser();\n\n\tparse(html: string): DOMChild<any>[] {\n\t\treturn this.nodeParser.parse(html);\n\t}\n\n\ttoDomRootNode(html: string): DOMNode<any> {\n\t\tlet stack = this.nodeParser.parse(html);\n\t\tif (!stack || stack.length === 0) {\n\t\t\treturn new DOMFragmentNode([new TextContent('')]);\n\t\t} else if (stack?.length === 1) {\n\t\t\treturn stack[0];\n\t\t} else {\n\t\t\treturn new DOMFragmentNode(stack);\n\t\t}\n\t}\n\n\tstringify(stack: DOMNode<any>[]) {\n\t\tlet html = '';\n\t\tstack?.forEach(node => {\n\t\t\tif (node instanceof TextContent) {\n\t\t\t\thtml += node.value;\n\t\t\t} else if (node instanceof LiveTextContent) {\n\t\t\t\thtml += `{{${node.value}}}`;\n\t\t\t} else if (node instanceof CommentNode) {\n\t\t\t\thtml += `<!-- ${node.comment} -->`;\n\t\t\t} else if (node instanceof DOMElementNode) {\n\t\t\t\tlet attrs = '';\n\t\t\t\tif (node.attributes) {\n\t\t\t\t\tattrs += node.attributes.map(attr => `${attr.name}=\"${attr.value}\"`).join(' ') + ' ';\n\t\t\t\t}\n\t\t\t\tif (node.twoWayBinding) {\n\t\t\t\t\tattrs += node.twoWayBinding.map(attr => `[(${attr.name})]=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.inputs) {\n\t\t\t\t\tattrs += node.inputs.map(attr => `[${attr.name}]=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.outputs) {\n\t\t\t\t\tattrs += node.outputs.map(attr => `(${attr.name})=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (node.templateAttrs) {\n\t\t\t\t\tattrs += node.templateAttrs.map(attr => `${attr.name}=\"${attr.value}\"`).join(' ').concat(' ');\n\t\t\t\t}\n\t\t\t\tif (isEmptyElement(node.tagName)) {\n\t\t\t\t\tif (attrs) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}/>`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thtml += `<${node.tagName} />`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet children = this.stringify(node.children);\n\t\t\t\t\tif (attrs && children) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}>${children}</${node.tagName}>`;\n\t\t\t\t\t}\n\t\t\t\t\telse if (attrs) {\n\t\t\t\t\t\thtml += `<${node.tagName} ${attrs}></${node.tagName}>`;\n\t\t\t\t\t} else if (children) {\n\t\t\t\t\t\thtml += `<${node.tagName}>${children}<</${node.tagName}>`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thtml += `<${node.tagName}></${node.tagName}>`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn html;\n\t}\n\n}\n\nexport const htmlParser = new HTMLParser();\n\n"]}
|
package/package.json
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibyar/elements",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Aurora element, hold info about HTMLElements class, attributes and tag name",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"homepage": "https://github.com/ibyar/aurora",
|
|
6
|
+
"homepage": "https://github.com/ibyar/aurora/tree/dev/packages/elements",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/ibyar/aurora.git",
|
|
10
|
+
"directory": "packages/elements"
|
|
11
|
+
},
|
|
7
12
|
"main": "./index.js",
|
|
8
13
|
"module": "./index.js",
|
|
9
14
|
"types": "./index.d.ts",
|
|
10
15
|
"type": "module",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": "./index.js"
|
|
18
|
+
},
|
|
11
19
|
"files": [
|
|
12
20
|
"*"
|
|
13
21
|
],
|
|
@@ -15,7 +23,7 @@
|
|
|
15
23
|
"access": "public"
|
|
16
24
|
},
|
|
17
25
|
"devDependencies": {
|
|
18
|
-
"typescript": "^4.4.
|
|
26
|
+
"typescript": "^4.4.4"
|
|
19
27
|
},
|
|
20
28
|
"scripts": {
|
|
21
29
|
"build": "tsc --build --verbose"
|
|
@@ -26,5 +34,5 @@
|
|
|
26
34
|
"elements-info",
|
|
27
35
|
"typescript"
|
|
28
36
|
],
|
|
29
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "a7a6c5d8904e08388e67a648248738dc418457e5"
|
|
30
38
|
}
|