{"version":3,"sources":["node_modules/@angular/material/fesm2022/tabs.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, TemplateRef, Directive, ViewContainerRef, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ViewChild, ElementRef, ChangeDetectorRef, NgZone, Injector, Renderer2, ANIMATION_MODULE_TYPE, EventEmitter, afterNextRender, numberAttribute, Output, ContentChildren, QueryList, forwardRef, HostAttributeToken, NgModule } from '@angular/core';\nimport { _StructuralStylesLoader, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule } from '@angular/material/core';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Subject, of, merge, EMPTY, Observable, timer, Subscription, BehaviorSubject } from 'rxjs';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { FocusKeyManager, _IdGenerator, CdkMonitorFocus, FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform, _bindEventWithOptions } from '@angular/cdk/platform';\nimport { ViewportRuler, CdkScrollable } from '@angular/cdk/scrolling';\nimport { debounceTime, takeUntil, startWith, switchMap, skip, filter } from 'rxjs/operators';\nimport { CdkObserveContent } from '@angular/cdk/observers';\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 ɵ$index_3_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, ɵ$index_3_r5));\n })(\"cdkFocusChange\", function MatTabGroup_For_3_Template_div_cdkFocusChange_0_listener($event) {\n const ɵ$index_3_r5 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5._tabFocusChanged($event, ɵ$index_3_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, null, 12)(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 ɵ$index_3_r5 = ctx.$index;\n const tabNode_r8 = i0.ɵɵreference(1);\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(tab_r4.labelClass);\n i0.ɵɵclassProp(\"mdc-tab--active\", ctx_r5.selectedIndex === ɵ$index_3_r5);\n i0.ɵɵproperty(\"id\", ctx_r5._getTabLabelId(ɵ$index_3_r5))(\"disabled\", tab_r4.disabled)(\"fitInkBarToContent\", ctx_r5.fitInkBarToContent);\n i0.ɵɵattribute(\"tabIndex\", ctx_r5._getTabIndex(ɵ$index_3_r5))(\"aria-posinset\", ɵ$index_3_r5 + 1)(\"aria-setsize\", ctx_r5._tabs.length)(\"aria-controls\", ctx_r5._getTabContentId(ɵ$index_3_r5))(\"aria-selected\", ctx_r5.selectedIndex === ɵ$index_3_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(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 ɵ$index_23_r11 = ctx.$index;\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(tab_r10.bodyClass);\n i0.ɵɵclassProp(\"mat-mdc-tab-body-active\", ctx_r5.selectedIndex === ɵ$index_23_r11);\n i0.ɵɵproperty(\"id\", ctx_r5._getTabContentId(ɵ$index_23_r11))(\"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 === ɵ$index_23_r11 ? ctx_r5.contentTabIndex : null)(\"aria-labelledby\", ctx_r5._getTabLabelId(ɵ$index_23_r11))(\"aria-hidden\", ctx_r5.selectedIndex !== ɵ$index_23_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 template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function MatTabContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabContent,\n selectors: [[\"\", \"matTabContent\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_CONTENT,\n useExisting: MatTabContent\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 _closestTab = inject(MAT_TAB, {\n optional: true\n });\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatTabLabel_BaseFactory;\n return function MatTabLabel_Factory(__ngFactoryType__) {\n return (ɵMatTabLabel_BaseFactory || (ɵMatTabLabel_BaseFactory = i0.ɵɵgetInheritedFactory(MatTabLabel)))(__ngFactoryType__ || MatTabLabel);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabLabel,\n selectors: [[\"\", \"mat-tab-label\", \"\"], [\"\", \"matTabLabel\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_LABEL,\n useExisting: MatTabLabel\n }]), i0.ɵɵInheritDefinitionFeature]\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 _viewContainerRef = inject(ViewContainerRef);\n _closestTabGroup = inject(MAT_TAB_GROUP, {\n optional: true\n });\n /** whether the tab is disabled. */\n disabled = false;\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 _templateLabel;\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n _explicitContent = undefined;\n /** Template inside the MatTab view that contains an ``. */\n _implicitContent;\n /** Plain text label for the tab, used when there is no template label. */\n textLabel = '';\n /** Aria label for the tab. */\n ariaLabel;\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n ariaLabelledby;\n /** Classes to be passed to the tab label inside the mat-tab-header container. */\n labelClass;\n /** Classes to be passed to the tab mat-tab-body container. */\n bodyClass;\n /** Portal that will be the hosted content of the tab */\n _contentPortal = null;\n /** @docs-private */\n get content() {\n return this._contentPortal;\n }\n /** Emits whenever the internal state of the tab changes. */\n _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 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 origin = null;\n /**\n * Whether the tab is currently active.\n */\n isActive = false;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\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 ɵfac = function MatTab_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTab)();\n };\n static ɵ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: [2, \"disabled\", \"disabled\", booleanAttribute],\n textLabel: [0, \"label\", \"textLabel\"],\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n labelClass: \"labelClass\",\n bodyClass: \"bodyClass\"\n },\n exportAs: [\"matTab\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB,\n useExisting: MatTab\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature],\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 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 _items;\n /** Item to which the ink bar is aligned currently. */\n _currentItem;\n constructor(_items) {\n this._items = _items;\n }\n /** Hides the ink bar. */\n hide() {\n this._items.forEach(item => item.deactivateInkBar());\n this._currentItem = undefined;\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 _elementRef = inject(ElementRef);\n _inkBarElement;\n _inkBarContentElement;\n _fitToContent = false;\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 ɵfac = function InkBarItem_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InkBarItem)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: InkBarItem,\n inputs: {\n fitInkBarToContent: [2, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature]\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 elementRef = inject(ElementRef);\n /** Whether the tab is disabled. */\n disabled = false;\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 ɵfac = /* @__PURE__ */(() => {\n let ɵMatTabLabelWrapper_BaseFactory;\n return function MatTabLabelWrapper_Factory(__ngFactoryType__) {\n return (ɵMatTabLabelWrapper_BaseFactory || (ɵMatTabLabelWrapper_BaseFactory = i0.ɵɵgetInheritedFactory(MatTabLabelWrapper)))(__ngFactoryType__ || MatTabLabelWrapper);\n };\n })();\n static ɵ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: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature]\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 = {\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 _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _viewportRuler = inject(ViewportRuler);\n _dir = inject(Directionality, {\n optional: true\n });\n _ngZone = inject(NgZone);\n _platform = inject(Platform);\n _sharedResizeObserver = inject(SharedResizeObserver);\n _injector = inject(Injector);\n _renderer = inject(Renderer2);\n _animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n _eventCleanups;\n /** The distance in pixels that the tab labels should be translated to the left. */\n _scrollDistance = 0;\n /** Whether the header should scroll to the selected index after the view has been checked. */\n _selectedIndexChanged = false;\n /** Emits when the component is destroyed. */\n _destroyed = new Subject();\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n _tabLabelCount;\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n _scrollDistanceChanged;\n /** Used to manage focus between the tabs. */\n _keyManager;\n /** Cached text content of the header. */\n _currentTextContent;\n /** Stream that will stop the automated scrolling. */\n _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 disablePagination = false;\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 _selectedIndex = 0;\n /** Event emitted when the option is selected. */\n selectFocusedIndex = new EventEmitter();\n /** Event emitted when a label is focused. */\n indexFocused = new EventEmitter();\n constructor() {\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n this._eventCleanups = this._ngZone.runOutsideAngular(() => [this._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this._stopInterval())]);\n }\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n this._eventCleanups.push(_bindEventWithOptions(this._renderer, this._previousPaginator.nativeElement, 'touchstart', () => this._handlePaginatorPress('before'), passiveEventListenerOptions), _bindEventWithOptions(this._renderer, this._nextPaginator.nativeElement, 'touchstart', () => this._handlePaginatorPress('after'), passiveEventListenerOptions));\n }\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : of('ltr');\n // We need to debounce resize events because the alignment logic is expensive.\n // If someone animates the width of tabs, we don't want to realign on every animation frame.\n // Once we haven't seen any more resize events in the last 32ms (~2 animaion frames) we can\n // re-align.\n const resize = this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(debounceTime(32), takeUntil(this._destroyed));\n // Note: We do not actually need to watch these events for proper functioning of the tabs,\n // the resize events above should capture any viewport resize that we care about. However,\n // removing this is fairly breaking for screenshot tests, so we're leaving it here for now.\n const viewportResize = this._viewportRuler.change(150).pipe(takeUntil(this._destroyed));\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 // Note: We do not need to realign after the first render for proper functioning of the tabs\n // the resize events above should fire when we first start observing the element. However,\n // removing this is fairly breaking for screenshot tests, so we're leaving it here for now.\n afterNextRender(realign, {\n injector: this._injector\n });\n // On dir change or resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, viewportResize, 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._eventCleanups.forEach(cleanup => cleanup());\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 scrollWidth = this._tabListInner.nativeElement.scrollWidth;\n const containerWidth = this._elementRef.nativeElement.offsetWidth;\n // Usually checking that the scroll width is greater than the container width should be\n // enough, but on Safari at specific widths the browser ends up rounding up when there's\n // no pagination and rounding down once the pagination is added. This can throw the component\n // into an infinite loop where the pagination shows up and disappears constantly. We work\n // around it by adding a threshold to the calculation. From manual testing the threshold\n // can be lowered to 2px and still resolve the issue, but we set a higher one to be safe.\n // This shouldn't cause any content to be clipped, because tabs have a 24px horizontal\n // padding. See b/316395154 for more information.\n const isEnabled = scrollWidth - containerWidth >= 5;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._showPaginationControls = isEnabled;\n this._changeDetectorRef.markForCheck();\n }\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 ɵfac = function MatPaginatedTabHeader_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatPaginatedTabHeader)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatPaginatedTabHeader,\n inputs: {\n disablePagination: [2, \"disablePagination\", \"disablePagination\", booleanAttribute],\n selectedIndex: [2, \"selectedIndex\", \"selectedIndex\", numberAttribute]\n },\n outputs: {\n selectFocusedIndex: \"selectFocusedIndex\",\n indexFocused: \"indexFocused\"\n },\n features: [i0.ɵɵInputTransformsFeature]\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 _items;\n _tabListContainer;\n _tabList;\n _tabListInner;\n _nextPaginator;\n _previousPaginator;\n _inkBar;\n /** Aria label of the header. */\n ariaLabel;\n /** Sets the `aria-labelledby` of the header. */\n ariaLabelledby;\n /** Whether the ripple effect is disabled or not. */\n disableRipple = false;\n ngAfterContentInit() {\n this._inkBar = new MatInkBar(this._items);\n super.ngAfterContentInit();\n }\n _itemSelected(event) {\n event.preventDefault();\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatTabHeader_BaseFactory;\n return function MatTabHeader_Factory(__ngFactoryType__) {\n return (ɵMatTabHeader_BaseFactory || (ɵMatTabHeader_BaseFactory = i0.ɵɵgetInheritedFactory(MatTabHeader)))(__ngFactoryType__ || MatTabHeader);\n };\n })();\n static ɵ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 ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c0,\n decls: 13,\n vars: 10,\n consts: [[\"previousPaginator\", \"\"], [\"tabListContainer\", \"\"], [\"tabList\", \"\"], [\"tabListInner\", \"\"], [\"nextPaginator\", \"\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-before\", 3, \"click\", \"mousedown\", \"touchend\", \"matRippleDisabled\"], [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\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-after\", 3, \"mousedown\", \"click\", \"touchend\", \"matRippleDisabled\"]],\n template: function MatTabHeader_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 5, 0);\n i0.ɵɵlistener(\"click\", function MatTabHeader_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"before\"));\n })(\"mousedown\", function MatTabHeader_Template_div_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"before\", $event));\n })(\"touchend\", function MatTabHeader_Template_div_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, \"div\", 10, 4);\n i0.ɵɵlistener(\"mousedown\", function MatTabHeader_Template_div_mousedown_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"after\", $event));\n })(\"click\", function MatTabHeader_Template_div_click_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"after\"));\n })(\"touchend\", function MatTabHeader_Template_div_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);\n i0.ɵɵadvance(3);\n i0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"aria-label\", ctx.ariaLabel || null)(\"aria-labelledby\", ctx.ariaLabelledby || null);\n i0.ɵɵadvance(5);\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollAfter);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollAfter || ctx.disableRipple);\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;outline: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, var(--mat-sys-on-surface))}.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, var(--mat-sys-on-surface))}.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-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, 1px);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-sys-surface-variant))}.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, 1px);border-top-color:var(--mat-tab-header-divider-color, var(--mat-sys-surface-variant))}.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}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mdc-secondary-navigation-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\"],\n encapsulation: 2\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 visibility: 'visible'\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 _host = inject(MatTabBody);\n /** Subscription to events for when the tab body begins centering. */\n _centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n _leavingSub = Subscription.EMPTY;\n constructor() {\n super();\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 (this._host._content && 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 ɵfac = function MatTabBodyPortal_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabBodyPortal)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatTabBodyPortal,\n selectors: [[\"\", \"matTabBodyHost\", \"\"]],\n features: [i0.ɵɵInheritDefinitionFeature]\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 _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n /** Current position of the tab-body in the tab-group. Zero means that the tab is visible. */\n _positionIndex;\n /** Subscription to the directionality change observable. */\n _dirChangeSubscription = Subscription.EMPTY;\n /** Tab body position state. Used by the animation trigger for the current state. */\n _position;\n /** Emits when an animation on the tab is complete. */\n _translateTabComplete = new Subject();\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n _onCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n _beforeCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n _afterLeavingCenter = new EventEmitter();\n /** Event emitted when the tab completes its animation towards the center. */\n _onCentered = new EventEmitter(true);\n /** The portal host inside of this container into which the tab body content will be loaded. */\n _portalHost;\n /** The tab body content to display. */\n _content;\n /** Position that will be used when the tab is immediately becoming visible after creation. */\n origin;\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 animationDuration = '500ms';\n /** Whether the tab's content should be kept in the DOM while it's off-screen. */\n preserveContent = false;\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() {\n if (this._dir) {\n const changeDetectorRef = inject(ChangeDetectorRef);\n this._dirChangeSubscription = this._dir.change.subscribe(dir => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n this._translateTabComplete.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 ɵfac = function MatTabBody_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabBody)();\n };\n static ɵ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: [0, \"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 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 return MatTabBody;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\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 _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n /**\n * All tabs inside the tab group. This includes tabs that belong to groups that are nested\n * inside the current one. We filter out only the tabs that belong to this group in `_tabs`.\n */\n _allTabs;\n _tabBodyWrapper;\n _tabHeader;\n /** All of the tabs that belong to the group. */\n _tabs = new QueryList();\n /** The tab index that should be selected after the content has been checked. */\n _indexToSelect = 0;\n /** Index of the tab that was focused last. */\n _lastFocusedTabIndex = null;\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n _tabBodyWrapperHeight = 0;\n /** Subscription to tabs being added/removed. */\n _tabsSubscription = Subscription.EMPTY;\n /** Subscription to changes in the tab labels. */\n _tabLabelSubscription = Subscription.EMPTY;\n /**\n * Theme color of the tab group. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/tabs/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\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 _fitInkBarToContent = false;\n /** Whether tabs should be stretched to fill the header. */\n stretchTabs = true;\n /** Alignment for tabs label. */\n alignTabs = null;\n /** Whether the tab group should grow to the size of the active tab. */\n dynamicHeight = false;\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 _selectedIndex = null;\n /** Position of the tab header. */\n headerPosition = 'above';\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 _animationDuration;\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 _contentTabIndex;\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 disablePagination = false;\n /** Whether ripples in the tab group are disabled. */\n 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 preserveContent = false;\n /**\n * Theme color of the background of the tab group. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/tabs/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n *\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 _backgroundColor;\n /** Aria label of the inner `tablist` of the group. */\n ariaLabel;\n /** Sets the `aria-labelledby` of the inner `tablist` of the group. */\n ariaLabelledby;\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n selectedIndexChange = new EventEmitter();\n /** Event emitted when focus has changed within a tab group. */\n focusChange = new EventEmitter();\n /** Event emitted when the body animation has completed */\n animationDone = new EventEmitter();\n /** Event emitted when the tab selection has changed. */\n selectedTabChange = new EventEmitter(true);\n _groupId;\n /** Whether the tab group is rendered on the server. */\n _isServer = !inject(Platform).isBrowser;\n constructor() {\n const defaultConfig = inject(MAT_TABS_CONFIG, {\n optional: true\n });\n this._groupId = inject(_IdGenerator).getId('mat-tab-group-');\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 this.alignTabs = defaultConfig && defaultConfig.alignTabs != null ? defaultConfig.alignTabs : null;\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 `${this._groupId}-label-${i}`;\n }\n /** Returns a unique id for each tab content element */\n _getTabContentId(i) {\n return `${this._groupId}-content-${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 ɵfac = function MatTabGroup_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabGroup)();\n };\n static ɵ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: 11,\n hostBindings: function MatTabGroup_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"mat-align-tabs\", ctx.alignTabs);\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: [2, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute],\n stretchTabs: [2, \"mat-stretch-tabs\", \"stretchTabs\", booleanAttribute],\n alignTabs: [0, \"mat-align-tabs\", \"alignTabs\"],\n dynamicHeight: [2, \"dynamicHeight\", \"dynamicHeight\", booleanAttribute],\n selectedIndex: [2, \"selectedIndex\", \"selectedIndex\", numberAttribute],\n headerPosition: \"headerPosition\",\n animationDuration: \"animationDuration\",\n contentTabIndex: [2, \"contentTabIndex\", \"contentTabIndex\", numberAttribute],\n disablePagination: [2, \"disablePagination\", \"disablePagination\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n preserveContent: [2, \"preserveContent\", \"preserveContent\", booleanAttribute],\n backgroundColor: \"backgroundColor\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"]\n },\n outputs: {\n selectedIndexChange: \"selectedIndexChange\",\n focusChange: \"focusChange\",\n animationDone: \"animationDone\",\n selectedTabChange: \"selectedTabChange\"\n },\n exportAs: [\"matTabGroup\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup\n }]), i0.ɵɵInputTransformsFeature],\n ngContentSelectors: _c0,\n decls: 9,\n vars: 8,\n consts: [[\"tabHeader\", \"\"], [\"tabBodyWrapper\", \"\"], [\"tabNode\", \"\"], [3, \"indexFocused\", \"selectFocusedIndex\", \"selectedIndex\", \"disableRipple\", \"disablePagination\", \"aria-label\", \"aria-labelledby\"], [\"role\", \"tab\", \"matTabLabelWrapper\", \"\", \"cdkMonitorElementFocus\", \"\", 1, \"mdc-tab\", \"mat-mdc-tab\", \"mat-focus-indicator\", 3, \"id\", \"mdc-tab--active\", \"class\", \"disabled\", \"fitInkBarToContent\"], [1, \"mat-mdc-tab-body-wrapper\"], [\"role\", \"tabpanel\", 3, \"id\", \"mat-mdc-tab-body-active\", \"class\", \"content\", \"position\", \"origin\", \"animationDuration\", \"preserveContent\"], [\"role\", \"tab\", \"matTabLabelWrapper\", \"\", \"cdkMonitorElementFocus\", \"\", 1, \"mdc-tab\", \"mat-mdc-tab\", \"mat-focus-indicator\", 3, \"click\", \"cdkFocusChange\", \"id\", \"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\", \"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, 17, \"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, 13, \"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)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledby);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx._tabs);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(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, MatRipple, CdkPortalOutlet, MatTabBody],\n styles: [\".mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1}.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--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.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{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);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--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.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;height:var(--mdc-secondary-navigation-tab-container-height, 48px);font-family:var(--mat-tab-header-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height, 2px);border-radius:var(--mdc-tab-indicator-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-sys-on-surface))}.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, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color, var(--mat-sys-primary))}.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, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-sys-on-surface));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, var(--mat-sys-on-surface))}.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-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-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 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 /** Index of the currently-selected tab. */\n index;\n /** Reference to the currently-selected tab. */\n tab;\n}\n\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 _fitInkBarToContent = new BehaviorSubject(false);\n /** Whether tabs should be stretched to fill the header. */\n stretchTabs = true;\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 _animationDuration;\n /** Query list of all tab links of the tab navigation. */\n _items;\n /**\n * Theme color of the background of the tab nav. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/tabs/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\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 _backgroundColor;\n /** Whether the ripple effect is disabled or not. */\n disableRipple = false;\n /**\n * Theme color of the nav bar. This API is supported in M2 themes only, it has\n * no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/tabs/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color = 'primary';\n /**\n * Associated tab panel controlled by the nav bar. If not provided, then the nav bar\n * follows the ARIA link / navigation landmark pattern. If provided, it follows the\n * ARIA tabs design pattern.\n */\n tabPanel;\n _tabListContainer;\n _tabList;\n _tabListInner;\n _nextPaginator;\n _previousPaginator;\n _inkBar;\n constructor() {\n const elementRef = inject(ElementRef);\n const dir = inject(Directionality, {\n optional: true\n });\n const ngZone = inject(NgZone);\n const changeDetectorRef = inject(ChangeDetectorRef);\n const viewportRuler = inject(ViewportRuler);\n const platform = inject(Platform);\n const animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n const defaultConfig = inject(MAT_TABS_CONFIG, {\n optional: true\n });\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\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(() => this.updateActiveLink());\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 this.selectedIndex = -1;\n }\n _getRole() {\n return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role');\n }\n static ɵfac = function MatTabNav_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabNav)();\n };\n static ɵ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: [2, \"fitInkBarToContent\", \"fitInkBarToContent\", booleanAttribute],\n stretchTabs: [2, \"mat-stretch-tabs\", \"stretchTabs\", booleanAttribute],\n animationDuration: \"animationDuration\",\n backgroundColor: \"backgroundColor\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n color: \"color\",\n tabPanel: \"tabPanel\"\n },\n exportAs: [\"matTabNavBar\", \"matTabNav\"],\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature],\n attrs: _c10,\n ngContentSelectors: _c0,\n decls: 13,\n vars: 6,\n consts: [[\"previousPaginator\", \"\"], [\"tabListContainer\", \"\"], [\"tabList\", \"\"], [\"tabListInner\", \"\"], [\"nextPaginator\", \"\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-before\", 3, \"click\", \"mousedown\", \"touchend\", \"matRippleDisabled\"], [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\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-tab-header-pagination\", \"mat-mdc-tab-header-pagination-after\", 3, \"mousedown\", \"click\", \"touchend\", \"matRippleDisabled\"]],\n template: function MatTabNav_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 5, 0);\n i0.ɵɵlistener(\"click\", function MatTabNav_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"before\"));\n })(\"mousedown\", function MatTabNav_Template_div_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"before\", $event));\n })(\"touchend\", function MatTabNav_Template_div_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, \"div\", 10, 4);\n i0.ɵɵlistener(\"mousedown\", function MatTabNav_Template_div_mousedown_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorPress(\"after\", $event));\n })(\"click\", function MatTabNav_Template_div_click_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handlePaginatorClick(\"after\"));\n })(\"touchend\", function MatTabNav_Template_div_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);\n i0.ɵɵadvance(10);\n i0.ɵɵclassProp(\"mat-mdc-tab-header-pagination-disabled\", ctx._disableScrollAfter);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx._disableScrollAfter || ctx.disableRipple);\n }\n },\n dependencies: [MatRipple, CdkObserveContent],\n styles: [\".mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1}.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--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.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{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);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--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.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;outline: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, var(--mat-sys-on-surface))}.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, var(--mat-sys-on-surface))}.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-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}.cdk-drop-list .mat-mdc-tab-links,.mat-mdc-tab-links.cdk-drop-list{min-height:var(--mdc-secondary-navigation-tab-container-height, 48px)}.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, 1px);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-sys-surface-variant))}.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-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-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 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 _tabNavBar = inject(MatTabNav);\n elementRef = inject(ElementRef);\n _focusMonitor = inject(FocusMonitor);\n _destroyed = new Subject();\n /** Whether the tab link is active or not. */\n _isActive = false;\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 /** Whether the tab link is disabled. */\n disabled = false;\n /** Whether ripples are disabled on the tab link. */\n disableRipple = false;\n tabIndex = 0;\n /**\n * Ripple configuration for ripples that are launched on pointer down. The ripple config\n * is set to the global ripple options since we don't have any configurable options for\n * the tab link ripples.\n * @docs-private\n */\n rippleConfig;\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 /** Unique id for the tab. */\n id = inject(_IdGenerator).getId('mat-tab-link-');\n constructor() {\n super();\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {\n optional: true\n });\n const tabIndex = inject(new HostAttributeToken('tabindex'), {\n optional: true\n });\n const animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = {\n enterDuration: 0,\n exitDuration: 0\n };\n }\n this._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 ɵfac = function MatTabLink_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabLink)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatTabLink,\n selectors: [[\"\", \"mat-tab-link\", \"\"], [\"\", \"matTabLink\", \"\"]],\n hostAttrs: [1, \"mdc-tab\", \"mat-mdc-tab-link\", \"mat-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: [2, \"active\", \"active\", booleanAttribute],\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n id: \"id\"\n },\n exportAs: [\"matTabLink\"],\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature],\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;height:var(--mdc-secondary-navigation-tab-container-height, 48px);font-family:var(--mat-tab-header-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab-link.mdc-tab{flex-grow:0}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height, 2px);border-radius:var(--mdc-tab-indicator-active-indicator-shape, 0)}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-sys-on-surface))}.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, var(--mat-sys-on-surface))}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color, var(--mat-sys-primary))}.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, var(--mat-sys-on-surface))}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-sys-on-surface));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, var(--mat-sys-on-surface))}.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 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 /** Unique id for the tab panel. */\n id = inject(_IdGenerator).getId('mat-tab-nav-panel-');\n /** Id of the active tab in the nav bar. */\n _activeTabId;\n static ɵfac = function MatTabNavPanel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabNavPanel)();\n };\n static ɵ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 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 return MatTabNavPanel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatTabsModule = /*#__PURE__*/(() => {\n class MatTabsModule {\n static ɵfac = function MatTabsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatTabsModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatTabsModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatCommonModule]\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":["MatTab_ng_template_0_Template","rf","ctx","ɵɵprojection","MatTabBody_ng_template_2_Template","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","ɵ$index_3_r5","ctx_r5","tabHeader_r7","ɵɵreference","ɵɵresetView","$event","ɵɵelement","ɵɵelementEnd","tabNode_r8","ɵɵclassMap","ɵɵclassProp","ɵɵattribute","ɵɵadvance","ɵɵconditional","MatTabGroup_Conditional_4_Template","MatTabGroup_For_8_Template","_r9","tab_r10","ɵ$index_23_r11","_c0","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_c8","_c9","_c10","_c11","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","MAT_TAB_GROUP","MatTab","ACTIVE_CLASS","NO_TRANSITION_CLASS","MatInkBar","InkBarItem","MatTabLabelWrapper","passiveEventListenerOptions","HEADER_SCROLL_DELAY","HEADER_SCROLL_INTERVAL","MatPaginatedTabHeader","MatTabHeader","MAT_TABS_CONFIG","matTabsAnimations","MatTabBodyPortal","MatTabBody","ENABLE_BACKGROUND_INPUT","MatTabGroup","MatTabChangeEvent","MatTabNav","MatTabLink","MatTabNavPanel","MatTabsModule","init_tabs","__esmMin","init_core","init_portal","init_esm","init_private","init_a11y","init_bidi","init_keycodes","init_platform","init_scrolling","init_operators","init_observers","init_animations","a0","a1","InjectionToken","inject","TemplateRef","__ngFactoryType__","ɵɵdefineDirective","ɵɵProvidersFeature","CdkPortal","ɵMatTabLabel_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","ViewContainerRef","value","Subject","_CdkPrivateStyleLoader","_StructuralStylesLoader","changes","TemplatePortal","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","booleanAttribute","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","ɵɵprojectionDef","_items","item","element","correspondingItem","currentItem","domRect","ElementRef","newValue","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","documentNode","inkBarElement","inkBarContentElement","parentElement","ɵMatTabLabelWrapper_BaseFactory","ChangeDetectorRef","ViewportRuler","Directionality","NgZone","Platform","SharedResizeObserver","Injector","Renderer2","ANIMATION_MODULE_TYPE","v","EventEmitter","_bindEventWithOptions","dirChange","of","resize","debounceTime","takeUntil","viewportResize","realign","FocusKeyManager","afterNextRender","merge","newFocusIndex","EMPTY","startWith","switchMap","tabItems","Observable","observer","resizeObserver","entries","skip","filter","cleanup","event","hasModifierKey","textContent","index","tabIndex","containerEl","scrollDistance","translateX","direction","viewLength","scrollAmount","labelIndex","selectedLabel","offsetLeft","offsetWidth","labelBeforePos","labelAfterPos","beforeVisiblePos","afterVisiblePos","scrollWidth","containerWidth","isEnabled","lengthOfTabList","selectedItem","selectedLabelWrapper","mouseEvent","timer","maxScrollDistance","distance","position","numberAttribute","ɵMatTabHeader_BaseFactory","_r1","MatRipple","CdkObserveContent","trigger","state","style","transition","animate","CdkPortalOutlet","Subscription","isCentering","changeDetectorRef","dir","origin","ɵɵpureFunction2","ɵɵpureFunction1","CdkScrollable","QueryList","stringValue","classList","defaultConfig","_IdGenerator","indexToSelect","isFirstRun","wrapper","tab","tabs","selectedTab","header","i","tabHeight","tabHeader","targetIndex","focusOrigin","ɵɵstyleProp","ɵɵrepeaterCreate","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","CdkMonitorFocus","BehaviorSubject","elementRef","ngZone","viewportRuler","platform","animationMode","items","FocusMonitor","globalRippleOptions","MAT_RIPPLE_GLOBAL_OPTIONS","HostAttributeToken","fitInkBarToContent","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule"],"x_google_ignoreList":[0]}