{"version":3,"sources":["libs/galaxy/badge/src/badge.component.ts","libs/galaxy/badge/src/badge.component.html","libs/galaxy/badge/src/badge.module.ts","node_modules/@angular/material/fesm2022/tabs.mjs"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\n\nexport type BadgeColor =\n | 'light-grey'\n | 'grey'\n | 'grey-solid'\n | 'dark-grey-solid'\n | 'black-solid'\n | 'blue'\n | 'blue-solid'\n | 'green'\n | 'green-solid'\n | 'red'\n | 'red-solid'\n | 'yellow'\n | 'yellow-solid'\n | 'purple';\n\nexport type ComponentSize = 'normal' | 'small';\n\n@Component({\n selector: 'glxy-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n})\nexport class BadgeComponent {\n // Predefined named color for badge: grey, green, red, blue, black-solid, etc\n @Input() color: BadgeColor = 'grey';\n\n // Predefined size: normal (default) | small\n @Input() size: ComponentSize = 'normal';\n\n @HostBinding('class') get badgeOptions(): string {\n let classes = 'glxy-badge';\n classes += ' glxy-badge--' + this.color;\n if (this.size === 'small') {\n classes += ' glxy-badge--small';\n }\n return classes;\n }\n}\n","\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BadgeComponent } from './badge.component';\nexport { BadgeComponent };\n\nexport const MODULE_IMPORTS = [CommonModule];\n\nexport const MODULE_DECLARATIONS = [BadgeComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [BadgeComponent],\n})\nexport class GalaxyBadgeModule {}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, booleanAttribute, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ViewChild, inject, ElementRef, EventEmitter, ANIMATION_MODULE_TYPE, numberAttribute, Output, ContentChildren, forwardRef, QueryList, Attribute, NgModule } from '@angular/core';\nimport { MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule } from '@angular/material/core';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Subject, fromEvent, of, merge, EMPTY, Observable, timer, Subscription, BehaviorSubject } from 'rxjs';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport * as i3 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/bidi';\nimport * as i4 from '@angular/cdk/a11y';\nimport { FocusKeyManager, CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { takeUntil, take, startWith, switchMap, skip, filter, distinctUntilChanged } from 'rxjs/operators';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport { DOCUMENT, NgClass } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n/**\n * Injection token that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst _c0 = [\"*\"];\nfunction MatTab_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nconst _c1 = [\"tabListContainer\"];\nconst _c2 = [\"tabList\"];\nconst _c3 = [\"tabListInner\"];\nconst _c4 = [\"nextPaginator\"];\nconst _c5 = [\"previousPaginator\"];\nconst _c6 = a0 => ({\n animationDuration: a0\n});\nconst _c7 = (a0, a1) => ({\n value: a0,\n params: a1\n});\nfunction MatTabBody_ng_template_2_Template(rf, ctx) {}\nconst _c8 = [\"tabBodyWrapper\"];\nconst _c9 = [\"tabHeader\"];\nfunction MatTabGroup_For_3_Conditional_6_ng_template_0_Template(rf, ctx) {}\nfunction MatTabGroup_For_3_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatTabGroup_For_3_Conditional_6_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const tab_r4 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"cdkPortalOutlet\", tab_r4.templateLabel);\n }\n}\nfunction MatTabGroup_For_3_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const tab_r4 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵtextInterpolate(tab_r4.textLabel);\n }\n}\nfunction MatTabGroup_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 7, 2);\n i0.ɵɵlistener(\"click\", function MatTabGroup_For_3_Template_div_click_0_listener() {\n const ctx_r2 = i0.ɵɵrestoreView(_r2);\n const tab_r4 = ctx_r2.$implicit;\n const i_r5 = ctx_r2.$index;\n const ctx_r5 = i0.ɵɵnextContext();\n const tabHeader_r7 = i0.ɵɵreference(1);\n return i0.ɵɵresetView(ctx_r5._handleClick(tab_r4, tabHeader_r7, i_r5));\n })(\"cdkFocusChange\", function MatTabGroup_For_3_Template_div_cdkFocusChange_0_listener($event) {\n const i_r5 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5._tabFocusChanged($event, i_r5));\n });\n i0.ɵɵelement(2, \"span\", 8)(3, \"div\", 9);\n i0.ɵɵelementStart(4, \"span\", 10)(5, \"span\", 11);\n i0.ɵɵtemplate(6, MatTabGroup_For_3_Conditional_6_Template, 1, 1)(7, MatTabGroup_For_3_Conditional_7_Template, 1, 1);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const tab_r4 = ctx.$implicit;\n const i_r5 = ctx.$index;\n const tabNode_r8 = i0.ɵɵreference(1);\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"mdc-tab--active\", ctx_r5.selectedIndex === i_r5);\n i0.ɵɵproperty(\"id\", ctx_r5._getTabLabelId(i_r5))(\"ngClass\", tab_r4.labelClass)(\"disabled\", tab_r4.disabled)(\"fitInkBarToContent\", ctx_r5.fitInkBarToContent);\n i0.ɵɵattribute(\"tabIndex\", ctx_r5._getTabIndex(i_r5))(\"aria-posinset\", i_r5 + 1)(\"aria-setsize\", ctx_r5._tabs.length)(\"aria-controls\", ctx_r5._getTabContentId(i_r5))(\"aria-selected\", ctx_r5.selectedIndex === i_r5)(\"aria-label\", tab_r4.ariaLabel || null)(\"aria-labelledby\", !tab_r4.ariaLabel && tab_r4.ariaLabelledby ? tab_r4.ariaLabelledby : null);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleTrigger\", tabNode_r8)(\"matRippleDisabled\", tab_r4.disabled || ctx_r5.disableRipple);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(6, tab_r4.templateLabel ? 6 : 7);\n }\n}\nfunction MatTabGroup_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction MatTabGroup_For_8_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mat-tab-body\", 13);\n i0.ɵɵlistener(\"_onCentered\", function MatTabGroup_For_8_Template_mat_tab_body__onCentered_0_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5._removeTabBodyWrapperHeight());\n })(\"_onCentering\", function MatTabGroup_For_8_Template_mat_tab_body__onCentering_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5._setTabBodyWrapperHeight($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tab_r10 = ctx.$implicit;\n const i_r11 = ctx.$index;\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"mat-mdc-tab-body-active\", ctx_r5.selectedIndex === i_r11);\n i0.ɵɵproperty(\"id\", ctx_r5._getTabContentId(i_r11))(\"ngClass\", tab_r10.bodyClass)(\"content\", tab_r10.content)(\"position\", tab_r10.position)(\"origin\", tab_r10.origin)(\"animationDuration\", ctx_r5.animationDuration)(\"preserveContent\", ctx_r5.preserveContent);\n i0.ɵɵattribute(\"tabindex\", ctx_r5.contentTabIndex != null && ctx_r5.selectedIndex === i_r11 ? ctx_r5.contentTabIndex : null)(\"aria-labelledby\", ctx_r5._getTabLabelId(i_r11))(\"aria-hidden\", ctx_r5.selectedIndex !== i_r11);\n }\n}\nconst _c10 = [\"mat-tab-nav-bar\", \"\"];\nconst _c11 = [\"mat-tab-link\", \"\"];\nconst MAT_TAB_CONTENT = /*#__PURE__*/new InjectionToken('MatTabContent');\n/** Decorates the `ng-template` tags and reads out the template from it. */\nlet MatTabContent = /*#__PURE__*/(() => {\n class MatTabContent {\n constructor( /** Content for the tab. */template) {\n this.template = template;\n }\n static {\n this.ɵfac = function MatTabContent_Factory(t) {\n return new (t || MatTabContent)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabContent,\n selectors: [[\"\", \"matTabContent\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_CONTENT,\n useExisting: MatTabContent\n }])]\n });\n }\n }\n return MatTabContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Injection token that can be used to reference instances of `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_LABEL = /*#__PURE__*/new InjectionToken('MatTabLabel');\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB = /*#__PURE__*/new InjectionToken('MAT_TAB');\n/** Used to flag tab labels for use with the portal directive */\nlet MatTabLabel = /*#__PURE__*/(() => {\n class MatTabLabel extends CdkPortal {\n constructor(templateRef, viewContainerRef, _closestTab) {\n super(templateRef, viewContainerRef);\n this._closestTab = _closestTab;\n }\n static {\n this.ɵfac = function MatTabLabel_Factory(t) {\n return new (t || MatTabLabel)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(MAT_TAB, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabLabel,\n selectors: [[\"\", \"mat-tab-label\", \"\"], [\"\", \"matTabLabel\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_LABEL,\n useExisting: MatTabLabel\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MatTabLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB_GROUP = /*#__PURE__*/new InjectionToken('MAT_TAB_GROUP');\nlet MatTab = /*#__PURE__*/(() => {\n class MatTab {\n /** Content for the tab label given by ``. */\n get templateLabel() {\n return this._templateLabel;\n }\n set templateLabel(value) {\n this._setTemplateLabelInput(value);\n }\n /** @docs-private */\n get content() {\n return this._contentPortal;\n }\n constructor(_viewContainerRef, _closestTabGroup) {\n this._viewContainerRef = _viewContainerRef;\n this._closestTabGroup = _closestTabGroup;\n /** whether the tab is disabled. */\n this.disabled = false;\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n this._explicitContent = undefined;\n /** Plain text label for the tab, used when there is no template label. */\n this.textLabel = '';\n /** Portal that will be the hosted content of the tab */\n this._contentPortal = null;\n /** Emits whenever the internal state of the tab changes. */\n this._stateChanges = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n this.isActive = false;\n }\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n ngOnInit() {\n this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setTemplateLabelInput(value) {\n // Only update the label if the query managed to find one. This works around an issue where a\n // user may have manually set `templateLabel` during creation mode, which would then get\n // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n // tab matches the current one so that we don't pick up labels from nested tabs.\n if (value && value._closestTab === this) {\n this._templateLabel = value;\n }\n }\n static {\n this.ɵfac = function MatTab_Factory(t) {\n return new (t || MatTab)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(MAT_TAB_GROUP, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTab,\n selectors: [[\"mat-tab\"]],\n contentQueries: function MatTab_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatTabLabel, 5);\n i0.ɵɵcontentQuery(dirIndex, MatTabContent, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateLabel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._explicitContent = _t.first);\n }\n },\n viewQuery: function MatTab_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._implicitContent = _t.first);\n }\n },\n hostAttrs: [\"hidden\", \"\"],\n inputs: {\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute],\n textLabel: [i0.ɵɵInputFlags.None, \"label\", \"textLabel\"],\n ariaLabel: [i0.ɵɵInputFlags.None, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [i0.ɵɵInputFlags.None, \"aria-labelledby\", \"ariaLabelledby\"],\n labelClass: \"labelClass\",\n bodyClass: \"bodyClass\"\n },\n exportAs: [\"matTab\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB,\n useExisting: MatTab\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MatTab_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatTab_ng_template_0_Template, 1, 0, \"ng-template\");\n }\n },\n encapsulation: 2\n });\n }\n }\n return MatTab;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Class that is applied when a tab indicator is active. */\nconst ACTIVE_CLASS = 'mdc-tab-indicator--active';\n/** Class that is applied when the tab indicator should not transition. */\nconst NO_TRANSITION_CLASS = 'mdc-tab-indicator--no-transition';\n/**\n * Abstraction around the MDC tab indicator that acts as the tab header's ink bar.\n * @docs-private\n */\nclass MatInkBar {\n constructor(_items) {\n this._items = _items;\n }\n /** Hides the ink bar. */\n hide() {\n this._items.forEach(item => item.deactivateInkBar());\n }\n /** Aligns the ink bar to a DOM node. */\n alignToElement(element) {\n const correspondingItem = this._items.find(item => item.elementRef.nativeElement === element);\n const currentItem = this._currentItem;\n if (correspondingItem === currentItem) {\n return;\n }\n currentItem?.deactivateInkBar();\n if (correspondingItem) {\n const domRect = currentItem?.elementRef.nativeElement.getBoundingClientRect?.();\n // The ink bar won't animate unless we give it the `DOMRect` of the previous item.\n correspondingItem.activateInkBar(domRect);\n this._currentItem = correspondingItem;\n }\n }\n}\nlet InkBarItem = /*#__PURE__*/(() => {\n class InkBarItem {\n constructor() {\n this._elementRef = inject(ElementRef);\n this._fitToContent = false;\n }\n /** Whether the ink bar should fit to the entire tab or just its content. */\n get fitInkBarToContent() {\n return this._fitToContent;\n }\n set fitInkBarToContent(newValue) {\n if (this._fitToContent !== newValue) {\n this._fitToContent = newValue;\n if (this._inkBarElement) {\n this._appendInkBarElement();\n }\n }\n }\n /** Aligns the ink bar to the current item. */\n activateInkBar(previousIndicatorClientRect) {\n const element = this._elementRef.nativeElement;\n // Early exit if no indicator is present to handle cases where an indicator\n // may be activated without a prior indicator state\n if (!previousIndicatorClientRect || !element.getBoundingClientRect || !this._inkBarContentElement) {\n element.classList.add(ACTIVE_CLASS);\n return;\n }\n // This animation uses the FLIP approach. You can read more about it at the link below:\n // https://aerotwist.com/blog/flip-your-animations/\n // Calculate the dimensions based on the dimensions of the previous indicator\n const currentClientRect = element.getBoundingClientRect();\n const widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\n const xPosition = previousIndicatorClientRect.left - currentClientRect.left;\n element.classList.add(NO_TRANSITION_CLASS);\n this._inkBarContentElement.style.setProperty('transform', `translateX(${xPosition}px) scaleX(${widthDelta})`);\n // Force repaint before updating classes and transform to ensure the transform properly takes effect\n element.getBoundingClientRect();\n element.classList.remove(NO_TRANSITION_CLASS);\n element.classList.add(ACTIVE_CLASS);\n this._inkBarContentElement.style.setProperty('transform', '');\n }\n /** Removes the ink bar from the current item. */\n deactivateInkBar() {\n this._elementRef.nativeElement.classList.remove(ACTIVE_CLASS);\n }\n /** Initializes the foundation. */\n ngOnInit() {\n this._createInkBarElement();\n }\n /** Destroys the foundation. */\n ngOnDestroy() {\n this._inkBarElement?.remove();\n this._inkBarElement = this._inkBarContentElement = null;\n }\n /** Creates and appends the ink bar element. */\n _createInkBarElement() {\n const documentNode = this._elementRef.nativeElement.ownerDocument || document;\n const inkBarElement = this._inkBarElement = documentNode.createElement('span');\n const inkBarContentElement = this._inkBarContentElement = documentNode.createElement('span');\n inkBarElement.className = 'mdc-tab-indicator';\n inkBarContentElement.className = 'mdc-tab-indicator__content mdc-tab-indicator__content--underline';\n inkBarElement.appendChild(this._inkBarContentElement);\n this._appendInkBarElement();\n }\n /**\n * Appends the ink bar to the tab host element or content, depending on whether\n * the ink bar should fit to content.\n */\n _appendInkBarElement() {\n if (!this._inkBarElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Ink bar element has not been created and cannot be appended');\n }\n const parentElement = this._fitToContent ? this._elementRef.nativeElement.querySelector('.mdc-tab__content') : this._elementRef.nativeElement;\n if (!parentElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Missing element to host the ink bar');\n }\n parentElement.appendChild(this._inkBarElement);\n }\n static {\n this.ɵfac = function InkBarItem_Factory(t) {\n return new (t || InkBarItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: InkBarItem,\n inputs: {\n fitInkBarToContent: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n }\n return InkBarItem;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nfunction _MAT_INK_BAR_POSITIONER_FACTORY() {\n const method = element => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0'\n });\n return method;\n}\n/** Injection token for the MatInkBar's Positioner. */\nconst _MAT_INK_BAR_POSITIONER = /*#__PURE__*/new InjectionToken('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY\n});\n\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\nlet MatTabLabelWrapper = /*#__PURE__*/(() => {\n class MatTabLabelWrapper extends InkBarItem {\n constructor(elementRef) {\n super();\n this.elementRef = elementRef;\n /** Whether the tab is disabled. */\n this.disabled = false;\n }\n /** Sets focus on the wrapper element */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n getOffsetLeft() {\n return this.elementRef.nativeElement.offsetLeft;\n }\n getOffsetWidth() {\n return this.elementRef.nativeElement.offsetWidth;\n }\n static {\n this.ɵfac = function MatTabLabelWrapper_Factory(t) {\n return new (t || MatTabLabelWrapper)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabLabelWrapper,\n selectors: [[\"\", \"matTabLabelWrapper\", \"\"]],\n hostVars: 3,\n hostBindings: function MatTabLabelWrapper_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-disabled\", !!ctx.disabled);\n i0.ɵɵclassProp(\"mat-mdc-tab-disabled\", ctx.disabled);\n }\n },\n inputs: {\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute]\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MatTabLabelWrapper;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions = /*#__PURE__*/normalizePassiveListenerOptions({\n passive: true\n});\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\nlet MatPaginatedTabHeader = /*#__PURE__*/(() => {\n class MatPaginatedTabHeader {\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(v) {\n const value = isNaN(v) ? 0 : v;\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._viewportRuler = _viewportRuler;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._animationMode = _animationMode;\n /** The distance in pixels that the tab labels should be translated to the left. */\n this._scrollDistance = 0;\n /** Whether the header should scroll to the selected index after the view has been checked. */\n this._selectedIndexChanged = false;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Whether the controls for pagination should be displayed */\n this._showPaginationControls = false;\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n this._disableScrollAfter = true;\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n this._disableScrollBefore = true;\n /** Stream that will stop the automated scrolling. */\n this._stopScrolling = new Subject();\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n this.disablePagination = false;\n this._selectedIndex = 0;\n /** Event emitted when the option is selected. */\n this.selectFocusedIndex = new EventEmitter();\n /** Event emitted when a label is focused. */\n this.indexFocused = new EventEmitter();\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave').pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stopInterval();\n });\n });\n }\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions).pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._handlePaginatorPress('before');\n });\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions).pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : of('ltr');\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n this._keyManager = new FocusKeyManager(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap()\n // Allow focus to land on disabled tabs, as per https://w3c.github.io/aria-practices/#kbd_disabled_controls\n .skipPredicate(() => false);\n this._keyManager.updateActiveItem(this._selectedIndex);\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n // Note that we use `onStable` instead of `requestAnimationFrame`, because the latter\n // can hold up tests that are in a background tab.\n this._ngZone.onStable.pipe(take(1)).subscribe(realign);\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes, this._itemsResized()).pipe(takeUntil(this._destroyed)).subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => {\n Promise.resolve().then(() => {\n // Clamp the scroll distance, because it can change with the number of tabs.\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\n realign();\n });\n });\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n /** Sends any changes that could affect the layout of the items. */\n _itemsResized() {\n if (typeof ResizeObserver !== 'function') {\n return EMPTY;\n }\n return this._items.changes.pipe(startWith(this._items), switchMap(tabItems => new Observable(observer => this._ngZone.runOutsideAngular(() => {\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n tabItems.forEach(item => resizeObserver.observe(item.elementRef.nativeElement));\n return () => {\n resizeObserver.disconnect();\n };\n }))),\n // Skip the first emit since the resize observer emits when an item\n // is observed for new items when the tab is already inserted\n skip(1),\n // Skip emissions where all the elements are invisible since we don't want\n // the header to try and re-render with invalid measurements. See #25574.\n filter(entries => entries.some(e => e.contentRect.width > 0 && e.contentRect.height > 0)));\n }\n ngAfterContentChecked() {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n /** Handles keyboard events on the header. */\n _handleKeydown(event) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n const item = this._items.get(this.focusIndex);\n if (item && !item.disabled) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index) {\n return this._items ? !!this._items.toArray()[index] : true;\n }\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n } else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n /** The layout direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance() {\n return this._scrollDistance;\n }\n set scrollDistance(value) {\n this._scrollTo(value);\n }\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex) {\n if (this.disablePagination) {\n return;\n }\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const {\n offsetLeft,\n offsetWidth\n } = selectedLabel.elementRef.nativeElement;\n let labelBeforePos, labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n } else {\n labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += Math.min(labelAfterPos - afterVisiblePos, labelBeforePos - beforeVisiblePos);\n }\n }\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n } else {\n const isEnabled = this._tabListInner.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n }\n }\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n } else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance() {\n const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab() {\n const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n } else {\n this._inkBar.hide();\n }\n }\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction, mouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n // Avoid overlapping timers.\n this._stopInterval();\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed))).subscribe(() => {\n const {\n maxScrollDistance,\n distance\n } = this._scrollHeader(direction);\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n _scrollTo(position) {\n if (this.disablePagination) {\n return {\n maxScrollDistance: 0,\n distance: 0\n };\n }\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n return {\n maxScrollDistance,\n distance: this._scrollDistance\n };\n }\n static {\n this.ɵfac = function MatPaginatedTabHeader_Factory(t) {\n return new (t || MatPaginatedTabHeader)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ViewportRuler), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i3.Platform), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatPaginatedTabHeader,\n inputs: {\n disablePagination: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disablePagination\", \"disablePagination\", booleanAttribute],\n selectedIndex: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"selectedIndex\", \"selectedIndex\", numberAttribute]\n },\n outputs: {\n selectFocusedIndex: \"selectFocusedIndex\",\n indexFocused: \"indexFocused\"\n },\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n }\n return MatPaginatedTabHeader;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\nlet MatTabHeader = /*#__PURE__*/(() => {\n class MatTabHeader extends MatPaginatedTabHeader {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n /** Whether the ripple effect is disabled or not. */\n this.disableRipple = false;\n }\n ngAfterContentInit() {\n this._inkBar = new MatInkBar(this._items);\n super.ngAfterContentInit();\n }\n _itemSelected(event) {\n event.preventDefault();\n }\n static {\n this.ɵfac = function MatTabHeader_Factory(t) {\n return new (t || MatTabHeader)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ViewportRuler), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i3.Platform), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabHeader,\n selectors: [[\"mat-tab-header\"]],\n contentQueries: function MatTabHeader_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatTabLabelWrapper, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._items = _t);\n }\n },\n viewQuery: function MatTabHeader_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7);\n i0.ɵɵviewQuery(_c2, 7);\n i0.ɵɵviewQuery(_c3, 7);\n i0.ɵɵviewQuery(_c4, 5);\n i0.ɵɵviewQuery(_c5, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabListContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabList = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabListInner = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._nextPaginator = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._previousPaginator = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-tab-header\"],\n hostVars: 4,\n hostBindings: function MatTabHeader_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-controls-enabled\", ctx._showPaginationControls)(\"mat-mdc-tab-header-rtl\", ctx._getLayoutDirection() == \"rtl\");\n }\n },\n inputs: {\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute]\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 13,\n vars: 10,\n consts: [[\"previousPaginator\", \"\"], [\"tabListContainer\", \"\"], [\"tabList\", \"\"], [\"tabListInner\", \"\"], [\"nextPaginator\", \"\"], [\"aria-hidden\", \"true\", \"type\", \"button\", \"mat-ripple\", \"\", \"tabindex\", \"-1\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-before\", 3, \"click\", \"mousedown\", \"touchend\", \"matRippleDisabled\", \"disabled\"], [1, \"mat-mdc-tab-header-pagination-chevron\"], [1, \"mat-mdc-tab-label-container\", 3, \"keydown\"], [\"role\", \"tablist\", 1, \"mat-mdc-tab-list\", 3, \"cdkObserveContent\"], [1, \"mat-mdc-tab-labels\"], [\"aria-hidden\", \"true\", \"type\", \"button\", \"mat-ripple\", \"\", \"tabindex\", \"-1\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-after\", 3, \"mousedown\", \"click\", \"touchend\", \"matRippleDisabled\", \"disabled\"]],\n template: function MatTabHeader_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"button\", 5, 0);\n i0.ɵɵlistener(\"click\", function MatTabHeader_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"before\"));\n })(\"mousedown\", function MatTabHeader_Template_button_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"before\", $event));\n })(\"touchend\", function MatTabHeader_Template_button_touchend_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._stopInterval());\n });\n i0.ɵɵelement(2, \"div\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 7, 1);\n i0.ɵɵlistener(\"keydown\", function MatTabHeader_Template_div_keydown_3_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handleKeydown($event));\n });\n i0.ɵɵelementStart(5, \"div\", 8, 2);\n i0.ɵɵlistener(\"cdkObserveContent\", function MatTabHeader_Template_div_cdkObserveContent_5_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onContentChanges());\n });\n i0.ɵɵelementStart(7, \"div\", 9, 3);\n i0.ɵɵprojection(9);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(10, \"button\", 10, 4);\n i0.ɵɵlistener(\"mousedown\", function MatTabHeader_Template_button_mousedown_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"after\", $event));\n })(\"click\", function MatTabHeader_Template_button_click_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"after\"));\n })(\"touchend\", function MatTabHeader_Template_button_touchend_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._stopInterval());\n });\n i0.ɵɵelement(12, \"div\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollBefore);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollBefore || ctx.disableRipple)(\"disabled\", ctx._disableScrollBefore || null);\n i0.ɵɵadvance(3);\n i0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n i0.ɵɵadvance(7);\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollAfter);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollAfter || ctx.disableRipple)(\"disabled\", ctx._disableScrollAfter || null);\n }\n },\n dependencies: [MatRipple, CdkObserveContent],\n styles: [\".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-header-pagination-icon-color)}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-header-divider-height);border-top-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}\"],\n encapsulation: 2\n });\n }\n }\n return MatTabHeader;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token that can be used to provide the default options the tabs module. */\nconst MAT_TABS_CONFIG = /*#__PURE__*/new InjectionToken('MAT_TABS_CONFIG');\n\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nconst matTabsAnimations = {\n /** Animation translates a tab along the X axis. */\n translateTab: /*#__PURE__*/trigger('translateTab', [\n /*#__PURE__*/\n // Transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', /*#__PURE__*/style({\n transform: 'none'\n })),\n /*#__PURE__*/\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', /*#__PURE__*/style({\n transform: 'translate3d(-100%, 0, 0)',\n minHeight: '1px',\n // Normally this is redundant since we detach the content from the DOM, but if the user\n // opted into keeping the content in the DOM, we have to hide it so it isn't focusable.\n visibility: 'hidden'\n })), /*#__PURE__*/state('right', /*#__PURE__*/style({\n transform: 'translate3d(100%, 0, 0)',\n minHeight: '1px',\n visibility: 'hidden'\n })), /*#__PURE__*/transition('* => left, * => right, left => center, right => center', /*#__PURE__*/animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')), /*#__PURE__*/transition('void => left-origin-center', [/*#__PURE__*/style({\n transform: 'translate3d(-100%, 0, 0)',\n visibility: 'hidden'\n }), /*#__PURE__*/animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')]), /*#__PURE__*/transition('void => right-origin-center', [/*#__PURE__*/style({\n transform: 'translate3d(100%, 0, 0)',\n visibility: 'hidden'\n }), /*#__PURE__*/animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')])])\n};\n\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\nlet MatTabBodyPortal = /*#__PURE__*/(() => {\n class MatTabBodyPortal extends CdkPortalOutlet {\n constructor(componentFactoryResolver, viewContainerRef, _host, _document) {\n super(componentFactoryResolver, viewContainerRef, _document);\n this._host = _host;\n /** Subscription to events for when the tab body begins centering. */\n this._centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n this._leavingSub = Subscription.EMPTY;\n }\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit() {\n super.ngOnInit();\n this._centeringSub = this._host._beforeCentering.pipe(startWith(this._host._isCenterPosition(this._host._position))).subscribe(isCentering => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n if (!this._host.preserveContent) {\n this.detach();\n }\n });\n }\n /** Clean up centering subscription. */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n static {\n this.ɵfac = function MatTabBodyPortal_Factory(t) {\n return new (t || MatTabBodyPortal)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(forwardRef(() => MatTabBody)), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabBodyPortal,\n selectors: [[\"\", \"matTabBodyHost\", \"\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MatTabBodyPortal;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\nlet MatTabBody = /*#__PURE__*/(() => {\n class MatTabBody {\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n set position(position) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n constructor(_elementRef, _dir, changeDetectorRef) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /** Subscription to the directionality change observable. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Emits when an animation on the tab is complete. */\n this._translateTabComplete = new Subject();\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n this._onCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._beforeCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._afterLeavingCenter = new EventEmitter();\n /** Event emitted when the tab completes its animation towards the center. */\n this._onCentered = new EventEmitter(true);\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n this.animationDuration = '500ms';\n /** Whether the tab's content should be kept in the DOM while it's off-screen. */\n this.preserveContent = false;\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe(dir => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n _onTranslateTabStarted(event) {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n /** The text direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position) {\n return position == 'center' || position == 'left-origin-center' || position == 'right-origin-center';\n }\n /** Computes the position state that will be used for the tab-body animation trigger. */\n _computePositionAnimationState(dir = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n } else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n } else {\n this._position = 'center';\n }\n }\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n _computePositionFromOrigin(origin) {\n const dir = this._getLayoutDirection();\n if (dir == 'ltr' && origin <= 0 || dir == 'rtl' && origin > 0) {\n return 'left-origin-center';\n }\n return 'right-origin-center';\n }\n static {\n this.ɵfac = function MatTabBody_Factory(t) {\n return new (t || MatTabBody)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabBody,\n selectors: [[\"mat-tab-body\"]],\n viewQuery: function MatTabBody_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalHost = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-tab-body\"],\n inputs: {\n _content: [i0.ɵɵInputFlags.None, \"content\", \"_content\"],\n origin: \"origin\",\n animationDuration: \"animationDuration\",\n preserveContent: \"preserveContent\",\n position: \"position\"\n },\n outputs: {\n _onCentering: \"_onCentering\",\n _beforeCentering: \"_beforeCentering\",\n _afterLeavingCenter: \"_afterLeavingCenter\",\n _onCentered: \"_onCentered\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 6,\n consts: [[\"content\", \"\"], [\"cdkScrollable\", \"\", 1, \"mat-mdc-tab-body-content\"], [\"matTabBodyHost\", \"\"]],\n template: function MatTabBody_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵlistener(\"@translateTab.start\", function MatTabBody_Template_div_animation_translateTab_start_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onTranslateTabStarted($event));\n })(\"@translateTab.done\", function MatTabBody_Template_div_animation_translateTab_done_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._translateTabComplete.next($event));\n });\n i0.ɵɵtemplate(2, MatTabBody_ng_template_2_Template, 0, 0, \"ng-template\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"@translateTab\", i0.ɵɵpureFunction2(3, _c7, ctx._position, i0.ɵɵpureFunction1(1, _c6, ctx.animationDuration)));\n }\n },\n dependencies: [MatTabBodyPortal, CdkScrollable],\n styles: [\".mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\"],\n encapsulation: 2,\n data: {\n animation: [matTabsAnimations.translateTab]\n }\n });\n }\n }\n return MatTabBody;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n/** Boolean constant that determines whether the tab group supports the `backgroundColor` input */\nconst ENABLE_BACKGROUND_INPUT = true;\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\nlet MatTabGroup = /*#__PURE__*/(() => {\n class MatTabGroup {\n /** Whether the ink bar should fit its width to the size of the tab label content. */\n get fitInkBarToContent() {\n return this._fitInkBarToContent;\n }\n set fitInkBarToContent(value) {\n this._fitInkBarToContent = value;\n this._changeDetectorRef.markForCheck();\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n this._indexToSelect = isNaN(value) ? null : value;\n }\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n const stringValue = value + '';\n this._animationDuration = /^\\d+$/.test(stringValue) ? value + 'ms' : stringValue;\n }\n /**\n * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n * accessibility when the tab does not have focusable elements or if it has scrollable content.\n * The `tabindex` will be removed automatically for inactive tabs.\n * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n */\n get contentTabIndex() {\n return this._contentTabIndex;\n }\n set contentTabIndex(value) {\n this._contentTabIndex = isNaN(value) ? null : value;\n }\n /**\n * Background color of the tab group.\n * @deprecated The background color should be customized through Sass theming APIs.\n * @breaking-change 20.0.0 Remove this input\n */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n if (!ENABLE_BACKGROUND_INPUT) {\n throw new Error(`mat-tab-group background color must be set through the Sass theming API`);\n }\n const classList = this._elementRef.nativeElement.classList;\n classList.remove('mat-tabs-with-background', `mat-background-${this.backgroundColor}`);\n if (value) {\n classList.add('mat-tabs-with-background', `mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n constructor(_elementRef, _changeDetectorRef, defaultConfig, _animationMode) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** All of the tabs that belong to the group. */\n this._tabs = new QueryList();\n /** The tab index that should be selected after the content has been checked. */\n this._indexToSelect = 0;\n /** Index of the tab that was focused last. */\n this._lastFocusedTabIndex = null;\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n this._tabBodyWrapperHeight = 0;\n /** Subscription to tabs being added/removed. */\n this._tabsSubscription = Subscription.EMPTY;\n /** Subscription to changes in the tab labels. */\n this._tabLabelSubscription = Subscription.EMPTY;\n this._fitInkBarToContent = false;\n /** Whether tabs should be stretched to fill the header. */\n this.stretchTabs = true;\n /** Whether the tab group should grow to the size of the active tab. */\n this.dynamicHeight = false;\n this._selectedIndex = null;\n /** Position of the tab header. */\n this.headerPosition = 'above';\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n this.disablePagination = false;\n /** Whether ripples in the tab group are disabled. */\n this.disableRipple = false;\n /**\n * By default tabs remove their content from the DOM while it's off-screen.\n * Setting this to `true` will keep it in the DOM which will prevent elements\n * like iframes and videos from reloading next time it comes back into the view.\n */\n this.preserveContent = false;\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n this.selectedIndexChange = new EventEmitter();\n /** Event emitted when focus has changed within a tab group. */\n this.focusChange = new EventEmitter();\n /** Event emitted when the body animation has completed */\n this.animationDone = new EventEmitter();\n /** Event emitted when the tab selection has changed. */\n this.selectedTabChange = new EventEmitter(true);\n /** Whether the tab group is rendered on the server. */\n this._isServer = !inject(Platform).isBrowser;\n this._groupId = nextId++;\n this.animationDuration = defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\n this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;\n this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\n if (defaultConfig?.contentTabIndex != null) {\n this.contentTabIndex = defaultConfig.contentTabIndex;\n }\n this.preserveContent = !!defaultConfig?.preserveContent;\n this.fitInkBarToContent = defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;\n this.stretchTabs = defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;\n }\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab, index) => {\n tab.position = index - indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._lastFocusedTabIndex = null;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n let selectedTab;\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n this._lastFocusedTabIndex = null;\n selectedTab = tabs[i];\n break;\n }\n }\n // If we haven't found an active tab and a tab exists at the selected index, it means\n // that the active tab was swapped out. Since this won't be picked up by the rendering\n // loop in `ngAfterContentChecked`, we need to sync it up manually.\n if (!selectedTab && tabs[indexToSelect]) {\n Promise.resolve().then(() => {\n tabs[indexToSelect].isActive = true;\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n });\n }\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Listens to changes in all of the tabs. */\n _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe(tabs => {\n this._tabs.reset(tabs.filter(tab => {\n return tab._closestTabGroup === this || !tab._closestTabGroup;\n }));\n this._tabs.notifyOnChanges();\n });\n }\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n /**\n * Recalculates the tab group's pagination dimensions.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n if (this._tabHeader) {\n this._tabHeader.updatePagination();\n }\n }\n /**\n * Sets focus to a particular tab.\n * @param index Index of the tab to be focused.\n */\n focusTab(index) {\n const header = this._tabHeader;\n if (header) {\n header.focusIndex = index;\n }\n }\n _focusChanged(index) {\n this._lastFocusedTabIndex = index;\n this.focusChange.emit(this._createChangeEvent(index));\n }\n _createChangeEvent(index) {\n const event = new MatTabChangeEvent();\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges)).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n _clampTabIndex(index) {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i) {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n /** Returns a unique id for each tab content element */\n _getTabContentId(i) {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight) {\n if (!this.dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight() {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab, tabHeader, index) {\n tabHeader.focusIndex = index;\n if (!tab.disabled) {\n this.selectedIndex = index;\n }\n }\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(index) {\n const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\n return index === targetIndex ? 0 : -1;\n }\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin, index) {\n // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n // can cause the tab to be moved out from under the pointer, interrupting the\n // click sequence (see #21898). We don't need to scroll the tab into view for\n // such cases anyway, because it will be done when the tab becomes selected.\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n this._tabHeader.focusIndex = index;\n }\n }\n static {\n this.ɵfac = function MatTabGroup_Factory(t) {\n return new (t || MatTabGroup)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(MAT_TABS_CONFIG, 8), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabGroup,\n selectors: [[\"mat-tab-group\"]],\n contentQueries: function MatTabGroup_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatTab, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allTabs = _t);\n }\n },\n viewQuery: function MatTabGroup_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c8, 5);\n i0.ɵɵviewQuery(_c9, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabBodyWrapper = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabHeader = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-tab-group\"],\n hostVars: 10,\n hostBindings: function MatTabGroup_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"mat-\" + (ctx.color || \"primary\"));\n i0.ɵɵstyleProp(\"--mat-tab-animation-duration\", ctx.animationDuration);\n i0.ɵɵclassProp(\"mat-mdc-tab-group-dynamic-height\", ctx.dynamicHeight)(\"mat-mdc-tab-group-inverted-header\", ctx.headerPosition === \"below\")(\"mat-mdc-tab-group-stretch-tabs\", ctx.stretchTabs);\n }\n },\n inputs: {\n color: \"color\",\n fitInkBarToContent: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute],\n stretchTabs: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"mat-stretch-tabs\", \"stretchTabs\", booleanAttribute],\n dynamicHeight: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"dynamicHeight\", \"dynamicHeight\", booleanAttribute],\n selectedIndex: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"selectedIndex\", \"selectedIndex\", numberAttribute],\n headerPosition: \"headerPosition\",\n animationDuration: \"animationDuration\",\n contentTabIndex: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"contentTabIndex\", \"contentTabIndex\", numberAttribute],\n disablePagination: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disablePagination\", \"disablePagination\", booleanAttribute],\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute],\n preserveContent: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"preserveContent\", \"preserveContent\", booleanAttribute],\n backgroundColor: \"backgroundColor\"\n },\n outputs: {\n selectedIndexChange: \"selectedIndexChange\",\n focusChange: \"focusChange\",\n animationDone: \"animationDone\",\n selectedTabChange: \"selectedTabChange\"\n },\n exportAs: [\"matTabGroup\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 9,\n vars: 6,\n consts: [[\"tabHeader\", \"\"], [\"tabBodyWrapper\", \"\"], [\"tabNode\", \"\"], [3, \"indexFocused\", \"selectFocusedIndex\", \"selectedIndex\", \"disableRipple\", \"disablePagination\"], [\"role\", \"tab\", \"matTabLabelWrapper\", \"\", \"cdkMonitorElementFocus\", \"\", 1, \"mdc-tab\", \"mat-mdc-tab\", \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-tab-body-wrapper\"], [\"role\", \"tabpanel\"], [\"role\", \"tab\", \"matTabLabelWrapper\", \"\", \"cdkMonitorElementFocus\", \"\", 1, \"mdc-tab\", \"mat-mdc-tab\", \"mat-mdc-focus-indicator\", 3, \"click\", \"cdkFocusChange\", \"id\", \"ngClass\", \"disabled\", \"fitInkBarToContent\"], [1, \"mdc-tab__ripple\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-ripple\", 3, \"matRippleTrigger\", \"matRippleDisabled\"], [1, \"mdc-tab__content\"], [1, \"mdc-tab__text-label\"], [3, \"cdkPortalOutlet\"], [\"role\", \"tabpanel\", 3, \"_onCentered\", \"_onCentering\", \"id\", \"ngClass\", \"content\", \"position\", \"origin\", \"animationDuration\", \"preserveContent\"]],\n template: function MatTabGroup_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"mat-tab-header\", 3, 0);\n i0.ɵɵlistener(\"indexFocused\", function MatTabGroup_Template_mat_tab_header_indexFocused_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._focusChanged($event));\n })(\"selectFocusedIndex\", function MatTabGroup_Template_mat_tab_header_selectFocusedIndex_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.selectedIndex = $event);\n });\n i0.ɵɵrepeaterCreate(2, MatTabGroup_For_3_Template, 8, 16, \"div\", 4, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, MatTabGroup_Conditional_4_Template, 1, 0);\n i0.ɵɵelementStart(5, \"div\", 5, 1);\n i0.ɵɵrepeaterCreate(7, MatTabGroup_For_8_Template, 1, 12, \"mat-tab-body\", 6, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"selectedIndex\", ctx.selectedIndex || 0)(\"disableRipple\", ctx.disableRipple)(\"disablePagination\", ctx.disablePagination);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx._tabs);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(4, ctx._isServer ? 4 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx._tabs);\n }\n },\n dependencies: [MatTabHeader, MatTabLabelWrapper, CdkMonitorFocus, NgClass, MatRipple, CdkPortalOutlet, MatTabBody],\n styles: [\".mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;font-family:var(--mat-tab-header-label-text-font);font-size:var(--mat-tab-header-label-text-size);letter-spacing:var(--mat-tab-header-label-text-tracking);line-height:var(--mat-tab-header-label-text-line-height);font-weight:var(--mat-tab-header-label-text-weight)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-top-width:var(--mdc-tab-indicator-active-indicator-height)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab:not(.mdc-tab--stacked){height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab:not(:disabled).mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):hover.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):focus.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):active.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:disabled.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):hover:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):focus:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):active:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:disabled:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color)}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color)}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color)}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color)}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color)}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color)}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color)}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color)}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab .mdc-tab__ripple::before{content:\\\"\\\";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color);display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\"],\n encapsulation: 2\n });\n }\n }\n return MatTabGroup;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** A simple change event emitted on focus or selection changes. */\nclass MatTabChangeEvent {}\n\n// Increasing integer for generating unique ids for tab nav components.\nlet nextUniqueId = 0;\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nlet MatTabNav = /*#__PURE__*/(() => {\n class MatTabNav extends MatPaginatedTabHeader {\n /** Whether the ink bar should fit its width to the size of the tab label content. */\n get fitInkBarToContent() {\n return this._fitInkBarToContent.value;\n }\n set fitInkBarToContent(value) {\n this._fitInkBarToContent.next(value);\n this._changeDetectorRef.markForCheck();\n }\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n const stringValue = value + '';\n this._animationDuration = /^\\d+$/.test(stringValue) ? value + 'ms' : stringValue;\n }\n /** Background color of the tab nav. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove('mat-tabs-with-background', `mat-background-${this.backgroundColor}`);\n if (value) {\n classList.add('mat-tabs-with-background', `mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode, defaultConfig) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._fitInkBarToContent = new BehaviorSubject(false);\n /** Whether tabs should be stretched to fill the header. */\n this.stretchTabs = true;\n /** Whether the ripple effect is disabled or not. */\n this.disableRipple = false;\n /** Theme color of the nav bar. */\n this.color = 'primary';\n this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;\n this.fitInkBarToContent = defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;\n this.stretchTabs = defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;\n }\n _itemSelected() {\n // noop\n }\n ngAfterContentInit() {\n this._inkBar = new MatInkBar(this._items);\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n super.ngAfterContentInit();\n }\n ngAfterViewInit() {\n if (!this.tabPanel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('A mat-tab-nav-panel must be specified via [tabPanel].');\n }\n super.ngAfterViewInit();\n }\n /** Notifies the component that the active link has been changed. */\n updateActiveLink() {\n if (!this._items) {\n return;\n }\n const items = this._items.toArray();\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n if (this.tabPanel) {\n this.tabPanel._activeTabId = items[i].id;\n }\n return;\n }\n }\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n _getRole() {\n return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role');\n }\n static {\n this.ɵfac = function MatTabNav_Factory(t) {\n return new (t || MatTabNav)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ViewportRuler), i0.ɵɵdirectiveInject(i3.Platform), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_TABS_CONFIG, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabNav,\n selectors: [[\"\", \"mat-tab-nav-bar\", \"\"]],\n contentQueries: function MatTabNav_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatTabLink, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._items = _t);\n }\n },\n viewQuery: function MatTabNav_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7);\n i0.ɵɵviewQuery(_c2, 7);\n i0.ɵɵviewQuery(_c3, 7);\n i0.ɵɵviewQuery(_c4, 5);\n i0.ɵɵviewQuery(_c5, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabListContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabList = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabListInner = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._nextPaginator = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._previousPaginator = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-tab-nav-bar\", \"mat-mdc-tab-header\"],\n hostVars: 17,\n hostBindings: function MatTabNav_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx._getRole());\n i0.ɵɵstyleProp(\"--mat-tab-animation-duration\", ctx.animationDuration);\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-controls-enabled\", ctx._showPaginationControls)(\"mat-mdc-tab-header-rtl\", ctx._getLayoutDirection() == \"rtl\")(\"mat-mdc-tab-nav-bar-stretch-tabs\", ctx.stretchTabs)(\"mat-primary\", ctx.color !== \"warn\" && ctx.color !== \"accent\")(\"mat-accent\", ctx.color === \"accent\")(\"mat-warn\", ctx.color === \"warn\")(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n }\n },\n inputs: {\n fitInkBarToContent: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute],\n stretchTabs: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"mat-stretch-tabs\", \"stretchTabs\", booleanAttribute],\n animationDuration: \"animationDuration\",\n backgroundColor: \"backgroundColor\",\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute],\n color: \"color\",\n tabPanel: \"tabPanel\"\n },\n exportAs: [\"matTabNavBar\", \"matTabNav\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c10,\n ngContentSelectors: _c0,\n decls: 13,\n vars: 8,\n consts: [[\"previousPaginator\", \"\"], [\"tabListContainer\", \"\"], [\"tabList\", \"\"], [\"tabListInner\", \"\"], [\"nextPaginator\", \"\"], [\"aria-hidden\", \"true\", \"type\", \"button\", \"mat-ripple\", \"\", \"tabindex\", \"-1\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-before\", 3, \"click\", \"mousedown\", \"touchend\", \"matRippleDisabled\", \"disabled\"], [1, \"mat-mdc-tab-header-pagination-chevron\"], [1, \"mat-mdc-tab-link-container\", 3, \"keydown\"], [1, \"mat-mdc-tab-list\", 3, \"cdkObserveContent\"], [1, \"mat-mdc-tab-links\"], [\"aria-hidden\", \"true\", \"type\", \"button\", \"mat-ripple\", \"\", \"tabindex\", \"-1\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-after\", 3, \"mousedown\", \"click\", \"touchend\", \"matRippleDisabled\", \"disabled\"]],\n template: function MatTabNav_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"button\", 5, 0);\n i0.ɵɵlistener(\"click\", function MatTabNav_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"before\"));\n })(\"mousedown\", function MatTabNav_Template_button_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"before\", $event));\n })(\"touchend\", function MatTabNav_Template_button_touchend_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._stopInterval());\n });\n i0.ɵɵelement(2, \"div\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 7, 1);\n i0.ɵɵlistener(\"keydown\", function MatTabNav_Template_div_keydown_3_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handleKeydown($event));\n });\n i0.ɵɵelementStart(5, \"div\", 8, 2);\n i0.ɵɵlistener(\"cdkObserveContent\", function MatTabNav_Template_div_cdkObserveContent_5_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onContentChanges());\n });\n i0.ɵɵelementStart(7, \"div\", 9, 3);\n i0.ɵɵprojection(9);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(10, \"button\", 10, 4);\n i0.ɵɵlistener(\"mousedown\", function MatTabNav_Template_button_mousedown_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"after\", $event));\n })(\"click\", function MatTabNav_Template_button_click_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"after\"));\n })(\"touchend\", function MatTabNav_Template_button_touchend_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._stopInterval());\n });\n i0.ɵɵelement(12, \"div\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollBefore);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollBefore || ctx.disableRipple)(\"disabled\", ctx._disableScrollBefore || null);\n i0.ɵɵadvance(10);\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollAfter);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollAfter || ctx.disableRipple)(\"disabled\", ctx._disableScrollAfter || null);\n }\n },\n dependencies: [MatRipple, CdkObserveContent],\n styles: [\".mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-header-pagination-icon-color)}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-links{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:flex-end}.mat-mdc-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-focus-indicator::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mdc-tab__ripple::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}\"],\n encapsulation: 2\n });\n }\n }\n return MatTabNav;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Link inside a `mat-tab-nav-bar`.\n */\nlet MatTabLink = /*#__PURE__*/(() => {\n class MatTabLink extends InkBarItem {\n /** Whether the link is active. */\n get active() {\n return this._isActive;\n }\n set active(value) {\n if (value !== this._isActive) {\n this._isActive = value;\n this._tabNavBar.updateActiveLink();\n }\n }\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled() {\n return this.disabled || this.disableRipple || this._tabNavBar.disableRipple || !!this.rippleConfig.disabled;\n }\n constructor(_tabNavBar, /** @docs-private */elementRef, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {\n super();\n this._tabNavBar = _tabNavBar;\n this.elementRef = elementRef;\n this._focusMonitor = _focusMonitor;\n this._destroyed = new Subject();\n /** Whether the tab link is active or not. */\n this._isActive = false;\n /** Whether the tab link is disabled. */\n this.disabled = false;\n /** Whether ripples are disabled on the tab link. */\n this.disableRipple = false;\n this.tabIndex = 0;\n /** Unique id for the tab. */\n this.id = `mat-tab-link-${nextUniqueId++}`;\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = {\n enterDuration: 0,\n exitDuration: 0\n };\n }\n _tabNavBar._fitInkBarToContent.pipe(takeUntil(this._destroyed)).subscribe(fitInkBarToContent => {\n this.fitInkBarToContent = fitInkBarToContent;\n });\n }\n /** Focuses the tab link. */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this.elementRef);\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n super.ngOnDestroy();\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n _handleFocus() {\n // Since we allow navigation through tabbing in the nav bar, we\n // have to update the focused index whenever the link receives focus.\n this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);\n }\n _handleKeydown(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this.disabled) {\n event.preventDefault();\n } else if (this._tabNavBar.tabPanel) {\n // Only prevent the default action on space since it can scroll the page.\n // Don't prevent enter since it can break link navigation.\n if (event.keyCode === SPACE) {\n event.preventDefault();\n }\n this.elementRef.nativeElement.click();\n }\n }\n }\n _getAriaControls() {\n return this._tabNavBar.tabPanel ? this._tabNavBar.tabPanel?.id : this.elementRef.nativeElement.getAttribute('aria-controls');\n }\n _getAriaSelected() {\n if (this._tabNavBar.tabPanel) {\n return this.active ? 'true' : 'false';\n } else {\n return this.elementRef.nativeElement.getAttribute('aria-selected');\n }\n }\n _getAriaCurrent() {\n return this.active && !this._tabNavBar.tabPanel ? 'page' : null;\n }\n _getRole() {\n return this._tabNavBar.tabPanel ? 'tab' : this.elementRef.nativeElement.getAttribute('role');\n }\n _getTabIndex() {\n if (this._tabNavBar.tabPanel) {\n return this._isActive && !this.disabled ? 0 : -1;\n } else {\n return this.disabled ? -1 : this.tabIndex;\n }\n }\n static {\n this.ɵfac = function MatTabLink_Factory(t) {\n return new (t || MatTabLink)(i0.ɵɵdirectiveInject(MatTabNav), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MAT_RIPPLE_GLOBAL_OPTIONS, 8), i0.ɵɵinjectAttribute('tabindex'), i0.ɵɵdirectiveInject(i4.FocusMonitor), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabLink,\n selectors: [[\"\", \"mat-tab-link\", \"\"], [\"\", \"matTabLink\", \"\"]],\n hostAttrs: [1, \"mdc-tab\", \"mat-mdc-tab-link\", \"mat-mdc-focus-indicator\"],\n hostVars: 11,\n hostBindings: function MatTabLink_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focus\", function MatTabLink_focus_HostBindingHandler() {\n return ctx._handleFocus();\n })(\"keydown\", function MatTabLink_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-controls\", ctx._getAriaControls())(\"aria-current\", ctx._getAriaCurrent())(\"aria-disabled\", ctx.disabled)(\"aria-selected\", ctx._getAriaSelected())(\"id\", ctx.id)(\"tabIndex\", ctx._getTabIndex())(\"role\", ctx._getRole());\n i0.ɵɵclassProp(\"mat-mdc-tab-disabled\", ctx.disabled)(\"mdc-tab--active\", ctx.active);\n }\n },\n inputs: {\n active: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"active\", \"active\", booleanAttribute],\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n id: \"id\"\n },\n exportAs: [\"matTabLink\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c11,\n ngContentSelectors: _c0,\n decls: 5,\n vars: 2,\n consts: [[1, \"mdc-tab__ripple\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-ripple\", 3, \"matRippleTrigger\", \"matRippleDisabled\"], [1, \"mdc-tab__content\"], [1, \"mdc-tab__text-label\"]],\n template: function MatTabLink_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"span\", 0)(1, \"div\", 1);\n i0.ɵɵelementStart(2, \"span\", 2)(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"matRippleTrigger\", ctx.elementRef.nativeElement)(\"matRippleDisabled\", ctx.rippleDisabled);\n }\n },\n dependencies: [MatRipple],\n styles: [\".mat-mdc-tab-link{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;font-family:var(--mat-tab-header-label-text-font);font-size:var(--mat-tab-header-label-text-size);letter-spacing:var(--mat-tab-header-label-text-tracking);line-height:var(--mat-tab-header-label-text-line-height);font-weight:var(--mat-tab-header-label-text-weight)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-top-width:var(--mdc-tab-indicator-active-indicator-height)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab-link:not(.mdc-tab--stacked){height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab-link:not(:disabled).mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):hover.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):focus.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):active.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:disabled.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):hover:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):focus:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):active:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:disabled:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link.mdc-tab{flex-grow:0}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color)}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color)}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color)}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab-link.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color)}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color)}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color)}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color)}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color)}.mat-mdc-tab-link.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab-link .mdc-tab__ripple::before{content:\\\"\\\";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color);display:inline-flex;align-items:center}.mat-mdc-tab-link .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab-link:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab-link.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab-link.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab-link .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-header.mat-mdc-tab-nav-bar-stretch-tabs .mat-mdc-tab-link{flex-grow:1}.mat-mdc-tab-link::before{margin:5px}@media(max-width: 599px){.mat-mdc-tab-link{min-width:72px}}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatTabLink;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Tab panel component associated with MatTabNav.\n */\nlet MatTabNavPanel = /*#__PURE__*/(() => {\n class MatTabNavPanel {\n constructor() {\n /** Unique id for the tab panel. */\n this.id = `mat-tab-nav-panel-${nextUniqueId++}`;\n }\n static {\n this.ɵfac = function MatTabNavPanel_Factory(t) {\n return new (t || MatTabNavPanel)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabNavPanel,\n selectors: [[\"mat-tab-nav-panel\"]],\n hostAttrs: [\"role\", \"tabpanel\", 1, \"mat-mdc-tab-nav-panel\"],\n hostVars: 2,\n hostBindings: function MatTabNavPanel_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-labelledby\", ctx._activeTabId)(\"id\", ctx.id);\n }\n },\n inputs: {\n id: \"id\"\n },\n exportAs: [\"matTabNavPanel\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MatTabNavPanel_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatTabNavPanel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatTabsModule = /*#__PURE__*/(() => {\n class MatTabsModule {\n static {\n this.ɵfac = function MatTabsModule_Factory(t) {\n return new (t || MatTabsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatTabsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatCommonModule]\n });\n }\n }\n return MatTabsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TAB, MAT_TABS_CONFIG, MAT_TAB_CONTENT, MAT_TAB_GROUP, MAT_TAB_LABEL, MatInkBar, MatPaginatedTabHeader, MatTab, MatTabBody, MatTabBodyPortal, MatTabChangeEvent, MatTabContent, MatTabGroup, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabNavPanel, MatTabsModule, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, matTabsAnimations };\n"],"mappings":"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","names":["BadgeComponent","constructor","color","size","badgeOptions","classes","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵprojection","_BadgeComponent","MODULE_IMPORTS","CommonModule","GalaxyBadgeModule","MODULE_IMPORTS","_GalaxyBadgeModule","_c0","MatTab_ng_template_0_Template","rf","ctx","ɵɵprojection","_c1","_c2","_c3","_c4","_c5","_c6","a0","_c7","a1","MatTabBody_ng_template_2_Template","_c8","_c9","MatTabGroup_For_3_Conditional_6_ng_template_0_Template","MatTabGroup_For_3_Conditional_6_Template","ɵɵtemplate","tab_r4","ɵɵnextContext","ɵɵproperty","MatTabGroup_For_3_Conditional_7_Template","ɵɵtext","ɵɵtextInterpolate","MatTabGroup_For_3_Template","_r2","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ctx_r2","ɵɵrestoreView","i_r5","ctx_r5","tabHeader_r7","ɵɵreference","ɵɵresetView","$event","ɵɵelement","ɵɵelementEnd","tabNode_r8","ɵɵclassProp","ɵɵattribute","ɵɵadvance","ɵɵconditional","MatTabGroup_Conditional_4_Template","MatTabGroup_For_8_Template","_r9","tab_r10","i_r11","_c10","_c11","MAT_TAB_CONTENT","InjectionToken","MatTabContent","_MatTabContent","template","t","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","ɵɵProvidersFeature","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","_MatTabLabel","CdkPortal","templateRef","viewContainerRef","_closestTab","ViewContainerRef","ɵɵInheritDefinitionFeature","MAT_TAB_GROUP","MatTab","_MatTab","value","_viewContainerRef","_closestTabGroup","Subject","changes","TemplatePortal","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","InputFlags","booleanAttribute","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","ɵɵprojectionDef","ACTIVE_CLASS","NO_TRANSITION_CLASS","MatInkBar","_items","item","element","correspondingItem","currentItem","domRect","InkBarItem","_InkBarItem","inject","ElementRef","newValue","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","documentNode","inkBarElement","inkBarContentElement","parentElement","MatTabLabelWrapper","_MatTabLabelWrapper","InkBarItem","elementRef","t","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","rf","ctx","ɵɵattribute","ɵɵclassProp","InputFlags","booleanAttribute","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","passiveEventListenerOptions","normalizePassiveListenerOptions","HEADER_SCROLL_DELAY","HEADER_SCROLL_INTERVAL","MatPaginatedTabHeader","_MatPaginatedTabHeader","v","value","_elementRef","_changeDetectorRef","_viewportRuler","_dir","_ngZone","_platform","_animationMode","Subject","EventEmitter","fromEvent","takeUntil","dirChange","of","resize","realign","FocusKeyManager","take","merge","newFocusIndex","EMPTY","startWith","switchMap","tabItems","Observable","observer","resizeObserver","entries","item","skip","filter","event","hasModifierKey","textContent","index","tabIndex","containerEl","scrollDistance","translateX","direction","viewLength","scrollAmount","labelIndex","selectedLabel","offsetLeft","offsetWidth","labelBeforePos","labelAfterPos","beforeVisiblePos","afterVisiblePos","isEnabled","lengthOfTabList","selectedItem","selectedLabelWrapper","mouseEvent","timer","maxScrollDistance","distance","position","ChangeDetectorRef","ViewportRuler","Directionality","NgZone","Platform","ANIMATION_MODULE_TYPE","numberAttribute","MatTabHeader","_MatTabHeader","changeDetectorRef","viewportRuler","dir","ngZone","platform","animationMode","MatInkBar","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c1","_c2","_c3","_c4","_c5","ɵɵStandaloneFeature","_c0","_r1","ɵɵgetCurrentView","ɵɵprojectionDef","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ɵɵresetView","$event","ɵɵelement","ɵɵelementEnd","ɵɵprojection","ɵɵproperty","ɵɵadvance","MatRipple","CdkObserveContent","MAT_TABS_CONFIG","InjectionToken","matTabsAnimations","trigger","state","style","transition","animate","MatTabBodyPortal","_MatTabBodyPortal","CdkPortalOutlet","componentFactoryResolver","viewContainerRef","_host","_document","Subscription","isCentering","ComponentFactoryResolver$1","ViewContainerRef","forwardRef","MatTabBody","DOCUMENT","_MatTabBody","distinctUntilChanged","x","y","origin","ɵɵtemplate","MatTabBody_ng_template_2_Template","ɵɵpureFunction2","_c7","ɵɵpureFunction1","_c6","CdkScrollable","nextId","ENABLE_BACKGROUND_INPUT","MatTabGroup","_MatTabGroup","stringValue","classList","defaultConfig","QueryList","inject","indexToSelect","isFirstRun","wrapper","tab","tabs","selectedTab","i","header","MatTabChangeEvent","tabHeight","tabHeader","targetIndex","focusOrigin","MatTab","_c8","_c9","ɵɵclassMap","ɵɵstyleProp","ɵɵProvidersFeature","MAT_TAB_GROUP","ɵɵrepeaterCreate","MatTabGroup_For_3_Template","ɵɵrepeaterTrackByIdentity","MatTabGroup_Conditional_4_Template","MatTabGroup_For_8_Template","ɵɵrepeater","ɵɵconditional","CdkMonitorFocus","NgClass","nextUniqueId","MatTabNav","_MatTabNav","BehaviorSubject","items","MatTabLink","_c10","_MatTabLink","_tabNavBar","globalRippleOptions","_focusMonitor","fitInkBarToContent","MAT_RIPPLE_GLOBAL_OPTIONS","ɵɵinjectAttribute","FocusMonitor","_c11","MatTabNavPanel","_MatTabNavPanel","MatTabsModule","_MatTabsModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule"],"x_google_ignoreList":[3]}