ardo 2.7.1 → 2.7.2

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.
@@ -359,9 +359,9 @@ var TypeDocGenerator = class {
359
359
  return `${parent}/${basename}`;
360
360
  }
361
361
  if (basename === "index") {
362
- const dir = path.dirname(path.resolve(filePath));
363
- const packageName = this.packageNameCache.get(dir);
364
- if (packageName) return packageName;
362
+ for (const packageName of this.packageNameCache.values()) {
363
+ if (packageName) return packageName;
364
+ }
365
365
  }
366
366
  return basename;
367
367
  }
@@ -1032,4 +1032,4 @@ export {
1032
1032
  TypeDocGenerator,
1033
1033
  generateApiDocs
1034
1034
  };
1035
- //# sourceMappingURL=chunk-U6IRSKHU.js.map
1035
+ //# sourceMappingURL=chunk-CYZLI4AU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typedoc/generator.ts"],"sourcesContent":["import {\n Application,\n TSConfigReader,\n TypeDocReader,\n type ProjectReflection,\n ReflectionKind,\n type DeclarationReflection,\n type SignatureReflection,\n type TypeParameterReflection,\n} from \"typedoc\"\nimport path from \"path\"\nimport fs from \"fs/promises\"\nimport { readPackageUp } from \"read-package-up\"\nimport type { TypeDocConfig, GeneratedApiDoc } from \"./types\"\n\nexport class TypeDocGenerator {\n private config: TypeDocConfig\n private app: Application | undefined\n private project: ProjectReflection | undefined\n private basePath: string\n private packageNameCache = new Map<string, string | undefined>()\n\n constructor(config: TypeDocConfig) {\n this.config = {\n out: \"api\",\n excludeExternals: true,\n excludePrivate: true,\n excludeProtected: false,\n excludeInternal: true,\n sort: [\"source-order\"],\n sidebar: {\n title: \"API Reference\",\n position: 100,\n collapsed: false,\n },\n markdown: {\n breadcrumbs: true,\n hierarchy: true,\n sourceLinks: true,\n codeBlocks: true,\n },\n ...config,\n }\n // Use the output directory as the base path for links\n this.basePath = \"/\" + this.config.out!\n }\n\n async generate(outputDir: string): Promise<GeneratedApiDoc[]> {\n // Pre-populate package name cache for all entry points\n await Promise.all(this.config.entryPoints.map((ep) => this.resolvePackageName(ep)))\n\n const typedocOptions: Record<string, unknown> = {\n entryPoints: this.config.entryPoints,\n tsconfig: this.config.tsconfig,\n excludeExternals: this.config.excludeExternals,\n excludePrivate: this.config.excludePrivate,\n excludeProtected: this.config.excludeProtected,\n excludeInternal: this.config.excludeInternal,\n sort: this.config.sort,\n }\n\n // Only pass array/string options when explicitly set to avoid\n // TypeDoc errors like \"option must be set to an array of strings\"\n if (this.config.exclude) typedocOptions.exclude = this.config.exclude\n if (this.config.categoryOrder) typedocOptions.categoryOrder = this.config.categoryOrder\n if (this.config.groupOrder) typedocOptions.groupOrder = this.config.groupOrder\n if (this.config.plugin) typedocOptions.plugin = this.config.plugin\n if (this.config.readme) typedocOptions.readme = this.config.readme\n\n this.app = await Application.bootstrapWithPlugins(typedocOptions, [\n new TSConfigReader(),\n new TypeDocReader(),\n ])\n\n this.project = await this.app.convert()\n\n if (!this.project) {\n throw new Error(\"TypeDoc conversion failed\")\n }\n\n const docs = this.generateMarkdownDocs()\n const apiDir = path.join(outputDir, this.config.out!)\n\n await fs.mkdir(apiDir, { recursive: true })\n\n for (const doc of docs) {\n const filePath = path.join(apiDir, doc.path)\n const dir = path.dirname(filePath)\n await fs.mkdir(dir, { recursive: true })\n\n const frontmatterLines = [\n \"---\",\n `title: ${doc.frontmatter.title}`,\n doc.frontmatter.description ? `description: ${doc.frontmatter.description}` : null,\n doc.frontmatter.sidebar_position !== undefined\n ? `sidebar_position: ${doc.frontmatter.sidebar_position}`\n : null,\n doc.frontmatter.sidebar === false ? `sidebar: false` : null,\n \"---\",\n ].filter((line): line is string => line !== null)\n\n const frontmatter = frontmatterLines.join(\"\\n\") + \"\\n\\n\"\n\n await fs.writeFile(filePath, frontmatter + doc.content)\n }\n\n return docs\n }\n\n private generateMarkdownDocs(): GeneratedApiDoc[] {\n if (!this.project) return []\n\n const docs: GeneratedApiDoc[] = []\n\n // Generate index page\n docs.push(this.generateIndexPage())\n\n const children = this.project.children || []\n\n // Group functions and type aliases by source file\n // React components (PascalCase) get their own pages\n const functionsByFile = new Map<string, DeclarationReflection[]>()\n const typesByFile = new Map<string, DeclarationReflection[]>()\n const componentItems: DeclarationReflection[] = []\n const standaloneItems: DeclarationReflection[] = []\n\n for (const child of children) {\n const sourceFile = child.sources?.[0]?.fileName\n\n if (child.kind === ReflectionKind.Function && sourceFile) {\n // React components are PascalCase and get individual pages\n if (this.isReactComponent(child.name)) {\n componentItems.push(child)\n } else {\n const existing = functionsByFile.get(sourceFile) || []\n existing.push(child)\n functionsByFile.set(sourceFile, existing)\n }\n } else if (child.kind === ReflectionKind.TypeAlias && sourceFile) {\n const existing = typesByFile.get(sourceFile) || []\n existing.push(child)\n typesByFile.set(sourceFile, existing)\n } else {\n standaloneItems.push(child)\n }\n }\n\n // Generate grouped pages for functions (by source file)\n for (const [sourceFile, functions] of functionsByFile) {\n docs.push(this.generateGroupedFunctionsPage(sourceFile, functions))\n }\n\n // Generate grouped pages for types (by source file)\n for (const [sourceFile, types] of typesByFile) {\n docs.push(this.generateGroupedTypesPage(sourceFile, types))\n }\n\n // Generate individual pages for React components\n // Sort alphabetically for consistent prev/next navigation\n const sortedComponents = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n for (let i = 0; i < sortedComponents.length; i++) {\n const prev = i > 0 ? sortedComponents[i - 1] : null\n const next = i < sortedComponents.length - 1 ? sortedComponents[i + 1] : null\n docs.push(this.generateComponentPage(sortedComponents[i], prev, next))\n }\n\n // Group standalone items by kind for prev/next navigation within each group\n const itemsByKind = new Map<number, DeclarationReflection[]>()\n for (const child of standaloneItems) {\n const kind = child.kind\n const existing = itemsByKind.get(kind) || []\n existing.push(child)\n itemsByKind.set(kind, existing)\n }\n\n // Generate individual pages for classes, interfaces, enums, etc. with prev/next within group\n for (const [, items] of itemsByKind) {\n const sortedItems = [...items].sort((a, b) => a.name.localeCompare(b.name))\n for (let i = 0; i < sortedItems.length; i++) {\n const prev = i > 0 ? sortedItems[i - 1] : null\n const next = i < sortedItems.length - 1 ? sortedItems[i + 1] : null\n docs.push(...this.generateReflectionDocs(sortedItems[i], \"\", prev, next))\n }\n }\n\n // Generate category index pages for non-empty categories\n docs.push(\n ...this.generateCategoryIndexPages(\n docs,\n componentItems,\n functionsByFile,\n typesByFile,\n standaloneItems\n )\n )\n\n return docs\n }\n\n private generateCategoryIndexPages(\n docs: GeneratedApiDoc[],\n componentItems: DeclarationReflection[],\n functionsByFile: Map<string, DeclarationReflection[]>,\n typesByFile: Map<string, DeclarationReflection[]>,\n standaloneItems: DeclarationReflection[]\n ): GeneratedApiDoc[] {\n const indexPages: GeneratedApiDoc[] = []\n\n // Components index\n if (componentItems.length > 0) {\n const sorted = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Components`,\n \"\",\n ...sorted.map((c) => {\n const desc = c.comment?.summary ? ` - ${this.renderCommentShort(c.comment.summary)}` : \"\"\n return `- [${c.name}](${this.buildLink(\"components\", this.getSlug(c.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"components/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Components\", sidebar: false },\n })\n }\n\n // Functions index\n if (functionsByFile.size > 0) {\n const sortedModules = [...functionsByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n const content = [\n `# Functions`,\n \"\",\n ...sortedModules.map(([sourceFile, functions]) => {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const funcNames = functions\n .map((f) => f.name)\n .sort()\n .join(\", \")\n return `- [${moduleName}](${this.buildLink(\"functions\", slug)}) - ${funcNames}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"functions/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Functions\", sidebar: false },\n })\n }\n\n // Group standalone items by kind for category indexes\n const interfaces = standaloneItems.filter((c) => c.kind === ReflectionKind.Interface)\n const classes = standaloneItems.filter((c) => c.kind === ReflectionKind.Class)\n\n // Interfaces index\n if (interfaces.length > 0) {\n const sorted = [...interfaces].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Interfaces`,\n \"\",\n ...sorted.map((item) => {\n const desc = item.comment?.summary\n ? ` - ${this.renderCommentShort(item.comment.summary)}`\n : \"\"\n return `- [${item.name}](${this.buildLink(\"interfaces\", this.getSlug(item.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"interfaces/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Interfaces\", sidebar: false },\n })\n }\n\n // Types index\n if (typesByFile.size > 0) {\n const sortedModules = [...typesByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n const content = [\n `# Types`,\n \"\",\n ...sortedModules.map(([sourceFile, types]) => {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const typeNames = types\n .map((t) => t.name)\n .sort()\n .join(\", \")\n return `- [${moduleName}](${this.buildLink(\"types\", slug)}) - ${typeNames}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"types/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Types\", sidebar: false },\n })\n }\n\n // Classes index\n if (classes.length > 0) {\n const sorted = [...classes].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Classes`,\n \"\",\n ...sorted.map((item) => {\n const desc = item.comment?.summary\n ? ` - ${this.renderCommentShort(item.comment.summary)}`\n : \"\"\n return `- [${item.name}](${this.buildLink(\"classes\", this.getSlug(item.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"classes/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Classes\", sidebar: false },\n })\n }\n\n return indexPages\n }\n\n private generateGroupedFunctionsPage(\n sourceFile: string,\n functions: DeclarationReflection[]\n ): GeneratedApiDoc {\n // Extract module name from source file path (e.g., \"src/utils/string.ts\" -> \"string\")\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const content: string[] = []\n\n content.push(`# ${moduleName} Functions`)\n content.push(\"\")\n content.push(`Functions exported from \\`${sourceFile}\\``)\n content.push(\"\")\n\n // Sort functions alphabetically\n const sortedFunctions = [...functions].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const func of sortedFunctions) {\n content.push(`## ${func.name}`)\n content.push(\"\")\n\n // Description\n if (func.comment?.summary) {\n content.push(this.renderComment(func.comment.summary))\n content.push(\"\")\n }\n\n // Signature\n if (func.signatures) {\n for (const sig of func.signatures) {\n content.push(this.renderSignature(sig))\n content.push(\"\")\n }\n }\n\n // Examples\n if (func.comment?.blockTags) {\n const examples = func.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"### Example\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && func.sources?.[0]) {\n const source = func.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n content.push(\"---\")\n content.push(\"\")\n }\n\n return {\n path: `functions/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: `${moduleName} Functions`,\n description: `Functions from ${sourceFile}`,\n },\n }\n }\n\n private generateGroupedTypesPage(\n sourceFile: string,\n types: DeclarationReflection[]\n ): GeneratedApiDoc {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const content: string[] = []\n\n content.push(`# ${moduleName} Types`)\n content.push(\"\")\n content.push(`Type definitions from \\`${sourceFile}\\``)\n content.push(\"\")\n\n // Sort types alphabetically\n const sortedTypes = [...types].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const typeAlias of sortedTypes) {\n content.push(`## ${typeAlias.name}`)\n content.push(\"\")\n\n // Description\n if (typeAlias.comment?.summary) {\n content.push(this.renderComment(typeAlias.comment.summary))\n content.push(\"\")\n }\n\n // Type definition\n if (typeAlias.type) {\n content.push(\"```typescript\")\n content.push(`type ${typeAlias.name} = ${typeAlias.type.toString()}`)\n content.push(\"```\")\n content.push(\"\")\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && typeAlias.sources?.[0]) {\n const source = typeAlias.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n content.push(\"---\")\n content.push(\"\")\n }\n\n return {\n path: `types/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: `${moduleName} Types`,\n description: `Type definitions from ${sourceFile}`,\n },\n }\n }\n\n private async resolvePackageName(filePath: string): Promise<string | undefined> {\n const dir = path.dirname(path.resolve(filePath))\n if (this.packageNameCache.has(dir)) {\n return this.packageNameCache.get(dir)\n }\n\n const result = await readPackageUp({ cwd: dir })\n const name = result?.packageJson.name\n const resolved = name ? name.replace(/^@[^/]+\\//, \"\") : undefined\n this.packageNameCache.set(dir, resolved)\n return resolved\n }\n\n private getModuleNameFromPath(filePath: string): string {\n // Include parent directory to avoid naming conflicts\n // \"src/utils/string.ts\" -> \"utils/string\"\n // \"src/ui/Sidebar.tsx\" -> \"ui/Sidebar\"\n // \"runtime/sidebar.ts\" -> \"runtime/sidebar\"\n const parts = filePath.split(\"/\")\n const basename = (parts.pop() || filePath).replace(/\\.(ts|tsx|js|jsx)$/, \"\")\n\n // Get parent directory if available\n const parent = parts.pop()\n if (parent && parent !== \"src\") {\n return `${parent}/${basename}`\n }\n if (basename === \"index\") {\n // Find the first cached package name. We cannot use path.resolve() here\n // because TypeDoc reports sourceFile paths relative to the project root,\n // while entry points were resolved relative to a different CWD (e.g. docs/).\n for (const packageName of this.packageNameCache.values()) {\n if (packageName) return packageName\n }\n }\n return basename\n }\n\n private generateIndexPage(): GeneratedApiDoc {\n const content = [\n `# ${this.config.sidebar?.title || \"API Reference\"}`,\n \"\",\n this.project?.comment?.summary\n ? this.renderComment(this.project.comment.summary)\n : \"Auto-generated API documentation.\",\n \"\",\n ]\n\n const children = this.project?.children || []\n\n // Group functions and types by source file for linking\n // Separate React components from regular functions\n const functionsByFile = new Map<string, DeclarationReflection[]>()\n const typesByFile = new Map<string, DeclarationReflection[]>()\n const componentItems: DeclarationReflection[] = []\n const standaloneItems: DeclarationReflection[] = []\n\n for (const child of children) {\n const sourceFile = child.sources?.[0]?.fileName\n\n if (child.kind === ReflectionKind.Function && sourceFile) {\n if (this.isReactComponent(child.name)) {\n componentItems.push(child)\n } else {\n const existing = functionsByFile.get(sourceFile) || []\n existing.push(child)\n functionsByFile.set(sourceFile, existing)\n }\n } else if (child.kind === ReflectionKind.TypeAlias && sourceFile) {\n const existing = typesByFile.get(sourceFile) || []\n existing.push(child)\n typesByFile.set(sourceFile, existing)\n } else {\n standaloneItems.push(child)\n }\n }\n\n // Render components\n if (componentItems.length > 0) {\n content.push(\"## Components\")\n content.push(\"\")\n\n const sortedComponents = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const component of sortedComponents) {\n const description = component.comment?.summary\n ? this.renderCommentShort(component.comment.summary)\n : \"\"\n const descSuffix = description ? ` - ${description}` : \"\"\n content.push(\n `- [${component.name}](${this.buildLink(\"components\", this.getSlug(component.name))})${descSuffix}`\n )\n }\n\n content.push(\"\")\n }\n\n // Render grouped function modules\n if (functionsByFile.size > 0) {\n content.push(\"## Functions\")\n content.push(\"\")\n\n // Sort modules alphabetically\n const sortedModules = [...functionsByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n\n for (const [sourceFile, functions] of sortedModules) {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const funcNames = functions\n .map((f) => f.name)\n .sort()\n .join(\", \")\n content.push(`- [${moduleName}](${this.buildLink(\"functions\", slug)}) - ${funcNames}`)\n }\n\n content.push(\"\")\n }\n\n // Render grouped type modules\n if (typesByFile.size > 0) {\n content.push(\"## Type Aliases\")\n content.push(\"\")\n\n const sortedModules = [...typesByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n\n for (const [sourceFile, types] of sortedModules) {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const typeNames = types\n .map((t) => t.name)\n .sort()\n .join(\", \")\n content.push(`- [${moduleName}](${this.buildLink(\"types\", slug)}) - ${typeNames}`)\n }\n\n content.push(\"\")\n }\n\n // Group remaining items by kind\n const groups: Record<string, DeclarationReflection[]> = {}\n\n for (const child of standaloneItems) {\n const kindName = this.getKindGroupName(child.kind, child.name)\n if (!groups[kindName]) {\n groups[kindName] = []\n }\n groups[kindName].push(child)\n }\n\n // Sort each group alphabetically\n for (const group of Object.values(groups)) {\n group.sort((a, b) => a.name.localeCompare(b.name))\n }\n\n // Define the order of groups (excluding Functions and Types which are handled above)\n const groupOrder = [\"Interfaces\", \"Classes\", \"Variables\", \"Enums\", \"Other\"]\n\n // Render each group\n for (const groupName of groupOrder) {\n const group = groups[groupName]\n if (!group || group.length === 0) continue\n\n content.push(`## ${groupName}`)\n content.push(\"\")\n\n for (const child of group) {\n const description = child.comment?.summary\n ? this.renderCommentShort(child.comment.summary)\n : \"\"\n const descSuffix = description ? ` - ${description}` : \"\"\n const groupUrlPrefix = this.getGroupUrlPrefix(child.kind)\n content.push(\n `- [${child.name}](${this.buildLink(groupUrlPrefix, this.getSlug(child.name))})${descSuffix}`\n )\n }\n\n content.push(\"\")\n }\n\n return {\n path: \"index.md\",\n content: content.join(\"\\n\"),\n frontmatter: {\n title: this.config.sidebar?.title || \"API Reference\",\n description: \"Auto-generated API documentation\",\n sidebar_position: 0,\n },\n }\n }\n\n private getKindGroupName(kind: ReflectionKind, name: string): string {\n // Group hooks and components separately from regular functions\n if (kind === ReflectionKind.Function) {\n // React hooks start with \"use\"\n if (name.startsWith(\"use\")) {\n return \"React Hooks\"\n }\n // React components are PascalCase and typically don't start with lowercase\n if (name[0] === name[0].toUpperCase() && !name.includes(\"_\")) {\n return \"React Components\"\n }\n return \"Functions\"\n }\n\n switch (kind) {\n case ReflectionKind.Interface:\n return \"Interfaces\"\n case ReflectionKind.TypeAlias:\n return \"Types\"\n case ReflectionKind.Class:\n return \"Classes\"\n case ReflectionKind.Variable:\n return \"Variables\"\n case ReflectionKind.Enum:\n return \"Enums\"\n default:\n return \"Other\"\n }\n }\n\n private generateReflectionDocs(\n reflection: DeclarationReflection,\n parentPath: string,\n prev: DeclarationReflection | null = null,\n next: DeclarationReflection | null = null\n ): GeneratedApiDoc[] {\n const docs: GeneratedApiDoc[] = []\n const slug = this.getSlug(reflection.name)\n // Use group prefix (e.g., \"interfaces\", \"classes\") when at top level\n const groupPrefix = parentPath ? \"\" : this.getGroupUrlPrefix(reflection.kind)\n const currentPath = parentPath\n ? `${parentPath}/${slug}`\n : groupPrefix\n ? `${groupPrefix}/${slug}`\n : slug\n\n // Generate main page for this reflection\n docs.push(this.generateReflectionPage(reflection, currentPath, prev, next))\n\n // Generate pages for child classes, interfaces, etc.\n // Functions are grouped by source file, not individual pages\n const children = reflection.children || []\n const hasOwnPage = [\n ReflectionKind.Class,\n ReflectionKind.Interface,\n ReflectionKind.Enum,\n ReflectionKind.Namespace,\n ReflectionKind.Module,\n ]\n\n for (const child of children) {\n if (hasOwnPage.includes(child.kind)) {\n docs.push(...this.generateReflectionDocs(child, currentPath))\n }\n }\n\n return docs\n }\n\n private generateReflectionPage(\n reflection: DeclarationReflection,\n pagePath: string,\n prev: DeclarationReflection | null = null,\n next: DeclarationReflection | null = null\n ): GeneratedApiDoc {\n const kind = this.getKindName(reflection.kind)\n const content: string[] = []\n\n // Breadcrumbs\n if (this.config.markdown?.breadcrumbs) {\n content.push(this.generateBreadcrumbs(pagePath))\n content.push(\"\")\n }\n\n // Title\n content.push(`# ${kind}: ${reflection.name}`)\n content.push(\"\")\n\n // Description\n if (reflection.comment?.summary) {\n content.push(this.renderComment(reflection.comment.summary))\n content.push(\"\")\n }\n\n // Type parameters\n if (reflection.typeParameters && reflection.typeParameters.length > 0) {\n content.push(\"## Type Parameters\")\n content.push(\"\")\n content.push(this.renderTypeParameters(reflection.typeParameters))\n content.push(\"\")\n }\n\n // Hierarchy\n if (this.config.markdown?.hierarchy) {\n const hierarchy = this.renderHierarchy(reflection)\n if (hierarchy) {\n content.push(\"## Hierarchy\")\n content.push(\"\")\n content.push(hierarchy)\n content.push(\"\")\n }\n }\n\n // Signature (for functions)\n if (reflection.signatures) {\n content.push(\"## Signature\")\n content.push(\"\")\n for (const sig of reflection.signatures) {\n content.push(this.renderSignature(sig))\n content.push(\"\")\n }\n }\n\n // Properties\n const properties = (reflection.children || []).filter((c) => c.kind === ReflectionKind.Property)\n if (properties.length > 0) {\n content.push(\"## Properties\")\n content.push(\"\")\n for (const prop of properties) {\n content.push(this.renderProperty(prop))\n content.push(\"\")\n }\n }\n\n // Methods\n const methods = (reflection.children || []).filter((c) => c.kind === ReflectionKind.Method)\n if (methods.length > 0) {\n content.push(\"## Methods\")\n content.push(\"\")\n for (const method of methods) {\n content.push(this.renderMethod(method))\n content.push(\"\")\n }\n }\n\n // Enum members\n const enumMembers = (reflection.children || []).filter(\n (c) => c.kind === ReflectionKind.EnumMember\n )\n if (enumMembers.length > 0) {\n content.push(\"## Members\")\n content.push(\"\")\n content.push(\"| Member | Value | Description |\")\n content.push(\"|--------|-------|-------------|\")\n for (const member of enumMembers) {\n const value = member.defaultValue || \"\"\n const desc = member.comment?.summary ? this.renderCommentShort(member.comment.summary) : \"\"\n content.push(`| \\`${member.name}\\` | \\`${value}\\` | ${desc} |`)\n }\n content.push(\"\")\n }\n\n // Type alias definition\n if (reflection.kind === ReflectionKind.TypeAlias && reflection.type) {\n content.push(\"## Type\")\n content.push(\"\")\n content.push(\"```typescript\")\n content.push(`type ${reflection.name} = ${reflection.type.toString()}`)\n content.push(\"```\")\n content.push(\"\")\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && reflection.sources?.[0]) {\n const source = reflection.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n content.push(\"## Source\")\n content.push(\"\")\n if (sourceUrl) {\n content.push(`[${source.fileName}:${source.line}](${sourceUrl})`)\n } else {\n content.push(`${source.fileName}:${source.line}`)\n }\n content.push(\"\")\n }\n\n // Tags (deprecated, example, etc.)\n if (reflection.comment?.blockTags) {\n const examples = reflection.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"## Examples\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n\n const deprecated = reflection.comment.blockTags.find((t) => t.tag === \"@deprecated\")\n if (deprecated) {\n content.push(\":::warning Deprecated\")\n content.push(this.renderComment(deprecated.content))\n content.push(\":::\")\n content.push(\"\")\n }\n\n const see = reflection.comment.blockTags.filter((t) => t.tag === \"@see\")\n if (see.length > 0) {\n content.push(\"## See Also\")\n content.push(\"\")\n for (const s of see) {\n content.push(`- ${this.renderComment(s.content)}`)\n }\n content.push(\"\")\n }\n }\n\n // Prev/Next navigation within group\n if (prev || next) {\n content.push(\"---\")\n content.push(\"\")\n const groupPrefix = this.getGroupUrlPrefix(reflection.kind)\n const prevLink = prev\n ? `[← ${prev.name}](${this.buildLink(groupPrefix, this.getSlug(prev.name))})`\n : \"\"\n const nextLink = next\n ? `[${next.name} →](${this.buildLink(groupPrefix, this.getSlug(next.name))})`\n : \"\"\n if (prev && next) {\n content.push(`${prevLink} | ${nextLink}`)\n } else {\n content.push(prevLink || nextLink)\n }\n content.push(\"\")\n }\n\n return {\n path: `${pagePath}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: reflection.name,\n description: reflection.comment?.summary\n ? this.renderCommentShort(reflection.comment.summary)\n : `${kind} ${reflection.name}`,\n },\n }\n }\n\n private renderSignature(sig: SignatureReflection): string {\n const lines: string[] = []\n\n if (this.config.markdown?.codeBlocks) {\n lines.push(\"```typescript\")\n }\n\n const typeParams = sig.typeParameters\n ? `<${sig.typeParameters.map((tp) => tp.name).join(\", \")}>`\n : \"\"\n\n const params = (sig.parameters || [])\n .map((p) => {\n const optional = p.flags.isOptional ? \"?\" : \"\"\n const type = p.type ? `: ${p.type.toString()}` : \"\"\n return `${p.name}${optional}${type}`\n })\n .join(\", \")\n\n const returnType = sig.type ? `: ${sig.type.toString()}` : \"\"\n\n lines.push(`function ${sig.name}${typeParams}(${params})${returnType}`)\n\n if (this.config.markdown?.codeBlocks) {\n lines.push(\"```\")\n }\n\n // Parameters table\n if (sig.parameters && sig.parameters.length > 0) {\n lines.push(\"\")\n lines.push(\"### Parameters\")\n lines.push(\"\")\n lines.push(\"| Name | Type | Description |\")\n lines.push(\"|------|------|-------------|\")\n\n for (const param of sig.parameters) {\n const type = param.type ? `\\`${param.type.toString()}\\`` : \"-\"\n const desc = param.comment?.summary ? this.renderCommentShort(param.comment.summary) : \"-\"\n const optional = param.flags.isOptional ? \" (optional)\" : \"\"\n lines.push(`| ${param.name}${optional} | ${type} | ${desc} |`)\n }\n }\n\n // Return value\n if (sig.type && sig.type.toString() !== \"void\") {\n lines.push(\"\")\n lines.push(\"### Returns\")\n lines.push(\"\")\n lines.push(`\\`${sig.type.toString()}\\``)\n\n if (sig.comment?.blockTags) {\n const returns = sig.comment.blockTags.find((t) => t.tag === \"@returns\")\n if (returns) {\n lines.push(\"\")\n lines.push(this.renderComment(returns.content))\n }\n }\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderProperty(prop: DeclarationReflection): string {\n const lines: string[] = []\n\n const flags: string[] = []\n if (prop.flags.isOptional) flags.push(\"optional\")\n if (prop.flags.isReadonly) flags.push(\"readonly\")\n if (prop.flags.isStatic) flags.push(\"static\")\n\n lines.push(`### ${prop.name}`)\n if (flags.length > 0) {\n lines.push(`*${flags.join(\", \")}*`)\n }\n lines.push(\"\")\n\n if (prop.type) {\n lines.push(\"```typescript\")\n lines.push(`${prop.name}: ${prop.type.toString()}`)\n lines.push(\"```\")\n lines.push(\"\")\n }\n\n if (prop.comment?.summary) {\n lines.push(this.renderComment(prop.comment.summary))\n }\n\n if (prop.defaultValue) {\n lines.push(\"\")\n lines.push(`**Default:** \\`${prop.defaultValue}\\``)\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderMethod(method: DeclarationReflection): string {\n const lines: string[] = []\n\n lines.push(`### ${method.name}()`)\n lines.push(\"\")\n\n if (method.signatures) {\n for (const sig of method.signatures) {\n if (sig.comment?.summary) {\n lines.push(this.renderComment(sig.comment.summary))\n lines.push(\"\")\n }\n\n lines.push(this.renderSignature(sig))\n lines.push(\"\")\n }\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderTypeParameters(typeParams: TypeParameterReflection[]): string {\n const lines: string[] = []\n lines.push(\"| Name | Constraint | Default | Description |\")\n lines.push(\"|------|------------|---------|-------------|\")\n\n for (const tp of typeParams) {\n const constraint = tp.type ? `\\`${tp.type.toString()}\\`` : \"-\"\n const defaultVal = tp.default ? `\\`${tp.default.toString()}\\`` : \"-\"\n const desc = tp.comment?.summary ? this.renderCommentShort(tp.comment.summary) : \"-\"\n lines.push(`| ${tp.name} | ${constraint} | ${defaultVal} | ${desc} |`)\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderHierarchy(reflection: DeclarationReflection): string | null {\n const lines: string[] = []\n\n if (reflection.extendedTypes && reflection.extendedTypes.length > 0) {\n lines.push(\"**Extends:**\")\n for (const t of reflection.extendedTypes) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.implementedTypes && reflection.implementedTypes.length > 0) {\n lines.push(\"**Implements:**\")\n for (const t of reflection.implementedTypes) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.extendedBy && reflection.extendedBy.length > 0) {\n lines.push(\"**Extended by:**\")\n for (const t of reflection.extendedBy) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.implementedBy && reflection.implementedBy.length > 0) {\n lines.push(\"**Implemented by:**\")\n for (const t of reflection.implementedBy) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n return lines.length > 0 ? lines.join(\"\\n\") : null\n }\n\n private renderComment(parts: { kind: string; text: string }[]): string {\n return parts.map((p) => p.text).join(\"\")\n }\n\n private renderCommentShort(parts: { kind: string; text: string }[]): string {\n const text = this.renderComment(parts)\n const firstSentence = text.split(/[.!?]\\s/)[0]\n return firstSentence.length < text.length ? firstSentence + \".\" : text\n }\n\n private generateBreadcrumbs(pagePath: string): string {\n const parts = pagePath.split(\"/\")\n const breadcrumbs: string[] = [`[API](${this.basePath})`]\n\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath += (currentPath ? \"/\" : \"\") + parts[i]\n breadcrumbs.push(`[${parts[i]}](${this.basePath}/${currentPath})`)\n }\n\n breadcrumbs.push(parts[parts.length - 1])\n\n return breadcrumbs.join(\" / \")\n }\n\n private getKindName(kind: ReflectionKind): string {\n const kindNames: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Class]: \"Class\",\n [ReflectionKind.Interface]: \"Interface\",\n [ReflectionKind.Enum]: \"Enum\",\n [ReflectionKind.TypeAlias]: \"Type\",\n [ReflectionKind.Function]: \"Function\",\n [ReflectionKind.Variable]: \"Variable\",\n [ReflectionKind.Namespace]: \"Namespace\",\n [ReflectionKind.Module]: \"Module\",\n [ReflectionKind.Property]: \"Property\",\n [ReflectionKind.Method]: \"Method\",\n }\n return kindNames[kind] || \"Unknown\"\n }\n\n private getGroupUrlPrefix(kind: ReflectionKind): string {\n const prefixes: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Class]: \"classes\",\n [ReflectionKind.Interface]: \"interfaces\",\n [ReflectionKind.Enum]: \"enums\",\n [ReflectionKind.Variable]: \"variables\",\n [ReflectionKind.Namespace]: \"namespaces\",\n [ReflectionKind.Module]: \"modules\",\n }\n return prefixes[kind] || \"other\"\n }\n\n private getSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n }\n\n /**\n * Build a route-compatible link path for a category/slug pair.\n * React Router maps \"category/index.md\" to the \"/category\" route,\n * so links must not include a trailing \"/index\".\n */\n private buildLink(category: string, slug: string): string {\n if (slug === \"index\") {\n return `${this.basePath}/${category}`\n }\n return `${this.basePath}/${category}/${slug}`\n }\n\n private getSourceUrl(fileName: string, line: number): string | null {\n if (!this.config.markdown?.sourceBaseUrl) return null\n const baseUrl = this.config.markdown.sourceBaseUrl.replace(/\\/$/, \"\")\n return `${baseUrl}/${fileName}#L${line}`\n }\n\n /**\n * Check if a function name looks like a React component (PascalCase)\n */\n private isReactComponent(name: string): boolean {\n // React components start with uppercase and don't contain underscores\n // Also check for common component patterns\n if (name[0] !== name[0].toUpperCase()) return false\n if (name.includes(\"_\")) return false\n // Exclude common non-component patterns\n if (name.startsWith(\"use\")) return false // hooks\n if (name.endsWith(\"Props\") || name.endsWith(\"Options\") || name.endsWith(\"Config\")) return false\n return true\n }\n\n /**\n * Generate a page for a React component\n */\n private generateComponentPage(\n component: DeclarationReflection,\n prev: DeclarationReflection | null,\n next: DeclarationReflection | null\n ): GeneratedApiDoc {\n const slug = this.getSlug(component.name)\n const groupPrefix = \"components\"\n const content: string[] = []\n\n content.push(`# ${component.name}`)\n content.push(\"\")\n\n // Description\n if (component.comment?.summary) {\n content.push(this.renderComment(component.comment.summary))\n content.push(\"\")\n }\n\n // Signature\n if (component.signatures) {\n content.push(\"## Usage\")\n content.push(\"\")\n for (const sig of component.signatures) {\n content.push(this.renderComponentSignature(sig, component.name))\n content.push(\"\")\n }\n }\n\n // Examples\n if (component.comment?.blockTags) {\n const examples = component.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"## Example\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && component.sources?.[0]) {\n const source = component.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n // Prev/Next navigation\n if (prev || next) {\n content.push(\"---\")\n content.push(\"\")\n const prevLink = prev\n ? `[← ${prev.name}](${this.buildLink(groupPrefix, this.getSlug(prev.name))})`\n : \"\"\n const nextLink = next\n ? `[${next.name} →](${this.buildLink(groupPrefix, this.getSlug(next.name))})`\n : \"\"\n if (prev && next) {\n content.push(`${prevLink} | ${nextLink}`)\n } else {\n content.push(prevLink || nextLink)\n }\n content.push(\"\")\n }\n\n return {\n path: `${groupPrefix}/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: component.name,\n description: component.comment?.summary\n ? this.renderCommentShort(component.comment.summary)\n : `${component.name} component`,\n },\n }\n }\n\n /**\n * Get the name of a TypeDoc type (handles reference types, etc.)\n */\n private getTypeName(paramType: unknown): string | null {\n if (!paramType || typeof paramType !== \"object\") return null\n\n // Direct name property\n if (\"name\" in paramType && typeof (paramType as { name: unknown }).name === \"string\") {\n return (paramType as { name: string }).name\n }\n\n // Reference type with target\n if (\"type\" in paramType && (paramType as { type: string }).type === \"reference\") {\n const refType = paramType as { name?: string; qualifiedName?: string }\n return refType.name || refType.qualifiedName || null\n }\n\n return null\n }\n\n /**\n * Get props from a component's parameter type\n */\n private getPropsFromType(\n paramType: unknown\n ): Array<{ name: string; type: string; optional: boolean; description: string }> {\n const props: Array<{ name: string; type: string; optional: boolean; description: string }> = []\n\n // Check if it's a reflection type with inline declaration\n if (paramType && typeof paramType === \"object\" && \"declaration\" in paramType) {\n const declaration = (paramType as { declaration: DeclarationReflection }).declaration\n const children = declaration.children || []\n for (const child of children) {\n props.push({\n name: child.name,\n type: child.type ? child.type.toString() : \"unknown\",\n optional: child.flags.isOptional,\n description: child.comment?.summary ? this.renderCommentShort(child.comment.summary) : \"\",\n })\n }\n }\n // Check if it's a reference type - look up the interface in the project\n else {\n const typeName = this.getTypeName(paramType)\n if (typeName) {\n // Find the interface/type alias in the project\n let propsInterface = this.project?.getChildByName(typeName)\n\n // If not found directly, search all children\n if (!propsInterface && this.project?.children) {\n for (const child of this.project.children) {\n if (child.name === typeName) {\n propsInterface = child\n break\n }\n }\n }\n\n if (propsInterface && \"children\" in propsInterface) {\n const children = (propsInterface as DeclarationReflection).children || []\n for (const child of children) {\n props.push({\n name: child.name,\n type: child.type ? child.type.toString() : \"unknown\",\n optional: child.flags.isOptional,\n description: child.comment?.summary\n ? this.renderCommentShort(child.comment.summary)\n : \"\",\n })\n }\n }\n }\n }\n\n return props\n }\n\n /**\n * Render a component signature in a more readable format\n */\n private renderComponentSignature(sig: SignatureReflection, componentName: string): string {\n const lines: string[] = []\n\n // Get props from the first parameter\n const propsParam = sig.parameters?.[0]\n const props = propsParam ? this.getPropsFromType(propsParam.type) : []\n\n // Get the props interface name for linking\n const propsTypeName = propsParam?.type ? this.getTypeName(propsParam.type) : null\n\n // Check if component has children prop\n const hasChildren = props.some((p) => p.name === \"children\")\n // Filter out children from props display (shown in JSX structure instead)\n const displayProps = props.filter((p) => p.name !== \"children\")\n\n lines.push(\"```tsx\")\n lines.push(`<${componentName}`)\n\n if (displayProps.length > 0) {\n for (const prop of displayProps) {\n const optMark = prop.optional ? \"?\" : \"\"\n lines.push(` ${prop.name}${optMark}={${prop.type}}`)\n }\n } else if (!hasChildren) {\n lines.push(` {...props}`)\n }\n\n if (hasChildren) {\n lines.push(`>`)\n lines.push(` {children}`)\n lines.push(`</${componentName}>`)\n } else {\n lines.push(`/>`)\n }\n lines.push(\"```\")\n\n // Props table with link to props interface\n if (props.length > 0) {\n lines.push(\"\")\n if (propsTypeName) {\n lines.push(`## [Props](${this.basePath}/interfaces/${this.getSlug(propsTypeName)})`)\n } else {\n lines.push(\"## Props\")\n }\n lines.push(\"\")\n lines.push(\"| Prop | Type | Required | Description |\")\n lines.push(\"|------|------|----------|-------------|\")\n\n for (const prop of props) {\n const type = `\\`${prop.type}\\``\n const required = prop.optional ? \"No\" : \"Yes\"\n const desc = prop.description || \"-\"\n lines.push(`| ${prop.name} | ${type} | ${required} | ${desc} |`)\n }\n }\n\n // Skip return value for components - it's always Element/JSX.Element\n\n return lines.join(\"\\n\")\n }\n}\n\nexport async function generateApiDocs(\n config: TypeDocConfig,\n outputDir: string\n): Promise<GeneratedApiDoc[]> {\n const generator = new TypeDocGenerator(config)\n return generator.generate(outputDir)\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateApiDocs
3
- } from "./chunk-U6IRSKHU.js";
3
+ } from "./chunk-CYZLI4AU.js";
4
4
 
