UNPKG

8.24 kBSource Map (JSON)View Raw
1{"version":3,"file":"DocHtmlStartTag.js","sourceRoot":"","sources":["../../src/nodes/DocHtmlStartTag.ts"],"names":[],"mappings":"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","sourcesContent":["import { DocNode, DocNodeKind, IDocNodeParameters, IDocNodeParsedParameters } from './DocNode';\r\nimport { DocHtmlAttribute } from './DocHtmlAttribute';\r\nimport { TokenSequence } from '../parser/TokenSequence';\r\nimport { DocExcerpt, ExcerptKind } from './DocExcerpt';\r\nimport { StringBuilder } from '../emitters/StringBuilder';\r\n\r\n/**\r\n * Constructor parameters for {@link DocHtmlStartTag}.\r\n */\r\nexport interface IDocHtmlStartTagParameters extends IDocNodeParameters {\r\n name: string;\r\n spacingAfterName?: string;\r\n\r\n htmlAttributes?: DocHtmlAttribute[];\r\n selfClosingTag?: boolean;\r\n}\r\n\r\n/**\r\n * Constructor parameters for {@link DocHtmlStartTag}.\r\n */\r\nexport interface IDocHtmlStartTagParsedParameters extends IDocNodeParsedParameters {\r\n openingDelimiterExcerpt: TokenSequence;\r\n\r\n nameExcerpt: TokenSequence;\r\n spacingAfterNameExcerpt?: TokenSequence;\r\n\r\n htmlAttributes: DocHtmlAttribute[];\r\n selfClosingTag: boolean;\r\n\r\n closingDelimiterExcerpt: TokenSequence;\r\n}\r\n\r\n/**\r\n * Represents an HTML start tag, which may or may not be self-closing.\r\n *\r\n * Example: `<a href=\"#\" />`\r\n */\r\nexport class DocHtmlStartTag extends DocNode {\r\n // The \"<\" delimiter\r\n private readonly _openingDelimiterExcerpt: DocExcerpt | undefined;\r\n\r\n // The element name\r\n private _name: string | undefined;\r\n private readonly _nameExcerpt: DocExcerpt | undefined;\r\n\r\n private _spacingAfterName: string | undefined;\r\n private readonly _spacingAfterNameExcerpt: DocExcerpt | undefined;\r\n\r\n private readonly _htmlAttributes: DocHtmlAttribute[];\r\n\r\n private readonly _selfClosingTag: boolean;\r\n\r\n // The \">\" or \"/>\" delimiter\r\n private readonly _closingDelimiterExcerpt: DocExcerpt | undefined;\r\n\r\n /**\r\n * Don't call this directly. Instead use {@link TSDocParser}\r\n * @internal\r\n */\r\n public constructor(parameters: IDocHtmlStartTagParameters | IDocHtmlStartTagParsedParameters) {\r\n super(parameters);\r\n\r\n if (DocNode.isParsedParameters(parameters)) {\r\n this._openingDelimiterExcerpt = new DocExcerpt({\r\n configuration: this.configuration,\r\n excerptKind: ExcerptKind.HtmlStartTag_OpeningDelimiter,\r\n content: parameters.openingDelimiterExcerpt\r\n });\r\n\r\n this._nameExcerpt = new DocExcerpt({\r\n configuration: this.configuration,\r\n excerptKind: ExcerptKind.HtmlStartTag_Name,\r\n content: parameters.nameExcerpt\r\n });\r\n if (parameters.spacingAfterNameExcerpt) {\r\n this._spacingAfterNameExcerpt = new DocExcerpt({\r\n configuration: this.configuration,\r\n excerptKind: ExcerptKind.Spacing,\r\n content: parameters.spacingAfterNameExcerpt\r\n });\r\n }\r\n\r\n this._closingDelimiterExcerpt = new DocExcerpt({\r\n configuration: this.configuration,\r\n excerptKind: ExcerptKind.HtmlStartTag_ClosingDelimiter,\r\n content: parameters.closingDelimiterExcerpt\r\n });\r\n } else {\r\n this._name = parameters.name;\r\n this._spacingAfterName = parameters.spacingAfterName;\r\n }\r\n\r\n this._htmlAttributes = [];\r\n if (parameters.htmlAttributes) {\r\n this._htmlAttributes.push(...parameters.htmlAttributes);\r\n }\r\n\r\n this._selfClosingTag = !!parameters.selfClosingTag;\r\n }\r\n\r\n /** @override */\r\n public get kind(): DocNodeKind | string {\r\n return DocNodeKind.HtmlStartTag;\r\n }\r\n\r\n /**\r\n * The HTML element name.\r\n */\r\n public get name(): string {\r\n if (this._name === undefined) {\r\n this._name = this._nameExcerpt!.content.toString();\r\n }\r\n return this._name;\r\n }\r\n\r\n /**\r\n * The HTML attributes belonging to this HTML element.\r\n */\r\n public get htmlAttributes(): ReadonlyArray<DocHtmlAttribute> {\r\n return this._htmlAttributes;\r\n }\r\n\r\n /**\r\n * If true, then the HTML tag ends with `/>` instead of `>`.\r\n */\r\n public get selfClosingTag(): boolean {\r\n return this._selfClosingTag;\r\n }\r\n\r\n /**\r\n * Explicit whitespace that a renderer should insert after the HTML element name.\r\n * If undefined, then the renderer can use a formatting rule to generate appropriate spacing.\r\n */\r\n public get spacingAfterName(): string | undefined {\r\n if (this._spacingAfterName === undefined) {\r\n if (this._spacingAfterNameExcerpt !== undefined) {\r\n this._spacingAfterName = this._spacingAfterNameExcerpt.content.toString();\r\n }\r\n }\r\n\r\n return this._spacingAfterName;\r\n }\r\n\r\n /**\r\n * Generates the HTML for this tag.\r\n */\r\n public emitAsHtml(): string {\r\n // NOTE: Here we're assuming that the TSDoc representation for a tag is also a valid HTML expression.\r\n const stringBuilder: StringBuilder = new StringBuilder();\r\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\r\n const emitter: TSDocEmitter = new TSDocEmitter();\r\n emitter.renderHtmlTag(stringBuilder, this);\r\n return stringBuilder.toString();\r\n }\r\n\r\n /** @override */\r\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\r\n return [\r\n this._openingDelimiterExcerpt,\r\n this._nameExcerpt,\r\n this._spacingAfterNameExcerpt,\r\n ...this._htmlAttributes,\r\n this._closingDelimiterExcerpt\r\n ];\r\n }\r\n}\r\n\r\n// Circular reference\r\nimport { TSDocEmitter } from '../emitters/TSDocEmitter';\r\n"]}
\No newline at end of file