@ibyar/elements 1.0.0 → 1.2.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/ast/dom.js CHANGED
@@ -37,7 +37,7 @@ export function createLiveAttribute(name, value) {
37
37
  /**
38
38
  * a normal text
39
39
  */
40
- class TextContent extends Attribute {
40
+ export class TextContent extends Attribute {
41
41
  static propName = 'textContent';
42
42
  constructor(text) {
43
43
  super(TextContent.propName, text);
@@ -46,7 +46,6 @@ class TextContent extends Attribute {
46
46
  return Object.assign({}, this, { type: 'TextContent' });
47
47
  }
48
48
  }
49
- export { TextContent };
50
49
  /**
51
50
  * a text that its content is binding to variable from the component model.
52
51
  */
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\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'Attribute' });\n\t}\n}\n\nexport class ElementAttribute<N, V> extends Attribute<N, V> {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'ElementAttribute' });\n\t}\n}\n\n/**\n * an attribute with its source value for binding\n */\nexport class LiveAttribute extends Attribute<string, string> {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'LiveAttribute' });\n\t}\n}\n\n/**\n * \n * @param name \n * @param value \n * @returns LiveAttribute\n */\nexport function createLiveAttribute(name: string, value: string) {\n\treturn new LiveAttribute(name, value);\n}\n\n/**\n * a normal text\n */\nexport class TextContent extends Attribute<'textContent', string> {\n\tstatic propName: 'textContent' = 'textContent';\n\tconstructor(text: string) {\n\t\tsuper(TextContent.propName, text);\n\t}\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'TextContent' });\n\t}\n}\n\n/**\n * a text that its content is binding to variable from the component model.\n */\nexport class LiveTextContent extends TextContent {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'LiveTextContent' });\n\t}\n}\n\nexport function isLiveTextContent(text: object): text is LiveTextContent {\n\treturn text instanceof LiveTextContent;\n}\n\n/**\n * to comment in dom\n */\nexport class CommentNode {\n\tconstructor(public comment: string) { }\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'CommentNode' });\n\t}\n}\n\n\nexport class BaseNode {\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>[];\n\n\t/**\n\t * hold the attrs/inputs name marked as one way binding\n\t */\n\tinputs?: LiveAttribute[];\n\n\t/**\n\t * hold the name of events that should be connected to a listener\n\t */\n\toutputs?: ElementAttribute<string, string>[];\n\n\t/**\n\t * hold the name of attributes marked for 2 way data binding\n\t */\n\ttwoWayBinding?: LiveAttribute[];\n\n\t/**\n\t * directive attribute\n\t */\n\ttemplateAttrs?: LiveAttribute[];\n\n\t/**\n\t * attributes directive\n\t */\n\tattributeDirectives?: DomAttributeDirectiveNode[];\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(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.inputs = [new LiveAttribute(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(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.outputs = [new LiveAttribute(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(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.twoWayBinding = [new LiveAttribute(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(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.templateAttrs = [new LiveAttribute(attrName, valueSource)];\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'BaseNode' });\n\t}\n\n}\n\nexport class DomAttributeDirectiveNode extends BaseNode {\n\n\t/**\n\t * name of the directive \n\t */\n\tname: string;\n\n\n\t/**\n\t * set to `undefined` stop, loop\n\t */\n\tdeclare attributeDirectives: undefined;\n\n\tconstructor(name: string) {\n\t\tsuper();\n\t\tthis.name = name;\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomAttributeDirectiveNode' });\n\t}\n}\n\nexport class DomParentNode extends BaseNode {\n\t/**\n\t * element children list\n\t */\n\tchildren?: DomChild[];\n\n\taddChild(child: DomChild) {\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\tconst children = (this.children ??= []);\n\t\tparseTextChild(text).forEach(childText => children.push(childText));\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomParentNode' });\n\t}\n}\n\n/**\n * parent for a list of elements \n */\nexport class DomFragmentNode extends DomParentNode {\n\tconstructor(children?: DomChild[]) {\n\t\tsuper();\n\t\tif (children) {\n\t\t\tthis.children = children;\n\t\t}\n\t}\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomFragmentNode' });\n\t}\n}\nexport class DomElementNode extends DomParentNode {\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\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomElementNode' });\n\t}\n}\n\n/**\n * structural directive \n */\nexport class DomStructuralDirectiveNode extends BaseNode {\n\n\t/**\n\t * name of the directive \n\t */\n\tname: string;\n\n\t/**\n\t * value of the directive \n\t */\n\tvalue?: string;\n\n\t/**\n\t * the value of the template node, that this directive going to host-on \n\t */\n\tnode: DomNode;\n\n\tconstructor(name: string, node: DomNode, value?: string) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.node = node;\n\t\tthis.value = value;\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomStructuralDirectiveNode' });\n\t}\n}\n\nexport function isDOMDirectiveNode(node: object): node is DomStructuralDirectiveNode {\n\treturn node instanceof DomStructuralDirectiveNode;\n}\nexport type DomChild = DomElementNode | DomStructuralDirectiveNode | CommentNode | TextContent | LiveTextContent;\n\nexport type DomNode = DomFragmentNode | DomElementNode | DomStructuralDirectiveNode | CommentNode | TextContent | LiveTextContent;\n\nexport type DomRenderNode<T> = (model: T) => DomNode;\n\nexport function parseTextChild(text: string): Array<TextContent | LiveTextContent> {\n\t// split from end with '}}', then search for the first '{{'\n\tlet all: (TextContent | LiveTextContent)[] = [];\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\tconst liveText = new LiveTextContent(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\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'Attribute' });\n\t}\n}\n\nexport class ElementAttribute<N, V> extends Attribute<N, V> {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'ElementAttribute' });\n\t}\n}\n\n/**\n * an attribute with its source value for binding\n */\nexport class LiveAttribute extends Attribute<string, string> {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'LiveAttribute' });\n\t}\n}\n\n/**\n * \n * @param name \n * @param value \n * @returns LiveAttribute\n */\nexport function createLiveAttribute(name: string, value: string) {\n\treturn new LiveAttribute(name, value);\n}\n\n/**\n * a normal text\n */\nexport class TextContent extends Attribute<'textContent', string> {\n\tstatic propName: 'textContent' = 'textContent';\n\tconstructor(text: string) {\n\t\tsuper(TextContent.propName, text);\n\t}\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'TextContent' });\n\t}\n}\n\n/**\n * a text that its content is binding to variable from the component model.\n */\nexport class LiveTextContent extends TextContent {\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'LiveTextContent' });\n\t}\n}\n\nexport function isLiveTextContent(text: object): text is LiveTextContent {\n\treturn text instanceof LiveTextContent;\n}\n\n/**\n * to comment in dom\n */\nexport class CommentNode {\n\tconstructor(public comment: string) { }\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'CommentNode' });\n\t}\n}\n\n\nexport class BaseNode {\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>[];\n\n\t/**\n\t * hold the attrs/inputs name marked as one way binding\n\t */\n\tinputs?: LiveAttribute[];\n\n\t/**\n\t * hold the name of events that should be connected to a listener\n\t */\n\toutputs?: ElementAttribute<string, string>[];\n\n\t/**\n\t * hold the name of attributes marked for 2 way data binding\n\t */\n\ttwoWayBinding?: LiveAttribute[];\n\n\t/**\n\t * directive attribute\n\t */\n\ttemplateAttrs?: LiveAttribute[];\n\n\t/**\n\t * attributes directive\n\t */\n\tattributeDirectives?: DomAttributeDirectiveNode[];\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(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.inputs = [new LiveAttribute(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(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.outputs = [new LiveAttribute(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(eventName, handlerSource));\n\t\t} else {\n\t\t\tthis.twoWayBinding = [new LiveAttribute(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(attrName, valueSource));\n\t\t} else {\n\t\t\tthis.templateAttrs = [new LiveAttribute(attrName, valueSource)];\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'BaseNode' });\n\t}\n\n}\n\nexport class DomAttributeDirectiveNode extends BaseNode {\n\n\t/**\n\t * name of the directive \n\t */\n\tname: string;\n\n\n\t/**\n\t * set to `undefined` stop, loop\n\t */\n\tdeclare attributeDirectives: undefined;\n\n\tconstructor(name: string) {\n\t\tsuper();\n\t\tthis.name = name;\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomAttributeDirectiveNode' });\n\t}\n}\n\nexport class DomParentNode extends BaseNode {\n\t/**\n\t * element children list\n\t */\n\tchildren?: DomChild[];\n\n\taddChild(child: DomChild) {\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\tconst children = (this.children ??= []);\n\t\tparseTextChild(text).forEach(childText => children.push(childText));\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomParentNode' });\n\t}\n}\n\n/**\n * parent for a list of elements \n */\nexport class DomFragmentNode extends DomParentNode {\n\tconstructor(children?: DomChild[]) {\n\t\tsuper();\n\t\tif (children) {\n\t\t\tthis.children = children;\n\t\t}\n\t}\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomFragmentNode' });\n\t}\n}\nexport class DomElementNode extends DomParentNode {\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\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomElementNode' });\n\t}\n}\n\n/**\n * structural directive \n */\nexport class DomStructuralDirectiveNode extends BaseNode {\n\n\t/**\n\t * name of the directive \n\t */\n\tname: string;\n\n\t/**\n\t * value of the directive \n\t */\n\tvalue?: string;\n\n\t/**\n\t * the value of the template node, that this directive going to host-on \n\t */\n\tnode: DomNode;\n\n\tconstructor(name: string, node: DomNode, value?: string) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.node = node;\n\t\tthis.value = value;\n\t}\n\n\ttoJSON() {\n\t\treturn Object.assign({}, this, { type: 'DomStructuralDirectiveNode' });\n\t}\n}\n\nexport function isDOMDirectiveNode(node: object): node is DomStructuralDirectiveNode {\n\treturn node instanceof DomStructuralDirectiveNode;\n}\nexport type DomChild = DomElementNode | DomStructuralDirectiveNode | CommentNode | TextContent | LiveTextContent;\n\nexport type DomNode = DomFragmentNode | DomElementNode | DomStructuralDirectiveNode | CommentNode | TextContent | LiveTextContent;\n\nexport type DomRenderNode<T> = (model: T) => DomNode;\n\nexport function parseTextChild(text: string): Array<TextContent | LiveTextContent> {\n\t// split from end with '}}', then search for the first '{{'\n\tlet all: (TextContent | LiveTextContent)[] = [];\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\tconst liveText = new LiveTextContent(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/ast/factory.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DomElementNode, DomStructuralDirectiveNode, DomFragmentNode, parseTextChild, DomAttributeDirectiveNode } from './dom.js';
2
2
  import { directiveRegistry } from '../directives/register-directive.js';
3
- class NodeFactory {
3
+ export class NodeFactory {
4
4
  static Fragment = 'fragment';
5
5
  static CommentTag = 'comment';
6
6
  static DirectiveTag = 'directive';
@@ -191,5 +191,4 @@ class NodeFactory {
191
191
  }
192
192
  }
193
193
  }
194
- export { NodeFactory };
195
194
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/elements/ast/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tDomElementNode, DomStructuralDirectiveNode, DomChild,\n\tBaseNode, DomFragmentNode, parseTextChild, DomNode,\n\tDomAttributeDirectiveNode\n} from './dom.js';\nimport { directiveRegistry } from '../directives/register-directive.js';\n\nexport interface NodeAttr {\n\t[attr: string]: string;\n}\n\nexport class NodeFactory {\n\n\tstatic Fragment = 'fragment';\n\n\tstatic CommentTag = 'comment';\n\n\tstatic DirectiveTag = 'directive';\n\n\tstatic createElement(tagName: string, attrs?: NodeAttr, ...children: (string | DomChild)[]): DomNode {\n\n\t\tif (NodeFactory.Fragment === tagName.toLowerCase()) {\n\t\t\treturn NodeFactory.createFragmentNode(...children);\n\t\t}\n\t\t/**\n\t\t * structural directive -- jsx support\n\t\t * \n\t\t * <if condition=\"element.show\"> {'{{element.name}}'} </if>\n\t\t * <div _if=\"element.show\">{'{{element.name}}'} </div>\n\t\t */\n\t\tif (directiveRegistry.has(tagName)) {\n\t\t\treturn NodeFactory.createStructuralDirectiveNode(tagName, '', attrs, ...children);\n\t\t}\n\t\t/**\n\t\t * <directive *if=\"element.show\" >{'{{element.name}}'}</directive>\n\t\t */\n\t\tif (NodeFactory.DirectiveTag === tagName.toLocaleLowerCase() && attrs) {\n\t\t\tif (attrs) {\n\t\t\t\tlet directiveName = Object.keys(attrs).find(attrName => attrName.startsWith('*'));\n\t\t\t\tlet directiveValue: string;\n\n\t\t\t\tif (directiveName) {\n\t\t\t\t\t// is directive\n\t\t\t\t\tdirectiveValue = attrs[directiveName];\n\t\t\t\t\tdelete attrs.directiveName;\n\t\t\t\t\treturn NodeFactory.createStructuralDirectiveNode(directiveName, directiveValue, attrs, ...children);\n\t\t\t\t}\n\t\t\t\tlet node = new DomElementNode(tagName, attrs?.is);\n\t\t\t\tNodeFactory.initElementAttrs(node, attrs);\n\t\t\t\tchildren?.forEach(child => {\n\t\t\t\t\tif (typeof child === 'string') {\n\t\t\t\t\t\tnode.addTextChild(child)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.addChild(child);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn node;\n\t\t\t} else {\n\t\t\t\t// return new CommentNode('empty directive');\n\t\t\t\treturn NodeFactory.createFragmentNode(...children);\n\t\t\t}\n\t\t}\n\t\t// let node: ElementNode | DirectiveNode = new ElementNode(tagName, attrs?.is);\n\t\tif (attrs) {\n\t\t\tlet node = NodeFactory.createElementNode(tagName, attrs, ...children);\n\t\t\tconst attrKeys = Object.keys(attrs);\n\t\t\tlet directiveName = attrKeys.find(attrName => attrName.startsWith('*'));\n\t\t\tif (directiveName) {\n\t\t\t\tlet directiveValue = attrs[directiveName];\n\t\t\t\treturn NodeFactory.createStructuralDirectiveNode(directiveName, directiveValue, attrs, node);\n\t\t\t}\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn NodeFactory.createElementNode(tagName, attrs, ...children);\n\t\t}\n\t}\n\n\tstatic createElementNode(tagName: string, attrs?: NodeAttr, ...children: (string | DomChild)[]) {\n\t\tlet node = new DomElementNode(tagName, attrs?.is);\n\t\tNodeFactory.initElementAttrs(node, attrs);\n\t\tchildren?.forEach(child => {\n\t\t\tif (typeof child === 'string') {\n\t\t\t\tnode.addTextChild(child)\n\t\t\t} else {\n\t\t\t\tnode.addChild(child);\n\t\t\t}\n\t\t});\n\t\treturn node;\n\t}\n\n\tstatic createFragmentNode(...children: (string | DomChild)[]) {\n\t\tlet childStack = children.flatMap(child => {\n\t\t\tif (typeof child === 'string') {\n\t\t\t\treturn parseTextChild(child);\n\t\t\t} else {\n\t\t\t\treturn [child];\n\t\t\t}\n\t\t});\n\t\treturn new DomFragmentNode(childStack);\n\t}\n\n\tstatic createStructuralDirectiveNode(directiveName: string, directiveValue: string, attrs?: NodeAttr, ...children: (string | DomChild)[]) {\n\t\tconst fragment = new DomFragmentNode();\n\t\tchildren?.forEach(child => (typeof child === 'string') ? fragment.addTextChild(child) : fragment.addChild(child));\n\t\t!directiveName.startsWith('*') && (directiveName = '*' + directiveName);\n\t\tconst directive = new DomStructuralDirectiveNode(directiveName, fragment, directiveValue);\n\t\tattrs && Object.keys(attrs).forEach(attr => directive.addAttribute(attr, attrs[attr]));\n\t\treturn directive;\n\t}\n\n\tstatic createAttributeDirectiveNode(directiveName: string, attrs?: NodeAttr) {\n\t\tconst directive = new DomAttributeDirectiveNode(directiveName);\n\t\tattrs && Object.keys(attrs).forEach(attr => directive.addAttribute(attr, attrs[attr]));\n\t\treturn directive;\n\t}\n\n\tstatic initElementAttrs(element: BaseNode, attrs?: NodeAttr) {\n\t\tif (attrs) {\n\t\t\tObject.keys(attrs).forEach(key => {\n\t\t\t\tNodeFactory.handelAttribute(element, key, attrs[key]);\n\t\t\t});\n\n\t\t\tconst directives: DomAttributeDirectiveNode[] = [];\n\t\t\tObject.keys(attrs).forEach(attributeName => {\n\t\t\t\tif (directiveRegistry.has(attributeName)) {\n\t\t\t\t\tReflect.deleteProperty(attrs, attributeName);\n\t\t\t\t\tconst directive = new DomAttributeDirectiveNode(attributeName);\n\t\t\t\t\tconst directiveInfo = directiveRegistry.get(attributeName)!;\n\t\t\t\t\tObject.keys(attrs).forEach(attr => {\n\t\t\t\t\t\tif (directiveInfo.hasAttribute(attr)) {\n\t\t\t\t\t\t\tdirective.addAttribute(attr, attrs[attr]);\n\t\t\t\t\t\t\tReflect.deleteProperty(attrs, attr);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tdirectives.push(directive);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (directives.length) {\n\t\t\t\telement.attributeDirectives = directives;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic handelAttribute(element: BaseNode, attrName: string, value: string | Function | object): void {\n\n\t\tif (attrName.startsWith('#') && element instanceof DomElementNode) {\n\t\t\t// <app-tag #element-name=\"directiveName?\" ></app-tag>\n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.setTemplateRefName(attrName, value as string);\n\t\t}\n\t\telse if (attrName === 'is' && element instanceof DomElementNode) {\n\t\t\telement.is = value as string;\n\t\t\treturn;\n\t\t}\n\t\telse if (attrName.startsWith('[(')) {\n\t\t\t// [(attr)]=\"modelProperty\"\n\t\t\tattrName = attrName.substring(2, attrName.length - 2);\n\t\t\telement.addTwoWayBinding(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'string' && value.startsWith('$')) {\n\t\t\t// $attr=\"$viewProperty\" \n\t\t\tattrName = attrName.substring(1);\n\t\t\tvalue = value.substring(1);\n\t\t\telement.addTwoWayBinding(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('[')) {\n\t\t\t// [attr]=\"modelProperty\"\n\t\t\tattrName = attrName.substring(1, attrName.length - 1);\n\t\t\telement.addInput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'string') {\n\t\t\t// $attr=\"viewProperty\" \n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.addInput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'object') {\n\t\t\t// $attr={viewProperty} // as an object\n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.addAttribute(attrName, value);\n\t\t}\n\t\telse if (typeof value === 'string' && value.startsWith('$')) {\n\t\t\t// bad practice\n\t\t\t// attr=\"$viewProperty\" // as an object\n\n\t\t\t// value = value.substring(1);\n\t\t\t// element.addAttribute(attrName, value);\n\t\t\treturn;\n\t\t}\n\t\telse if (typeof value === 'string' && (/^\\{\\{(.+\\w*)*\\}\\}/g).test(value)) {\n\t\t\t// attr=\"{{viewProperty}}\" // just pass data\n\t\t\tvalue = value.substring(2, value.length - 2);\n\t\t\telement.addInput(attrName, value);\n\t\t}\n\t\telse if (typeof value === 'string' && (/\\{\\{(.+)\\}\\}/g).test(value)) {\n\t\t\t// attr=\"any string{{viewProperty}}any text\" // just pass data\n\t\t\telement.addTemplateAttr(attrName, value);\n\t\t}\n\t\telse if (attrName.startsWith('(')) {\n\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\tattrName = attrName.substring(1, attrName.length - 1);\n\t\t\telement.addOutput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('on')) {\n\t\t\t// onAttr=\"modelProperty()\"\n\t\t\t// onAttr={modelProperty} // as an function\n\t\t\telement.addOutput(attrName.substring(2), value as string);\n\t\t}\n\t\telse {\n\t\t\telement.addAttribute(attrName, value);\n\t\t}\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/elements/ast/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tDomElementNode, DomStructuralDirectiveNode, DomChild,\n\tBaseNode, DomFragmentNode, parseTextChild, DomNode,\n\tDomAttributeDirectiveNode\n} from './dom.js';\nimport { directiveRegistry } from '../directives/register-directive.js';\n\nexport interface NodeAttr {\n\t[attr: string]: string;\n}\n\nexport class NodeFactory {\n\n\tstatic Fragment = 'fragment';\n\n\tstatic CommentTag = 'comment';\n\n\tstatic DirectiveTag = 'directive';\n\n\tstatic createElement(tagName: string, attrs?: NodeAttr, ...children: (string | DomChild)[]): DomNode {\n\n\t\tif (NodeFactory.Fragment === tagName.toLowerCase()) {\n\t\t\treturn NodeFactory.createFragmentNode(...children);\n\t\t}\n\t\t/**\n\t\t * structural directive -- jsx support\n\t\t * \n\t\t * <if condition=\"element.show\"> {'{{element.name}}'} </if>\n\t\t * <div _if=\"element.show\">{'{{element.name}}'} </div>\n\t\t */\n\t\tif (directiveRegistry.has(tagName)) {\n\t\t\treturn NodeFactory.createStructuralDirectiveNode(tagName, '', attrs, ...children);\n\t\t}\n\t\t/**\n\t\t * <directive *if=\"element.show\" >{'{{element.name}}'}</directive>\n\t\t */\n\t\tif (NodeFactory.DirectiveTag === tagName.toLocaleLowerCase() && attrs) {\n\t\t\tif (attrs) {\n\t\t\t\tlet directiveName = Object.keys(attrs).find(attrName => attrName.startsWith('*'));\n\t\t\t\tlet directiveValue: string;\n\n\t\t\t\tif (directiveName) {\n\t\t\t\t\t// is directive\n\t\t\t\t\tdirectiveValue = attrs[directiveName];\n\t\t\t\t\tdelete attrs.directiveName;\n\t\t\t\t\treturn NodeFactory.createStructuralDirectiveNode(directiveName, directiveValue, attrs, ...children);\n\t\t\t\t}\n\t\t\t\tlet node = new DomElementNode(tagName, attrs?.is);\n\t\t\t\tNodeFactory.initElementAttrs(node, attrs);\n\t\t\t\tchildren?.forEach(child => {\n\t\t\t\t\tif (typeof child === 'string') {\n\t\t\t\t\t\tnode.addTextChild(child)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.addChild(child);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn node;\n\t\t\t} else {\n\t\t\t\t// return new CommentNode('empty directive');\n\t\t\t\treturn NodeFactory.createFragmentNode(...children);\n\t\t\t}\n\t\t}\n\t\t// let node: ElementNode | DirectiveNode = new ElementNode(tagName, attrs?.is);\n\t\tif (attrs) {\n\t\t\tlet node = NodeFactory.createElementNode(tagName, attrs, ...children);\n\t\t\tconst attrKeys = Object.keys(attrs);\n\t\t\tlet directiveName = attrKeys.find(attrName => attrName.startsWith('*'));\n\t\t\tif (directiveName) {\n\t\t\t\tlet directiveValue = attrs[directiveName];\n\t\t\t\treturn NodeFactory.createStructuralDirectiveNode(directiveName, directiveValue, attrs, node);\n\t\t\t}\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn NodeFactory.createElementNode(tagName, attrs, ...children);\n\t\t}\n\t}\n\n\tstatic createElementNode(tagName: string, attrs?: NodeAttr, ...children: (string | DomChild)[]) {\n\t\tlet node = new DomElementNode(tagName, attrs?.is);\n\t\tNodeFactory.initElementAttrs(node, attrs);\n\t\tchildren?.forEach(child => {\n\t\t\tif (typeof child === 'string') {\n\t\t\t\tnode.addTextChild(child)\n\t\t\t} else {\n\t\t\t\tnode.addChild(child);\n\t\t\t}\n\t\t});\n\t\treturn node;\n\t}\n\n\tstatic createFragmentNode(...children: (string | DomChild)[]) {\n\t\tlet childStack = children.flatMap(child => {\n\t\t\tif (typeof child === 'string') {\n\t\t\t\treturn parseTextChild(child);\n\t\t\t} else {\n\t\t\t\treturn [child];\n\t\t\t}\n\t\t});\n\t\treturn new DomFragmentNode(childStack);\n\t}\n\n\tstatic createStructuralDirectiveNode(directiveName: string, directiveValue: string, attrs?: NodeAttr, ...children: (string | DomChild)[]) {\n\t\tconst fragment = new DomFragmentNode();\n\t\tchildren?.forEach(child => (typeof child === 'string') ? fragment.addTextChild(child) : fragment.addChild(child));\n\t\t!directiveName.startsWith('*') && (directiveName = '*' + directiveName);\n\t\tconst directive = new DomStructuralDirectiveNode(directiveName, fragment, directiveValue);\n\t\tattrs && Object.keys(attrs).forEach(attr => directive.addAttribute(attr, attrs[attr]));\n\t\treturn directive;\n\t}\n\n\tstatic createAttributeDirectiveNode(directiveName: string, attrs?: NodeAttr) {\n\t\tconst directive = new DomAttributeDirectiveNode(directiveName);\n\t\tattrs && Object.keys(attrs).forEach(attr => directive.addAttribute(attr, attrs[attr]));\n\t\treturn directive;\n\t}\n\n\tstatic initElementAttrs(element: BaseNode, attrs?: NodeAttr) {\n\t\tif (attrs) {\n\t\t\tObject.keys(attrs).forEach(key => {\n\t\t\t\tNodeFactory.handelAttribute(element, key, attrs[key]);\n\t\t\t});\n\n\t\t\tconst directives: DomAttributeDirectiveNode[] = [];\n\t\t\tObject.keys(attrs).forEach(attributeName => {\n\t\t\t\tif (directiveRegistry.has(attributeName)) {\n\t\t\t\t\tReflect.deleteProperty(attrs, attributeName);\n\t\t\t\t\tconst directive = new DomAttributeDirectiveNode(attributeName);\n\t\t\t\t\tconst directiveInfo = directiveRegistry.get(attributeName)!;\n\t\t\t\t\tObject.keys(attrs).forEach(attr => {\n\t\t\t\t\t\tif (directiveInfo.hasAttribute(attr)) {\n\t\t\t\t\t\t\tdirective.addAttribute(attr, attrs[attr]);\n\t\t\t\t\t\t\tReflect.deleteProperty(attrs, attr);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tdirectives.push(directive);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (directives.length) {\n\t\t\t\telement.attributeDirectives = directives;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic handelAttribute(element: BaseNode, attrName: string, value: string | Function | object): void {\n\n\t\tif (attrName.startsWith('#') && element instanceof DomElementNode) {\n\t\t\t// <app-tag #element-name=\"directiveName?\" ></app-tag>\n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.setTemplateRefName(attrName, value as string);\n\t\t}\n\t\telse if (attrName === 'is' && element instanceof DomElementNode) {\n\t\t\telement.is = value as string;\n\t\t\treturn;\n\t\t}\n\t\telse if (attrName.startsWith('[(')) {\n\t\t\t// [(attr)]=\"modelProperty\"\n\t\t\tattrName = attrName.substring(2, attrName.length - 2);\n\t\t\telement.addTwoWayBinding(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'string' && value.startsWith('$')) {\n\t\t\t// $attr=\"$viewProperty\" \n\t\t\tattrName = attrName.substring(1);\n\t\t\tvalue = value.substring(1);\n\t\t\telement.addTwoWayBinding(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('[')) {\n\t\t\t// [attr]=\"modelProperty\"\n\t\t\tattrName = attrName.substring(1, attrName.length - 1);\n\t\t\telement.addInput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'string') {\n\t\t\t// $attr=\"viewProperty\" \n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.addInput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('$') && typeof value === 'object') {\n\t\t\t// $attr={viewProperty} // as an object\n\t\t\tattrName = attrName.substring(1);\n\t\t\telement.addAttribute(attrName, value);\n\t\t}\n\t\telse if (typeof value === 'string' && value.startsWith('$')) {\n\t\t\t// bad practice\n\t\t\t// attr=\"$viewProperty\" // as an object\n\n\t\t\t// value = value.substring(1);\n\t\t\t// element.addAttribute(attrName, value);\n\t\t\treturn;\n\t\t}\n\t\telse if (typeof value === 'string' && (/^\\{\\{(.+\\w*)*\\}\\}/g).test(value)) {\n\t\t\t// attr=\"{{viewProperty}}\" // just pass data\n\t\t\tvalue = value.substring(2, value.length - 2);\n\t\t\telement.addInput(attrName, value);\n\t\t}\n\t\telse if (typeof value === 'string' && (/\\{\\{(.+)\\}\\}/g).test(value)) {\n\t\t\t// attr=\"any string{{viewProperty}}any text\" // just pass data\n\t\t\telement.addTemplateAttr(attrName, value);\n\t\t}\n\t\telse if (attrName.startsWith('(')) {\n\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\tattrName = attrName.substring(1, attrName.length - 1);\n\t\t\telement.addOutput(attrName, value as string);\n\t\t}\n\t\telse if (attrName.startsWith('on')) {\n\t\t\t// onAttr=\"modelProperty()\"\n\t\t\t// onAttr={modelProperty} // as an function\n\t\t\telement.addOutput(attrName.substring(2), value as string);\n\t\t}\n\t\telse {\n\t\t\telement.addAttribute(attrName, value);\n\t\t}\n\t}\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/elements/attributes/attributes.ts"],"names":[],"mappings":"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","sourcesContent":["export interface AttrRef {\n\treadonly [attr: string]: string[];\n}\n\n/**\n * @see https://html.spec.whatwg.org/multipage/indices.html#elements-3\n */\nexport const GlobalAttributes = [\n\t'class',\n\t'id',\n\t'slot',\n\t'accesskey',\n\t'autocapitalize',\n\t'autofocus',\n\t'contenteditable',\n\t'dir',\n\t'draggable',\n\t'enterkeyhint',\n\t'hidden',\n\t'inputmode',\n\t'is',\n\t'itemid',\n\t'itemprop',\n\t'itemref',\n\t'itemscope',\n\t'itemtype',\n\t'lang',\n\t'nonce',\n\t'spellcheck',\n\t'style',\n\t'tabindex',\n\t'title',\n\t'translate'\n];\n\nexport const Attrs: AttrRef = {\n\ta: [...GlobalAttributes, 'href', 'target', 'download', 'ping', 'rel', 'hreflang', 'type', 'referrerpolicy'],\n\tabbr: GlobalAttributes,\n\taddress: GlobalAttributes,\n\tarea: [...GlobalAttributes, 'alt', 'coords', 'shape', 'href', 'target', 'download', 'ping', 'rel', 'referrerpolicy'],\n\tarticle: GlobalAttributes,\n\taside: GlobalAttributes,\n\taudio: [...GlobalAttributes, 'src', 'crossorigin', 'preload', 'autoplay', 'loop', 'muted', 'controls'],\n\tb: GlobalAttributes,\n\tbase: [...GlobalAttributes, 'href', 'targetreferrerpolicy'],\n\tbdi: GlobalAttributes,\n\tbdo: GlobalAttributes,\n\tblockquote: [...GlobalAttributes, 'cite'],\n\tbody: [...GlobalAttributes, 'onafterprint; onbeforeprint; onbeforeunload; onhashchange; onlanguagechange; onmessage; onmessageerror; onoffline; ononline; onpagehide; onpageshow; onpopstate; onrejectionhandled; onstorage; onunhandledrejection; onunload'],\n\tbr: GlobalAttributes,\n\tbutton: [...GlobalAttributes, 'disabled', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'name', 'type', 'value'],\n\tcanvas: [...GlobalAttributes, 'width', 'height'],\n\tcaption: GlobalAttributes,\n\tcite: GlobalAttributes,\n\tcode: GlobalAttributes,\n\tcol: [...GlobalAttributes, 'span'],\n\tcolgroup: [...GlobalAttributes, 'span'],\n\tdata: [...GlobalAttributes, 'value'],\n\tdatalist: GlobalAttributes,\n\tdd: GlobalAttributes,\n\tdel: [...GlobalAttributes, 'cite', 'datetime'],\n\tdetails: [...GlobalAttributes, 'open'],\n\tdfn: GlobalAttributes,\n\tdialog: [...GlobalAttributes, 'open'],\n\tdiv: GlobalAttributes,\n\tdl: GlobalAttributes,\n\tdt: GlobalAttributes,\n\tem: GlobalAttributes,\n\tembed: [...GlobalAttributes, 'src', 'type', 'width', 'height', 'any*'],\n\tfieldset: [...GlobalAttributes, 'disabled', 'form', 'name'],\n\tfigcaption: GlobalAttributes,\n\tfigure: GlobalAttributes,\n\tfooter: GlobalAttributes,\n\tform: [...GlobalAttributes, 'accept-charset', 'action', 'autocomplete', 'enctype', 'method', 'name', 'novalidate', 'target'],\n\th1: GlobalAttributes,\n\th2: GlobalAttributes,\n\th3: GlobalAttributes,\n\th4: GlobalAttributes,\n\th5: GlobalAttributes,\n\th6: GlobalAttributes,\n\thead: GlobalAttributes,\n\theader: GlobalAttributes,\n\thgroup: GlobalAttributes,\n\thr: GlobalAttributes,\n\thtml: [...GlobalAttributes, 'manifest'],\n\ti: GlobalAttributes,\n\tiframe: [...GlobalAttributes, 'src', 'srcdoc', 'name', 'sandbox', 'allow', 'allowfullscreen', 'allowpaymentrequest', 'width', 'height', 'referrerpolicy', 'loading'],\n\timg: [...GlobalAttributes, 'alt', 'src', 'srcset', 'sizes', 'crossorigin', 'usemap', 'ismap', 'width', 'height', 'referrerpolicy', 'decoding', 'loading'],\n\tinput: [...GlobalAttributes, 'accept', 'alt', 'autocomplete', 'checked', 'dirname', 'disabled', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'height', 'list', 'max', 'maxlength', 'min', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'size', 'src', 'step', 'type', 'value', 'width'],\n\tins: [...GlobalAttributes, 'cite', 'datetime'],\n\tkbd: GlobalAttributes,\n\tlabel: [...GlobalAttributes, 'for'],\n\tlegend: GlobalAttributes,\n\tli: [...GlobalAttributes, 'value'],\n\tlink: [...GlobalAttributes, 'href', 'crossorigin', 'rel', 'as', 'media', 'hreflang', 'type', 'sizes', 'imagesrcset', 'imagesizes', 'referrerpolicy', 'integrity', 'color', 'disabled'],\n\tmain: GlobalAttributes,\n\tmap: [...GlobalAttributes, 'name'],\n\tmark: GlobalAttributes,\n\tmenu: GlobalAttributes,\n\tmeta: [...GlobalAttributes, 'name', 'http-equiv', 'content', 'charset'],\n\tmeter: [...GlobalAttributes, 'value', 'min', 'max', 'low', 'high', 'optimum'],\n\tnav: GlobalAttributes,\n\tnoscript: GlobalAttributes,\n\tobject: [...GlobalAttributes, 'data', 'type', 'name', 'usemap', 'form', 'width', 'height'],\n\tol: [...GlobalAttributes, 'reversed', 'start', 'type'],\n\toptgroup: [...GlobalAttributes, 'disabled', 'label'],\n\toption: [...GlobalAttributes, 'disabled', 'label', 'selected', 'value'],\n\toutput: [...GlobalAttributes, 'for', 'form', 'name'],\n\tp: GlobalAttributes,\n\tparam: [...GlobalAttributes, 'name', 'value'],\n\tpicture: GlobalAttributes,\n\tpre: GlobalAttributes,\n\tprogress: [...GlobalAttributes, 'value', 'max'],\n\tq: [...GlobalAttributes, 'cite'],\n\trp: GlobalAttributes,\n\trt: GlobalAttributes,\n\truby: GlobalAttributes,\n\ts: GlobalAttributes,\n\tsamp: GlobalAttributes,\n\tscript: [...GlobalAttributes, 'src', 'type', 'async', 'defer', 'crossorigin', 'integrity', 'referrerpolicy'],\n\tsection: GlobalAttributes,\n\tselect: [...GlobalAttributes, 'autocomplete', 'disabled', 'form', 'multiple', 'name', 'required', 'size'],\n\tslot: [...GlobalAttributes, 'name'],\n\tsmall: GlobalAttributes,\n\tsource: [...GlobalAttributes, 'src', 'type', 'srcset', 'sizes', 'media'],\n\tspan: GlobalAttributes,\n\tstrong: GlobalAttributes,\n\tstyle: [...GlobalAttributes, 'media'],\n\tsub: GlobalAttributes,\n\tsummary: GlobalAttributes,\n\tsup: GlobalAttributes,\n\ttable: GlobalAttributes,\n\ttbody: GlobalAttributes,\n\ttd: [...GlobalAttributes, 'colspan', 'rowspan', 'headers'],\n\ttemplate: GlobalAttributes,\n\ttextarea: [...GlobalAttributes, 'cols', 'dirname', 'disabled', 'form', 'maxlength', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'wrap'],\n\ttfoot: GlobalAttributes,\n\tth: [...GlobalAttributes, 'colspan', 'rowspan', 'headers', 'scope', 'abbr'],\n\tthead: GlobalAttributes,\n\ttime: [...GlobalAttributes, 'datetime'],\n\ttitle: GlobalAttributes,\n\ttr: GlobalAttributes,\n\ttrack: [...GlobalAttributes, 'default', 'kind', 'label', 'src', 'srclang'],\n\tu: GlobalAttributes,\n\tul: GlobalAttributes,\n\tvar: GlobalAttributes,\n\tvideo: [...GlobalAttributes, 'src', 'crossorigin', 'poster', 'preload', 'autoplay', 'playsinline', 'loop', 'muted', 'controls', 'width', 'height'],\n\twbr: GlobalAttributes,\n};\n\n\nexport function hasNativeAttr(element: string | HTMLElement, attr: string): boolean {\n\tif (typeof element === 'string') {\n\t\treturn Attrs[element.toLowerCase()]?.includes(attr);\n\t} else if (element instanceof HTMLElement) {\n\t\tconst tagName = element.tagName.toLowerCase();\n\t\treturn Attrs[tagName]?.includes(attr);\n\t}\n\treturn false;\n}\n\nexport function getTagsForAttr(attr: string): string[] {\n\treturn Object.keys(Attrs).filter(tag => Attrs[tag].includes(attr));\n}\n\nexport function getAllAttributes(tag?: string): string[] {\n\tif (tag) {\n\t\treturn Attrs[tag];\n\t}\n\treturn GlobalAttributes.slice();\n}"]}
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/elements/attributes/attributes.ts"],"names":[],"mappings":"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","sourcesContent":["export interface AttrRef {\n\treadonly [attr: string]: string[];\n}\n\n/**\n * @see https://html.spec.whatwg.org/multipage/indices.html#elements-3\n */\nexport const GlobalAttributes = [\n\t'class',\n\t'id',\n\t'slot',\n\t'accesskey',\n\t'autocapitalize',\n\t'autofocus',\n\t'contenteditable',\n\t'dir',\n\t'draggable',\n\t'enterkeyhint',\n\t'hidden',\n\t'inputmode',\n\t'is',\n\t'itemid',\n\t'itemprop',\n\t'itemref',\n\t'itemscope',\n\t'itemtype',\n\t'lang',\n\t'nonce',\n\t'spellcheck',\n\t'style',\n\t'tabindex',\n\t'title',\n\t'translate'\n];\n\nexport const Attrs: AttrRef = {\n\ta: [...GlobalAttributes, 'href', 'target', 'download', 'ping', 'rel', 'hreflang', 'type', 'referrerpolicy'],\n\tabbr: GlobalAttributes,\n\taddress: GlobalAttributes,\n\tarea: [...GlobalAttributes, 'alt', 'coords', 'shape', 'href', 'target', 'download', 'ping', 'rel', 'referrerpolicy'],\n\tarticle: GlobalAttributes,\n\taside: GlobalAttributes,\n\taudio: [...GlobalAttributes, 'src', 'crossorigin', 'preload', 'autoplay', 'loop', 'muted', 'controls'],\n\tb: GlobalAttributes,\n\tbase: [...GlobalAttributes, 'href', 'targetreferrerpolicy'],\n\tbdi: GlobalAttributes,\n\tbdo: GlobalAttributes,\n\tblockquote: [...GlobalAttributes, 'cite'],\n\tbody: [...GlobalAttributes, 'onafterprint; onbeforeprint; onbeforeunload; onhashchange; onlanguagechange; onmessage; onmessageerror; onoffline; ononline; onpagehide; onpageshow; onpopstate; onrejectionhandled; onstorage; onunhandledrejection; onunload'],\n\tbr: GlobalAttributes,\n\tbutton: [...GlobalAttributes, 'disabled', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'name', 'type', 'value'],\n\tcanvas: [...GlobalAttributes, 'width', 'height'],\n\tcaption: GlobalAttributes,\n\tcite: GlobalAttributes,\n\tcode: GlobalAttributes,\n\tcol: [...GlobalAttributes, 'span'],\n\tcolgroup: [...GlobalAttributes, 'span'],\n\tdata: [...GlobalAttributes, 'value'],\n\tdatalist: GlobalAttributes,\n\tdd: GlobalAttributes,\n\tdel: [...GlobalAttributes, 'cite', 'datetime'],\n\tdetails: [...GlobalAttributes, 'open'],\n\tdfn: GlobalAttributes,\n\tdialog: [...GlobalAttributes, 'open'],\n\tdiv: GlobalAttributes,\n\tdl: GlobalAttributes,\n\tdt: GlobalAttributes,\n\tem: GlobalAttributes,\n\tembed: [...GlobalAttributes, 'src', 'type', 'width', 'height', 'any*'],\n\tfieldset: [...GlobalAttributes, 'disabled', 'form', 'name'],\n\tfigcaption: GlobalAttributes,\n\tfigure: GlobalAttributes,\n\tfooter: GlobalAttributes,\n\tform: [...GlobalAttributes, 'accept-charset', 'action', 'autocomplete', 'enctype', 'method', 'name', 'novalidate', 'target'],\n\th1: GlobalAttributes,\n\th2: GlobalAttributes,\n\th3: GlobalAttributes,\n\th4: GlobalAttributes,\n\th5: GlobalAttributes,\n\th6: GlobalAttributes,\n\thead: GlobalAttributes,\n\theader: GlobalAttributes,\n\thgroup: GlobalAttributes,\n\thr: GlobalAttributes,\n\thtml: [...GlobalAttributes, 'manifest'],\n\ti: GlobalAttributes,\n\tiframe: [...GlobalAttributes, 'src', 'srcdoc', 'name', 'sandbox', 'allow', 'allowfullscreen', 'allowpaymentrequest', 'width', 'height', 'referrerpolicy', 'loading'],\n\timg: [...GlobalAttributes, 'alt', 'src', 'srcset', 'sizes', 'crossorigin', 'usemap', 'ismap', 'width', 'height', 'referrerpolicy', 'decoding', 'loading'],\n\tinput: [...GlobalAttributes, 'accept', 'alt', 'autocomplete', 'checked', 'dirname', 'disabled', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'height', 'list', 'max', 'maxlength', 'min', 'minlength', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'size', 'src', 'step', 'type', 'value', 'width'],\n\tins: [...GlobalAttributes, 'cite', 'datetime'],\n\tkbd: GlobalAttributes,\n\tlabel: [...GlobalAttributes, 'for'],\n\tlegend: GlobalAttributes,\n\tli: [...GlobalAttributes, 'value'],\n\tlink: [...GlobalAttributes, 'href', 'crossorigin', 'rel', 'as', 'media', 'hreflang', 'type', 'sizes', 'imagesrcset', 'imagesizes', 'referrerpolicy', 'integrity', 'color', 'disabled'],\n\tmain: GlobalAttributes,\n\tmap: [...GlobalAttributes, 'name'],\n\tmark: GlobalAttributes,\n\tmenu: GlobalAttributes,\n\tmeta: [...GlobalAttributes, 'name', 'http-equiv', 'content', 'charset'],\n\tmeter: [...GlobalAttributes, 'value', 'min', 'max', 'low', 'high', 'optimum'],\n\tnav: GlobalAttributes,\n\tnoscript: GlobalAttributes,\n\tobject: [...GlobalAttributes, 'data', 'type', 'name', 'usemap', 'form', 'width', 'height'],\n\tol: [...GlobalAttributes, 'reversed', 'start', 'type'],\n\toptgroup: [...GlobalAttributes, 'disabled', 'label'],\n\toption: [...GlobalAttributes, 'disabled', 'label', 'selected', 'value'],\n\toutput: [...GlobalAttributes, 'for', 'form', 'name'],\n\tp: GlobalAttributes,\n\tparam: [...GlobalAttributes, 'name', 'value'],\n\tpicture: GlobalAttributes,\n\tpre: GlobalAttributes,\n\tprogress: [...GlobalAttributes, 'value', 'max'],\n\tq: [...GlobalAttributes, 'cite'],\n\trp: GlobalAttributes,\n\trt: GlobalAttributes,\n\truby: GlobalAttributes,\n\ts: GlobalAttributes,\n\tsamp: GlobalAttributes,\n\tscript: [...GlobalAttributes, 'src', 'type', 'async', 'defer', 'crossorigin', 'integrity', 'referrerpolicy'],\n\tsection: GlobalAttributes,\n\tselect: [...GlobalAttributes, 'autocomplete', 'disabled', 'form', 'multiple', 'name', 'required', 'size'],\n\tslot: [...GlobalAttributes, 'name'],\n\tsmall: GlobalAttributes,\n\tsource: [...GlobalAttributes, 'src', 'type', 'srcset', 'sizes', 'media'],\n\tspan: GlobalAttributes,\n\tstrong: GlobalAttributes,\n\tstyle: [...GlobalAttributes, 'media'],\n\tsub: GlobalAttributes,\n\tsummary: GlobalAttributes,\n\tsup: GlobalAttributes,\n\ttable: GlobalAttributes,\n\ttbody: GlobalAttributes,\n\ttd: [...GlobalAttributes, 'colspan', 'rowspan', 'headers'],\n\ttemplate: GlobalAttributes,\n\ttextarea: [...GlobalAttributes, 'cols', 'dirname', 'disabled', 'form', 'maxlength', 'minlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'wrap'],\n\ttfoot: GlobalAttributes,\n\tth: [...GlobalAttributes, 'colspan', 'rowspan', 'headers', 'scope', 'abbr'],\n\tthead: GlobalAttributes,\n\ttime: [...GlobalAttributes, 'datetime'],\n\ttitle: GlobalAttributes,\n\ttr: GlobalAttributes,\n\ttrack: [...GlobalAttributes, 'default', 'kind', 'label', 'src', 'srclang'],\n\tu: GlobalAttributes,\n\tul: GlobalAttributes,\n\tvar: GlobalAttributes,\n\tvideo: [...GlobalAttributes, 'src', 'crossorigin', 'poster', 'preload', 'autoplay', 'playsinline', 'loop', 'muted', 'controls', 'width', 'height'],\n\twbr: GlobalAttributes,\n};\n\n\nexport function hasNativeAttr(element: string | HTMLElement, attr: string): boolean {\n\tif (typeof element === 'string') {\n\t\treturn Attrs[element.toLowerCase()]?.includes(attr);\n\t} else if (element instanceof HTMLElement) {\n\t\tconst tagName = element.tagName.toLowerCase();\n\t\treturn Attrs[tagName]?.includes(attr);\n\t}\n\treturn false;\n}\n\nexport function getTagsForAttr(attr: string): string[] {\n\treturn Object.keys(Attrs).filter(tag => Attrs[tag].includes(attr));\n}\n\nexport function getAllAttributes(tag?: string): string[] {\n\tif (tag) {\n\t\treturn Attrs[tag];\n\t}\n\treturn GlobalAttributes.slice();\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/elements/attributes/form.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,OAAe;IACjE,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAA0E,EAAE,cAAc,CAAC;AACrK,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0CAA0C,CAAC,WAAqC;IAC/F,OAAO,CAAC,CAAE,WAAoF,EAAE,cAAc,CAAC;AAChH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sCAAsC,CAAC,EAAe;IACrE,OAAO,EAAE,EAAE,WAAW,IAAI,EAAE,YAAY,WAAW,IAAI,0CAA0C,CAAC,EAAE,CAAC,WAAuC,CAAC,CAAC;AAC/I,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAqD;IAClG,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC9B,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAO,IAAI,KAAK,UAAU;YAC3B,CAAC,CAAC,0CAA0C,CAAC,IAAI,CAAC;YAClD,CAAC,CAAC,sCAAsC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC5C,QAAQ,OAAO,EAAE;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb;YACC,MAAM;KACP;IACD,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,QAAQ,OAAO,EAAE;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb;YACC,MAAM;KACP;IACD,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACnD,QAAQ,OAAO,EAAE;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb;YACC,MAAM;KACP;IACD,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,QAAQ,OAAO,EAAE;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb;YACC,MAAM;KACP;IACD,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,OAAe;IAChE,QAAQ,OAAO,EAAE;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;KACtB;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,QAAQ,OAAO,EAAE;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACd,OAAO,IAAI,CAAC;QACb;YACC,MAAM;KACP;IACD,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["/**\n * https://html.spec.whatwg.org/multipage/forms.html\n */\n\nimport { isValidCustomElementName } from './common.js';\n\n\n/**\n * check the formAssociated property on the associated constructor. \n * @param tagName tag name of the defined custom element\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByTag(tagName: string) {\n\treturn isValidCustomElementName(tagName) && !!(customElements.get(tagName) as (CustomElementConstructor & { formAssociated: boolean }) | undefined)?.formAssociated;\n}\n\n/**\n * check the formAssociated property on the associated constructor. \n * @param constructor the associated constructor\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByConstructor(constructor: CustomElementConstructor) {\n\treturn !!(constructor as (CustomElementConstructor & { formAssociated: boolean }) | undefined)?.formAssociated;\n}\n\n/**\n * check the formAssociated property on the associated constructor on already created element. \n * @param el the element\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByElement(el: HTMLElement) {\n\treturn el?.constructor && el instanceof HTMLElement && isFormAssociatedCustomElementByConstructor(el.constructor as CustomElementConstructor);\n}\n\nexport function isFormAssociatedCustomElement(item: string | CustomElementConstructor | HTMLElement) {\n\treturn typeof item === 'string'\n\t\t? isFormAssociatedCustomElementByTag(item)\n\t\t: typeof item === 'function'\n\t\t\t? isFormAssociatedCustomElementByConstructor(item)\n\t\t\t: isFormAssociatedCustomElementByElement(item);\n}\n\n/**\n * form-associated elements\n * A number of the elements are form-associated elements, which means they can have a form owner.\n * @param tagName \n */\nexport function isFormElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'datalist':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'label':\n\t\tcase 'legend':\n\t\tcase 'meter':\n\t\tcase 'optgroup':\n\t\tcase 'option':\n\t\tcase 'output':\n\t\tcase 'progress':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * Denotes elements that are listed in the form.elements and fieldset.elements APIs.\n * These elements also have a form content attribute, and a matching form IDL attribute,\n * that allow authors to specify an explicit form owner.\n * @param tagName \n */\nexport function isListedFormElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'object':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * submittable elements\n * Denotes elements that can be used for constructing the entry list when a form element is submitted.\n * @param tagName \n */\nexport function isSubmittableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'input':\n\t\tcase 'object':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * Resettable elements\n * Denotes elements that can be affected when a form element is reset.\n * @param tagName \n * @returns \n */\nexport function isResettableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'input':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n\n/**\n * Autocapitalize-inheriting elements\n * Denotes elements that inherit the autocapitalize attribute from their form owner.\n * @param tagName \n */\nexport function isAutocapitalizeInheritingElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault: return false;\n\t}\n}\n\n/**\n * Label-able Elements\n * Some elements, not all of them form-associated, are categorized as label-able elements.\n * These are elements that can be associated with a label element.\n * \n * this function ignore the 'type' attribute of 'input' tag as '<input type=\"hidden\" />' is considered as not labeled element \n * @param tagName the tested tag name\n */\nexport function isFormLabelableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'input':\n\t\tcase 'meter':\n\t\tcase 'output':\n\t\tcase 'progress':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n"]}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/elements/attributes/form.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * https://html.spec.whatwg.org/multipage/forms.html\n */\n\nimport { isValidCustomElementName } from './common.js';\n\n\n/**\n * check the formAssociated property on the associated constructor. \n * @param tagName tag name of the defined custom element\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByTag(tagName: string) {\n\treturn isValidCustomElementName(tagName) && !!(customElements.get(tagName) as (CustomElementConstructor & { formAssociated: boolean }) | undefined)?.formAssociated;\n}\n\n/**\n * check the formAssociated property on the associated constructor. \n * @param constructor the associated constructor\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByConstructor(constructor: CustomElementConstructor) {\n\treturn !!(constructor as (CustomElementConstructor & { formAssociated: boolean }) | undefined)?.formAssociated;\n}\n\n/**\n * check the formAssociated property on the associated constructor on already created element. \n * @param el the element\n * @returns boolean\n */\nexport function isFormAssociatedCustomElementByElement(el: HTMLElement) {\n\treturn el?.constructor && el instanceof HTMLElement && isFormAssociatedCustomElementByConstructor(el.constructor as CustomElementConstructor);\n}\n\nexport function isFormAssociatedCustomElement(item: string | CustomElementConstructor | HTMLElement) {\n\treturn typeof item === 'string'\n\t\t? isFormAssociatedCustomElementByTag(item)\n\t\t: typeof item === 'function'\n\t\t\t? isFormAssociatedCustomElementByConstructor(item)\n\t\t\t: isFormAssociatedCustomElementByElement(item);\n}\n\n/**\n * form-associated elements\n * A number of the elements are form-associated elements, which means they can have a form owner.\n * @param tagName \n */\nexport function isFormElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'datalist':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'label':\n\t\tcase 'legend':\n\t\tcase 'meter':\n\t\tcase 'optgroup':\n\t\tcase 'option':\n\t\tcase 'output':\n\t\tcase 'progress':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * Denotes elements that are listed in the form.elements and fieldset.elements APIs.\n * These elements also have a form content attribute, and a matching form IDL attribute,\n * that allow authors to specify an explicit form owner.\n * @param tagName \n */\nexport function isListedFormElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'object':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * submittable elements\n * Denotes elements that can be used for constructing the entry list when a form element is submitted.\n * @param tagName \n */\nexport function isSubmittableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'input':\n\t\tcase 'object':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n/**\n * Resettable elements\n * Denotes elements that can be affected when a form element is reset.\n * @param tagName \n * @returns \n */\nexport function isResettableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'input':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n\n\n/**\n * Autocapitalize-inheriting elements\n * Denotes elements that inherit the autocapitalize attribute from their form owner.\n * @param tagName \n */\nexport function isAutocapitalizeInheritingElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'fieldset':\n\t\tcase 'input':\n\t\tcase 'output':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault: return false;\n\t}\n}\n\n/**\n * Label-able Elements\n * Some elements, not all of them form-associated, are categorized as label-able elements.\n * These are elements that can be associated with a label element.\n * \n * this function ignore the 'type' attribute of 'input' tag as '<input type=\"hidden\" />' is considered as not labeled element \n * @param tagName the tested tag name\n */\nexport function isFormLabelableElement(tagName: string): boolean {\n\tswitch (tagName) {\n\t\tcase 'button':\n\t\tcase 'input':\n\t\tcase 'meter':\n\t\tcase 'output':\n\t\tcase 'progress':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn isFormAssociatedCustomElementByTag(tagName);\n\t}\n\treturn false;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/elements/attributes/shadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,SAAS;IACT,OAAO;IACP,YAAY;IACZ,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,KAAK;IACL,GAAG;IACH,SAAS;IACT,MAAM;CACN,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { isValidCustomElementName } from './common.js';\n\nexport const ShadowElements = [\n\t'article',\n\t'aside',\n\t'blockquote',\n\t'body',\n\t'div',\n\t'footer',\n\t'h1',\n\t'h2',\n\t'h3',\n\t'h4',\n\t'h5',\n\t'h6',\n\t'header',\n\t'main',\n\t'nav',\n\t'p',\n\t'section',\n\t'span',\n];\n\n/**\n * Note that you can't attach a shadow root to every type of element.\n * \n * There are some that can't have a shadow DOM for security reasons (for example <a>), and more besides.\n * \n * The following is a list of elements you can attach a shadow root to:\n * Any autonomous custom element with a valid name,\n * and [\n * article, aside, blockquote, body, div,footer,\n * h1, h2, h3, h4, h5, h6,\n * header, main, nav, p, section, span\n * ]\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow#elements_you_can_attach_a_shadow_to\n * @param tagName \n * @returns \n */\nexport function canAttachShadow(tagName: string) {\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn true;\n\t}\n\treturn ShadowElements.includes(tagName);\n}\n\n\n"]}
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/elements/attributes/shadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,SAAS;IACT,OAAO;IACP,YAAY;IACZ,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,KAAK;IACL,GAAG;IACH,SAAS;IACT,MAAM;CACN,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { isValidCustomElementName } from './common.js';\n\nexport const ShadowElements = [\n\t'article',\n\t'aside',\n\t'blockquote',\n\t'body',\n\t'div',\n\t'footer',\n\t'h1',\n\t'h2',\n\t'h3',\n\t'h4',\n\t'h5',\n\t'h6',\n\t'header',\n\t'main',\n\t'nav',\n\t'p',\n\t'section',\n\t'span',\n];\n\n/**\n * Note that you can't attach a shadow root to every type of element.\n * \n * There are some that can't have a shadow DOM for security reasons (for example <a>), and more besides.\n * \n * The following is a list of elements you can attach a shadow root to:\n * Any autonomous custom element with a valid name,\n * and [\n * article, aside, blockquote, body, div,footer,\n * h1, h2, h3, h4, h5, h6,\n * header, main, nav, p, section, span\n * ]\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow#elements_you_can_attach_a_shadow_to\n * @param tagName \n * @returns \n */\nexport function canAttachShadow(tagName: string) {\n\tif (isValidCustomElementName(tagName)) {\n\t\treturn true;\n\t}\n\treturn ShadowElements.includes(tagName);\n}\n\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/elements/attributes/tags.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidCustomElementName } from './common.js';\n\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\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"]}
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/elements/attributes/tags.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidCustomElementName } from './common.js';\n\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\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"register-directive.js","sourceRoot":"","sources":["../../../src/elements/directives/register-directive.ts"],"names":[],"mappings":"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","sourcesContent":["\n\nexport interface DirectiveNodeOptions {\n\n\t/**\n\t * list of inputs view name\n\t */\n\tinputs?: string[];\n\n\t/**\n\t * list of outputs view name\n\t */\n\toutputs?: string[];\n}\n\nclass DirectiveNodeInfo {\n\tconstructor(private inputs?: string[], private outputs?: string[]) { }\n\n\thasAttributes(): boolean {\n\t\treturn this.hasInputs() || this.hasOutputs();\n\t}\n\n\thasInputs(): boolean {\n\t\treturn (this.inputs?.length ?? 0) > 0;\n\t}\n\n\thasOutputs(): boolean {\n\t\treturn (this.outputs?.length ?? 0) > 0;\n\t}\n\n\tgetAttributes(): string[] | undefined {\n\t\tif (this.inputs && this.outputs) {\n\t\t\treturn this.inputs.concat(this.outputs);\n\t\t} else if (this.inputs) {\n\t\t\treturn this.inputs;\n\t\t} else if (this.outputs) {\n\t\t\treturn this.outputs;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tgetInputs(): string[] | undefined {\n\t\treturn this.inputs;\n\t}\n\n\tgetOutputs(): string[] | undefined {\n\t\treturn this.outputs;\n\t}\n\n\thasAttribute(attributeName: string): boolean {\n\t\treturn this.hasInput(attributeName) || this.hasOutput(attributeName);\n\t}\n\n\thasInput(inputName: string): boolean {\n\t\treturn this.inputs?.includes(inputName) || false;\n\t}\n\n\thasOutput(outputName: string): boolean {\n\t\treturn this.outputs?.includes(outputName) || false;\n\t}\n\n}\n\nexport class DirectiveRegistry {\n\n\t/**\n\t * store options info about directives\n\t */\n\tprivate directives = new Map<string, DirectiveNodeInfo>();\n\n\t/**\n\t * register a directive with a name,\n\t * \n\t * the directive could be a structural directive or an attribute directive.\n\t * \n\t * if the directive name exists, will not replace the old directive options.\n\t * @param directiveName \n\t * @param options contain the attributes of the registered directive name\n\t * @override\n\t */\n\tregister(directiveName: string, options?: DirectiveNodeOptions): void {\n\t\tif (!this.directives.has(directiveName)) {\n\t\t\tconst info = new DirectiveNodeInfo(options?.inputs, options?.outputs);\n\t\t\tthis.directives.set(directiveName, info);\n\t\t}\n\t}\n\n\t/**\n\t * replace the current options with a new one.\n\t * \n\t * the directive could be a structural directive or an attribute directive.\n\t * \n\t * if the directive name not exists, no set options will be done\n\t * @param directiveName \n\t * @param options to be replaced\n\t */\n\treplace(directiveName: string, options: DirectiveNodeOptions): void {\n\t\tif (this.directives.has(directiveName)) {\n\t\t\tconst info = new DirectiveNodeInfo(options?.inputs, options?.outputs);\n\t\t\tthis.directives.set(directiveName, info);\n\t\t}\n\t}\n\n\t/**\n\t * check if directive name is registered\n\t * @param directiveName \n\t * @returns `boolean`\n\t */\n\thas(attributeName: string): boolean {\n\t\treturn this.directives.has(attributeName);\n\t}\n\n\t/**\n\t * get the DirectiveOptions for a directive name\n\t * @param directiveName \n\t * @returns `DirectiveOptions` if the name has been registered, otherwise `undefined`\n\t */\n\tget(directiveName: string): DirectiveNodeInfo | undefined {\n\t\treturn this.directives.get(directiveName);\n\t}\n\n\t/**\n\t * check if the options registered with a `directiveName` has attributes array\n\t * @param directiveName \n\t * @returns `boolean`\n\t */\n\thasAttributes(directiveName: string): boolean {\n\t\treturn this.hasInputs(directiveName) || this.hasOutputs(directiveName);\n\t}\n\n\thasInputs(directiveName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasInputs() || false;\n\t}\n\n\thasOutputs(directiveName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasOutputs() || false;\n\t}\n\n\t/**\n\t * get the value of the registered inputs and outputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetAttributes(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getAttributes();\n\t}\n\n\t/**\n\t * get the value of the registered inputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetInputs(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getInputs();\n\t}\n\n\t/**\n\t * get the value of the registered outputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetOutputs(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getOutputs();\n\t}\n\n\t/**\n\t * check if a directive has a attribute\n\t * @param directiveName \n\t * @param attributeName \n\t * @returns \n\t */\n\thasAttribute(directiveName: string, attributeName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasAttribute(attributeName) || false;\n\t}\n\n\t/**\n\t * check if has input\n\t * @param directiveName \n\t * @param inputName \n\t * @returns \n\t */\n\thasInput(directiveName: string, inputName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasInput(inputName) || false;\n\t}\n\n\t/**\n\t * check if has output\n\t * @param directiveName \n\t * @param outputName \n\t * @returns \n\t */\n\thasOutput(directiveName: string, outputName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasOutput(outputName) || false;\n\t}\n\n\tfilterDirectives(attributes: string[]): string[] {\n\t\treturn attributes.filter(name => this.has(name));\n\t}\n\n}\n\nexport const directiveRegistry = new DirectiveRegistry();\n"]}
1
+ {"version":3,"file":"register-directive.js","sourceRoot":"","sources":["../../../src/elements/directives/register-directive.ts"],"names":[],"mappings":"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","sourcesContent":["\n\nexport interface DirectiveNodeOptions {\n\n\t/**\n\t * list of inputs view name\n\t */\n\tinputs?: string[];\n\n\t/**\n\t * list of outputs view name\n\t */\n\toutputs?: string[];\n}\n\nclass DirectiveNodeInfo {\n\tconstructor(private inputs?: string[], private outputs?: string[]) { }\n\n\thasAttributes(): boolean {\n\t\treturn this.hasInputs() || this.hasOutputs();\n\t}\n\n\thasInputs(): boolean {\n\t\treturn (this.inputs?.length ?? 0) > 0;\n\t}\n\n\thasOutputs(): boolean {\n\t\treturn (this.outputs?.length ?? 0) > 0;\n\t}\n\n\tgetAttributes(): string[] | undefined {\n\t\tif (this.inputs && this.outputs) {\n\t\t\treturn this.inputs.concat(this.outputs);\n\t\t} else if (this.inputs) {\n\t\t\treturn this.inputs;\n\t\t} else if (this.outputs) {\n\t\t\treturn this.outputs;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tgetInputs(): string[] | undefined {\n\t\treturn this.inputs;\n\t}\n\n\tgetOutputs(): string[] | undefined {\n\t\treturn this.outputs;\n\t}\n\n\thasAttribute(attributeName: string): boolean {\n\t\treturn this.hasInput(attributeName) || this.hasOutput(attributeName);\n\t}\n\n\thasInput(inputName: string): boolean {\n\t\treturn this.inputs?.includes(inputName) || false;\n\t}\n\n\thasOutput(outputName: string): boolean {\n\t\treturn this.outputs?.includes(outputName) || false;\n\t}\n\n}\n\nexport class DirectiveRegistry {\n\n\t/**\n\t * store options info about directives\n\t */\n\tprivate directives = new Map<string, DirectiveNodeInfo>();\n\n\t/**\n\t * register a directive with a name,\n\t * \n\t * the directive could be a structural directive or an attribute directive.\n\t * \n\t * if the directive name exists, will not replace the old directive options.\n\t * @param directiveName \n\t * @param options contain the attributes of the registered directive name\n\t * @override\n\t */\n\tregister(directiveName: string, options?: DirectiveNodeOptions): void {\n\t\tif (!this.directives.has(directiveName)) {\n\t\t\tconst info = new DirectiveNodeInfo(options?.inputs, options?.outputs);\n\t\t\tthis.directives.set(directiveName, info);\n\t\t}\n\t}\n\n\t/**\n\t * replace the current options with a new one.\n\t * \n\t * the directive could be a structural directive or an attribute directive.\n\t * \n\t * if the directive name not exists, no set options will be done\n\t * @param directiveName \n\t * @param options to be replaced\n\t */\n\treplace(directiveName: string, options: DirectiveNodeOptions): void {\n\t\tif (this.directives.has(directiveName)) {\n\t\t\tconst info = new DirectiveNodeInfo(options?.inputs, options?.outputs);\n\t\t\tthis.directives.set(directiveName, info);\n\t\t}\n\t}\n\n\t/**\n\t * check if directive name is registered\n\t * @param directiveName \n\t * @returns `boolean`\n\t */\n\thas(attributeName: string): boolean {\n\t\treturn this.directives.has(attributeName);\n\t}\n\n\t/**\n\t * get the DirectiveOptions for a directive name\n\t * @param directiveName \n\t * @returns `DirectiveOptions` if the name has been registered, otherwise `undefined`\n\t */\n\tget(directiveName: string): DirectiveNodeInfo | undefined {\n\t\treturn this.directives.get(directiveName);\n\t}\n\n\t/**\n\t * check if the options registered with a `directiveName` has attributes array\n\t * @param directiveName \n\t * @returns `boolean`\n\t */\n\thasAttributes(directiveName: string): boolean {\n\t\treturn this.hasInputs(directiveName) || this.hasOutputs(directiveName);\n\t}\n\n\thasInputs(directiveName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasInputs() || false;\n\t}\n\n\thasOutputs(directiveName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasOutputs() || false;\n\t}\n\n\t/**\n\t * get the value of the registered inputs and outputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetAttributes(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getAttributes();\n\t}\n\n\t/**\n\t * get the value of the registered inputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetInputs(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getInputs();\n\t}\n\n\t/**\n\t * get the value of the registered outputs by directive name\n\t * @param directiveName \n\t * @returns array of strings if found, otherwise `undefined`\n\t */\n\tgetOutputs(directiveName: string): string[] | undefined {\n\t\treturn this.directives.get(directiveName)?.getOutputs();\n\t}\n\n\t/**\n\t * check if a directive has a attribute\n\t * @param directiveName \n\t * @param attributeName \n\t * @returns \n\t */\n\thasAttribute(directiveName: string, attributeName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasAttribute(attributeName) || false;\n\t}\n\n\t/**\n\t * check if has input\n\t * @param directiveName \n\t * @param inputName \n\t * @returns \n\t */\n\thasInput(directiveName: string, inputName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasInput(inputName) || false;\n\t}\n\n\t/**\n\t * check if has output\n\t * @param directiveName \n\t * @param outputName \n\t * @returns \n\t */\n\thasOutput(directiveName: string, outputName: string): boolean {\n\t\treturn this.directives.get(directiveName)?.hasOutput(outputName) || false;\n\t}\n\n\tfilterDirectives(attributes: string[]): string[] {\n\t\treturn attributes.filter(name => this.has(name));\n\t}\n\n}\n\nexport const directiveRegistry = new DirectiveRegistry();\n"]}
@@ -1,7 +1,7 @@
1
1
  import { isEmptyElement } from '../attributes/common.js';
2
2
  import { DomElementNode, CommentNode, parseTextChild, TextContent, LiveTextContent, DomFragmentNode, DomStructuralDirectiveNode, ElementAttribute, Attribute, DomAttributeDirectiveNode, LiveAttribute } from '../ast/dom.js';
3
3
  import { directiveRegistry } from '../directives/register-directive.js';
4
- class EscapeHTMLCharacter {
4
+ export class EscapeHTMLCharacter {
5
5
  static ESCAPE_MAP = {
6
6
  '&amp;': '&',
7
7
  '&lt;': '<',
@@ -27,7 +27,6 @@ class EscapeHTMLCharacter {
27
27
  return this.test.test(text) ? text.replace(this.replace, this.escaper) : text;
28
28
  }
29
29
  }
30
- export { EscapeHTMLCharacter };
31
30
  export class NodeParserHelper {
32
31
  checkNode(node) {
33
32
  const attributes = node.attributes;
@@ -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/common.js';\nimport {\n\tDomElementNode, CommentNode, parseTextChild,\n\tTextContent, LiveTextContent, DomFragmentNode,\n\tDomStructuralDirectiveNode, DomNode, DomChild,\n\tElementAttribute, Attribute, DomAttributeDirectiveNode,\n\tBaseNode, LiveAttribute\n} from '../ast/dom.js';\nimport { directiveRegistry } from '../directives/register-directive.js';\n\ntype Token = (token: string) => Token;\n\ntype ChildNode = DomElementNode | CommentNode | string;\n\nexport class EscapeHTMLCharacter {\n\tstatic ESCAPE_MAP: { [key: string]: string } = {\n\t\t'&amp;': '&',\n\t\t'&lt;': '<',\n\t\t'&gt;': '>',\n\t\t'&quot;': '\"',\n\t\t'&#x27;': \"'\",\n\t\t'&#x60;': '`'\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 NodeParserHelper {\n\n\tprotected checkNode(node: DomElementNode): DomElementNode | DomStructuralDirectiveNode {\n\t\tconst attributes = node.attributes;\n\t\tif (attributes) {\n\t\t\tlet temp: ElementAttribute<string, any> | ElementAttribute<string, any>[] | undefined;\n\n\t\t\ttemp = attributes.find(attr => attr.name === 'is');\n\t\t\tif (temp) {\n\t\t\t\tattributes.splice(attributes.indexOf(temp), 1);\n\t\t\t\tnode.is = temp.value as string;\n\t\t\t}\n\t\t\ttemp = 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?.length) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tattributes.splice(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 = attributes.filter(attr => attr.name.startsWith('on'));\n\t\t\tif (temp?.length) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tattributes.splice(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}\n\n\t\tconst directiveNames = this.extractDirectiveNames(node);\n\t\tlet sdName: string | undefined;\n\t\tif (directiveNames.length) {\n\t\t\tconst directives: DomAttributeDirectiveNode[] = [];\n\t\t\tdirectiveNames.forEach(attributeName => {\n\t\t\t\tif (attributeName.startsWith('*')) {\n\t\t\t\t\tif (sdName) {\n\t\t\t\t\t\tconsole.error(`Only one Structural Directive is allowed on an element [${sdName}, ${attributeName}]`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsdName = attributeName;\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst directive = new DomAttributeDirectiveNode(attributeName);\n\t\t\t\tif (directiveRegistry.get(attributeName)!.hasAttributes()) {\n\t\t\t\t\tthis.extractDirectiveAttributesFromNode(attributeName, directive, node);\n\t\t\t\t}\n\t\t\t\tdirectives.push(directive);\n\t\t\t});\n\t\t\tif (directives.length) {\n\t\t\t\tnode.attributeDirectives = directives;\n\t\t\t}\n\t\t}\n\t\tif (sdName) {\n\t\t\t// <div *for [forOf]=\"array\" let-item [trackBy]=\"method\" let-i=\"index\" > {{item}} </div>\n\t\t\t// <div *for=\"let item of array; let i = index; trackBy=method;\" > {{item}} </div>\n\t\t\t// <template #refName *if=\"isActive; else disabled\" > ... </template>\n\t\t\t// <template #disabled > ... </template>\n\n\t\t\tconst temp = node.attributes!.filter(attr => attr.name == sdName)[0];\n\t\t\tnode.attributes!.splice(node.attributes!.indexOf(temp), 1);\n\t\t\tconst isTemplate = node.tagName === 'template';\n\n\t\t\tconst directiveNode = isTemplate ? new DomFragmentNode(node.children) : node;\n\t\t\tconst directive = (typeof temp?.value === 'boolean')\n\t\t\t\t? new DomStructuralDirectiveNode(temp.name, directiveNode)\n\t\t\t\t: new DomStructuralDirectiveNode(temp.name, directiveNode, String(temp.value));\n\t\t\tconst directiveName = temp.name.substring(1);\n\t\t\tif (isTemplate) {\n\t\t\t\tdirective.inputs = node.inputs;\n\t\t\t\tdirective.outputs = node.outputs;\n\t\t\t\tdirective.attributes = node.attributes;\n\t\t\t\tdirective.templateAttrs = node.templateAttrs;\n\t\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\t} else if (directiveRegistry.hasAttributes(directiveName)) {\n\t\t\t\tthis.extractDirectiveAttributesFromNode(directiveName, directive, node);\n\t\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\t}\n\t\t\tif (isTemplate && node.templateRefName) {\n\t\t\t\tnode.children = [directive];\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\treturn directive;\n\t\t}\n\n\t\t// <for let-user [of]=\"users\"></for>\n\t\tif (directiveRegistry.has('*' + node.tagName)) {\n\t\t\tconst children = new DomFragmentNode(node.children);\n\t\t\tconst directive = new DomStructuralDirectiveNode('*' + node.tagName, children);\n\t\t\tdirective.inputs = node.inputs;\n\t\t\tdirective.outputs = node.outputs;\n\t\t\tdirective.attributes = node.attributes;\n\t\t\tdirective.templateAttrs = node.templateAttrs;\n\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\treturn directive;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\n\tprotected extractDirectiveAttributesFromNode(directiveName: string, directive: BaseNode, node: DomElementNode): void {\n\t\tconst attributes = directiveRegistry.getAttributes(directiveName);\n\t\tif (!attributes) {\n\t\t\treturn;\n\t\t}\n\t\tconst filterByAttrName = createFilterByAttrName(attributes);\n\t\tdirective.attributes = node.attributes?.filter(filterByAttrName);\n\t\tdirective.inputs = node.inputs?.filter(filterByAttrName);\n\t\tdirective.outputs = node.outputs?.filter(filterByAttrName);\n\t\tdirective.twoWayBinding = node.twoWayBinding?.filter(filterByAttrName);\n\t\tdirective.templateAttrs = node.templateAttrs?.filter(filterByAttrName);\n\n\t\tnode.inputs && directive.inputs?.forEach(createArrayCleaner(node.inputs));\n\t\tnode.outputs && directive.outputs?.forEach(createArrayCleaner(node.outputs));\n\t\tnode.twoWayBinding && directive.twoWayBinding?.forEach(createArrayCleaner(node.twoWayBinding));\n\t\tnode.attributes && directive.attributes?.forEach(createArrayCleaner(node.attributes));\n\t\tnode.templateAttrs && directive.templateAttrs?.forEach(createArrayCleaner(node.templateAttrs));\n\t}\n\tprotected extractDirectiveNames(node: BaseNode): string[] {\n\t\tconst names: string[] = [];\n\t\tif (node.attributes?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.attributes).filter(name => name.startsWith('*')));\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.inputs));\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.twoWayBinding));\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.templateAttrs));\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.outputs));\n\t\t}\n\t\treturn [...new Set(names)];\n\t}\n\tprotected getAttributeDirectives(attributes: Attribute<string, any>[]): string[] {\n\t\treturn directiveRegistry.filterDirectives(attributes.map(attr => attr.name.split('.')[0]));\n\t}\n}\n\nexport class NodeParser extends NodeParserHelper {\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[];\n\tprivate stackTrace: ChildNode[];\n\n\tprivate get currentNode(): DomElementNode {\n\t\treturn this.stackTrace[this.stackTrace.length - 1] as DomElementNode;\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, [${(this.stackTrace as DomElementNode[]).map(dom => dom.tagName).join(', ')}], 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\telse if (token === '>' && this.commentCloseCount === 0) {\n\t\t\tconst temp = this.tempText.toLowerCase();\n\t\t\tif ('doctype html' === temp) {\n\t\t\t\tthis.tempText = '';\n\t\t\t\treturn this.parseText;\n\t\t\t}\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 new Error(`Wrong closed tag at char ${this.index}, tag name: ${this.currentNode.tagName}`);\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\tthrow new SyntaxError('Error while parsing open tag');\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}\n\nfunction createFilterByAttrName(attributes: string[]) {\n\treturn (attr: Attribute<string, any>) => attributes.includes(attr.name.split('.')[0]);\n}\n\nfunction createArrayCleaner(attributes: Attribute<string, any>[]) {\n\treturn (attr: Attribute<string, any>) => attributes.splice(attributes.indexOf(attr), 1);\n}\n\nexport class HTMLParser {\n\n\tnodeParser = new NodeParser();\n\n\tparse(html: string): DomChild[] {\n\t\treturn this.nodeParser.parse(html);\n\t}\n\n\ttoDomRootNode(html: string): DomNode {\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[]) {\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\tdeserializeAttributes(attribute: Attribute<any, any>) {\n\t\tconst type = (attribute as Attribute<any, any> & { type: string }).type;\n\t\tswitch (type) {\n\t\t\tcase 'Attribute':\n\t\t\t\tinherit(attribute, Attribute);\n\t\t\t\tbreak;\n\t\t\tcase 'ElementAttribute':\n\t\t\t\tinherit(attribute, ElementAttribute);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveAttribute':\n\t\t\t\tinherit(attribute, LiveAttribute);\n\t\t\t\tbreak;\n\t\t\tcase 'TextContent':\n\t\t\t\tinherit(attribute, TextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveTextContent':\n\t\t\t\tinherit(attribute, LiveTextContent);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdeserializeBaseNode(node: BaseNode) {\n\t\tnode.attributes?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.inputs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.outputs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.templateAttrs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.attributeDirectives?.forEach(attr => this.deserializeNode(attr as any));\n\t}\n\n\tdeserializeNode(node: DomNode) {\n\t\tconst type = (node as DomNode & { type: string }).type;\n\t\tswitch (type) {\n\t\t\tcase 'TextContent':\n\t\t\t\tinherit(node, TextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveTextContent':\n\t\t\t\tinherit(node, LiveTextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'CommentNode':\n\t\t\t\tinherit(node, CommentNode);\n\t\t\t\tbreak;\n\t\t\tcase 'DomFragmentNode':\n\t\t\t\tinherit(node, DomFragmentNode);\n\t\t\t\t(node as DomFragmentNode).children?.forEach(child => this.deserializeNode(child));\n\t\t\t\tbreak;\n\t\t\tcase 'DomElementNode':\n\t\t\t\tinherit(node, DomElementNode);\n\t\t\t\tif ((node as DomElementNode).templateRefName) {\n\t\t\t\t\tthis.deserializeAttributes((node as DomElementNode).templateRefName!);\n\t\t\t\t}\n\t\t\t\tthis.deserializeBaseNode(node as DomElementNode);\n\t\t\t\t(node as DomElementNode).children?.forEach(child => this.deserializeNode(child));\n\t\t\t\tbreak;\n\t\t\tcase 'DomStructuralDirectiveNode':\n\t\t\t\tinherit(node, DomStructuralDirectiveNode);\n\t\t\t\tthis.deserializeNode((node as DomStructuralDirectiveNode).node);\n\t\t\t\tbreak;\n\t\t\tcase 'DomAttributeDirectiveNode':\n\t\t\t\tinherit(node, DomAttributeDirectiveNode);\n\t\t\t\tthis.deserializeBaseNode(node as DomAttributeDirectiveNode);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn node;\n\t}\n\n}\n\nfunction inherit(object: any, type: { new(...args: any[]): {} }) {\n\tobject.__proto__ = type.prototype;\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/common.js';\nimport {\n\tDomElementNode, CommentNode, parseTextChild,\n\tTextContent, LiveTextContent, DomFragmentNode,\n\tDomStructuralDirectiveNode, DomNode, DomChild,\n\tElementAttribute, Attribute, DomAttributeDirectiveNode,\n\tBaseNode, LiveAttribute\n} from '../ast/dom.js';\nimport { directiveRegistry } from '../directives/register-directive.js';\n\ntype Token = (token: string) => Token;\n\ntype ChildNode = DomElementNode | CommentNode | string;\n\nexport class EscapeHTMLCharacter {\n\tstatic ESCAPE_MAP: { [key: string]: string } = {\n\t\t'&amp;': '&',\n\t\t'&lt;': '<',\n\t\t'&gt;': '>',\n\t\t'&quot;': '\"',\n\t\t'&#x27;': \"'\",\n\t\t'&#x60;': '`'\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 NodeParserHelper {\n\n\tprotected checkNode(node: DomElementNode): DomElementNode | DomStructuralDirectiveNode {\n\t\tconst attributes = node.attributes;\n\t\tif (attributes) {\n\t\t\tlet temp: ElementAttribute<string, any> | ElementAttribute<string, any>[] | undefined;\n\n\t\t\ttemp = attributes.find(attr => attr.name === 'is');\n\t\t\tif (temp) {\n\t\t\t\tattributes.splice(attributes.indexOf(temp), 1);\n\t\t\t\tnode.is = temp.value as string;\n\t\t\t}\n\t\t\ttemp = 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?.length) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tattributes.splice(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 = attributes.filter(attr => attr.name.startsWith('on'));\n\t\t\tif (temp?.length) {\n\t\t\t\ttemp.forEach(templateAttrs => {\n\t\t\t\t\tattributes.splice(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}\n\n\t\tconst directiveNames = this.extractDirectiveNames(node);\n\t\tlet sdName: string | undefined;\n\t\tif (directiveNames.length) {\n\t\t\tconst directives: DomAttributeDirectiveNode[] = [];\n\t\t\tdirectiveNames.forEach(attributeName => {\n\t\t\t\tif (attributeName.startsWith('*')) {\n\t\t\t\t\tif (sdName) {\n\t\t\t\t\t\tconsole.error(`Only one Structural Directive is allowed on an element [${sdName}, ${attributeName}]`);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsdName = attributeName;\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst directive = new DomAttributeDirectiveNode(attributeName);\n\t\t\t\tif (directiveRegistry.get(attributeName)!.hasAttributes()) {\n\t\t\t\t\tthis.extractDirectiveAttributesFromNode(attributeName, directive, node);\n\t\t\t\t}\n\t\t\t\tdirectives.push(directive);\n\t\t\t});\n\t\t\tif (directives.length) {\n\t\t\t\tnode.attributeDirectives = directives;\n\t\t\t}\n\t\t}\n\t\tif (sdName) {\n\t\t\t// <div *for [forOf]=\"array\" let-item [trackBy]=\"method\" let-i=\"index\" > {{item}} </div>\n\t\t\t// <div *for=\"let item of array; let i = index; trackBy=method;\" > {{item}} </div>\n\t\t\t// <template #refName *if=\"isActive; else disabled\" > ... </template>\n\t\t\t// <template #disabled > ... </template>\n\n\t\t\tconst temp = node.attributes!.filter(attr => attr.name == sdName)[0];\n\t\t\tnode.attributes!.splice(node.attributes!.indexOf(temp), 1);\n\t\t\tconst isTemplate = node.tagName === 'template';\n\n\t\t\tconst directiveNode = isTemplate ? new DomFragmentNode(node.children) : node;\n\t\t\tconst directive = (typeof temp?.value === 'boolean')\n\t\t\t\t? new DomStructuralDirectiveNode(temp.name, directiveNode)\n\t\t\t\t: new DomStructuralDirectiveNode(temp.name, directiveNode, String(temp.value));\n\t\t\tconst directiveName = temp.name.substring(1);\n\t\t\tif (isTemplate) {\n\t\t\t\tdirective.inputs = node.inputs;\n\t\t\t\tdirective.outputs = node.outputs;\n\t\t\t\tdirective.attributes = node.attributes;\n\t\t\t\tdirective.templateAttrs = node.templateAttrs;\n\t\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\t} else if (directiveRegistry.hasAttributes(directiveName)) {\n\t\t\t\tthis.extractDirectiveAttributesFromNode(directiveName, directive, node);\n\t\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\t}\n\t\t\tif (isTemplate && node.templateRefName) {\n\t\t\t\tnode.children = [directive];\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\treturn directive;\n\t\t}\n\n\t\t// <for let-user [of]=\"users\"></for>\n\t\tif (directiveRegistry.has('*' + node.tagName)) {\n\t\t\tconst children = new DomFragmentNode(node.children);\n\t\t\tconst directive = new DomStructuralDirectiveNode('*' + node.tagName, children);\n\t\t\tdirective.inputs = node.inputs;\n\t\t\tdirective.outputs = node.outputs;\n\t\t\tdirective.attributes = node.attributes;\n\t\t\tdirective.templateAttrs = node.templateAttrs;\n\t\t\tdirective.attributeDirectives = node.attributeDirectives;\n\t\t\treturn directive;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\n\tprotected extractDirectiveAttributesFromNode(directiveName: string, directive: BaseNode, node: DomElementNode): void {\n\t\tconst attributes = directiveRegistry.getAttributes(directiveName);\n\t\tif (!attributes) {\n\t\t\treturn;\n\t\t}\n\t\tconst filterByAttrName = createFilterByAttrName(attributes);\n\t\tdirective.attributes = node.attributes?.filter(filterByAttrName);\n\t\tdirective.inputs = node.inputs?.filter(filterByAttrName);\n\t\tdirective.outputs = node.outputs?.filter(filterByAttrName);\n\t\tdirective.twoWayBinding = node.twoWayBinding?.filter(filterByAttrName);\n\t\tdirective.templateAttrs = node.templateAttrs?.filter(filterByAttrName);\n\n\t\tnode.inputs && directive.inputs?.forEach(createArrayCleaner(node.inputs));\n\t\tnode.outputs && directive.outputs?.forEach(createArrayCleaner(node.outputs));\n\t\tnode.twoWayBinding && directive.twoWayBinding?.forEach(createArrayCleaner(node.twoWayBinding));\n\t\tnode.attributes && directive.attributes?.forEach(createArrayCleaner(node.attributes));\n\t\tnode.templateAttrs && directive.templateAttrs?.forEach(createArrayCleaner(node.templateAttrs));\n\t}\n\tprotected extractDirectiveNames(node: BaseNode): string[] {\n\t\tconst names: string[] = [];\n\t\tif (node.attributes?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.attributes).filter(name => name.startsWith('*')));\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.inputs));\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.twoWayBinding));\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.templateAttrs));\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnames.push(...this.getAttributeDirectives(node.outputs));\n\t\t}\n\t\treturn [...new Set(names)];\n\t}\n\tprotected getAttributeDirectives(attributes: Attribute<string, any>[]): string[] {\n\t\treturn directiveRegistry.filterDirectives(attributes.map(attr => attr.name.split('.')[0]));\n\t}\n}\n\nexport class NodeParser extends NodeParserHelper {\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[];\n\tprivate stackTrace: ChildNode[];\n\n\tprivate get currentNode(): DomElementNode {\n\t\treturn this.stackTrace[this.stackTrace.length - 1] as DomElementNode;\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, [${(this.stackTrace as DomElementNode[]).map(dom => dom.tagName).join(', ')}], 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\telse if (token === '>' && this.commentCloseCount === 0) {\n\t\t\tconst temp = this.tempText.toLowerCase();\n\t\t\tif ('doctype html' === temp) {\n\t\t\t\tthis.tempText = '';\n\t\t\t\treturn this.parseText;\n\t\t\t}\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 new Error(`Wrong closed tag at char ${this.index}, tag name: ${this.currentNode.tagName}`);\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\tthrow new SyntaxError('Error while parsing open tag');\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}\n\nfunction createFilterByAttrName(attributes: string[]) {\n\treturn (attr: Attribute<string, any>) => attributes.includes(attr.name.split('.')[0]);\n}\n\nfunction createArrayCleaner(attributes: Attribute<string, any>[]) {\n\treturn (attr: Attribute<string, any>) => attributes.splice(attributes.indexOf(attr), 1);\n}\n\nexport class HTMLParser {\n\n\tnodeParser = new NodeParser();\n\n\tparse(html: string): DomChild[] {\n\t\treturn this.nodeParser.parse(html);\n\t}\n\n\ttoDomRootNode(html: string): DomNode {\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[]) {\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\tdeserializeAttributes(attribute: Attribute<any, any>) {\n\t\tconst type = (attribute as Attribute<any, any> & { type: string }).type;\n\t\tswitch (type) {\n\t\t\tcase 'Attribute':\n\t\t\t\tinherit(attribute, Attribute);\n\t\t\t\tbreak;\n\t\t\tcase 'ElementAttribute':\n\t\t\t\tinherit(attribute, ElementAttribute);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveAttribute':\n\t\t\t\tinherit(attribute, LiveAttribute);\n\t\t\t\tbreak;\n\t\t\tcase 'TextContent':\n\t\t\t\tinherit(attribute, TextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveTextContent':\n\t\t\t\tinherit(attribute, LiveTextContent);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdeserializeBaseNode(node: BaseNode) {\n\t\tnode.attributes?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.inputs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.outputs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.templateAttrs?.forEach(attr => this.deserializeAttributes(attr));\n\t\tnode.attributeDirectives?.forEach(attr => this.deserializeNode(attr as any));\n\t}\n\n\tdeserializeNode(node: DomNode) {\n\t\tconst type = (node as DomNode & { type: string }).type;\n\t\tswitch (type) {\n\t\t\tcase 'TextContent':\n\t\t\t\tinherit(node, TextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'LiveTextContent':\n\t\t\t\tinherit(node, LiveTextContent);\n\t\t\t\tbreak;\n\t\t\tcase 'CommentNode':\n\t\t\t\tinherit(node, CommentNode);\n\t\t\t\tbreak;\n\t\t\tcase 'DomFragmentNode':\n\t\t\t\tinherit(node, DomFragmentNode);\n\t\t\t\t(node as DomFragmentNode).children?.forEach(child => this.deserializeNode(child));\n\t\t\t\tbreak;\n\t\t\tcase 'DomElementNode':\n\t\t\t\tinherit(node, DomElementNode);\n\t\t\t\tif ((node as DomElementNode).templateRefName) {\n\t\t\t\t\tthis.deserializeAttributes((node as DomElementNode).templateRefName!);\n\t\t\t\t}\n\t\t\t\tthis.deserializeBaseNode(node as DomElementNode);\n\t\t\t\t(node as DomElementNode).children?.forEach(child => this.deserializeNode(child));\n\t\t\t\tbreak;\n\t\t\tcase 'DomStructuralDirectiveNode':\n\t\t\t\tinherit(node, DomStructuralDirectiveNode);\n\t\t\t\tthis.deserializeNode((node as DomStructuralDirectiveNode).node);\n\t\t\t\tbreak;\n\t\t\tcase 'DomAttributeDirectiveNode':\n\t\t\t\tinherit(node, DomAttributeDirectiveNode);\n\t\t\t\tthis.deserializeBaseNode(node as DomAttributeDirectiveNode);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn node;\n\t}\n\n}\n\nfunction inherit(object: any, type: { new(...args: any[]): {} }) {\n\tobject.__proto__ = type.prototype;\n}\n\nexport const htmlParser = new HTMLParser();\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibyar/elements",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Ibyar elements, hold info about HTMLElements class, attributes and tag name",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ibyar/aurora/tree/dev/packages/elements",
@@ -35,7 +35,7 @@
35
35
  "access": "public"
36
36
  },
37
37
  "devDependencies": {
38
- "typescript": "^5.0.4"
38
+ "typescript": "^5.3.3"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsc --build --verbose"
@@ -50,5 +50,5 @@
50
50
  "a11y",
51
51
  "front-end"
52
52
  ],
53
- "gitHead": "f7c358a00514b4fad30772373e34ea6b6a7a8972"
53
+ "gitHead": "85a94555492c9cf4c4a985f5972ebd5009708775"
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template-parser.js","sourceRoot":"","sources":["../../../src/elements/template/template-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACa,WAAW,EAC9B,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,WAAW,EAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,OAAO,cAAc;IAE1B,KAAK,CAAC,QAA6B;QAClC,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,OAAO,IAAI,eAAe,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClD;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACpD,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAuB,CAAC,CAAC;YAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACxB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;aACjC;iBAAM;gBACN,OAAO,IAAI,CAAC;aACZ;SACD;aAAM,gDAAgD,CAAC;YACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;iBACtE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;iBACvC,OAAO,CAAC,UAAU,MAAM;gBACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1B,OAAO,MAAM,CAAC;iBACd;qBAAM;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChB;YACF,CAAC,CAAC,CAAC;YACJ,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;SACrC;IACF,CAAC;IAED,eAAe,CAAC,KAAgB;QAC/B,IAAI,KAAK,YAAY,IAAI,EAAE;YAC1B,OAAO,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;SAC/C;aAAM,IAAI,KAAK,YAAY,OAAO,EAAE;YACpC,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;SAChD;aAAM;YACN;;;eAGG;YACH,MAAM,OAAO,GAAgB,KAAoB,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,CAAC;gBAChD,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACzD;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;iBAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC3C;qBACI;oBACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACrB;YACF,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;IAED,mBAAmB,CAAI,QAAgD;QACtE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YACjC,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,QAAQ,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,QAAQ,YAAY,mBAAmB,EAAE;YACnD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAChC;QACD,OAAO,CAAC,CAAC,KAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACD;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC","sourcesContent":["import {\n\tDomChild, DomNode, CommentNode,\n\tDomElementNode, DomFragmentNode,\n\tparseTextChild, TextContent\n} from '../ast/dom.js';\n\nimport { NodeFactory } from '../ast/factory.js';\n\n\nexport class TemplateParser {\n\n\tparse(template: HTMLTemplateElement): DomNode {\n\t\tif (template.content.childNodes.length == 0) {\n\t\t\treturn new DomFragmentNode([new TextContent('')]);\n\t\t} else if (template.content.childNodes.length === 1) {\n\t\t\tlet node = this.createComponent(template.content.firstChild as ChildNode);\n\t\t\tif (Array.isArray(node)) {\n\t\t\t\treturn new DomFragmentNode(node);\n\t\t\t} else {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t} else /* if (template.content.childNodes.length > 1)*/ {\n\t\t\tconst children = Array.prototype.slice.call(template.content.childNodes)\n\t\t\t\t.map(item => this.createComponent(item))\n\t\t\t\t.flatMap(function (toFlat): DomChild[] {\n\t\t\t\t\tif (Array.isArray(toFlat)) {\n\t\t\t\t\t\treturn toFlat;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [toFlat];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\treturn new DomFragmentNode(children);\n\t\t}\n\t}\n\n\tcreateComponent(child: ChildNode) {\n\t\tif (child instanceof Text) {\n\t\t\treturn parseTextChild(child.textContent || '');\n\t\t} else if (child instanceof Comment) {\n\t\t\treturn new CommentNode(child.textContent || '');\n\t\t} else {\n\t\t\t/**\n\t\t\t * can't detect directives in template, as '*' not allowed as qualified attribute name\n\t\t\t * also all attributes names will be 'lower case'\n\t\t\t */\n\t\t\tconst element: HTMLElement = child as HTMLElement;\n\t\t\tconst node = new DomElementNode(element.tagName.toLowerCase(), element.attributes.getNamedItem('is')?.value);\n\t\t\tfor (let i = 0; i < element.attributes.length; i++) {\n\t\t\t\tconst attr = element.attributes.item(i) as Attr;\n\t\t\t\tNodeFactory.handelAttribute(node, attr.name, attr.value);\n\t\t\t}\n\t\t\tconst children = Array.prototype.slice.call(element.childNodes)\n\t\t\t\t.map(item => this.createComponent(item));\n\t\t\tchildren.forEach(child => {\n\t\t\t\tif (Array.isArray(child)) {\n\t\t\t\t\tchild.forEach(text => node.addChild(text));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.addChild(child);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn node;\n\t\t}\n\t}\n\n\ttoDomRenderRootNode<T>(template: DomNode | HTMLTemplateElement | string) {\n\t\tif (typeof template === 'string') {\n\t\t\tlet temp = document.createElement('template');\n\t\t\ttemp.innerHTML = template;\n\t\t\ttemplate = temp;\n\t\t} else if (template instanceof HTMLTemplateElement) {\n\t\t\ttemplate = this.parse(template);\n\t\t}\n\t\treturn ((model: T) => template);\n\t}\n}\n\nexport const templateParser = new TemplateParser();\n\n"]}
1
+ {"version":3,"file":"template-parser.js","sourceRoot":"","sources":["../../../src/elements/template/template-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tDomChild, DomNode, CommentNode,\n\tDomElementNode, DomFragmentNode,\n\tparseTextChild, TextContent\n} from '../ast/dom.js';\n\nimport { NodeFactory } from '../ast/factory.js';\n\n\nexport class TemplateParser {\n\n\tparse(template: HTMLTemplateElement): DomNode {\n\t\tif (template.content.childNodes.length == 0) {\n\t\t\treturn new DomFragmentNode([new TextContent('')]);\n\t\t} else if (template.content.childNodes.length === 1) {\n\t\t\tlet node = this.createComponent(template.content.firstChild as ChildNode);\n\t\t\tif (Array.isArray(node)) {\n\t\t\t\treturn new DomFragmentNode(node);\n\t\t\t} else {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t} else /* if (template.content.childNodes.length > 1)*/ {\n\t\t\tconst children = Array.prototype.slice.call(template.content.childNodes)\n\t\t\t\t.map(item => this.createComponent(item))\n\t\t\t\t.flatMap(function (toFlat): DomChild[] {\n\t\t\t\t\tif (Array.isArray(toFlat)) {\n\t\t\t\t\t\treturn toFlat;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [toFlat];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\treturn new DomFragmentNode(children);\n\t\t}\n\t}\n\n\tcreateComponent(child: ChildNode) {\n\t\tif (child instanceof Text) {\n\t\t\treturn parseTextChild(child.textContent || '');\n\t\t} else if (child instanceof Comment) {\n\t\t\treturn new CommentNode(child.textContent || '');\n\t\t} else {\n\t\t\t/**\n\t\t\t * can't detect directives in template, as '*' not allowed as qualified attribute name\n\t\t\t * also all attributes names will be 'lower case'\n\t\t\t */\n\t\t\tconst element: HTMLElement = child as HTMLElement;\n\t\t\tconst node = new DomElementNode(element.tagName.toLowerCase(), element.attributes.getNamedItem('is')?.value);\n\t\t\tfor (let i = 0; i < element.attributes.length; i++) {\n\t\t\t\tconst attr = element.attributes.item(i) as Attr;\n\t\t\t\tNodeFactory.handelAttribute(node, attr.name, attr.value);\n\t\t\t}\n\t\t\tconst children = Array.prototype.slice.call(element.childNodes)\n\t\t\t\t.map(item => this.createComponent(item));\n\t\t\tchildren.forEach(child => {\n\t\t\t\tif (Array.isArray(child)) {\n\t\t\t\t\tchild.forEach(text => node.addChild(text));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.addChild(child);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn node;\n\t\t}\n\t}\n\n\ttoDomRenderRootNode<T>(template: DomNode | HTMLTemplateElement | string) {\n\t\tif (typeof template === 'string') {\n\t\t\tlet temp = document.createElement('template');\n\t\t\ttemp.innerHTML = template;\n\t\t\ttemplate = temp;\n\t\t} else if (template instanceof HTMLTemplateElement) {\n\t\t\ttemplate = this.parse(template);\n\t\t}\n\t\treturn ((model: T) => template);\n\t}\n}\n\nexport const templateParser = new TemplateParser();\n\n"]}