5
5
  // src/typedoc/vite-plugin.ts
6
6
  import path from "path";
@@ -271,4 +271,4 @@ export {
271
271
  ApiKindBadge,
272
272
  ApiHierarchy
273
273
  };
274
- //# sourceMappingURL=chunk-EA24YW22.js.map
274
+ //# sourceMappingURL=chunk-KOYIKUSW.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-NBRHGTR2.js";
5
5
  import {
6
6
  generateApiDocs
7
- } from "./chunk-U6IRSKHU.js";
7
+ } from "./chunk-CYZLI4AU.js";
8
8
 
9
9
  // src/vite/plugin.ts
10
10
  import { reactRouter } from "@react-router/dev/vite";
@@ -1297,4 +1297,4 @@ export {
1297
1297
  getPageDataForRoute,
1298
1298
  generateSidebar2 as generateSidebar
1299
1299
  };
1300
- //# sourceMappingURL=chunk-TNUS3B2A.js.map
1300
+ //# sourceMappingURL=chunk-WSEWAHW3.js.map
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  loadDoc,
8
8
  transformMarkdown,
9
9
  transformMarkdownToReact
10
- } from "./chunk-TNUS3B2A.js";
10
+ } from "./chunk-WSEWAHW3.js";
11
11
  import {
12
12
  defineConfig,
13
13
  loadConfig,
@@ -42,11 +42,11 @@ import {
42
42
  ApiSignature,
43
43
  createTypedocWatcher,
44
44
  typedocPlugin
45
- } from "./chunk-EA24YW22.js";
45
+ } from "./chunk-KOYIKUSW.js";
46
46
  import {
47
47
  TypeDocGenerator,
48
48
  generateApiDocs
49
- } from "./chunk-U6IRSKHU.js";
49
+ } from "./chunk-CYZLI4AU.js";
50
50
  import {
51
51
  CodeBlock,
52
52
  CodeGroup,
@@ -7,11 +7,11 @@ import {
7
7
  ApiSignature,
8
8
  createTypedocWatcher,
9
9
  typedocPlugin
10
- } from "../chunk-EA24YW22.js";
10
+ } from "../chunk-KOYIKUSW.js";
11
11
  import {
12
12
  TypeDocGenerator,
13
13
  generateApiDocs
14
- } from "../chunk-U6IRSKHU.js";
14
+ } from "../chunk-CYZLI4AU.js";
15
15
  export {
16
16
  ApiHierarchy,
17
17
  ApiItem,
@@ -10,9 +10,9 @@ import {
10
10
  loadDoc,
11
11
  transformMarkdown,
12
12
  transformMarkdownToReact
13
- } from "../chunk-TNUS3B2A.js";
13
+ } from "../chunk-WSEWAHW3.js";
14
14
  import "../chunk-NBRHGTR2.js";
