{"version":3,"file":"ng-doc-app-components-page-wrapper.mjs","sources":["../../../../libs/app/components/page-wrapper/page-wrapper.component.ts","../../../../libs/app/components/page-wrapper/page-wrapper.component.html","../../../../libs/app/components/page-wrapper/ng-doc-app-components-page-wrapper.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  Input,\n  OnInit,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  ActivatedRoute,\n  Router,\n  RouterLink,\n  RouterLinkActive,\n  RouterOutlet,\n  Routes,\n} from '@angular/router';\nimport { NgDocPageHeaderComponent } from '@ng-doc/app/components/page-header';\nimport { createComponent } from '@ng-doc/app/helpers';\nimport { NgDocNavigation, NgDocPageNavigation } from '@ng-doc/app/interfaces';\nimport { NG_DOC_CONTEXT, NG_DOC_PAGE_SKELETON } from '@ng-doc/app/tokens';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { NgDocPageType } from '@ng-doc/core/types';\nimport {\n  NgDocIconComponent,\n  NgDocTabRouteComponent,\n  NgDocTabRoutesGroupComponent,\n} from '@ng-doc/ui-kit';\n\n@Component({\n  selector: 'ng-doc-page-wrapper',\n  imports: [\n    RouterOutlet,\n    RouterLink,\n    NgDocTabRouteComponent,\n    NgDocTabRoutesGroupComponent,\n    RouterLinkActive,\n    NgDocIconComponent,\n    NgDocPageHeaderComponent,\n  ],\n  templateUrl: './page-wrapper.component.html',\n  styleUrl: './page-wrapper.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[attr.data-ng-doc-page-tabs]': 'routes.length > 1',\n  },\n})\nexport class NgDocPageWrapperComponent implements OnInit {\n  @Input({ required: true })\n  routes!: Routes;\n\n  @Input({ required: true })\n  headerContent!: string;\n\n  @Input()\n  hasBreadcrumb = true;\n\n  @Input()\n  pageType: NgDocPageType = 'guide';\n\n  @ViewChild('pageBreadcrumbs', { read: ViewContainerRef, static: true })\n  pageBreadcrumbs!: ViewContainerRef;\n\n  @ViewChild('pageToc', { read: ViewContainerRef, static: true })\n  pageToc?: ViewContainerRef;\n\n  @ViewChild('pageNavigation', { read: ViewContainerRef, static: true })\n  pageNavigation!: ViewContainerRef;\n\n  protected skeleton = inject(NG_DOC_PAGE_SKELETON);\n  protected router = inject(Router);\n  protected route = inject(ActivatedRoute);\n  protected context = inject(NG_DOC_CONTEXT);\n\n  private breadcrumbs: string[] = inject(ActivatedRoute)\n    .pathFromRoot.filter((route: ActivatedRoute) => !!route.snapshot.url.length)\n    .map((route: ActivatedRoute) => route.snapshot.title)\n    .filter(isPresent);\n\n  ngOnInit(): void {\n    if (this.skeleton.breadcrumbs && this.hasBreadcrumb) {\n      createComponent(this.pageBreadcrumbs, this.skeleton.breadcrumbs, {\n        breadcrumbs: this.breadcrumbs,\n      });\n    }\n\n    if (this.pageType === 'guide') {\n      if (this.skeleton.navigation) {\n        createComponent(this.pageNavigation, this.skeleton.navigation, this.navigationInputs());\n      }\n    }\n  }\n\n  private navigationInputs(): NgDocPageNavigation {\n    const url =\n      '/' +\n      this.route.pathFromRoot\n        .map((route: ActivatedRoute) => route.snapshot.url)\n        .flat()\n        .join('/');\n    const flatItems = (items: NgDocNavigation[]): NgDocNavigation[] =>\n      items\n        .map((item: NgDocNavigation) => [item.children?.length ? flatItems(item.children) : item])\n        .flat(2);\n    const flatPages: NgDocNavigation[] = flatItems(this.context.navigation);\n\n    return {\n      prevPage: flatPages[flatPages.findIndex((item: NgDocNavigation) => url === item.route) - 1],\n      nextPage: flatPages[flatPages.findIndex((item: NgDocNavigation) => url === item.route) + 1],\n    };\n  }\n}\n","<article class=\"ngde\">\n  <ng-container #pageBreadcrumbs></ng-container>\n\n  <ng-doc-page-header [headerContent]=\"headerContent\" />\n\n  @if (routes.length > 1) {\n    <ng-doc-tab-routes-group>\n      @for (route of routes; track route) {\n        <a\n          ng-doc-tab-route\n          [routerLink]=\"['./' + route.path]\"\n          routerLinkActive\n          [routerLinkActiveOptions]=\"{ exact: true }\"\n          #rla=\"routerLinkActive\"\n          [isActive]=\"rla.isActive\">\n          @if (route.data?.['icon']; as icon) {\n            <ng-doc-icon [customIcon]=\"icon\" />\n          }\n          {{ route.title }}\n        </a>\n      }\n    </ng-doc-tab-routes-group>\n  }\n\n  <router-outlet></router-outlet>\n\n  <ng-container #pageNavigation></ng-container>\n</article>\n\n<ng-container #pageToc></ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}