{"version":3,"file":"ng-doc-ui-kit-components-tab-group.mjs","sources":["../../../../libs/ui-kit/components/tab-group/tab/tab.component.ts","../../../../libs/ui-kit/components/tab-group/tab-group.component.ts","../../../../libs/ui-kit/components/tab-group/tab-group.component.html","../../../../libs/ui-kit/components/tab-group/ng-doc-ui-kit-components-tab-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgDocContent } from '@ng-doc/ui-kit/types';\n\n@Component({\n  selector: 'ng-doc-tab, a[ng-doc-tab]',\n  template: '',\n  styleUrls: ['./tab.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class NgDocTabComponent<T> {\n  @Input()\n  label: NgDocContent = '';\n\n  @Input()\n  id: T | number = 0;\n\n  /** Expander content */\n  @Input()\n  content: NgDocContent = '';\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  DestroyRef,\n  ElementRef,\n  inject,\n  Input,\n  QueryList,\n  ViewChildren,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  NgDocSelectionComponent,\n  NgDocSelectionHostDirective,\n  NgDocSelectionOriginDirective,\n} from '@ng-doc/ui-kit/components/selection';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\nimport { startWith } from 'rxjs/operators';\n\nimport { NgDocTabComponent } from './tab/tab.component';\n\n@Component({\n  selector: 'ng-doc-tab-group',\n  templateUrl: './tab-group.component.html',\n  styleUrls: ['./tab-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    NgDocSelectionHostDirective,\n    NgDocSelectionComponent,\n    NgDocSelectionOriginDirective,\n    PolymorpheusModule,\n  ],\n})\nexport class NgDocTabGroupComponent<T = number> implements AfterContentInit, AfterViewInit {\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  @Input()\n  openedTab!: T;\n\n  @ViewChildren('headerTab')\n  tabElements: QueryList<ElementRef> = new QueryList<ElementRef>();\n\n  @ContentChildren(NgDocTabComponent)\n  tabs: QueryList<NgDocTabComponent<T>> = new QueryList<NgDocTabComponent<T>>();\n\n  selectedTab?: NgDocTabComponent<T>;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor() {}\n\n  ngAfterContentInit(): void {\n    this.tabs.changes\n      .pipe(startWith(this.tabs), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        const tabToOpen: NgDocTabComponent<T> | undefined = this.openedTab\n          ? this.tabs.find((tab: NgDocTabComponent<T>) => tab.id === this.openedTab)\n          : this.tabs.get(0);\n\n        tabToOpen && this.selectTab(tabToOpen);\n\n        this.changeDetectorRef.markForCheck();\n      });\n  }\n\n  ngAfterViewInit(): void {\n    this.tabElements.changes\n      .pipe(startWith(this.tabElements), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.changeDetectorRef.detectChanges());\n  }\n\n  get selectedIndex(): number {\n    return this.selectedTab ? this.tabs.toArray().indexOf(this.selectedTab) : -1;\n  }\n\n  get selectedHeaderTab(): ElementRef | null {\n    return this.selectedTab ? this.tabElements.get(this.selectedIndex) ?? null : null;\n  }\n\n  selectTab(tab: NgDocTabComponent<T>) {\n    this.selectedTab = tab;\n  }\n}\n","<div class=\"ng-doc-tabs-wrapper\" ngDocSelectionHost>\n  <ng-doc-selection></ng-doc-selection>\n  @for (tab of tabs; track tab) {\n    <div\n      class=\"ng-doc-tab\"\n      [class.selected]=\"tab === selectedTab\"\n      (click)=\"selectTab(tab)\"\n      [ngDocSelectionOrigin]=\"tab === selectedTab\"\n      #headerTab>\n      <div class=\"ng-doc-tab-text\">\n        <ng-container *polymorpheusOutlet=\"tab.label; context: {}\">{{ tab.label }}</ng-container>\n      </div>\n    </div>\n  }\n</div>\n\n<div class=\"ng-doc-body-wrapper\">\n  <div *polymorpheusOutlet=\"selectedTab?.content ?? '' as text; context: {}\">\n    {{ text }}\n  </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}