15
- import "../chunk-U6IRSKHU.js";
15
+ import "../chunk-CYZLI4AU.js";
16
16
  export {
17
17
  ardoPlugin as ardo,
18
18
  ardoPlugin,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ardo",
3
- "version": "2.7.1",
3
+ "version": "2.7.2",
4
4
  "description": "React-first Static Documentation Framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/typedoc/generator.ts"],"sourcesContent":["import {\n Application,\n TSConfigReader,\n TypeDocReader,\n type ProjectReflection,\n ReflectionKind,\n type DeclarationReflection,\n type SignatureReflection,\n type TypeParameterReflection,\n} from \"typedoc\"\nimport path from \"path\"\nimport fs from \"fs/promises\"\nimport { readPackageUp } from \"read-package-up\"\nimport type { TypeDocConfig, GeneratedApiDoc } from \"./types\"\n\nexport class TypeDocGenerator {\n private config: TypeDocConfig\n private app: Application | undefined\n private project: ProjectReflection | undefined\n private basePath: string\n private packageNameCache = new Map<string, string | undefined>()\n\n constructor(config: TypeDocConfig) {\n this.config = {\n out: \"api\",\n excludeExternals: true,\n excludePrivate: true,\n excludeProtected: false,\n excludeInternal: true,\n sort: [\"source-order\"],\n sidebar: {\n title: \"API Reference\",\n position: 100,\n collapsed: false,\n },\n markdown: {\n breadcrumbs: true,\n hierarchy: true,\n sourceLinks: true,\n codeBlocks: true,\n },\n ...config,\n }\n // Use the output directory as the base path for links\n this.basePath = \"/\" + this.config.out!\n }\n\n async generate(outputDir: string): Promise<GeneratedApiDoc[]> {\n // Pre-populate package name cache for all entry points\n await Promise.all(this.config.entryPoints.map((ep) => this.resolvePackageName(ep)))\n\n const typedocOptions: Record<string, unknown> = {\n entryPoints: this.config.entryPoints,\n tsconfig: this.config.tsconfig,\n excludeExternals: this.config.excludeExternals,\n excludePrivate: this.config.excludePrivate,\n excludeProtected: this.config.excludeProtected,\n excludeInternal: this.config.excludeInternal,\n sort: this.config.sort,\n }\n\n // Only pass array/string options when explicitly set to avoid\n // TypeDoc errors like \"option must be set to an array of strings\"\n if (this.config.exclude) typedocOptions.exclude = this.config.exclude\n if (this.config.categoryOrder) typedocOptions.categoryOrder = this.config.categoryOrder\n if (this.config.groupOrder) typedocOptions.groupOrder = this.config.groupOrder\n if (this.config.plugin) typedocOptions.plugin = this.config.plugin\n if (this.config.readme) typedocOptions.readme = this.config.readme\n\n this.app = await Application.bootstrapWithPlugins(typedocOptions, [\n new TSConfigReader(),\n new TypeDocReader(),\n ])\n\n this.project = await this.app.convert()\n\n if (!this.project) {\n throw new Error(\"TypeDoc conversion failed\")\n }\n\n const docs = this.generateMarkdownDocs()\n const apiDir = path.join(outputDir, this.config.out!)\n\n await fs.mkdir(apiDir, { recursive: true })\n\n for (const doc of docs) {\n const filePath = path.join(apiDir, doc.path)\n const dir = path.dirname(filePath)\n await fs.mkdir(dir, { recursive: true })\n\n const frontmatterLines = [\n \"---\",\n `title: ${doc.frontmatter.title}`,\n doc.frontmatter.description ? `description: ${doc.frontmatter.description}` : null,\n doc.frontmatter.sidebar_position !== undefined\n ? `sidebar_position: ${doc.frontmatter.sidebar_position}`\n : null,\n doc.frontmatter.sidebar === false ? `sidebar: false` : null,\n \"---\",\n ].filter((line): line is string => line !== null)\n\n const frontmatter = frontmatterLines.join(\"\\n\") + \"\\n\\n\"\n\n await fs.writeFile(filePath, frontmatter + doc.content)\n }\n\n return docs\n }\n\n private generateMarkdownDocs(): GeneratedApiDoc[] {\n if (!this.project) return []\n\n const docs: GeneratedApiDoc[] = []\n\n // Generate index page\n docs.push(this.generateIndexPage())\n\n const children = this.project.children || []\n\n // Group functions and type aliases by source file\n // React components (PascalCase) get their own pages\n const functionsByFile = new Map<string, DeclarationReflection[]>()\n const typesByFile = new Map<string, DeclarationReflection[]>()\n const componentItems: DeclarationReflection[] = []\n const standaloneItems: DeclarationReflection[] = []\n\n for (const child of children) {\n const sourceFile = child.sources?.[0]?.fileName\n\n if (child.kind === ReflectionKind.Function && sourceFile) {\n // React components are PascalCase and get individual pages\n if (this.isReactComponent(child.name)) {\n componentItems.push(child)\n } else {\n const existing = functionsByFile.get(sourceFile) || []\n existing.push(child)\n functionsByFile.set(sourceFile, existing)\n }\n } else if (child.kind === ReflectionKind.TypeAlias && sourceFile) {\n const existing = typesByFile.get(sourceFile) || []\n existing.push(child)\n typesByFile.set(sourceFile, existing)\n } else {\n standaloneItems.push(child)\n }\n }\n\n // Generate grouped pages for functions (by source file)\n for (const [sourceFile, functions] of functionsByFile) {\n docs.push(this.generateGroupedFunctionsPage(sourceFile, functions))\n }\n\n // Generate grouped pages for types (by source file)\n for (const [sourceFile, types] of typesByFile) {\n docs.push(this.generateGroupedTypesPage(sourceFile, types))\n }\n\n // Generate individual pages for React components\n // Sort alphabetically for consistent prev/next navigation\n const sortedComponents = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n for (let i = 0; i < sortedComponents.length; i++) {\n const prev = i > 0 ? sortedComponents[i - 1] : null\n const next = i < sortedComponents.length - 1 ? sortedComponents[i + 1] : null\n docs.push(this.generateComponentPage(sortedComponents[i], prev, next))\n }\n\n // Group standalone items by kind for prev/next navigation within each group\n const itemsByKind = new Map<number, DeclarationReflection[]>()\n for (const child of standaloneItems) {\n const kind = child.kind\n const existing = itemsByKind.get(kind) || []\n existing.push(child)\n itemsByKind.set(kind, existing)\n }\n\n // Generate individual pages for classes, interfaces, enums, etc. with prev/next within group\n for (const [, items] of itemsByKind) {\n const sortedItems = [...items].sort((a, b) => a.name.localeCompare(b.name))\n for (let i = 0; i < sortedItems.length; i++) {\n const prev = i > 0 ? sortedItems[i - 1] : null\n const next = i < sortedItems.length - 1 ? sortedItems[i + 1] : null\n docs.push(...this.generateReflectionDocs(sortedItems[i], \"\", prev, next))\n }\n }\n\n // Generate category index pages for non-empty categories\n docs.push(\n ...this.generateCategoryIndexPages(\n docs,\n componentItems,\n functionsByFile,\n typesByFile,\n standaloneItems\n )\n )\n\n return docs\n }\n\n private generateCategoryIndexPages(\n docs: GeneratedApiDoc[],\n componentItems: DeclarationReflection[],\n functionsByFile: Map<string, DeclarationReflection[]>,\n typesByFile: Map<string, DeclarationReflection[]>,\n standaloneItems: DeclarationReflection[]\n ): GeneratedApiDoc[] {\n const indexPages: GeneratedApiDoc[] = []\n\n // Components index\n if (componentItems.length > 0) {\n const sorted = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Components`,\n \"\",\n ...sorted.map((c) => {\n const desc = c.comment?.summary ? ` - ${this.renderCommentShort(c.comment.summary)}` : \"\"\n return `- [${c.name}](${this.buildLink(\"components\", this.getSlug(c.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"components/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Components\", sidebar: false },\n })\n }\n\n // Functions index\n if (functionsByFile.size > 0) {\n const sortedModules = [...functionsByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n const content = [\n `# Functions`,\n \"\",\n ...sortedModules.map(([sourceFile, functions]) => {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const funcNames = functions\n .map((f) => f.name)\n .sort()\n .join(\", \")\n return `- [${moduleName}](${this.buildLink(\"functions\", slug)}) - ${funcNames}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"functions/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Functions\", sidebar: false },\n })\n }\n\n // Group standalone items by kind for category indexes\n const interfaces = standaloneItems.filter((c) => c.kind === ReflectionKind.Interface)\n const classes = standaloneItems.filter((c) => c.kind === ReflectionKind.Class)\n\n // Interfaces index\n if (interfaces.length > 0) {\n const sorted = [...interfaces].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Interfaces`,\n \"\",\n ...sorted.map((item) => {\n const desc = item.comment?.summary\n ? ` - ${this.renderCommentShort(item.comment.summary)}`\n : \"\"\n return `- [${item.name}](${this.buildLink(\"interfaces\", this.getSlug(item.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"interfaces/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Interfaces\", sidebar: false },\n })\n }\n\n // Types index\n if (typesByFile.size > 0) {\n const sortedModules = [...typesByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n const content = [\n `# Types`,\n \"\",\n ...sortedModules.map(([sourceFile, types]) => {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const typeNames = types\n .map((t) => t.name)\n .sort()\n .join(\", \")\n return `- [${moduleName}](${this.buildLink(\"types\", slug)}) - ${typeNames}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"types/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Types\", sidebar: false },\n })\n }\n\n // Classes index\n if (classes.length > 0) {\n const sorted = [...classes].sort((a, b) => a.name.localeCompare(b.name))\n const content = [\n `# Classes`,\n \"\",\n ...sorted.map((item) => {\n const desc = item.comment?.summary\n ? ` - ${this.renderCommentShort(item.comment.summary)}`\n : \"\"\n return `- [${item.name}](${this.buildLink(\"classes\", this.getSlug(item.name))})${desc}`\n }),\n \"\",\n ]\n indexPages.push({\n path: \"classes/index.md\",\n content: content.join(\"\\n\"),\n frontmatter: { title: \"Classes\", sidebar: false },\n })\n }\n\n return indexPages\n }\n\n private generateGroupedFunctionsPage(\n sourceFile: string,\n functions: DeclarationReflection[]\n ): GeneratedApiDoc {\n // Extract module name from source file path (e.g., \"src/utils/string.ts\" -> \"string\")\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const content: string[] = []\n\n content.push(`# ${moduleName} Functions`)\n content.push(\"\")\n content.push(`Functions exported from \\`${sourceFile}\\``)\n content.push(\"\")\n\n // Sort functions alphabetically\n const sortedFunctions = [...functions].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const func of sortedFunctions) {\n content.push(`## ${func.name}`)\n content.push(\"\")\n\n // Description\n if (func.comment?.summary) {\n content.push(this.renderComment(func.comment.summary))\n content.push(\"\")\n }\n\n // Signature\n if (func.signatures) {\n for (const sig of func.signatures) {\n content.push(this.renderSignature(sig))\n content.push(\"\")\n }\n }\n\n // Examples\n if (func.comment?.blockTags) {\n const examples = func.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"### Example\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && func.sources?.[0]) {\n const source = func.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n content.push(\"---\")\n content.push(\"\")\n }\n\n return {\n path: `functions/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: `${moduleName} Functions`,\n description: `Functions from ${sourceFile}`,\n },\n }\n }\n\n private generateGroupedTypesPage(\n sourceFile: string,\n types: DeclarationReflection[]\n ): GeneratedApiDoc {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const content: string[] = []\n\n content.push(`# ${moduleName} Types`)\n content.push(\"\")\n content.push(`Type definitions from \\`${sourceFile}\\``)\n content.push(\"\")\n\n // Sort types alphabetically\n const sortedTypes = [...types].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const typeAlias of sortedTypes) {\n content.push(`## ${typeAlias.name}`)\n content.push(\"\")\n\n // Description\n if (typeAlias.comment?.summary) {\n content.push(this.renderComment(typeAlias.comment.summary))\n content.push(\"\")\n }\n\n // Type definition\n if (typeAlias.type) {\n content.push(\"```typescript\")\n content.push(`type ${typeAlias.name} = ${typeAlias.type.toString()}`)\n content.push(\"```\")\n content.push(\"\")\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && typeAlias.sources?.[0]) {\n const source = typeAlias.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n content.push(\"---\")\n content.push(\"\")\n }\n\n return {\n path: `types/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: `${moduleName} Types`,\n description: `Type definitions from ${sourceFile}`,\n },\n }\n }\n\n private async resolvePackageName(filePath: string): Promise<string | undefined> {\n const dir = path.dirname(path.resolve(filePath))\n if (this.packageNameCache.has(dir)) {\n return this.packageNameCache.get(dir)\n }\n\n const result = await readPackageUp({ cwd: dir })\n const name = result?.packageJson.name\n const resolved = name ? name.replace(/^@[^/]+\\//, \"\") : undefined\n this.packageNameCache.set(dir, resolved)\n return resolved\n }\n\n private getModuleNameFromPath(filePath: string): string {\n // Include parent directory to avoid naming conflicts\n // \"src/utils/string.ts\" -> \"utils/string\"\n // \"src/ui/Sidebar.tsx\" -> \"ui/Sidebar\"\n // \"runtime/sidebar.ts\" -> \"runtime/sidebar\"\n const parts = filePath.split(\"/\")\n const basename = (parts.pop() || filePath).replace(/\\.(ts|tsx|js|jsx)$/, \"\")\n\n // Get parent directory if available\n const parent = parts.pop()\n if (parent && parent !== \"src\") {\n return `${parent}/${basename}`\n }\n if (basename === \"index\") {\n const dir = path.dirname(path.resolve(filePath))\n const packageName = this.packageNameCache.get(dir)\n if (packageName) return packageName\n }\n return basename\n }\n\n private generateIndexPage(): GeneratedApiDoc {\n const content = [\n `# ${this.config.sidebar?.title || \"API Reference\"}`,\n \"\",\n this.project?.comment?.summary\n ? this.renderComment(this.project.comment.summary)\n : \"Auto-generated API documentation.\",\n \"\",\n ]\n\n const children = this.project?.children || []\n\n // Group functions and types by source file for linking\n // Separate React components from regular functions\n const functionsByFile = new Map<string, DeclarationReflection[]>()\n const typesByFile = new Map<string, DeclarationReflection[]>()\n const componentItems: DeclarationReflection[] = []\n const standaloneItems: DeclarationReflection[] = []\n\n for (const child of children) {\n const sourceFile = child.sources?.[0]?.fileName\n\n if (child.kind === ReflectionKind.Function && sourceFile) {\n if (this.isReactComponent(child.name)) {\n componentItems.push(child)\n } else {\n const existing = functionsByFile.get(sourceFile) || []\n existing.push(child)\n functionsByFile.set(sourceFile, existing)\n }\n } else if (child.kind === ReflectionKind.TypeAlias && sourceFile) {\n const existing = typesByFile.get(sourceFile) || []\n existing.push(child)\n typesByFile.set(sourceFile, existing)\n } else {\n standaloneItems.push(child)\n }\n }\n\n // Render components\n if (componentItems.length > 0) {\n content.push(\"## Components\")\n content.push(\"\")\n\n const sortedComponents = [...componentItems].sort((a, b) => a.name.localeCompare(b.name))\n\n for (const component of sortedComponents) {\n const description = component.comment?.summary\n ? this.renderCommentShort(component.comment.summary)\n : \"\"\n const descSuffix = description ? ` - ${description}` : \"\"\n content.push(\n `- [${component.name}](${this.buildLink(\"components\", this.getSlug(component.name))})${descSuffix}`\n )\n }\n\n content.push(\"\")\n }\n\n // Render grouped function modules\n if (functionsByFile.size > 0) {\n content.push(\"## Functions\")\n content.push(\"\")\n\n // Sort modules alphabetically\n const sortedModules = [...functionsByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n\n for (const [sourceFile, functions] of sortedModules) {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const funcNames = functions\n .map((f) => f.name)\n .sort()\n .join(\", \")\n content.push(`- [${moduleName}](${this.buildLink(\"functions\", slug)}) - ${funcNames}`)\n }\n\n content.push(\"\")\n }\n\n // Render grouped type modules\n if (typesByFile.size > 0) {\n content.push(\"## Type Aliases\")\n content.push(\"\")\n\n const sortedModules = [...typesByFile.entries()].sort((a, b) =>\n this.getModuleNameFromPath(a[0]).localeCompare(this.getModuleNameFromPath(b[0]))\n )\n\n for (const [sourceFile, types] of sortedModules) {\n const moduleName = this.getModuleNameFromPath(sourceFile)\n const slug = this.getSlug(moduleName)\n const typeNames = types\n .map((t) => t.name)\n .sort()\n .join(\", \")\n content.push(`- [${moduleName}](${this.buildLink(\"types\", slug)}) - ${typeNames}`)\n }\n\n content.push(\"\")\n }\n\n // Group remaining items by kind\n const groups: Record<string, DeclarationReflection[]> = {}\n\n for (const child of standaloneItems) {\n const kindName = this.getKindGroupName(child.kind, child.name)\n if (!groups[kindName]) {\n groups[kindName] = []\n }\n groups[kindName].push(child)\n }\n\n // Sort each group alphabetically\n for (const group of Object.values(groups)) {\n group.sort((a, b) => a.name.localeCompare(b.name))\n }\n\n // Define the order of groups (excluding Functions and Types which are handled above)\n const groupOrder = [\"Interfaces\", \"Classes\", \"Variables\", \"Enums\", \"Other\"]\n\n // Render each group\n for (const groupName of groupOrder) {\n const group = groups[groupName]\n if (!group || group.length === 0) continue\n\n content.push(`## ${groupName}`)\n content.push(\"\")\n\n for (const child of group) {\n const description = child.comment?.summary\n ? this.renderCommentShort(child.comment.summary)\n : \"\"\n const descSuffix = description ? ` - ${description}` : \"\"\n const groupUrlPrefix = this.getGroupUrlPrefix(child.kind)\n content.push(\n `- [${child.name}](${this.buildLink(groupUrlPrefix, this.getSlug(child.name))})${descSuffix}`\n )\n }\n\n content.push(\"\")\n }\n\n return {\n path: \"index.md\",\n content: content.join(\"\\n\"),\n frontmatter: {\n title: this.config.sidebar?.title || \"API Reference\",\n description: \"Auto-generated API documentation\",\n sidebar_position: 0,\n },\n }\n }\n\n private getKindGroupName(kind: ReflectionKind, name: string): string {\n // Group hooks and components separately from regular functions\n if (kind === ReflectionKind.Function) {\n // React hooks start with \"use\"\n if (name.startsWith(\"use\")) {\n return \"React Hooks\"\n }\n // React components are PascalCase and typically don't start with lowercase\n if (name[0] === name[0].toUpperCase() && !name.includes(\"_\")) {\n return \"React Components\"\n }\n return \"Functions\"\n }\n\n switch (kind) {\n case ReflectionKind.Interface:\n return \"Interfaces\"\n case ReflectionKind.TypeAlias:\n return \"Types\"\n case ReflectionKind.Class:\n return \"Classes\"\n case ReflectionKind.Variable:\n return \"Variables\"\n case ReflectionKind.Enum:\n return \"Enums\"\n default:\n return \"Other\"\n }\n }\n\n private generateReflectionDocs(\n reflection: DeclarationReflection,\n parentPath: string,\n prev: DeclarationReflection | null = null,\n next: DeclarationReflection | null = null\n ): GeneratedApiDoc[] {\n const docs: GeneratedApiDoc[] = []\n const slug = this.getSlug(reflection.name)\n // Use group prefix (e.g., \"interfaces\", \"classes\") when at top level\n const groupPrefix = parentPath ? \"\" : this.getGroupUrlPrefix(reflection.kind)\n const currentPath = parentPath\n ? `${parentPath}/${slug}`\n : groupPrefix\n ? `${groupPrefix}/${slug}`\n : slug\n\n // Generate main page for this reflection\n docs.push(this.generateReflectionPage(reflection, currentPath, prev, next))\n\n // Generate pages for child classes, interfaces, etc.\n // Functions are grouped by source file, not individual pages\n const children = reflection.children || []\n const hasOwnPage = [\n ReflectionKind.Class,\n ReflectionKind.Interface,\n ReflectionKind.Enum,\n ReflectionKind.Namespace,\n ReflectionKind.Module,\n ]\n\n for (const child of children) {\n if (hasOwnPage.includes(child.kind)) {\n docs.push(...this.generateReflectionDocs(child, currentPath))\n }\n }\n\n return docs\n }\n\n private generateReflectionPage(\n reflection: DeclarationReflection,\n pagePath: string,\n prev: DeclarationReflection | null = null,\n next: DeclarationReflection | null = null\n ): GeneratedApiDoc {\n const kind = this.getKindName(reflection.kind)\n const content: string[] = []\n\n // Breadcrumbs\n if (this.config.markdown?.breadcrumbs) {\n content.push(this.generateBreadcrumbs(pagePath))\n content.push(\"\")\n }\n\n // Title\n content.push(`# ${kind}: ${reflection.name}`)\n content.push(\"\")\n\n // Description\n if (reflection.comment?.summary) {\n content.push(this.renderComment(reflection.comment.summary))\n content.push(\"\")\n }\n\n // Type parameters\n if (reflection.typeParameters && reflection.typeParameters.length > 0) {\n content.push(\"## Type Parameters\")\n content.push(\"\")\n content.push(this.renderTypeParameters(reflection.typeParameters))\n content.push(\"\")\n }\n\n // Hierarchy\n if (this.config.markdown?.hierarchy) {\n const hierarchy = this.renderHierarchy(reflection)\n if (hierarchy) {\n content.push(\"## Hierarchy\")\n content.push(\"\")\n content.push(hierarchy)\n content.push(\"\")\n }\n }\n\n // Signature (for functions)\n if (reflection.signatures) {\n content.push(\"## Signature\")\n content.push(\"\")\n for (const sig of reflection.signatures) {\n content.push(this.renderSignature(sig))\n content.push(\"\")\n }\n }\n\n // Properties\n const properties = (reflection.children || []).filter((c) => c.kind === ReflectionKind.Property)\n if (properties.length > 0) {\n content.push(\"## Properties\")\n content.push(\"\")\n for (const prop of properties) {\n content.push(this.renderProperty(prop))\n content.push(\"\")\n }\n }\n\n // Methods\n const methods = (reflection.children || []).filter((c) => c.kind === ReflectionKind.Method)\n if (methods.length > 0) {\n content.push(\"## Methods\")\n content.push(\"\")\n for (const method of methods) {\n content.push(this.renderMethod(method))\n content.push(\"\")\n }\n }\n\n // Enum members\n const enumMembers = (reflection.children || []).filter(\n (c) => c.kind === ReflectionKind.EnumMember\n )\n if (enumMembers.length > 0) {\n content.push(\"## Members\")\n content.push(\"\")\n content.push(\"| Member | Value | Description |\")\n content.push(\"|--------|-------|-------------|\")\n for (const member of enumMembers) {\n const value = member.defaultValue || \"\"\n const desc = member.comment?.summary ? this.renderCommentShort(member.comment.summary) : \"\"\n content.push(`| \\`${member.name}\\` | \\`${value}\\` | ${desc} |`)\n }\n content.push(\"\")\n }\n\n // Type alias definition\n if (reflection.kind === ReflectionKind.TypeAlias && reflection.type) {\n content.push(\"## Type\")\n content.push(\"\")\n content.push(\"```typescript\")\n content.push(`type ${reflection.name} = ${reflection.type.toString()}`)\n content.push(\"```\")\n content.push(\"\")\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && reflection.sources?.[0]) {\n const source = reflection.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n content.push(\"## Source\")\n content.push(\"\")\n if (sourceUrl) {\n content.push(`[${source.fileName}:${source.line}](${sourceUrl})`)\n } else {\n content.push(`${source.fileName}:${source.line}`)\n }\n content.push(\"\")\n }\n\n // Tags (deprecated, example, etc.)\n if (reflection.comment?.blockTags) {\n const examples = reflection.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"## Examples\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n\n const deprecated = reflection.comment.blockTags.find((t) => t.tag === \"@deprecated\")\n if (deprecated) {\n content.push(\":::warning Deprecated\")\n content.push(this.renderComment(deprecated.content))\n content.push(\":::\")\n content.push(\"\")\n }\n\n const see = reflection.comment.blockTags.filter((t) => t.tag === \"@see\")\n if (see.length > 0) {\n content.push(\"## See Also\")\n content.push(\"\")\n for (const s of see) {\n content.push(`- ${this.renderComment(s.content)}`)\n }\n content.push(\"\")\n }\n }\n\n // Prev/Next navigation within group\n if (prev || next) {\n content.push(\"---\")\n content.push(\"\")\n const groupPrefix = this.getGroupUrlPrefix(reflection.kind)\n const prevLink = prev\n ? `[← ${prev.name}](${this.buildLink(groupPrefix, this.getSlug(prev.name))})`\n : \"\"\n const nextLink = next\n ? `[${next.name} →](${this.buildLink(groupPrefix, this.getSlug(next.name))})`\n : \"\"\n if (prev && next) {\n content.push(`${prevLink} | ${nextLink}`)\n } else {\n content.push(prevLink || nextLink)\n }\n content.push(\"\")\n }\n\n return {\n path: `${pagePath}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: reflection.name,\n description: reflection.comment?.summary\n ? this.renderCommentShort(reflection.comment.summary)\n : `${kind} ${reflection.name}`,\n },\n }\n }\n\n private renderSignature(sig: SignatureReflection): string {\n const lines: string[] = []\n\n if (this.config.markdown?.codeBlocks) {\n lines.push(\"```typescript\")\n }\n\n const typeParams = sig.typeParameters\n ? `<${sig.typeParameters.map((tp) => tp.name).join(\", \")}>`\n : \"\"\n\n const params = (sig.parameters || [])\n .map((p) => {\n const optional = p.flags.isOptional ? \"?\" : \"\"\n const type = p.type ? `: ${p.type.toString()}` : \"\"\n return `${p.name}${optional}${type}`\n })\n .join(\", \")\n\n const returnType = sig.type ? `: ${sig.type.toString()}` : \"\"\n\n lines.push(`function ${sig.name}${typeParams}(${params})${returnType}`)\n\n if (this.config.markdown?.codeBlocks) {\n lines.push(\"```\")\n }\n\n // Parameters table\n if (sig.parameters && sig.parameters.length > 0) {\n lines.push(\"\")\n lines.push(\"### Parameters\")\n lines.push(\"\")\n lines.push(\"| Name | Type | Description |\")\n lines.push(\"|------|------|-------------|\")\n\n for (const param of sig.parameters) {\n const type = param.type ? `\\`${param.type.toString()}\\`` : \"-\"\n const desc = param.comment?.summary ? this.renderCommentShort(param.comment.summary) : \"-\"\n const optional = param.flags.isOptional ? \" (optional)\" : \"\"\n lines.push(`| ${param.name}${optional} | ${type} | ${desc} |`)\n }\n }\n\n // Return value\n if (sig.type && sig.type.toString() !== \"void\") {\n lines.push(\"\")\n lines.push(\"### Returns\")\n lines.push(\"\")\n lines.push(`\\`${sig.type.toString()}\\``)\n\n if (sig.comment?.blockTags) {\n const returns = sig.comment.blockTags.find((t) => t.tag === \"@returns\")\n if (returns) {\n lines.push(\"\")\n lines.push(this.renderComment(returns.content))\n }\n }\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderProperty(prop: DeclarationReflection): string {\n const lines: string[] = []\n\n const flags: string[] = []\n if (prop.flags.isOptional) flags.push(\"optional\")\n if (prop.flags.isReadonly) flags.push(\"readonly\")\n if (prop.flags.isStatic) flags.push(\"static\")\n\n lines.push(`### ${prop.name}`)\n if (flags.length > 0) {\n lines.push(`*${flags.join(\", \")}*`)\n }\n lines.push(\"\")\n\n if (prop.type) {\n lines.push(\"```typescript\")\n lines.push(`${prop.name}: ${prop.type.toString()}`)\n lines.push(\"```\")\n lines.push(\"\")\n }\n\n if (prop.comment?.summary) {\n lines.push(this.renderComment(prop.comment.summary))\n }\n\n if (prop.defaultValue) {\n lines.push(\"\")\n lines.push(`**Default:** \\`${prop.defaultValue}\\``)\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderMethod(method: DeclarationReflection): string {\n const lines: string[] = []\n\n lines.push(`### ${method.name}()`)\n lines.push(\"\")\n\n if (method.signatures) {\n for (const sig of method.signatures) {\n if (sig.comment?.summary) {\n lines.push(this.renderComment(sig.comment.summary))\n lines.push(\"\")\n }\n\n lines.push(this.renderSignature(sig))\n lines.push(\"\")\n }\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderTypeParameters(typeParams: TypeParameterReflection[]): string {\n const lines: string[] = []\n lines.push(\"| Name | Constraint | Default | Description |\")\n lines.push(\"|------|------------|---------|-------------|\")\n\n for (const tp of typeParams) {\n const constraint = tp.type ? `\\`${tp.type.toString()}\\`` : \"-\"\n const defaultVal = tp.default ? `\\`${tp.default.toString()}\\`` : \"-\"\n const desc = tp.comment?.summary ? this.renderCommentShort(tp.comment.summary) : \"-\"\n lines.push(`| ${tp.name} | ${constraint} | ${defaultVal} | ${desc} |`)\n }\n\n return lines.join(\"\\n\")\n }\n\n private renderHierarchy(reflection: DeclarationReflection): string | null {\n const lines: string[] = []\n\n if (reflection.extendedTypes && reflection.extendedTypes.length > 0) {\n lines.push(\"**Extends:**\")\n for (const t of reflection.extendedTypes) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.implementedTypes && reflection.implementedTypes.length > 0) {\n lines.push(\"**Implements:**\")\n for (const t of reflection.implementedTypes) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.extendedBy && reflection.extendedBy.length > 0) {\n lines.push(\"**Extended by:**\")\n for (const t of reflection.extendedBy) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n if (reflection.implementedBy && reflection.implementedBy.length > 0) {\n lines.push(\"**Implemented by:**\")\n for (const t of reflection.implementedBy) {\n lines.push(`- \\`${t.toString()}\\``)\n }\n }\n\n return lines.length > 0 ? lines.join(\"\\n\") : null\n }\n\n private renderComment(parts: { kind: string; text: string }[]): string {\n return parts.map((p) => p.text).join(\"\")\n }\n\n private renderCommentShort(parts: { kind: string; text: string }[]): string {\n const text = this.renderComment(parts)\n const firstSentence = text.split(/[.!?]\\s/)[0]\n return firstSentence.length < text.length ? firstSentence + \".\" : text\n }\n\n private generateBreadcrumbs(pagePath: string): string {\n const parts = pagePath.split(\"/\")\n const breadcrumbs: string[] = [`[API](${this.basePath})`]\n\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath += (currentPath ? \"/\" : \"\") + parts[i]\n breadcrumbs.push(`[${parts[i]}](${this.basePath}/${currentPath})`)\n }\n\n breadcrumbs.push(parts[parts.length - 1])\n\n return breadcrumbs.join(\" / \")\n }\n\n private getKindName(kind: ReflectionKind): string {\n const kindNames: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Class]: \"Class\",\n [ReflectionKind.Interface]: \"Interface\",\n [ReflectionKind.Enum]: \"Enum\",\n [ReflectionKind.TypeAlias]: \"Type\",\n [ReflectionKind.Function]: \"Function\",\n [ReflectionKind.Variable]: \"Variable\",\n [ReflectionKind.Namespace]: \"Namespace\",\n [ReflectionKind.Module]: \"Module\",\n [ReflectionKind.Property]: \"Property\",\n [ReflectionKind.Method]: \"Method\",\n }\n return kindNames[kind] || \"Unknown\"\n }\n\n private getGroupUrlPrefix(kind: ReflectionKind): string {\n const prefixes: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Class]: \"classes\",\n [ReflectionKind.Interface]: \"interfaces\",\n [ReflectionKind.Enum]: \"enums\",\n [ReflectionKind.Variable]: \"variables\",\n [ReflectionKind.Namespace]: \"namespaces\",\n [ReflectionKind.Module]: \"modules\",\n }\n return prefixes[kind] || \"other\"\n }\n\n private getSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n }\n\n /**\n * Build a route-compatible link path for a category/slug pair.\n * React Router maps \"category/index.md\" to the \"/category\" route,\n * so links must not include a trailing \"/index\".\n */\n private buildLink(category: string, slug: string): string {\n if (slug === \"index\") {\n return `${this.basePath}/${category}`\n }\n return `${this.basePath}/${category}/${slug}`\n }\n\n private getSourceUrl(fileName: string, line: number): string | null {\n if (!this.config.markdown?.sourceBaseUrl) return null\n const baseUrl = this.config.markdown.sourceBaseUrl.replace(/\\/$/, \"\")\n return `${baseUrl}/${fileName}#L${line}`\n }\n\n /**\n * Check if a function name looks like a React component (PascalCase)\n */\n private isReactComponent(name: string): boolean {\n // React components start with uppercase and don't contain underscores\n // Also check for common component patterns\n if (name[0] !== name[0].toUpperCase()) return false\n if (name.includes(\"_\")) return false\n // Exclude common non-component patterns\n if (name.startsWith(\"use\")) return false // hooks\n if (name.endsWith(\"Props\") || name.endsWith(\"Options\") || name.endsWith(\"Config\")) return false\n return true\n }\n\n /**\n * Generate a page for a React component\n */\n private generateComponentPage(\n component: DeclarationReflection,\n prev: DeclarationReflection | null,\n next: DeclarationReflection | null\n ): GeneratedApiDoc {\n const slug = this.getSlug(component.name)\n const groupPrefix = \"components\"\n const content: string[] = []\n\n content.push(`# ${component.name}`)\n content.push(\"\")\n\n // Description\n if (component.comment?.summary) {\n content.push(this.renderComment(component.comment.summary))\n content.push(\"\")\n }\n\n // Signature\n if (component.signatures) {\n content.push(\"## Usage\")\n content.push(\"\")\n for (const sig of component.signatures) {\n content.push(this.renderComponentSignature(sig, component.name))\n content.push(\"\")\n }\n }\n\n // Examples\n if (component.comment?.blockTags) {\n const examples = component.comment.blockTags.filter((t) => t.tag === \"@example\")\n if (examples.length > 0) {\n content.push(\"## Example\")\n content.push(\"\")\n for (const example of examples) {\n content.push(this.renderComment(example.content))\n content.push(\"\")\n }\n }\n }\n\n // Source link\n if (this.config.markdown?.sourceLinks && component.sources?.[0]) {\n const source = component.sources[0]\n const sourceUrl = this.getSourceUrl(source.fileName, source.line)\n if (sourceUrl) {\n content.push(`[Source](${sourceUrl})`)\n content.push(\"\")\n }\n }\n\n // Prev/Next navigation\n if (prev || next) {\n content.push(\"---\")\n content.push(\"\")\n const prevLink = prev\n ? `[← ${prev.name}](${this.buildLink(groupPrefix, this.getSlug(prev.name))})`\n : \"\"\n const nextLink = next\n ? `[${next.name} →](${this.buildLink(groupPrefix, this.getSlug(next.name))})`\n : \"\"\n if (prev && next) {\n content.push(`${prevLink} | ${nextLink}`)\n } else {\n content.push(prevLink || nextLink)\n }\n content.push(\"\")\n }\n\n return {\n path: `${groupPrefix}/${slug}.md`,\n content: content.join(\"\\n\"),\n frontmatter: {\n title: component.name,\n description: component.comment?.summary\n ? this.renderCommentShort(component.comment.summary)\n : `${component.name} component`,\n },\n }\n }\n\n /**\n * Get the name of a TypeDoc type (handles reference types, etc.)\n */\n private getTypeName(paramType: unknown): string | null {\n if (!paramType || typeof paramType !== \"object\") return null\n\n // Direct name property\n if (\"name\" in paramType && typeof (paramType as { name: unknown }).name === \"string\") {\n return (paramType as { name: string }).name\n }\n\n // Reference type with target\n if (\"type\" in paramType && (paramType as { type: string }).type === \"reference\") {\n const refType = paramType as { name?: string; qualifiedName?: string }\n return refType.name || refType.qualifiedName || null\n }\n\n return null\n }\n\n /**\n * Get props from a component's parameter type\n */\n private getPropsFromType(\n paramType: unknown\n ): Array<{ name: string; type: string; optional: boolean; description: string }> {\n const props: Array<{ name: string; type: string; optional: boolean; description: string }> = []\n\n // Check if it's a reflection type with inline declaration\n if (paramType && typeof paramType === \"object\" && \"declaration\" in paramType) {\n const declaration = (paramType as { declaration: DeclarationReflection }).declaration\n const children = declaration.children || []\n for (const child of children) {\n props.push({\n name: child.name,\n type: child.type ? child.type.toString() : \"unknown\",\n optional: child.flags.isOptional,\n description: child.comment?.summary ? this.renderCommentShort(child.comment.summary) : \"\",\n })\n }\n }\n // Check if it's a reference type - look up the interface in the project\n else {\n const typeName = this.getTypeName(paramType)\n if (typeName) {\n // Find the interface/type alias in the project\n let propsInterface = this.project?.getChildByName(typeName)\n\n // If not found directly, search all children\n if (!propsInterface && this.project?.children) {\n for (const child of this.project.children) {\n if (child.name === typeName) {\n propsInterface = child\n break\n }\n }\n }\n\n if (propsInterface && \"children\" in propsInterface) {\n const children = (propsInterface as DeclarationReflection).children || []\n for (const child of children) {\n props.push({\n name: child.name,\n type: child.type ? child.type.toString() : \"unknown\",\n optional: child.flags.isOptional,\n description: child.comment?.summary\n ? this.renderCommentShort(child.comment.summary)\n : \"\",\n })\n }\n }\n }\n }\n\n return props\n }\n\n /**\n * Render a component signature in a more readable format\n */\n private renderComponentSignature(sig: SignatureReflection, componentName: string): string {\n const lines: string[] = []\n\n // Get props from the first parameter\n const propsParam = sig.parameters?.[0]\n const props = propsParam ? this.getPropsFromType(propsParam.type) : []\n\n // Get the props interface name for linking\n const propsTypeName = propsParam?.type ? this.getTypeName(propsParam.type) : null\n\n // Check if component has children prop\n const hasChildren = props.some((p) => p.name === \"children\")\n // Filter out children from props display (shown in JSX structure instead)\n const displayProps = props.filter((p) => p.name !== \"children\")\n\n lines.push(\"```tsx\")\n lines.push(`<${componentName}`)\n\n if (displayProps.length > 0) {\n for (const prop of displayProps) {\n const optMark = prop.optional ? \"?\" : \"\"\n lines.push(` ${prop.name}${optMark}={${prop.type}}`)\n }\n } else if (!hasChildren) {\n lines.push(` {...props}`)\n }\n\n if (hasChildren) {\n lines.push(`>`)\n lines.push(` {children}`)\n lines.push(`</${componentName}>`)\n } else {\n lines.push(`/>`)\n }\n lines.push(\"```\")\n\n // Props table with link to props interface\n if (props.length > 0) {\n lines.push(\"\")\n if (propsTypeName) {\n lines.push(`## [Props](${this.basePath}/interfaces/${this.getSlug(propsTypeName)})`)\n } else {\n lines.push(\"## Props\")\n }\n lines.push(\"\")\n lines.push(\"| Prop | Type | Required | Description |\")\n lines.push(\"|------|------|----------|-------------|\")\n\n for (const prop of props) {\n const type = `\\`${prop.type}\\``\n const required = prop.optional ? \"No\" : \"Yes\"\n const desc = prop.description || \"-\"\n lines.push(`| ${prop.name} | ${type} | ${required} | ${desc} |`)\n }\n }\n\n // Skip return value for components - it's always Element/JSX.Element\n\n return lines.join(\"\\n\")\n }\n}\n\nexport async function generateApiDocs(\n config: TypeDocConfig,\n outputDir: string\n): Promise<GeneratedApiDoc[]> {\n const generator = new TypeDocGenerator(config)\n return generator.generate(outputDir)\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAIK;AACP,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAGvB,IAAM,mBAAN,MAAuB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB,oBAAI,IAAgC;AAAA,EAE/D,YAAY,QAAuB;AACjC,SAAK,SAAS;AAAA,MACZ,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,MAAM,CAAC,cAAc;AAAA,MACrB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,aAAa;AAAA,QACb,WAAW;AAAA,QACX,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,MACA,GAAG;AAAA,IACL;AAEA,SAAK,WAAW,MAAM,KAAK,OAAO;AAAA,EACpC;AAAA,EAEA,MAAM,SAAS,WAA+C;AAE5D,UAAM,QAAQ,IAAI,KAAK,OAAO,YAAY,IAAI,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC,CAAC;AAElF,UAAM,iBAA0C;AAAA,MAC9C,aAAa,KAAK,OAAO;AAAA,MACzB,UAAU,KAAK,OAAO;AAAA,MACtB,kBAAkB,KAAK,OAAO;AAAA,MAC9B,gBAAgB,KAAK,OAAO;AAAA,MAC5B,kBAAkB,KAAK,OAAO;AAAA,MAC9B,iBAAiB,KAAK,OAAO;AAAA,MAC7B,MAAM,KAAK,OAAO;AAAA,IACpB;AAIA,QAAI,KAAK,OAAO,QAAS,gBAAe,UAAU,KAAK,OAAO;AAC9D,QAAI,KAAK,OAAO,cAAe,gBAAe,gBAAgB,KAAK,OAAO;AAC1E,QAAI,KAAK,OAAO,WAAY,gBAAe,aAAa,KAAK,OAAO;AACpE,QAAI,KAAK,OAAO,OAAQ,gBAAe,SAAS,KAAK,OAAO;AAC5D,QAAI,KAAK,OAAO,OAAQ,gBAAe,SAAS,KAAK,OAAO;AAE5D,SAAK,MAAM,MAAM,YAAY,qBAAqB,gBAAgB;AAAA,MAChE,IAAI,eAAe;AAAA,MACnB,IAAI,cAAc;AAAA,IACpB,CAAC;AAED,SAAK,UAAU,MAAM,KAAK,IAAI,QAAQ;AAEtC,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAEA,UAAM,OAAO,KAAK,qBAAqB;AACvC,UAAM,SAAS,KAAK,KAAK,WAAW,KAAK,OAAO,GAAI;AAEpD,UAAM,GAAG,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAE1C,eAAW,OAAO,MAAM;AACtB,YAAM,WAAW,KAAK,KAAK,QAAQ,IAAI,IAAI;AAC3C,YAAM,MAAM,KAAK,QAAQ,QAAQ;AACjC,YAAM,GAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAEvC,YAAM,mBAAmB;AAAA,QACvB;AAAA,QACA,UAAU,IAAI,YAAY,KAAK;AAAA,QAC/B,IAAI,YAAY,cAAc,gBAAgB,IAAI,YAAY,WAAW,KAAK;AAAA,QAC9E,IAAI,YAAY,qBAAqB,SACjC,qBAAqB,IAAI,YAAY,gBAAgB,KACrD;AAAA,QACJ,IAAI,YAAY,YAAY,QAAQ,mBAAmB;AAAA,QACvD;AAAA,MACF,EAAE,OAAO,CAAC,SAAyB,SAAS,IAAI;AAEhD,YAAM,cAAc,iBAAiB,KAAK,IAAI,IAAI;AAElD,YAAM,GAAG,UAAU,UAAU,cAAc,IAAI,OAAO;AAAA,IACxD;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,uBAA0C;AAChD,QAAI,CAAC,KAAK,QAAS,QAAO,CAAC;AAE3B,UAAM,OAA0B,CAAC;AAGjC,SAAK,KAAK,KAAK,kBAAkB,CAAC;AAElC,UAAM,WAAW,KAAK,QAAQ,YAAY,CAAC;AAI3C,UAAM,kBAAkB,oBAAI,IAAqC;AACjE,UAAM,cAAc,oBAAI,IAAqC;AAC7D,UAAM,iBAA0C,CAAC;AACjD,UAAM,kBAA2C,CAAC;AAElD,eAAW,SAAS,UAAU;AAC5B,YAAM,aAAa,MAAM,UAAU,CAAC,GAAG;AAEvC,UAAI,MAAM,SAAS,eAAe,YAAY,YAAY;AAExD,YAAI,KAAK,iBAAiB,MAAM,IAAI,GAAG;AACrC,yBAAe,KAAK,KAAK;AAAA,QAC3B,OAAO;AACL,gBAAM,WAAW,gBAAgB,IAAI,UAAU,KAAK,CAAC;AACrD,mBAAS,KAAK,KAAK;AACnB,0BAAgB,IAAI,YAAY,QAAQ;AAAA,QAC1C;AAAA,MACF,WAAW,MAAM,SAAS,eAAe,aAAa,YAAY;AAChE,cAAM,WAAW,YAAY,IAAI,UAAU,KAAK,CAAC;AACjD,iBAAS,KAAK,KAAK;AACnB,oBAAY,IAAI,YAAY,QAAQ;AAAA,MACtC,OAAO;AACL,wBAAgB,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF;AAGA,eAAW,CAAC,YAAY,SAAS,KAAK,iBAAiB;AACrD,WAAK,KAAK,KAAK,6BAA6B,YAAY,SAAS,CAAC;AAAA,IACpE;AAGA,eAAW,CAAC,YAAY,KAAK,KAAK,aAAa;AAC7C,WAAK,KAAK,KAAK,yBAAyB,YAAY,KAAK,CAAC;AAAA,IAC5D;AAIA,UAAM,mBAAmB,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AACxF,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAChD,YAAM,OAAO,IAAI,IAAI,iBAAiB,IAAI,CAAC,IAAI;AAC/C,YAAM,OAAO,IAAI,iBAAiB,SAAS,IAAI,iBAAiB,IAAI,CAAC,IAAI;AACzE,WAAK,KAAK,KAAK,sBAAsB,iBAAiB,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,IACvE;AAGA,UAAM,cAAc,oBAAI,IAAqC;AAC7D,eAAW,SAAS,iBAAiB;AACnC,YAAM,OAAO,MAAM;AACnB,YAAM,WAAW,YAAY,IAAI,IAAI,KAAK,CAAC;AAC3C,eAAS,KAAK,KAAK;AACnB,kBAAY,IAAI,MAAM,QAAQ;AAAA,IAChC;AAGA,eAAW,CAAC,EAAE,KAAK,KAAK,aAAa;AACnC,YAAM,cAAc,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC1E,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAM,OAAO,IAAI,IAAI,YAAY,IAAI,CAAC,IAAI;AAC1C,cAAM,OAAO,IAAI,YAAY,SAAS,IAAI,YAAY,IAAI,CAAC,IAAI;AAC/D,aAAK,KAAK,GAAG,KAAK,uBAAuB,YAAY,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AAAA,MAC1E;AAAA,IACF;AAGA,SAAK;AAAA,MACH,GAAG,KAAK;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,2BACN,MACA,gBACA,iBACA,aACA,iBACmB;AACnB,UAAM,aAAgC,CAAC;AAGvC,QAAI,eAAe,SAAS,GAAG;AAC7B,YAAM,SAAS,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC9E,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,GAAG,OAAO,IAAI,CAAC,MAAM;AACnB,gBAAM,OAAO,EAAE,SAAS,UAAU,MAAM,KAAK,mBAAmB,EAAE,QAAQ,OAAO,CAAC,KAAK;AACvF,iBAAO,MAAM,EAAE,IAAI,KAAK,KAAK,UAAU,cAAc,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI;AAAA,QACpF,CAAC;AAAA,QACD;AAAA,MACF;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,IAAI;AAAA,QAC1B,aAAa,EAAE,OAAO,cAAc,SAAS,MAAM;AAAA,MACrD,CAAC;AAAA,IACH;AAGA,QAAI,gBAAgB,OAAO,GAAG;AAC5B,YAAM,gBAAgB,CAAC,GAAG,gBAAgB,QAAQ,CAAC,EAAE;AAAA,QAAK,CAAC,GAAG,MAC5D,KAAK,sBAAsB,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAAA,MACjF;AACA,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,GAAG,cAAc,IAAI,CAAC,CAAC,YAAY,SAAS,MAAM;AAChD,gBAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,gBAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,gBAAM,YAAY,UACf,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,EACL,KAAK,IAAI;AACZ,iBAAO,MAAM,UAAU,KAAK,KAAK,UAAU,aAAa,IAAI,CAAC,OAAO,SAAS;AAAA,QAC/E,CAAC;AAAA,QACD;AAAA,MACF;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,IAAI;AAAA,QAC1B,aAAa,EAAE,OAAO,aAAa,SAAS,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;AAGA,UAAM,aAAa,gBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,SAAS;AACpF,UAAM,UAAU,gBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,KAAK;AAG7E,QAAI,WAAW,SAAS,GAAG;AACzB,YAAM,SAAS,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC1E,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,GAAG,OAAO,IAAI,CAAC,SAAS;AACtB,gBAAM,OAAO,KAAK,SAAS,UACvB,MAAM,KAAK,mBAAmB,KAAK,QAAQ,OAAO,CAAC,KACnD;AACJ,iBAAO,MAAM,KAAK,IAAI,KAAK,KAAK,UAAU,cAAc,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI;AAAA,QAC1F,CAAC;AAAA,QACD;AAAA,MACF;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,IAAI;AAAA,QAC1B,aAAa,EAAE,OAAO,cAAc,SAAS,MAAM;AAAA,MACrD,CAAC;AAAA,IACH;AAGA,QAAI,YAAY,OAAO,GAAG;AACxB,YAAM,gBAAgB,CAAC,GAAG,YAAY,QAAQ,CAAC,EAAE;AAAA,QAAK,CAAC,GAAG,MACxD,KAAK,sBAAsB,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAAA,MACjF;AACA,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,GAAG,cAAc,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM;AAC5C,gBAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,gBAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,gBAAM,YAAY,MACf,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,EACL,KAAK,IAAI;AACZ,iBAAO,MAAM,UAAU,KAAK,KAAK,UAAU,SAAS,IAAI,CAAC,OAAO,SAAS;AAAA,QAC3E,CAAC;AAAA,QACD;AAAA,MACF;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,IAAI;AAAA,QAC1B,aAAa,EAAE,OAAO,SAAS,SAAS,MAAM;AAAA,MAChD,CAAC;AAAA,IACH;AAGA,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,SAAS,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AACvE,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,GAAG,OAAO,IAAI,CAAC,SAAS;AACtB,gBAAM,OAAO,KAAK,SAAS,UACvB,MAAM,KAAK,mBAAmB,KAAK,QAAQ,OAAO,CAAC,KACnD;AACJ,iBAAO,MAAM,KAAK,IAAI,KAAK,KAAK,UAAU,WAAW,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI;AAAA,QACvF,CAAC;AAAA,QACD;AAAA,MACF;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,IAAI;AAAA,QAC1B,aAAa,EAAE,OAAO,WAAW,SAAS,MAAM;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,6BACN,YACA,WACiB;AAEjB,UAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,UAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,UAAM,UAAoB,CAAC;AAE3B,YAAQ,KAAK,KAAK,UAAU,YAAY;AACxC,YAAQ,KAAK,EAAE;AACf,YAAQ,KAAK,6BAA6B,UAAU,IAAI;AACxD,YAAQ,KAAK,EAAE;AAGf,UAAM,kBAAkB,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAElF,eAAW,QAAQ,iBAAiB;AAClC,cAAQ,KAAK,MAAM,KAAK,IAAI,EAAE;AAC9B,cAAQ,KAAK,EAAE;AAGf,UAAI,KAAK,SAAS,SAAS;AACzB,gBAAQ,KAAK,KAAK,cAAc,KAAK,QAAQ,OAAO,CAAC;AACrD,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAGA,UAAI,KAAK,YAAY;AACnB,mBAAW,OAAO,KAAK,YAAY;AACjC,kBAAQ,KAAK,KAAK,gBAAgB,GAAG,CAAC;AACtC,kBAAQ,KAAK,EAAE;AAAA,QACjB;AAAA,MACF;AAGA,UAAI,KAAK,SAAS,WAAW;AAC3B,cAAM,WAAW,KAAK,QAAQ,UAAU,OAAO,CAAC,MAAM,EAAE,QAAQ,UAAU;AAC1E,YAAI,SAAS,SAAS,GAAG;AACvB,kBAAQ,KAAK,aAAa;AAC1B,kBAAQ,KAAK,EAAE;AACf,qBAAW,WAAW,UAAU;AAC9B,oBAAQ,KAAK,KAAK,cAAc,QAAQ,OAAO,CAAC;AAChD,oBAAQ,KAAK,EAAE;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAGA,UAAI,KAAK,OAAO,UAAU,eAAe,KAAK,UAAU,CAAC,GAAG;AAC1D,cAAM,SAAS,KAAK,QAAQ,CAAC;AAC7B,cAAM,YAAY,KAAK,aAAa,OAAO,UAAU,OAAO,IAAI;AAChE,YAAI,WAAW;AACb,kBAAQ,KAAK,YAAY,SAAS,GAAG;AACrC,kBAAQ,KAAK,EAAE;AAAA,QACjB;AAAA,MACF;AAEA,cAAQ,KAAK,KAAK;AAClB,cAAQ,KAAK,EAAE;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,MAAM,aAAa,IAAI;AAAA,MACvB,SAAS,QAAQ,KAAK,IAAI;AAAA,MAC1B,aAAa;AAAA,QACX,OAAO,GAAG,UAAU;AAAA,QACpB,aAAa,kBAAkB,UAAU;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,yBACN,YACA,OACiB;AACjB,UAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,UAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,UAAM,UAAoB,CAAC;AAE3B,YAAQ,KAAK,KAAK,UAAU,QAAQ;AACpC,YAAQ,KAAK,EAAE;AACf,YAAQ,KAAK,2BAA2B,UAAU,IAAI;AACtD,YAAQ,KAAK,EAAE;AAGf,UAAM,cAAc,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAE1E,eAAW,aAAa,aAAa;AACnC,cAAQ,KAAK,MAAM,UAAU,IAAI,EAAE;AACnC,cAAQ,KAAK,EAAE;AAGf,UAAI,UAAU,SAAS,SAAS;AAC9B,gBAAQ,KAAK,KAAK,cAAc,UAAU,QAAQ,OAAO,CAAC;AAC1D,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAGA,UAAI,UAAU,MAAM;AAClB,gBAAQ,KAAK,eAAe;AAC5B,gBAAQ,KAAK,QAAQ,UAAU,IAAI,MAAM,UAAU,KAAK,SAAS,CAAC,EAAE;AACpE,gBAAQ,KAAK,KAAK;AAClB,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAGA,UAAI,KAAK,OAAO,UAAU,eAAe,UAAU,UAAU,CAAC,GAAG;AAC/D,cAAM,SAAS,UAAU,QAAQ,CAAC;AAClC,cAAM,YAAY,KAAK,aAAa,OAAO,UAAU,OAAO,IAAI;AAChE,YAAI,WAAW;AACb,kBAAQ,KAAK,YAAY,SAAS,GAAG;AACrC,kBAAQ,KAAK,EAAE;AAAA,QACjB;AAAA,MACF;AAEA,cAAQ,KAAK,KAAK;AAClB,cAAQ,KAAK,EAAE;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,MAAM,SAAS,IAAI;AAAA,MACnB,SAAS,QAAQ,KAAK,IAAI;AAAA,MAC1B,aAAa;AAAA,QACX,OAAO,GAAG,UAAU;AAAA,QACpB,aAAa,yBAAyB,UAAU;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBAAmB,UAA+C;AAC9E,UAAM,MAAM,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAC/C,QAAI,KAAK,iBAAiB,IAAI,GAAG,GAAG;AAClC,aAAO,KAAK,iBAAiB,IAAI,GAAG;AAAA,IACtC;AAEA,UAAM,SAAS,MAAM,cAAc,EAAE,KAAK,IAAI,CAAC;AAC/C,UAAM,OAAO,QAAQ,YAAY;AACjC,UAAM,WAAW,OAAO,KAAK,QAAQ,aAAa,EAAE,IAAI;AACxD,SAAK,iBAAiB,IAAI,KAAK,QAAQ;AACvC,WAAO;AAAA,EACT;AAAA,EAEQ,sBAAsB,UAA0B;AAKtD,UAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,UAAM,YAAY,MAAM,IAAI,KAAK,UAAU,QAAQ,sBAAsB,EAAE;AAG3E,UAAM,SAAS,MAAM,IAAI;AACzB,QAAI,UAAU,WAAW,OAAO;AAC9B,aAAO,GAAG,MAAM,IAAI,QAAQ;AAAA,IAC9B;AACA,QAAI,aAAa,SAAS;AACxB,YAAM,MAAM,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAC/C,YAAM,cAAc,KAAK,iBAAiB,IAAI,GAAG;AACjD,UAAI,YAAa,QAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,oBAAqC;AAC3C,UAAM,UAAU;AAAA,MACd,KAAK,KAAK,OAAO,SAAS,SAAS,eAAe;AAAA,MAClD;AAAA,MACA,KAAK,SAAS,SAAS,UACnB,KAAK,cAAc,KAAK,QAAQ,QAAQ,OAAO,IAC/C;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,SAAS,YAAY,CAAC;AAI5C,UAAM,kBAAkB,oBAAI,IAAqC;AACjE,UAAM,cAAc,oBAAI,IAAqC;AAC7D,UAAM,iBAA0C,CAAC;AACjD,UAAM,kBAA2C,CAAC;AAElD,eAAW,SAAS,UAAU;AAC5B,YAAM,aAAa,MAAM,UAAU,CAAC,GAAG;AAEvC,UAAI,MAAM,SAAS,eAAe,YAAY,YAAY;AACxD,YAAI,KAAK,iBAAiB,MAAM,IAAI,GAAG;AACrC,yBAAe,KAAK,KAAK;AAAA,QAC3B,OAAO;AACL,gBAAM,WAAW,gBAAgB,IAAI,UAAU,KAAK,CAAC;AACrD,mBAAS,KAAK,KAAK;AACnB,0BAAgB,IAAI,YAAY,QAAQ;AAAA,QAC1C;AAAA,MACF,WAAW,MAAM,SAAS,eAAe,aAAa,YAAY;AAChE,cAAM,WAAW,YAAY,IAAI,UAAU,KAAK,CAAC;AACjD,iBAAS,KAAK,KAAK;AACnB,oBAAY,IAAI,YAAY,QAAQ;AAAA,MACtC,OAAO;AACL,wBAAgB,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF;AAGA,QAAI,eAAe,SAAS,GAAG;AAC7B,cAAQ,KAAK,eAAe;AAC5B,cAAQ,KAAK,EAAE;AAEf,YAAM,mBAAmB,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAExF,iBAAW,aAAa,kBAAkB;AACxC,cAAM,cAAc,UAAU,SAAS,UACnC,KAAK,mBAAmB,UAAU,QAAQ,OAAO,IACjD;AACJ,cAAM,aAAa,cAAc,MAAM,WAAW,KAAK;AACvD,gBAAQ;AAAA,UACN,MAAM,UAAU,IAAI,KAAK,KAAK,UAAU,cAAc,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,UAAU;AAAA,QACnG;AAAA,MACF;AAEA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,gBAAgB,OAAO,GAAG;AAC5B,cAAQ,KAAK,cAAc;AAC3B,cAAQ,KAAK,EAAE;AAGf,YAAM,gBAAgB,CAAC,GAAG,gBAAgB,QAAQ,CAAC,EAAE;AAAA,QAAK,CAAC,GAAG,MAC5D,KAAK,sBAAsB,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAAA,MACjF;AAEA,iBAAW,CAAC,YAAY,SAAS,KAAK,eAAe;AACnD,cAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,cAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,cAAM,YAAY,UACf,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,EACL,KAAK,IAAI;AACZ,gBAAQ,KAAK,MAAM,UAAU,KAAK,KAAK,UAAU,aAAa,IAAI,CAAC,OAAO,SAAS,EAAE;AAAA,MACvF;AAEA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,YAAY,OAAO,GAAG;AACxB,cAAQ,KAAK,iBAAiB;AAC9B,cAAQ,KAAK,EAAE;AAEf,YAAM,gBAAgB,CAAC,GAAG,YAAY,QAAQ,CAAC,EAAE;AAAA,QAAK,CAAC,GAAG,MACxD,KAAK,sBAAsB,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAAA,MACjF;AAEA,iBAAW,CAAC,YAAY,KAAK,KAAK,eAAe;AAC/C,cAAM,aAAa,KAAK,sBAAsB,UAAU;AACxD,cAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,cAAM,YAAY,MACf,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,EACL,KAAK,IAAI;AACZ,gBAAQ,KAAK,MAAM,UAAU,KAAK,KAAK,UAAU,SAAS,IAAI,CAAC,OAAO,SAAS,EAAE;AAAA,MACnF;AAEA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,UAAM,SAAkD,CAAC;AAEzD,eAAW,SAAS,iBAAiB;AACnC,YAAM,WAAW,KAAK,iBAAiB,MAAM,MAAM,MAAM,IAAI;AAC7D,UAAI,CAAC,OAAO,QAAQ,GAAG;AACrB,eAAO,QAAQ,IAAI,CAAC;AAAA,MACtB;AACA,aAAO,QAAQ,EAAE,KAAK,KAAK;AAAA,IAC7B;AAGA,eAAW,SAAS,OAAO,OAAO,MAAM,GAAG;AACzC,YAAM,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,IACnD;AAGA,UAAM,aAAa,CAAC,cAAc,WAAW,aAAa,SAAS,OAAO;AAG1E,eAAW,aAAa,YAAY;AAClC,YAAM,QAAQ,OAAO,SAAS;AAC9B,UAAI,CAAC,SAAS,MAAM,WAAW,EAAG;AAElC,cAAQ,KAAK,MAAM,SAAS,EAAE;AAC9B,cAAQ,KAAK,EAAE;AAEf,iBAAW,SAAS,OAAO;AACzB,cAAM,cAAc,MAAM,SAAS,UAC/B,KAAK,mBAAmB,MAAM,QAAQ,OAAO,IAC7C;AACJ,cAAM,aAAa,cAAc,MAAM,WAAW,KAAK;AACvD,cAAM,iBAAiB,KAAK,kBAAkB,MAAM,IAAI;AACxD,gBAAQ;AAAA,UACN,MAAM,MAAM,IAAI,KAAK,KAAK,UAAU,gBAAgB,KAAK,QAAQ,MAAM,IAAI,CAAC,CAAC,IAAI,UAAU;AAAA,QAC7F;AAAA,MACF;AAEA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,QAAQ,KAAK,IAAI;AAAA,MAC1B,aAAa;AAAA,QACX,OAAO,KAAK,OAAO,SAAS,SAAS;AAAA,QACrC,aAAa;AAAA,QACb,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAiB,MAAsB,MAAsB;AAEnE,QAAI,SAAS,eAAe,UAAU;AAEpC,UAAI,KAAK,WAAW,KAAK,GAAG;AAC1B,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,KAAK,CAAC,KAAK,SAAS,GAAG,GAAG;AAC5D,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK,eAAe;AAClB,eAAO;AAAA,MACT,KAAK,eAAe;AAClB,eAAO;AAAA,MACT,KAAK,eAAe;AAClB,eAAO;AAAA,MACT,KAAK,eAAe;AAClB,eAAO;AAAA,MACT,KAAK,eAAe;AAClB,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,uBACN,YACA,YACA,OAAqC,MACrC,OAAqC,MAClB;AACnB,UAAM,OAA0B,CAAC;AACjC,UAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AAEzC,UAAM,cAAc,aAAa,KAAK,KAAK,kBAAkB,WAAW,IAAI;AAC5E,UAAM,cAAc,aAChB,GAAG,UAAU,IAAI,IAAI,KACrB,cACE,GAAG,WAAW,IAAI,IAAI,KACtB;AAGN,SAAK,KAAK,KAAK,uBAAuB,YAAY,aAAa,MAAM,IAAI,CAAC;AAI1E,UAAM,WAAW,WAAW,YAAY,CAAC;AACzC,UAAM,aAAa;AAAA,MACjB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAEA,eAAW,SAAS,UAAU;AAC5B,UAAI,WAAW,SAAS,MAAM,IAAI,GAAG;AACnC,aAAK,KAAK,GAAG,KAAK,uBAAuB,OAAO,WAAW,CAAC;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,uBACN,YACA,UACA,OAAqC,MACrC,OAAqC,MACpB;AACjB,UAAM,OAAO,KAAK,YAAY,WAAW,IAAI;AAC7C,UAAM,UAAoB,CAAC;AAG3B,QAAI,KAAK,OAAO,UAAU,aAAa;AACrC,cAAQ,KAAK,KAAK,oBAAoB,QAAQ,CAAC;AAC/C,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,YAAQ,KAAK,KAAK,IAAI,KAAK,WAAW,IAAI,EAAE;AAC5C,YAAQ,KAAK,EAAE;AAGf,QAAI,WAAW,SAAS,SAAS;AAC/B,cAAQ,KAAK,KAAK,cAAc,WAAW,QAAQ,OAAO,CAAC;AAC3D,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,WAAW,kBAAkB,WAAW,eAAe,SAAS,GAAG;AACrE,cAAQ,KAAK,oBAAoB;AACjC,cAAQ,KAAK,EAAE;AACf,cAAQ,KAAK,KAAK,qBAAqB,WAAW,cAAc,CAAC;AACjE,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,KAAK,OAAO,UAAU,WAAW;AACnC,YAAM,YAAY,KAAK,gBAAgB,UAAU;AACjD,UAAI,WAAW;AACb,gBAAQ,KAAK,cAAc;AAC3B,gBAAQ,KAAK,EAAE;AACf,gBAAQ,KAAK,SAAS;AACtB,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,QAAI,WAAW,YAAY;AACzB,cAAQ,KAAK,cAAc;AAC3B,cAAQ,KAAK,EAAE;AACf,iBAAW,OAAO,WAAW,YAAY;AACvC,gBAAQ,KAAK,KAAK,gBAAgB,GAAG,CAAC;AACtC,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,UAAM,cAAc,WAAW,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,QAAQ;AAC/F,QAAI,WAAW,SAAS,GAAG;AACzB,cAAQ,KAAK,eAAe;AAC5B,cAAQ,KAAK,EAAE;AACf,iBAAW,QAAQ,YAAY;AAC7B,gBAAQ,KAAK,KAAK,eAAe,IAAI,CAAC;AACtC,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,UAAM,WAAW,WAAW,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,MAAM;AAC1F,QAAI,QAAQ,SAAS,GAAG;AACtB,cAAQ,KAAK,YAAY;AACzB,cAAQ,KAAK,EAAE;AACf,iBAAW,UAAU,SAAS;AAC5B,gBAAQ,KAAK,KAAK,aAAa,MAAM,CAAC;AACtC,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,UAAM,eAAe,WAAW,YAAY,CAAC,GAAG;AAAA,MAC9C,CAAC,MAAM,EAAE,SAAS,eAAe;AAAA,IACnC;AACA,QAAI,YAAY,SAAS,GAAG;AAC1B,cAAQ,KAAK,YAAY;AACzB,cAAQ,KAAK,EAAE;AACf,cAAQ,KAAK,kCAAkC;AAC/C,cAAQ,KAAK,kCAAkC;AAC/C,iBAAW,UAAU,aAAa;AAChC,cAAM,QAAQ,OAAO,gBAAgB;AACrC,cAAM,OAAO,OAAO,SAAS,UAAU,KAAK,mBAAmB,OAAO,QAAQ,OAAO,IAAI;AACzF,gBAAQ,KAAK,OAAO,OAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI;AAAA,MAChE;AACA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,WAAW,SAAS,eAAe,aAAa,WAAW,MAAM;AACnE,cAAQ,KAAK,SAAS;AACtB,cAAQ,KAAK,EAAE;AACf,cAAQ,KAAK,eAAe;AAC5B,cAAQ,KAAK,QAAQ,WAAW,IAAI,MAAM,WAAW,KAAK,SAAS,CAAC,EAAE;AACtE,cAAQ,KAAK,KAAK;AAClB,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,KAAK,OAAO,UAAU,eAAe,WAAW,UAAU,CAAC,GAAG;AAChE,YAAM,SAAS,WAAW,QAAQ,CAAC;AACnC,YAAM,YAAY,KAAK,aAAa,OAAO,UAAU,OAAO,IAAI;AAChE,cAAQ,KAAK,WAAW;AACxB,cAAQ,KAAK,EAAE;AACf,UAAI,WAAW;AACb,gBAAQ,KAAK,IAAI,OAAO,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,GAAG;AAAA,MAClE,OAAO;AACL,gBAAQ,KAAK,GAAG,OAAO,QAAQ,IAAI,OAAO,IAAI,EAAE;AAAA,MAClD;AACA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,WAAW,SAAS,WAAW;AACjC,YAAM,WAAW,WAAW,QAAQ,UAAU,OAAO,CAAC,MAAM,EAAE,QAAQ,UAAU;AAChF,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ,KAAK,aAAa;AAC1B,gBAAQ,KAAK,EAAE;AACf,mBAAW,WAAW,UAAU;AAC9B,kBAAQ,KAAK,KAAK,cAAc,QAAQ,OAAO,CAAC;AAChD,kBAAQ,KAAK,EAAE;AAAA,QACjB;AAAA,MACF;AAEA,YAAM,aAAa,WAAW,QAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,aAAa;AACnF,UAAI,YAAY;AACd,gBAAQ,KAAK,uBAAuB;AACpC,gBAAQ,KAAK,KAAK,cAAc,WAAW,OAAO,CAAC;AACnD,gBAAQ,KAAK,KAAK;AAClB,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAEA,YAAM,MAAM,WAAW,QAAQ,UAAU,OAAO,CAAC,MAAM,EAAE,QAAQ,MAAM;AACvE,UAAI,IAAI,SAAS,GAAG;AAClB,gBAAQ,KAAK,aAAa;AAC1B,gBAAQ,KAAK,EAAE;AACf,mBAAW,KAAK,KAAK;AACnB,kBAAQ,KAAK,KAAK,KAAK,cAAc,EAAE,OAAO,CAAC,EAAE;AAAA,QACnD;AACA,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,QAAI,QAAQ,MAAM;AAChB,cAAQ,KAAK,KAAK;AAClB,cAAQ,KAAK,EAAE;AACf,YAAM,cAAc,KAAK,kBAAkB,WAAW,IAAI;AAC1D,YAAM,WAAW,OACb,WAAM,KAAK,IAAI,KAAK,KAAK,UAAU,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,MACxE;AACJ,YAAM,WAAW,OACb,IAAI,KAAK,IAAI,YAAO,KAAK,UAAU,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,MACxE;AACJ,UAAI,QAAQ,MAAM;AAChB,gBAAQ,KAAK,GAAG,QAAQ,MAAM,QAAQ,EAAE;AAAA,MAC1C,OAAO;AACL,gBAAQ,KAAK,YAAY,QAAQ;AAAA,MACnC;AACA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,MAAM,GAAG,QAAQ;AAAA,MACjB,SAAS,QAAQ,KAAK,IAAI;AAAA,MAC1B,aAAa;AAAA,QACX,OAAO,WAAW;AAAA,QAClB,aAAa,WAAW,SAAS,UAC7B,KAAK,mBAAmB,WAAW,QAAQ,OAAO,IAClD,GAAG,IAAI,IAAI,WAAW,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,gBAAgB,KAAkC;AACxD,UAAM,QAAkB,CAAC;AAEzB,QAAI,KAAK,OAAO,UAAU,YAAY;AACpC,YAAM,KAAK,eAAe;AAAA,IAC5B;AAEA,UAAM,aAAa,IAAI,iBACnB,IAAI,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,MACtD;AAEJ,UAAM,UAAU,IAAI,cAAc,CAAC,GAChC,IAAI,CAAC,MAAM;AACV,YAAM,WAAW,EAAE,MAAM,aAAa,MAAM;AAC5C,YAAM,OAAO,EAAE,OAAO,KAAK,EAAE,KAAK,SAAS,CAAC,KAAK;AACjD,aAAO,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,IAAI;AAAA,IACpC,CAAC,EACA,KAAK,IAAI;AAEZ,UAAM,aAAa,IAAI,OAAO,KAAK,IAAI,KAAK,SAAS,CAAC,KAAK;AAE3D,UAAM,KAAK,YAAY,IAAI,IAAI,GAAG,UAAU,IAAI,MAAM,IAAI,UAAU,EAAE;AAEtE,QAAI,KAAK,OAAO,UAAU,YAAY;AACpC,YAAM,KAAK,KAAK;AAAA,IAClB;AAGA,QAAI,IAAI,cAAc,IAAI,WAAW,SAAS,GAAG;AAC/C,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,gBAAgB;AAC3B,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,+BAA+B;AAC1C,YAAM,KAAK,+BAA+B;AAE1C,iBAAW,SAAS,IAAI,YAAY;AAClC,cAAM,OAAO,MAAM,OAAO,KAAK,MAAM,KAAK,SAAS,CAAC,OAAO;AAC3D,cAAM,OAAO,MAAM,SAAS,UAAU,KAAK,mBAAmB,MAAM,QAAQ,OAAO,IAAI;AACvF,cAAM,WAAW,MAAM,MAAM,aAAa,gBAAgB;AAC1D,cAAM,KAAK,KAAK,MAAM,IAAI,GAAG,QAAQ,MAAM,IAAI,MAAM,IAAI,IAAI;AAAA,MAC/D;AAAA,IACF;AAGA,QAAI,IAAI,QAAQ,IAAI,KAAK,SAAS,MAAM,QAAQ;AAC9C,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,aAAa;AACxB,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,KAAK,IAAI,KAAK,SAAS,CAAC,IAAI;AAEvC,UAAI,IAAI,SAAS,WAAW;AAC1B,cAAM,UAAU,IAAI,QAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,UAAU;AACtE,YAAI,SAAS;AACX,gBAAM,KAAK,EAAE;AACb,gBAAM,KAAK,KAAK,cAAc,QAAQ,OAAO,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AAAA,EAEQ,eAAe,MAAqC;AAC1D,UAAM,QAAkB,CAAC;AAEzB,UAAM,QAAkB,CAAC;AACzB,QAAI,KAAK,MAAM,WAAY,OAAM,KAAK,UAAU;AAChD,QAAI,KAAK,MAAM,WAAY,OAAM,KAAK,UAAU;AAChD,QAAI,KAAK,MAAM,SAAU,OAAM,KAAK,QAAQ;AAE5C,UAAM,KAAK,OAAO,KAAK,IAAI,EAAE;AAC7B,QAAI,MAAM,SAAS,GAAG;AACpB,YAAM,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,GAAG;AAAA,IACpC;AACA,UAAM,KAAK,EAAE;AAEb,QAAI,KAAK,MAAM;AACb,YAAM,KAAK,eAAe;AAC1B,YAAM,KAAK,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,SAAS,CAAC,EAAE;AAClD,YAAM,KAAK,KAAK;AAChB,YAAM,KAAK,EAAE;AAAA,IACf;AAEA,QAAI,KAAK,SAAS,SAAS;AACzB,YAAM,KAAK,KAAK,cAAc,KAAK,QAAQ,OAAO,CAAC;AAAA,IACrD;AAEA,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,kBAAkB,KAAK,YAAY,IAAI;AAAA,IACpD;AAEA,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AAAA,EAEQ,aAAa,QAAuC;AAC1D,UAAM,QAAkB,CAAC;AAEzB,UAAM,KAAK,OAAO,OAAO,IAAI,IAAI;AACjC,UAAM,KAAK,EAAE;AAEb,QAAI,OAAO,YAAY;AACrB,iBAAW,OAAO,OAAO,YAAY;AACnC,YAAI,IAAI,SAAS,SAAS;AACxB,gBAAM,KAAK,KAAK,cAAc,IAAI,QAAQ,OAAO,CAAC;AAClD,gBAAM,KAAK,EAAE;AAAA,QACf;AAEA,cAAM,KAAK,KAAK,gBAAgB,GAAG,CAAC;AACpC,cAAM,KAAK,EAAE;AAAA,MACf;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AAAA,EAEQ,qBAAqB,YAA+C;AAC1E,UAAM,QAAkB,CAAC;AACzB,UAAM,KAAK,+CAA+C;AAC1D,UAAM,KAAK,+CAA+C;AAE1D,eAAW,MAAM,YAAY;AAC3B,YAAM,aAAa,GAAG,OAAO,KAAK,GAAG,KAAK,SAAS,CAAC,OAAO;AAC3D,YAAM,aAAa,GAAG,UAAU,KAAK,GAAG,QAAQ,SAAS,CAAC,OAAO;AACjE,YAAM,OAAO,GAAG,SAAS,UAAU,KAAK,mBAAmB,GAAG,QAAQ,OAAO,IAAI;AACjF,YAAM,KAAK,KAAK,GAAG,IAAI,MAAM,UAAU,MAAM,UAAU,MAAM,IAAI,IAAI;AAAA,IACvE;AAEA,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AAAA,EAEQ,gBAAgB,YAAkD;AACxE,UAAM,QAAkB,CAAC;AAEzB,QAAI,WAAW,iBAAiB,WAAW,cAAc,SAAS,GAAG;AACnE,YAAM,KAAK,cAAc;AACzB,iBAAW,KAAK,WAAW,eAAe;AACxC,cAAM,KAAK,OAAO,EAAE,SAAS,CAAC,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,QAAI,WAAW,oBAAoB,WAAW,iBAAiB,SAAS,GAAG;AACzE,YAAM,KAAK,iBAAiB;AAC5B,iBAAW,KAAK,WAAW,kBAAkB;AAC3C,cAAM,KAAK,OAAO,EAAE,SAAS,CAAC,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,QAAI,WAAW,cAAc,WAAW,WAAW,SAAS,GAAG;AAC7D,YAAM,KAAK,kBAAkB;AAC7B,iBAAW,KAAK,WAAW,YAAY;AACrC,cAAM,KAAK,OAAO,EAAE,SAAS,CAAC,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,QAAI,WAAW,iBAAiB,WAAW,cAAc,SAAS,GAAG;AACnE,YAAM,KAAK,qBAAqB;AAChC,iBAAW,KAAK,WAAW,eAAe;AACxC,cAAM,KAAK,OAAO,EAAE,SAAS,CAAC,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,MAAM,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI;AAAA,EAC/C;AAAA,EAEQ,cAAc,OAAiD;AACrE,WAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAAA,EACzC;AAAA,EAEQ,mBAAmB,OAAiD;AAC1E,UAAM,OAAO,KAAK,cAAc,KAAK;AACrC,UAAM,gBAAgB,KAAK,MAAM,SAAS,EAAE,CAAC;AAC7C,WAAO,cAAc,SAAS,KAAK,SAAS,gBAAgB,MAAM;AAAA,EACpE;AAAA,EAEQ,oBAAoB,UAA0B;AACpD,UAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,UAAM,cAAwB,CAAC,SAAS,KAAK,QAAQ,GAAG;AAExD,QAAI,cAAc;AAClB,aAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACzC,sBAAgB,cAAc,MAAM,MAAM,MAAM,CAAC;AACjD,kBAAY,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,GAAG;AAAA,IACnE;AAEA,gBAAY,KAAK,MAAM,MAAM,SAAS,CAAC,CAAC;AAExC,WAAO,YAAY,KAAK,KAAK;AAAA,EAC/B;AAAA,EAEQ,YAAY,MAA8B;AAChD,UAAM,YAAqD;AAAA,MACzD,CAAC,eAAe,KAAK,GAAG;AAAA,MACxB,CAAC,eAAe,SAAS,GAAG;AAAA,MAC5B,CAAC,eAAe,IAAI,GAAG;AAAA,MACvB,CAAC,eAAe,SAAS,GAAG;AAAA,MAC5B,CAAC,eAAe,QAAQ,GAAG;AAAA,MAC3B,CAAC,eAAe,QAAQ,GAAG;AAAA,MAC3B,CAAC,eAAe,SAAS,GAAG;AAAA,MAC5B,CAAC,eAAe,MAAM,GAAG;AAAA,MACzB,CAAC,eAAe,QAAQ,GAAG;AAAA,MAC3B,CAAC,eAAe,MAAM,GAAG;AAAA,IAC3B;AACA,WAAO,UAAU,IAAI,KAAK;AAAA,EAC5B;AAAA,EAEQ,kBAAkB,MAA8B;AACtD,UAAM,WAAoD;AAAA,MACxD,CAAC,eAAe,KAAK,GAAG;AAAA,MACxB,CAAC,eAAe,SAAS,GAAG;AAAA,MAC5B,CAAC,eAAe,IAAI,GAAG;AAAA,MACvB,CAAC,eAAe,QAAQ,GAAG;AAAA,MAC3B,CAAC,eAAe,SAAS,GAAG;AAAA,MAC5B,CAAC,eAAe,MAAM,GAAG;AAAA,IAC3B;AACA,WAAO,SAAS,IAAI,KAAK;AAAA,EAC3B;AAAA,EAEQ,QAAQ,MAAsB;AACpC,WAAO,KACJ,YAAY,EACZ,QAAQ,eAAe,GAAG,EAC1B,QAAQ,UAAU,EAAE;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,UAAU,UAAkB,MAAsB;AACxD,QAAI,SAAS,SAAS;AACpB,aAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ;AAAA,IACrC;AACA,WAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI;AAAA,EAC7C;AAAA,EAEQ,aAAa,UAAkB,MAA6B;AAClE,QAAI,CAAC,KAAK,OAAO,UAAU,cAAe,QAAO;AACjD,UAAM,UAAU,KAAK,OAAO,SAAS,cAAc,QAAQ,OAAO,EAAE;AACpE,WAAO,GAAG,OAAO,IAAI,QAAQ,KAAK,IAAI;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,MAAuB;AAG9C,QAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,EAAG,QAAO;AAC9C,QAAI,KAAK,SAAS,GAAG,EAAG,QAAO;AAE/B,QAAI,KAAK,WAAW,KAAK,EAAG,QAAO;AACnC,QAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,QAAQ,EAAG,QAAO;AAC1F,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,sBACN,WACA,MACA,MACiB;AACjB,UAAM,OAAO,KAAK,QAAQ,UAAU,IAAI;AACxC,UAAM,cAAc;AACpB,UAAM,UAAoB,CAAC;AAE3B,YAAQ,KAAK,KAAK,UAAU,IAAI,EAAE;AAClC,YAAQ,KAAK,EAAE;AAGf,QAAI,UAAU,SAAS,SAAS;AAC9B,cAAQ,KAAK,KAAK,cAAc,UAAU,QAAQ,OAAO,CAAC;AAC1D,cAAQ,KAAK,EAAE;AAAA,IACjB;AAGA,QAAI,UAAU,YAAY;AACxB,cAAQ,KAAK,UAAU;AACvB,cAAQ,KAAK,EAAE;AACf,iBAAW,OAAO,UAAU,YAAY;AACtC,gBAAQ,KAAK,KAAK,yBAAyB,KAAK,UAAU,IAAI,CAAC;AAC/D,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,WAAW;AAChC,YAAM,WAAW,UAAU,QAAQ,UAAU,OAAO,CAAC,MAAM,EAAE,QAAQ,UAAU;AAC/E,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ,KAAK,YAAY;AACzB,gBAAQ,KAAK,EAAE;AACf,mBAAW,WAAW,UAAU;AAC9B,kBAAQ,KAAK,KAAK,cAAc,QAAQ,OAAO,CAAC;AAChD,kBAAQ,KAAK,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAGA,QAAI,KAAK,OAAO,UAAU,eAAe,UAAU,UAAU,CAAC,GAAG;AAC/D,YAAM,SAAS,UAAU,QAAQ,CAAC;AAClC,YAAM,YAAY,KAAK,aAAa,OAAO,UAAU,OAAO,IAAI;AAChE,UAAI,WAAW;AACb,gBAAQ,KAAK,YAAY,SAAS,GAAG;AACrC,gBAAQ,KAAK,EAAE;AAAA,MACjB;AAAA,IACF;AAGA,QAAI,QAAQ,MAAM;AAChB,cAAQ,KAAK,KAAK;AAClB,cAAQ,KAAK,EAAE;AACf,YAAM,WAAW,OACb,WAAM,KAAK,IAAI,KAAK,KAAK,UAAU,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,MACxE;AACJ,YAAM,WAAW,OACb,IAAI,KAAK,IAAI,YAAO,KAAK,UAAU,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,MACxE;AACJ,UAAI,QAAQ,MAAM;AAChB,gBAAQ,KAAK,GAAG,QAAQ,MAAM,QAAQ,EAAE;AAAA,MAC1C,OAAO;AACL,gBAAQ,KAAK,YAAY,QAAQ;AAAA,MACnC;AACA,cAAQ,KAAK,EAAE;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,MAAM,GAAG,WAAW,IAAI,IAAI;AAAA,MAC5B,SAAS,QAAQ,KAAK,IAAI;AAAA,MAC1B,aAAa;AAAA,QACX,OAAO,UAAU;AAAA,QACjB,aAAa,UAAU,SAAS,UAC5B,KAAK,mBAAmB,UAAU,QAAQ,OAAO,IACjD,GAAG,UAAU,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAY,WAAmC;AACrD,QAAI,CAAC,aAAa,OAAO,cAAc,SAAU,QAAO;AAGxD,QAAI,UAAU,aAAa,OAAQ,UAAgC,SAAS,UAAU;AACpF,aAAQ,UAA+B;AAAA,IACzC;AAGA,QAAI,UAAU,aAAc,UAA+B,SAAS,aAAa;AAC/E,YAAM,UAAU;AAChB,aAAO,QAAQ,QAAQ,QAAQ,iBAAiB;AAAA,IAClD;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,iBACN,WAC+E;AAC/E,UAAM,QAAuF,CAAC;AAG9F,QAAI,aAAa,OAAO,cAAc,YAAY,iBAAiB,WAAW;AAC5E,YAAM,cAAe,UAAqD;AAC1E,YAAM,WAAW,YAAY,YAAY,CAAC;AAC1C,iBAAW,SAAS,UAAU;AAC5B,cAAM,KAAK;AAAA,UACT,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM,OAAO,MAAM,KAAK,SAAS,IAAI;AAAA,UAC3C,UAAU,MAAM,MAAM;AAAA,UACtB,aAAa,MAAM,SAAS,UAAU,KAAK,mBAAmB,MAAM,QAAQ,OAAO,IAAI;AAAA,QACzF,CAAC;AAAA,MACH;AAAA,IACF,OAEK;AACH,YAAM,WAAW,KAAK,YAAY,SAAS;AAC3C,UAAI,UAAU;AAEZ,YAAI,iBAAiB,KAAK,SAAS,eAAe,QAAQ;AAG1D,YAAI,CAAC,kBAAkB,KAAK,SAAS,UAAU;AAC7C,qBAAW,SAAS,KAAK,QAAQ,UAAU;AACzC,gBAAI,MAAM,SAAS,UAAU;AAC3B,+BAAiB;AACjB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,kBAAkB,cAAc,gBAAgB;AAClD,gBAAM,WAAY,eAAyC,YAAY,CAAC;AACxE,qBAAW,SAAS,UAAU;AAC5B,kBAAM,KAAK;AAAA,cACT,MAAM,MAAM;AAAA,cACZ,MAAM,MAAM,OAAO,MAAM,KAAK,SAAS,IAAI;AAAA,cAC3C,UAAU,MAAM,MAAM;AAAA,cACtB,aAAa,MAAM,SAAS,UACxB,KAAK,mBAAmB,MAAM,QAAQ,OAAO,IAC7C;AAAA,YACN,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,yBAAyB,KAA0B,eAA+B;AACxF,UAAM,QAAkB,CAAC;AAGzB,UAAM,aAAa,IAAI,aAAa,CAAC;AACrC,UAAM,QAAQ,aAAa,KAAK,iBAAiB,WAAW,IAAI,IAAI,CAAC;AAGrE,UAAM,gBAAgB,YAAY,OAAO,KAAK,YAAY,WAAW,IAAI,IAAI;AAG7E,UAAM,cAAc,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,UAAU;AAE3D,UAAM,eAAe,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU;AAE9D,UAAM,KAAK,QAAQ;AACnB,UAAM,KAAK,IAAI,aAAa,EAAE;AAE9B,QAAI,aAAa,SAAS,GAAG;AAC3B,iBAAW,QAAQ,cAAc;AAC/B,cAAM,UAAU,KAAK,WAAW,MAAM;AACtC,cAAM,KAAK,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK,KAAK,IAAI,GAAG;AAAA,MACtD;AAAA,IACF,WAAW,CAAC,aAAa;AACvB,YAAM,KAAK,cAAc;AAAA,IAC3B;AAEA,QAAI,aAAa;AACf,YAAM,KAAK,GAAG;AACd,YAAM,KAAK,cAAc;AACzB,YAAM,KAAK,KAAK,aAAa,GAAG;AAAA,IAClC,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AACA,UAAM,KAAK,KAAK;AAGhB,QAAI,MAAM,SAAS,GAAG;AACpB,YAAM,KAAK,EAAE;AACb,UAAI,eAAe;AACjB,cAAM,KAAK,cAAc,KAAK,QAAQ,eAAe,KAAK,QAAQ,aAAa,CAAC,GAAG;AAAA,MACrF,OAAO;AACL,cAAM,KAAK,UAAU;AAAA,MACvB;AACA,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,0CAA0C;AACrD,YAAM,KAAK,0CAA0C;AAErD,iBAAW,QAAQ,OAAO;AACxB,cAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,cAAM,WAAW,KAAK,WAAW,OAAO;AACxC,cAAM,OAAO,KAAK,eAAe;AACjC,cAAM,KAAK,KAAK,KAAK,IAAI,MAAM,IAAI,MAAM,QAAQ,MAAM,IAAI,IAAI;AAAA,MACjE;AAAA,IACF;AAIA,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AACF;AAEA,eAAsB,gBACpB,QACA,WAC4B;AAC5B,QAAM,YAAY,IAAI,iBAAiB,MAAM;AAC7C,SAAO,UAAU,SAAS,SAAS;AACrC;","names":[]}