{"version":3,"file":"DocNodeContainer.js","sourceRoot":"","sources":["../../src/nodes/DocNodeContainer.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,uCAA4F;AAY5F;;;GAGG;AACH,MAAsB,gBAAiB,SAAQ,iBAAO;IAGpD;;;OAGG;IACH,YACE,UAA2E,EAC3E,UAAmC;QAEnC,KAAK,CAAC,UAAU,CAAC,CAAC;QAVH,WAAM,GAAc,EAAE,CAAC;QAYtC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,OAAgB;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,IAAI,UAAU;gBAC5D,2BAA2B,OAAO,CAAC,IAAI,EAAE,CAC5C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAgC;QACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,CAAC,MAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AA3DD,4CA2DC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { DocNode, type IDocNodeParameters, type IDocNodeParsedParameters } from './DocNode';\r\n\r\n/**\r\n * Constructor parameters for {@link DocNodeContainer}.\r\n */\r\nexport interface IDocNodeContainerParameters extends IDocNodeParameters {}\r\n\r\n/**\r\n * Constructor parameters for {@link DocNodeContainer}.\r\n */\r\nexport interface IDocNodeContainerParsedParameters extends IDocNodeParsedParameters {}\r\n\r\n/**\r\n * DocNodeContainer is the base class for DocNode classes that allow arbitrary child nodes to be added by the consumer.\r\n * The child classes are {@link DocParagraph} and {@link DocSection}.\r\n */\r\nexport abstract class DocNodeContainer extends DocNode {\r\n private readonly _nodes: DocNode[] = [];\r\n\r\n /**\r\n * Don't call this directly. Instead use {@link TSDocParser}\r\n * @internal\r\n */\r\n public constructor(\r\n parameters: IDocNodeContainerParameters | IDocNodeContainerParsedParameters,\r\n childNodes?: ReadonlyArray\r\n ) {\r\n super(parameters);\r\n\r\n if (childNodes !== undefined && childNodes.length > 0) {\r\n this.appendNodes(childNodes);\r\n }\r\n }\r\n\r\n /**\r\n * The nodes that were added to this container.\r\n */\r\n public get nodes(): ReadonlyArray {\r\n return this._nodes;\r\n }\r\n\r\n /**\r\n * Append a node to the container.\r\n */\r\n public appendNode(docNode: DocNode): void {\r\n if (!this.configuration.docNodeManager.isAllowedChild(this.kind, docNode.kind)) {\r\n throw new Error(\r\n `The TSDocConfiguration does not allow a ${this.kind} node to` +\r\n ` contain a node of type ${docNode.kind}`\r\n );\r\n }\r\n\r\n this._nodes!.push(docNode);\r\n }\r\n\r\n /**\r\n * Append nodes to the container.\r\n */\r\n public appendNodes(docNodes: ReadonlyArray): void {\r\n for (const docNode of docNodes) {\r\n this.appendNode(docNode);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all nodes from the container.\r\n */\r\n public clearNodes(): void {\r\n this._nodes!.length = 0;\r\n }\r\n\r\n /** @override */\r\n protected onGetChildNodes(): ReadonlyArray {\r\n return this._nodes;\r\n }\r\n}\r\n"]}