{"version":3,"file":"ng-doc-app-components-demo.mjs","sources":["../../../../libs/app/components/demo/demo.component.ts","../../../../libs/app/components/demo/demo.component.html","../../../../libs/app/components/demo/ng-doc-app-components-demo.ts"],"sourcesContent":["import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  inject,\n  Input,\n  OnInit,\n  Type,\n} from '@angular/core';\nimport { NgDocRootPage } from '@ng-doc/app/classes/root-page';\nimport { NgDocCodeComponent } from '@ng-doc/app/components/code';\nimport { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';\nimport { NgDocFullscreenButtonComponent } from '@ng-doc/app/components/fullscreen-button';\nimport { NgDocDemoAsset } from '@ng-doc/app/interfaces';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { NgDocDemoActionOptions } from '@ng-doc/core/interfaces';\nimport {\n  NgDocExecutePipe,\n  NgDocIconComponent,\n  NgDocTabComponent,\n  NgDocTabGroupComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n  selector: 'ng-doc-demo',\n  templateUrl: './demo.component.html',\n  styleUrls: ['./demo.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    NgDocDemoDisplayerComponent,\n    NgTemplateOutlet,\n    NgDocCodeComponent,\n    NgDocTabGroupComponent,\n    NgDocTabComponent,\n    NgDocIconComponent,\n    NgDocExecutePipe,\n    NgDocFullscreenButtonComponent,\n    NgComponentOutlet,\n  ],\n})\nexport class NgDocDemoComponent implements OnInit {\n  private readonly rootPage = inject(NgDocRootPage);\n\n  @Input()\n  componentName?: string;\n\n  @Input()\n  options: NgDocDemoActionOptions = {};\n\n  demo?: Type<unknown>;\n  assets: NgDocDemoAsset[] = [];\n\n  constructor() {}\n\n  @HostBinding('class')\n  protected get classes(): string | string[] {\n    return this.options.class ?? '';\n  }\n\n  ngOnInit(): void {\n    this.demo = this.getDemo();\n    this.assets = this.getAssets();\n  }\n\n  getOpenedAssetId(assets: NgDocDemoAsset[]): string | undefined {\n    return assets.find((asset: NgDocDemoAsset) => asset.opened)?.title;\n  }\n\n  private getDemo(): Type<unknown> | undefined {\n    if (this.componentName) {\n      return this.rootPage.page?.demos && this.rootPage.page.demos[this.componentName];\n    }\n\n    return undefined;\n  }\n\n  private getAssets(): NgDocDemoAsset[] {\n    if (this.componentName) {\n      return (\n        (this.rootPage.demoAssets && this.rootPage.demoAssets[this.componentName]) ??\n        []\n      ).filter(\n        (asset: NgDocDemoAsset) =>\n          !this.options.tabs?.length || asArray(this.options.tabs).includes(asset.title),\n      );\n    }\n\n    return [];\n  }\n}\n","@if (options.container ?? true) {\n  <ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n    <ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n    <ng-template #codeContent>\n      @if (assets.length === 1) {\n        @for (asset of assets; track asset) {\n          <ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n        }\n      }\n      @if (assets.length > 1) {\n        <ng-doc-tab-group [openedTab]=\"(getOpenedAssetId | execute: assets) ?? options.defaultTab\">\n          @for (asset of assets; track asset) {\n            <ng-doc-tab [id]=\"asset.title\" [label]=\"label\" [content]=\"assetContent\">\n              <ng-template #label>\n                @if (asset.icon) {\n                  <ng-doc-icon [customIcon]=\"asset.icon\"></ng-doc-icon>\n                }\n                {{ asset.title }}\n              </ng-template>\n              <ng-template #assetContent>\n                <ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n              </ng-template>\n            </ng-doc-tab>\n          }\n        </ng-doc-tab-group>\n      }\n    </ng-template>\n  </ng-doc-demo-displayer>\n} @else {\n  @if (options.fullscreenRoute) {\n    <ng-doc-fullscreen-button [route]=\"options.fullscreenRoute!\"></ng-doc-fullscreen-button>\n  } @else if (demo) {\n    <ng-container *ngComponentOutlet=\"demo; inputs: options.inputs\"></ng-container>\n  }\n}\n\n<ng-template #demoTemplate>\n  @if (options.fullscreenRoute) {\n    <ng-doc-fullscreen-button [route]=\"options.fullscreenRoute!\"></ng-doc-fullscreen-button>\n  } @else if (demo) {\n    <ng-container *ngComponentOutlet=\"demo; inputs: options.inputs\"></ng-container>\n  }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}