PageSourceSearch

https://app.copious.care/chunk-GLGFOAZ2.js

js copious.care collected 2026-10-02 01:19:59 UTC 149,975 bytes, 2,941 lines download raw bytes

1import {
2  CdkPortal,
3  CdkPortalOutlet,
4  CdkScrollable,
5  TemplatePortal,
6  ViewportRuler
7} from "./chunk-G6J67MIL.js";
8import {
9  ANIMATION_MODULE_TYPE,
10  Attribute,
11  BehaviorSubject,
12  CdkMonitorFocus,
13  CdkObserveContent,
14  ChangeDetectionStrategy,
15  ChangeDetectorRef,
16  Component,
17  ComponentFactoryResolver$1,
18  ContentChild,
19  ContentChildren,
20  DOCUMENT,
21  Directionality,
22  Directive,
23  EMPTY,
24  ENTER,
25  ElementRef,
26  EventEmitter,
27  FocusKeyManager,
28  FocusMonitor,
29  Inject,
30  InjectionToken,
31  Injector,
32  Input,
33  MAT_RIPPLE_GLOBAL_OPTIONS,
34  MatCommonModule,
35  MatRipple,
36  NgModule,
37  NgZone,
38  Observable,
39  Optional,
40  Output,
41  Platform,
42  QueryList,
43  SPACE,
44  SharedResizeObserver,
45  Subject,
46  Subscription,
47  TemplateRef,
48  ViewChild,
49  ViewContainerRef,
50  ViewEncapsulation$1,
51  afterNextRender,
52  animate,
53  booleanAttribute,
54  debounceTime,
55  filter,
56  forwardRef,
57  fromEvent,
58  hasModifierKey,
59  init_common,
60  init_core,
61  init_esm2015,
62  init_operators,
63  inject,
64  merge,
65  normalizePassiveListenerOptions,
66  numberAttribute,
67  of,
68  setClassMetadata,
69  skip,
70  startWith,
71  state,
72  style,
73  switchMap,
74  takeUntil,
75  timer,
76  transition,
77  trigger,
78  ɵɵInheritDefinitionFeature,
79  ɵɵInputTransformsFeature,
80  ɵɵNgOnChangesFeature,
81  ɵɵProvidersFeature,
82  ɵɵStandaloneFeature,
83  ɵɵadvance,
84  ɵɵattribute,
85  ɵɵclassMap,
86  ɵɵclassProp,
87  ɵɵconditional,
88  ɵɵcontentQuery,
89  ɵɵdefineComponent,
90  ɵɵdefineDirective,
91  ɵɵdefineInjector,
92  ɵɵdefineNgModule,
93  ɵɵdirectiveInject,
94  ɵɵelement,
95  ɵɵelementEnd,
96  ɵɵelementStart,
97  ɵɵgetCurrentView,
98  ɵɵinjectAttribute,
99  ɵɵlistener,
100  ɵɵloadQuery,
101  ɵɵnextContext,
102  ɵɵprojection,
103  ɵɵprojectionDef,
104  ɵɵproperty,
105  ɵɵpureFunction1,
106  ɵɵpureFunction2,
107  ɵɵqueryRefresh,
108  ɵɵreference,
109  ɵɵrepeater,
110  ɵɵrepeaterCreate,
111  ɵɵrepeaterTrackByIdentity,
112  ɵɵresetView,
113  ɵɵrestoreView,
114  ɵɵstyleProp,
115  ɵɵtemplate,
116  ɵɵtext,
117  ɵɵtextInterpolate,
118  ɵɵviewQuery
119} from "./chunk-5TV4NZRK.js";
120
121// node_modules/@angular/material/fesm2022/tabs.mjs
122init_core();
123init_core();
124init_esm2015();
125init_operators();
126init_common();
127var _c0 = ["*"];
128function MatTab_ng_template_0_Template(rf, ctx) {
129  if (rf & 1) {
130    \u0275\u0275projection(0);
131  }
132}
133var _c1 = ["tabListContainer"];
134var _c2 = ["tabList"];
135var _c3 = ["tabListInner"];
136var _c4 = ["nextPaginator"];
137var _c5 = ["previousPaginator"];
138var _c6 = (a0) => ({
139  animationDuration: a0
140});
141var _c7 = (a0, a1) => ({
142  value: a0,
143  params: a1
144});
145function MatTabBody_ng_template_2_Template(rf, ctx) {
146}
147var _c8 = ["tabBodyWrapper"];
148var _c9 = ["tabHeader"];
149function MatTabGroup_For_3_Conditional_6_ng_template_0_Template(rf, ctx) {
150}
151function MatTabGroup_For_3_Conditional_6_Template(rf, ctx) {
152  if (rf & 1) {
153    \u0275\u0275template(0, MatTabGroup_For_3_Conditional_6_ng_template_0_Template, 0, 0, "ng-template", 12);
154  }
155  if (rf & 2) {
156    const tab_r4 = \u0275\u0275nextContext().$implicit;
157    \u0275\u0275property("cdkPortalOutlet", tab_r4.templateLabel);
158  }
159}
160function MatTabGroup_For_3_Conditional_7_Template(rf, ctx) {
161  if (rf & 1) {
162    \u0275\u0275text(0);
163  }
164  if (rf & 2) {
165    const tab_r4 = \u0275\u0275nextContext().$implicit;
166    \u0275\u0275textInterpolate(tab_r4.textLabel);
167  }
168}
169function MatTabGroup_For_3_Template(rf, ctx) {
170  if (rf & 1) {
171    const _r2 = \u0275\u0275getCurrentView();
172    \u0275\u0275elementStart(0, "div", 7, 2);
173    \u0275\u0275listener("click", function MatTabGroup_For_3_Template_div_click_0_listener() {
174      const ctx_r2 = \u0275\u0275restoreView(_r2);
175      const tab_r4 = ctx_r2.$implicit;
176      const \u0275$index_3_r5 = ctx_r2.$index;
177      const ctx_r5 = \u0275\u0275nextContext();
178      const tabHeader_r7 = \u0275\u0275reference(1);
179      return \u0275\u0275resetView(ctx_r5._handleClick(tab_r4, tabHeader_r7, \u0275$index_3_r5));
180    })("cdkFocusChange", function MatTabGroup_For_3_Template_div_cdkFocusChange_0_listener($event) {
181      const \u0275$index_3_r5 = \u0275\u0275restoreView(_r2).$index;
182      const ctx_r5 = \u0275\u0275nextContext();
183      return \u0275\u0275resetView(ctx_r5._tabFocusChanged($event, \u0275$index_3_r5));
184    });
185    \u0275\u0275element(2, "span", 8)(3, "div", 9);
186    \u0275\u0275elementStart(4, "span", 10)(5, "span", 11);
187    \u0275\u0275template(6, MatTabGroup_For_3_Conditional_6_Template, 1, 1, null, 12)(7, MatTabGroup_For_3_Conditional_7_Template, 1, 1);
188    \u0275\u0275elementEnd()()();
189  }
190  if (rf & 2) {
191    const tab_r4 = ctx.$implicit;
192    const \u0275$index_3_r5 = ctx.$index;
193    const tabNode_r8 = \u0275\u0275reference(1);
194    const ctx_r5 = \u0275\u0275nextContext();
195    \u0275\u0275classMap(tab_r4.labelClass);
196    \u0275\u0275classProp("mdc-tab--active", ctx_r5.selectedIndex === \u0275$index_3_r5);
197    \u0275\u0275property("id", ctx_r5._getTabLabelId(\u0275$index_3_r5))("disabled", tab_r4.disabled)("fitInkBarToContent", ctx_r5.fitInkBarToContent);
198    \u0275\u0275attribute("tabIndex", ctx_r5._getTabIndex(\u0275$index_3_r5))("aria-posinset", \u0275$index_3_r5 + 1)("aria-setsize", ctx_r5._tabs.length)("aria-controls", ctx_r5._getTabContentId(\u0275$index_3_r5))("aria-selected", ctx_r5.selectedIndex === \u0275$index_3_r5)("aria-label", tab_r4.ariaLabel || null)("aria-labelledby", !tab_r4.ariaLabel && tab_r4.ariaLabelledby ? tab_r4.ariaLabelledby : null);
199    \u0275\u0275advance(3);
200    \u0275\u0275property("matRippleTrigger", tabNode_r8)("matRippleDisabled", tab_r4.disabled || ctx_r5.disableRipple);
201    \u0275\u0275advance(3);
202    \u0275\u0275conditional(tab_r4.templateLabel ? 6 : 7);
203  }
204}
205function MatTabGroup_Conditional_4_Template(rf, ctx) {
206  if (rf & 1) {
207    \u0275\u0275projection(0);
208  }
209}
210function MatTabGroup_For_8_Template(rf, ctx) {
211  if (rf & 1) {
212    const _r9 = \u0275\u0275getCurrentView();
213    \u0275\u0275elementStart(0, "mat-tab-body", 13);
214    \u0275\u0275listener("_onCentered", function MatTabGroup_For_8_Template_mat_tab_body__onCentered_0_listener() {
215      \u0275\u0275restoreView(_r9);
216      const ctx_r5 = \u0275\u0275nextContext();
217      return \u0275\u0275resetView(ctx_r5._removeTabBodyWrapperHeight());
218    })("_onCentering", function MatTabGroup_For_8_Template_mat_tab_body__onCentering_0_listener($event) {
219      \u0275\u0275restoreView(_r9);
220      const ctx_r5 = \u0275\u0275nextContext();
221      return \u0275\u0275resetView(ctx_r5._setTabBodyWrapperHeight($event));
222    });
223    \u0275\u0275elementEnd();
224  }
225  if (rf & 2) {
226    const tab_r10 = ctx.$implicit;
227    const \u0275$index_23_r11 = ctx.$index;
228    const ctx_r5 = \u0275\u0275nextContext();
229    \u0275\u0275classMap(tab_r10.bodyClass);
230    \u0275\u0275classProp("mat-mdc-tab-body-active", ctx_r5.selectedIndex === \u0275$index_23_r11);
231    \u0275\u0275property("id", ctx_r5._getTabContentId(\u0275$index_23_r11))("content", tab_r10.content)("position", tab_r10.position)("origin", tab_r10.origin)("animationDuration", ctx_r5.animationDuration)("preserveContent", ctx_r5.preserveContent);
232    \u0275\u0275attribute("tabindex", ctx_r5.contentTabIndex != null && ctx_r5.selectedIndex === \u0275$index_23_r11 ? ctx_r5.contentTabIndex : null)("aria-labelledby", ctx_r5._getTabLabelId(\u0275$index_23_r11))("aria-hidden", ctx_r5.selectedIndex !== \u0275$index_23_r11);
233  }
234}
235var _c10 = ["mat-tab-nav-bar", ""];
236var _c11 = ["mat-tab-link", ""];
237var MAT_TAB_CONTENT = new InjectionToken("MatTabContent");
238var MatTabContent = class _MatTabContent {
239  constructor(template) {
240    this.template = template;
241  }
242  static {
243    this.\u0275fac = function MatTabContent_Factory(__ngFactoryType__) {
244      return new (__ngFactoryType__ || _MatTabContent)(\u0275\u0275directiveInject(TemplateRef));
245    };
246  }
247  static {
248    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
249      type: _MatTabContent,
250      selectors: [["", "matTabContent", ""]],
251      standalone: true,
252      features: [\u0275\u0275ProvidersFeature([{
253        provide: MAT_TAB_CONTENT,
254        useExisting: _MatTabContent
255      }])]
256    });
257  }
258};
259(() => {
260  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabContent, [{
261    type: Directive,
262    args: [{
263      selector: "[matTabContent]",
264      providers: [{
265        provide: MAT_TAB_CONTENT,
266        useExisting: MatTabContent
267      }],
268      standalone: true
269    }]
270  }], () => [{
271    type: TemplateRef
272  }], null);
273})();
274var MAT_TAB_LABEL = new InjectionToken("MatTabLabel");
275var MAT_TAB = new InjectionToken("MAT_TAB");
276var MatTabLabel = class _MatTabLabel extends CdkPortal {
277  constructor(templateRef, viewContainerRef, _closestTab) {
278    super(templateRef, viewContainerRef);
279    this._closestTab = _closestTab;
280  }
281  static {
282    this.\u0275fac = function MatTabLabel_Factory(__ngFactoryType__) {
283      return new (__ngFactoryType__ || _MatTabLabel)(\u0275\u0275directiveInject(TemplateRef), \u0275\u0275directiveInject(ViewContainerRef), \u0275\u0275directiveInject(MAT_TAB, 8));
284    };
285  }
286  static {
287    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
288      type: _MatTabLabel,
289      selectors: [["", "mat-tab-label", ""], ["", "matTabLabel", ""]],
290      standalone: true,
291      features: [\u0275\u0275ProvidersFeature([{
292        provide: MAT_TAB_LABEL,
293        useExisting: _MatTabLabel
294      }]), \u0275\u0275InheritDefinitionFeature]
295    });
296  }
297};
298(() => {
299  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabLabel, [{
300    type: Directive,
301    args: [{
302      selector: "[mat-tab-label], [matTabLabel]",
303      providers: [{
304        provide: MAT_TAB_LABEL,
305        useExisting: MatTabLabel
306      }],
307      standalone: true
308    }]
309  }], () => [{
310    type: TemplateRef
311  }, {
312    type: ViewContainerRef
313  }, {
314    type: void 0,
315    decorators: [{
316      type: Inject,
317      args: [MAT_TAB]
318    }, {
319      type: Optional
320    }]
321  }], null);
322})();
323var MAT_TAB_GROUP = new InjectionToken("MAT_TAB_GROUP");
324var MatTab = class _MatTab {
325  /** Content for the tab label given by `<ng-template mat-tab-label>`. */
326  get templateLabel() {
327    return this._templateLabel;
328  }
329  set templateLabel(value) {
330    this._setTemplateLabelInput(value);
331  }
332  /** @docs-private */
333  get content() {
334    return this._contentPortal;
335  }
336  constructor(_viewContainerRef, _closestTabGroup) {
337    this._viewContainerRef = _viewContainerRef;
338    this._closestTabGroup = _closestTabGroup;
339    this.disabled = false;
340    this._explicitContent = void 0;
341    this.textLabel = "";
342    this._contentPortal = null;
343    this._stateChanges = new Subject();
344    this.position = null;
345    this.origin = null;
346    this.isActive = false;
347  }
348  ngOnChanges(changes) {
349    if (changes.hasOwnProperty("textLabel") || changes.hasOwnProperty("disabled")) {
350      this._stateChanges.next();
351    }
352  }
353  ngOnDestroy() {
354    this._stateChanges.complete();
355  }
356  ngOnInit() {
357    this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);
358  }
359  /**
360   * This has been extracted to a util because of TS 4 and VE.
361   * View Engine doesn't support property rename inheritance.
362   * TS 4.0 doesn't allow properties to override accessors or vice-versa.
363   * @docs-private
364   */
365  _setTemplateLabelInput(value) {
366    if (value && value._closestTab === this) {
367      this._templateLabel = value;
368    }
369  }
370  static {
371    this.\u0275fac = function MatTab_Factory(__ngFactoryType__) {
372      return new (__ngFactoryType__ || _MatTab)(\u0275\u0275directiveInject(ViewContainerRef), \u0275\u0275directiveInject(MAT_TAB_GROUP, 8));
373    };
374  }
375  static {
376    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
377      type: _MatTab,
378      selectors: [["mat-tab"]],
379      contentQueries: function MatTab_ContentQueries(rf, ctx, dirIndex) {
380        if (rf & 1) {
381          \u0275\u0275contentQuery(dirIndex, MatTabLabel, 5);
382          \u0275\u0275contentQuery(dirIndex, MatTabContent, 7, TemplateRef);
383        }
384        if (rf & 2) {
385          let _t;
386          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.templateLabel = _t.first);
387          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._explicitContent = _t.first);
388        }
389      },
390      viewQuery: function MatTab_Query(rf, ctx) {
391        if (rf & 1) {
392          \u0275\u0275viewQuery(TemplateRef, 7);
393        }
394        if (rf & 2) {
395          let _t;
396          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._implicitContent = _t.first);
397        }
398      },
399      hostAttrs: ["hidden", ""],
400      inputs: {
401        disabled: [2, "disabled", "disabled", booleanAttribute],
402        textLabel: [0, "label", "textLabel"],
403        ariaLabel: [0, "aria-label", "ariaLabel"],
404        ariaLabelledby: [0, "aria-labelledby", "ariaLabelledby"],
405        labelClass: "labelClass",
406        bodyClass: "bodyClass"
407      },
408      exportAs: ["matTab"],
409      standalone: true,
410      features: [\u0275\u0275ProvidersFeature([{
411        provide: MAT_TAB,
412        useExisting: _MatTab
413      }]), \u0275\u0275InputTransformsFeature, \u0275\u0275NgOnChangesFeature, \u0275\u0275StandaloneFeature],
414      ngContentSelectors: _c0,
415      decls: 1,
416      vars: 0,
417      template: function MatTab_Template(rf, ctx) {
418        if (rf & 1) {
419          \u0275\u0275projectionDef();
420          \u0275\u0275template(0, MatTab_ng_template_0_Template, 1, 0, "ng-template");
421        }
422      },
423      encapsulation: 2
424    });
425  }
426};
427(() => {
428  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTab, [{
429    type: Component,
430    args: [{
431      selector: "mat-tab",
432      changeDetection: ChangeDetectionStrategy.Default,
433      encapsulation: ViewEncapsulation$1.None,
434      exportAs: "matTab",
435      providers: [{
436        provide: MAT_TAB,
437        useExisting: MatTab
438      }],
439      standalone: true,
440      host: {
441        // This element will be rendered on the server in order to support hydration.
442        // Hide it so it doesn't cause a layout shift when it's removed on the client.
443        "hidden": ""
444      },
445      template: "<!-- Create a template for the content of the <mat-tab> so that we can grab a reference to this\n    TemplateRef and use it in a Portal to render the tab content in the appropriate place in the\n    tab-group. -->\n<ng-template><ng-content></ng-content></ng-template>\n"
446    }]
447  }], () => [{
448    type: ViewContainerRef
449  }, {
450    type: void 0,
451    decorators: [{
452      type: Inject,
453      args: [MAT_TAB_GROUP]
454    }, {
455      type: Optional
456    }]
457  }], {
458    disabled: [{
459      type: Input,
460      args: [{
461        transform: booleanAttribute
462      }]
463    }],
464    templateLabel: [{
465      type: ContentChild,
466      args: [MatTabLabel]
467    }],
468    _explicitContent: [{
469      type: ContentChild,
470      args: [MatTabContent, {
471        read: TemplateRef,
472        static: true
473      }]
474    }],
475    _implicitContent: [{
476      type: ViewChild,
477      args: [TemplateRef, {
478        static: true
479      }]
480    }],
481    textLabel: [{
482      type: Input,
483      args: ["label"]
484    }],
485    ariaLabel: [{
486      type: Input,
487      args: ["aria-label"]
488    }],
489    ariaLabelledby: [{
490      type: Input,
491      args: ["aria-labelledby"]
492    }],
493    labelClass: [{
494      type: Input
495    }],
496    bodyClass: [{
497      type: Input
498    }]
499  });
500})();
501var ACTIVE_CLASS = "mdc-tab-indicator--active";
502var NO_TRANSITION_CLASS = "mdc-tab-indicator--no-transition";
503var MatInkBar = class {
504  constructor(_items) {
505    this._items = _items;
506  }
507  /** Hides the ink bar. */
508  hide() {
509    this._items.forEach((item) => item.deactivateInkBar());
510  }
511  /** Aligns the ink bar to a DOM node. */
512  alignToElement(element) {
513    const correspondingItem = this._items.find((item) => item.elementRef.nativeElement === element);
514    const currentItem = this._currentItem;
515    if (correspondingItem === currentItem) {
516      return;
517    }
518    currentItem?.deactivateInkBar();
519    if (correspondingItem) {
520      const domRect = currentItem?.elementRef.nativeElement.getBoundingClientRect?.();
521      correspondingItem.activateInkBar(domRect);
522      this._currentItem = correspondingItem;
523    }
524  }
525};
526var InkBarItem = class _InkBarItem {
527  constructor() {
528    this._elementRef = inject(ElementRef);
529    this._fitToContent = false;
530  }
531  /** Whether the ink bar should fit to the entire tab or just its content. */
532  get fitInkBarToContent() {
533    return this._fitToContent;
534  }
535  set fitInkBarToContent(newValue) {
536    if (this._fitToContent !== newValue) {
537      this._fitToContent = newValue;
538      if (this._inkBarElement) {
539        this._appendInkBarElement();
540      }
541    }
542  }
543  /** Aligns the ink bar to the current item. */
544  activateInkBar(previousIndicatorClientRect) {
545    const element = this._elementRef.nativeElement;
546    if (!previousIndicatorClientRect || !element.getBoundingClientRect || !this._inkBarContentElement) {
547      element.classList.add(ACTIVE_CLASS);
548      return;
549    }
550    const currentClientRect = element.getBoundingClientRect();
551    const widthDelta = previousIndicatorClientRect.width / currentClientRect.width;
552    const xPosition = previousIndicatorClientRect.left - currentClientRect.left;
553    element.classList.add(NO_TRANSITION_CLASS);
554    this._inkBarContentElement.style.setProperty("transform", `translateX(${xPosition}px) scaleX(${widthDelta})`);
555    element.getBoundingClientRect();
556    element.classList.remove(NO_TRANSITION_CLASS);
557    element.classList.add(ACTIVE_CLASS);
558    this._inkBarContentElement.style.setProperty("transform", "");
559  }
560  /** Removes the ink bar from the current item. */
561  deactivateInkBar() {
562    this._elementRef.nativeElement.classList.remove(ACTIVE_CLASS);
563  }
564  /** Initializes the foundation. */
565  ngOnInit() {
566    this._createInkBarElement();
567  }
568  /** Destroys the foundation. */
569  ngOnDestroy() {
570    this._inkBarElement?.remove();
571    this._inkBarElement = this._inkBarContentElement = null;
572  }
573  /** Creates and appends the ink bar element. */
574  _createInkBarElement() {
575    const documentNode = this._elementRef.nativeElement.ownerDocument || document;
576    const inkBarElement = this._inkBarElement = documentNode.createElement("span");
577    const inkBarContentElement = this._inkBarContentElement = documentNode.createElement("span");
578    inkBarElement.className = "mdc-tab-indicator";
579    inkBarContentElement.className = "mdc-tab-indicator__content mdc-tab-indicator__content--underline";
580    inkBarElement.appendChild(this._inkBarContentElement);
581    this._appendInkBarElement();
582  }
583  /**
584   * Appends the ink bar to the tab host element or content, depending on whether
585   * the ink bar should fit to content.
586   */
587  _appendInkBarElement() {
588    if (!this._inkBarElement && (typeof ngDevMode === "undefined" || ngDevMode)) {
589      throw Error("Ink bar element has not been created and cannot be appended");
590    }
591    const parentElement = this._fitToContent ? this._elementRef.nativeElement.querySelector(".mdc-tab__content") : this._elementRef.nativeElement;
592    if (!parentElement && (typeof ngDevMode === "undefined" || ngDevMode)) {
593      throw Error("Missing element to host the ink bar");
594    }
595    parentElement.appendChild(this._inkBarElement);
596  }
597  static {
598    this.\u0275fac = function InkBarItem_Factory(__ngFactoryType__) {
599      return new (__ngFactoryType__ || _InkBarItem)();
600    };
601  }
602  static {
603    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
604      type: _InkBarItem,
605      inputs: {
606        fitInkBarToContent: [2, "fitInkBarToContent", "fitInkBarToContent", booleanAttribute]
607      },
608      features: [\u0275\u0275InputTransformsFeature]
609    });
610  }
611};
612(() => {
613  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(InkBarItem, [{
614    type: Directive
615  }], null, {
616    fitInkBarToContent: [{
617      type: Input,
618      args: [{
619        transform: booleanAttribute
620      }]
621    }]
622  });
623})();
624function _MAT_INK_BAR_POSITIONER_FACTORY() {
625  const method = (element) => ({
626    left: element ? (element.offsetLeft || 0) + "px" : "0",
627    width: element ? (element.offsetWidth || 0) + "px" : "0"
628  });
629  return method;
630}
631var _MAT_INK_BAR_POSITIONER = new InjectionToken("MatInkBarPositioner", {
632  providedIn: "root",
633  factory: _MAT_INK_BAR_POSITIONER_FACTORY
634});
635var MatTabLabelWrapper = class _MatTabLabelWrapper extends InkBarItem {
636  constructor(elementRef) {
637    super();
638    this.elementRef = elementRef;
639    this.disabled = false;
640  }
641  /** Sets focus on the wrapper element */
642  focus() {
643    this.elementRef.nativeElement.focus();
644  }
645  getOffsetLeft() {
646    return this.elementRef.nativeElement.offsetLeft;
647  }
648  getOffsetWidth() {
649    return this.elementRef.nativeElement.offsetWidth;
650  }
651  static {
652    this.\u0275fac = function MatTabLabelWrapper_Factory(__ngFactoryType__) {
653      return new (__ngFactoryType__ || _MatTabLabelWrapper)(\u0275\u0275directiveInject(ElementRef));
654    };
655  }
656  static {
657    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
658      type: _MatTabLabelWrapper,
659      selectors: [["", "matTabLabelWrapper", ""]],
660      hostVars: 3,
661      hostBindings: function MatTabLabelWrapper_HostBindings(rf, ctx) {
662        if (rf & 2) {
663          \u0275\u0275attribute("aria-disabled", !!ctx.disabled);
664          \u0275\u0275classProp("mat-mdc-tab-disabled", ctx.disabled);
665        }
666      },
667      inputs: {
668        disabled: [2, "disabled", "disabled", booleanAttribute]
669      },
670      standalone: true,
671      features: [\u0275\u0275InputTransformsFeature, \u0275\u0275InheritDefinitionFeature]
672    });
673  }
674};
675(() => {
676  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabLabelWrapper, [{
677    type: Directive,
678    args: [{
679      selector: "[matTabLabelWrapper]",
680      host: {
681        "[class.mat-mdc-tab-disabled]": "disabled",
682        "[attr.aria-disabled]": "!!disabled"
683      },
684      standalone: true
685    }]
686  }], () => [{
687    type: ElementRef
688  }], {
689    disabled: [{
690      type: Input,
691      args: [{
692        transform: booleanAttribute
693      }]
694    }]
695  });
696})();
697var passiveEventListenerOptions = normalizePassiveListenerOptions({
698  passive: true
699});
700var HEADER_SCROLL_DELAY = 650;
701var HEADER_SCROLL_INTERVAL = 100;
702var MatPaginatedTabHeader = class _MatPaginatedTabHeader {
703  /** The index of the active tab. */
704  get selectedIndex() {
705    return this._selectedIndex;
706  }
707  set selectedIndex(v) {
708    const value = isNaN(v) ? 0 : v;
709    if (this._selectedIndex != value) {
710      this._selectedIndexChanged = true;
711      this._selectedIndex = value;
712      if (this._keyManager) {
713        this._keyManager.updateActiveItem(value);
714      }
715    }
716  }
717  constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {
718    this._elementRef = _elementRef;
719    this._changeDetectorRef = _changeDetectorRef;
720    this._viewportRuler = _viewportRuler;
721    this._dir = _dir;
722    this._ngZone = _ngZone;
723    this._platform = _platform;
724    this._animationMode = _animationMode;
725    this._scrollDistance = 0;
726    this._selectedIndexChanged = false;
727    this._destroyed = new Subject();
728    this._showPaginationControls = false;
729    this._disableScrollAfter = true;
730    this._disableScrollBefore = true;
731    this._stopScrolling = new Subject();
732    this.disablePagination = false;
733    this._selectedIndex = 0;
734    this.selectFocusedIndex = new EventEmitter();
735    this.indexFocused = new EventEmitter();
736    this._sharedResizeObserver = inject(SharedResizeObserver);
737    this._injector = inject(Injector);
738    _ngZone.runOutsideAngular(() => {
739      fromEvent(_elementRef.nativeElement, "mouseleave").pipe(takeUntil(this._destroyed)).subscribe(() => {
740        this._stopInterval();
741      });
742    });
743  }
744  ngAfterViewInit() {
745    fromEvent(this._previousPaginator.nativeElement, "touchstart", passiveEventListenerOptions).pipe(takeUntil(this._destroyed)).subscribe(() => {
746      this._handlePaginatorPress("before");
747    });
748    fromEvent(this._nextPaginator.nativeElement, "touchstart", passiveEventListenerOptions).pipe(takeUntil(this._destroyed)).subscribe(() => {
749      this._handlePaginatorPress("after");
750    });
751  }
752  ngAfterContentInit() {
753    const dirChange = this._dir ? this._dir.change : of("ltr");
754    const resize = this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(debounceTime(32), takeUntil(this._destroyed));
755    const viewportResize = this._viewportRuler.change(150).pipe(takeUntil(this._destroyed));
756    const realign = () => {
757      this.updatePagination();
758      this._alignInkBarToSelectedTab();
759    };
760    this._keyManager = new FocusKeyManager(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(() => false);
761    this._keyManager.updateActiveItem(this._selectedIndex);
762    afterNextRender(realign, {
763      injector: this._injector
764    });
765    merge(dirChange, viewportResize, resize, this._items.changes, this._itemsResized()).pipe(takeUntil(this._destroyed)).subscribe(() => {
766      this._ngZone.run(() => {
767        Promise.resolve().then(() => {
768          this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));
769          realign();
770        });
771      });
772      this._keyManager.withHorizontalOrientation(this._getLayoutDirection());
773    });
774    this._keyManager.change.subscribe((newFocusIndex) => {
775      this.indexFocused.emit(newFocusIndex);
776      this._setTabFocus(newFocusIndex);
777    });
778  }
779  /** Sends any changes that could affect the layout of the items. */
780  _itemsResized() {
781    if (typeof ResizeObserver !== "function") {
782      return EMPTY;
783    }
784    return this._items.changes.pipe(
785      startWith(this._items),
786      switchMap((tabItems) => new Observable((observer) => this._ngZone.runOutsideAngular(() => {
787        const resizeObserver = new ResizeObserver((entries) => observer.next(entries));
788        tabItems.forEach((item) => resizeObserver.observe(item.elementRef.nativeElement));
789        return () => {
790          resizeObserver.disconnect();
791        };
792      }))),
793      // Skip the first emit since the resize observer emits when an item
794      // is observed for new items when the tab is already inserted
795      skip(1),
796      // Skip emissions where all the elements are invisible since we don't want
797      // the header to try and re-render with invalid measurements. See #25574.
798      filter((entries) => entries.some((e) => e.contentRect.width > 0 && e.contentRect.height > 0))
799    );
800  }
801  ngAfterContentChecked() {
802    if (this._tabLabelCount != this._items.length) {
803      this.updatePagination();
804      this._tabLabelCount = this._items.length;
805      this._changeDetectorRef.markForCheck();
806    }
807    if (this._selectedIndexChanged) {
808      this._scrollToLabel(this._selectedIndex);
809      this._checkScrollingControls();
810      this._alignInkBarToSelectedTab();
811      this._selectedIndexChanged = false;
812      this._changeDetectorRef.markForCheck();
813    }
814    if (this._scrollDistanceChanged) {
815      this._updateTabScrollPosition();
816      this._scrollDistanceChanged = false;
817      this._changeDetectorRef.markForCheck();
818    }
819  }
820  ngOnDestroy() {
821    this._keyManager?.destroy();
822    this._destroyed.next();
823    this._destroyed.complete();
824    this._stopScrolling.complete();
825  }
826  /** Handles keyboard events on the header. */
827  _handleKeydown(event) {
828    if (hasModifierKey(event)) {
829      return;
830    }
831    switch (event.keyCode) {
832      case ENTER:
833      case SPACE:
834        if (this.focusIndex !== this.selectedIndex) {
835          const item = this._items.get(this.focusIndex);
836          if (item && !item.disabled) {
837            this.selectFocusedIndex.emit(this.focusIndex);
838            this._itemSelected(event);
839          }
840        }
841        break;
842      default:
843        this._keyManager.onKeydown(event);
844    }
845  }
846  /**
847   * Callback for when the MutationObserver detects that the content has changed.
848   */
849  _onContentChanges() {
850    const textContent = this._elementRef.nativeElement.textContent;
851    if (textContent !== this._currentTextContent) {
852      this._currentTextContent = textContent || "";
853      this._ngZone.run(() => {
854        this.updatePagination();
855        this._alignInkBarToSelectedTab();
856        this._changeDetectorRef.markForCheck();
857      });
858    }
859  }
860  /**
861   * Updates the view whether pagination should be enabled or not.
862   *
863   * WARNING: Calling this method can be very costly in terms of performance. It should be called
864   * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
865   * page.
866   */
867  updatePagination() {
868    this._checkPaginationEnabled();
869    this._checkScrollingControls();
870    this._updateTabScrollPosition();
871  }
872  /** Tracks which element has focus; used for keyboard navigation */
873  get focusIndex() {
874    return this._keyManager ? this._keyManager.activeItemIndex : 0;
875  }
876  /** When the focus index is set, we must manually send focus to the correct label */
877  set focusIndex(value) {
878    if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {
879      return;
880    }
881    this._keyManager.setActiveItem(value);
882  }
883  /**
884   * Determines if an index is valid.  If the tabs are not ready yet, we assume that the user is
885   * providing a valid index and return true.
886   */
887  _isValidIndex(index) {
888    return this._items ? !!this._items.toArray()[index] : true;
889  }
890  /**
891   * Sets focus on the HTML element for the label wrapper and scrolls it into the view if
892   * scrolling is enabled.
893   */
894  _setTabFocus(tabIndex) {
895    if (this._showPaginationControls) {
896      this._scrollToLabel(tabIndex);
897    }
898    if (this._items && this._items.length) {
899      this._items.toArray()[tabIndex].focus();
900      const containerEl = this._tabListContainer.nativeElement;
901      const dir = this._getLayoutDirection();
902      if (dir == "ltr") {
903        containerEl.scrollLeft = 0;
904      } else {
905        containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;
906      }
907    }
908  }
909  /** The layout direction of the containing app. */
910  _getLayoutDirection() {
911    return this._dir && this._dir.value === "rtl" ? "rtl" : "ltr";
912  }
913  /** Performs the CSS transformation on the tab list that will cause the list to scroll. */
914  _updateTabScrollPosition() {
915    if (this.disablePagination) {
916      return;
917    }
918    const scrollDistance = this.scrollDistance;
919    const translateX = this._getLayoutDirection() === "ltr" ? -scrollDistance : scrollDistance;
920    this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;
921    if (this._platform.TRIDENT || this._platform.EDGE) {
922      this._tabListContainer.nativeElement.scrollLeft = 0;
923    }
924  }
925  /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
926  get scrollDistance() {
927    return this._scrollDistance;
928  }
929  set scrollDistance(value) {
930    this._scrollTo(value);
931  }
932  /**
933   * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
934   * the end of the list, respectively). The distance to scroll is computed to be a third of the
935   * length of the tab list view window.
936   *
937   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
938   * should be called sparingly.
939   */
940  _scrollHeader(direction) {
941    const viewLength = this._tabListContainer.nativeElement.offsetWidth;
942    const scrollAmount = (direction == "before" ? -1 : 1) * viewLength / 3;
943    return this._scrollTo(this._scrollDistance + scrollAmount);
944  }
945  /** Handles click events on the pagination arrows. */
946  _handlePaginatorClick(direction) {
947    this._stopInterval();
948    this._scrollHeader(direction);
949  }
950  /**
951   * Moves the tab list such that the desired tab label (marked by index) is moved into view.
952   *
953   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
954   * should be called sparingly.
955   */
956  _scrollToLabel(labelIndex) {
957    if (this.disablePagination) {
958      return;
959    }
960    const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;
961    if (!selectedLabel) {
962      return;
963    }
964    const viewLength = this._tabListContainer.nativeElement.offsetWidth;
965    const {
966      offsetLeft,
967      offsetWidth
968    } = selectedLabel.elementRef.nativeElement;
969    let labelBeforePos, labelAfterPos;
970    if (this._getLayoutDirection() == "ltr") {
971      labelBeforePos = offsetLeft;
972      labelAfterPos = labelBeforePos + offsetWidth;
973    } else {
974      labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;
975      labelBeforePos = labelAfterPos - offsetWidth;
976    }
977    const beforeVisiblePos = this.scrollDistance;
978    const afterVisiblePos = this.scrollDistance + viewLength;
979    if (labelBeforePos < beforeVisiblePos) {
980      this.scrollDistance -= beforeVisiblePos - labelBeforePos;
981    } else if (labelAfterPos > afterVisiblePos) {
982      this.scrollDistance += Math.min(labelAfterPos - afterVisiblePos, labelBeforePos - beforeVisiblePos);
983    }
984  }
985  /**
986   * Evaluate whether the pagination controls should be displayed. If the scroll width of the
987   * tab list is wider than the size of the header container, then the pagination controls should
988   * be shown.
989   *
990   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
991   * should be called sparingly.
992   */
993  _checkPaginationEnabled() {
994    if (this.disablePagination) {
995      this._showPaginationControls = false;
996    } else {
997      const scrollWidth = this._tabListInner.nativeElement.scrollWidth;
998      const containerWidth = this._elementRef.nativeElement.offsetWidth;
999      const isEnabled = scrollWidth - containerWidth >= 5;
1000      if (!isEnabled) {
1001        this.scrollDistance = 0;
1002      }
1003      if (isEnabled !== this._showPaginationControls) {
1004        this._showPaginationControls = isEnabled;
1005        this._changeDetectorRef.markForCheck();
1006      }
1007    }
1008  }
1009  /**
1010   * Evaluate whether the before and after controls should be enabled or disabled.
1011   * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
1012   * before button. If the header is at the end of the list (scroll distance is equal to the
1013   * maximum distance we can scroll), then disable the after button.
1014   *
1015   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
1016   * should be called sparingly.
1017   */
1018  _checkScrollingControls() {
1019    if (this.disablePagination) {
1020      this._disableScrollAfter = this._disableScrollBefore = true;
1021    } else {
1022      this._disableScrollBefore = this.scrollDistance == 0;
1023      this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();
1024      this._changeDetectorRef.markForCheck();
1025    }
1026  }
1027  /**
1028   * Determines what is the maximum length in pixels that can be set for the scroll distance. This
1029   * is equal to the difference in width between the tab list container and tab header container.
1030   *
1031   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
1032   * should be called sparingly.
1033   */
1034  _getMaxScrollDistance() {
1035    const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;
1036    const viewLength = this._tabListContainer.nativeElement.offsetWidth;
1037    return lengthOfTabList - viewLength || 0;
1038  }
1039  /** Tells the ink-bar to align itself to the current label wrapper */
1040  _alignInkBarToSelectedTab() {
1041    const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;
1042    const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;
1043    if (selectedLabelWrapper) {
1044      this._inkBar.alignToElement(selectedLabelWrapper);
1045    } else {
1046      this._inkBar.hide();
1047    }
1048  }
1049  /** Stops the currently-running paginator interval.  */
1050  _stopInterval() {
1051    this._stopScrolling.next();
1052  }
1053  /**
1054   * Handles the user pressing down on one of the paginators.
1055   * Starts scrolling the header after a certain amount of time.
1056   * @param direction In which direction the paginator should be scrolled.
1057   */
1058  _handlePaginatorPress(direction, mouseEvent) {
1059    if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {
1060      return;
1061    }
1062    this._stopInterval();
1063    timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL).pipe(takeUntil(merge(this._stopScrolling, this._destroyed))).subscribe(() => {
1064      const {
1065        maxScrollDistance,
1066        distance
1067      } = this._scrollHeader(direction);
1068      if (distance === 0 || distance >= maxScrollDistance) {
1069        this._stopInterval();
1070      }
1071    });
1072  }
1073  /**
1074   * Scrolls the header to a given position.
1075   * @param position Position to which to scroll.
1076   * @returns Information on the current scroll distance and the maximum.
1077   */
1078  _scrollTo(position) {
1079    if (this.disablePagination) {
1080      return {
1081        maxScrollDistance: 0,
1082        distance: 0
1083      };
1084    }
1085    const maxScrollDistance = this._getMaxScrollDistance();
1086    this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));
1087    this._scrollDistanceChanged = true;
1088    this._checkScrollingControls();
1089    return {
1090      maxScrollDistance,
1091      distance: this._scrollDistance
1092    };
1093  }
1094  static {
1095    this.\u0275fac = function MatPaginatedTabHeader_Factory(__ngFactoryType__) {
1096      return new (__ngFactoryType__ || _MatPaginatedTabHeader)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ViewportRuler), \u0275\u0275directiveInject(Directionality, 8), \u0275\u0275directiveInject(NgZone), \u0275\u0275directiveInject(Platform), \u0275\u0275directiveInject(ANIMATION_MODULE_TYPE, 8));
1097    };
1098  }
1099  static {
1100    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1101      type: _MatPaginatedTabHeader,
1102      inputs: {
1103        disablePagination: [2, "disablePagination", "disablePagination", booleanAttribute],
1104        selectedIndex: [2, "selectedIndex", "selectedIndex", numberAttribute]
1105      },
1106      outputs: {
1107        selectFocusedIndex: "selectFocusedIndex",
1108        indexFocused: "indexFocused"
1109      },
1110      features: [\u0275\u0275InputTransformsFeature]
1111    });
1112  }
1113};
1114(() => {
1115  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatPaginatedTabHeader, [{
1116    type: Directive
1117  }], () => [{
1118    type: ElementRef
1119  }, {
1120    type: ChangeDetectorRef
1121  }, {
1122    type: ViewportRuler
1123  }, {
1124    type: Directionality,
1125    decorators: [{
1126      type: Optional
1127    }]
1128  }, {
1129    type: NgZone
1130  }, {
1131    type: Platform
1132  }, {
1133    type: void 0,
1134    decorators: [{
1135      type: Optional
1136    }, {
1137      type: Inject,
1138      args: [ANIMATION_MODULE_TYPE]
1139    }]
1140  }], {
1141    disablePagination: [{
1142      type: Input,
1143      args: [{
1144        transform: booleanAttribute
1145      }]
1146    }],
1147    selectedIndex: [{
1148      type: Input,
1149      args: [{
1150        transform: numberAttribute
1151      }]
1152    }],
1153    selectFocusedIndex: [{
1154      type: Output
1155    }],
1156    indexFocused: [{
1157      type: Output
1158    }]
1159  });
1160})();
1161var MatTabHeader = class _MatTabHeader extends MatPaginatedTabHeader {
1162  constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {
1163    super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);
1164    this.disableRipple = false;
1165  }
1166  ngAfterContentInit() {
1167    this._inkBar = new MatInkBar(this._items);
1168    super.ngAfterContentInit();
1169  }
1170  _itemSelected(event) {
1171    event.preventDefault();
1172  }
1173  static {
1174    this.\u0275fac = function MatTabHeader_Factory(__ngFactoryType__) {
1175      return new (__ngFactoryType__ || _MatTabHeader)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ViewportRuler), \u0275\u0275directiveInject(Directionality, 8), \u0275\u0275directiveInject(NgZone), \u0275\u0275directiveInject(Platform), \u0275\u0275directiveInject(ANIMATION_MODULE_TYPE, 8));
1176    };
1177  }
1178  static {
1179    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
1180      type: _MatTabHeader,
1181      selectors: [["mat-tab-header"]],
1182      contentQueries: function MatTabHeader_ContentQueries(rf, ctx, dirIndex) {
1183        if (rf & 1) {
1184          \u0275\u0275contentQuery(dirIndex, MatTabLabelWrapper, 4);
1185        }
1186        if (rf & 2) {
1187          let _t;
1188          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._items = _t);
1189        }
1190      },
1191      viewQuery: function MatTabHeader_Query(rf, ctx) {
1192        if (rf & 1) {
1193          \u0275\u0275viewQuery(_c1, 7);
1194          \u0275\u0275viewQuery(_c2, 7);
1195          \u0275\u0275viewQuery(_c3, 7);
1196          \u0275\u0275viewQuery(_c4, 5);
1197          \u0275\u0275viewQuery(_c5, 5);
1198        }
1199        if (rf & 2) {
1200          let _t;
1201          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabListContainer = _t.first);
1202          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabList = _t.first);
1203          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabListInner = _t.first);
1204          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._nextPaginator = _t.first);
1205          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._previousPaginator = _t.first);
1206        }
1207      },
1208      hostAttrs: [1, "mat-mdc-tab-header"],
1209      hostVars: 4,
1210      hostBindings: function MatTabHeader_HostBindings(rf, ctx) {
1211        if (rf & 2) {
1212          \u0275\u0275classProp("mat-mdc-tab-header-pagination-controls-enabled", ctx._showPaginationControls)("mat-mdc-tab-header-rtl", ctx._getLayoutDirection() == "rtl");
1213        }
1214      },
1215      inputs: {
1216        ariaLabel: [0, "aria-label", "ariaLabel"],
1217        ariaLabelledby: [0, "aria-labelledby", "ariaLabelledby"],
1218        disableRipple: [2, "disableRipple", "disableRipple", booleanAttribute]
1219      },
1220      standalone: true,
1221      features: [\u0275\u0275InputTransformsFeature, \u0275\u0275InheritDefinitionFeature, \u0275\u0275StandaloneFeature],
1222      ngContentSelectors: _c0,
1223      decls: 13,
1224      vars: 10,
1225      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"]],
1226      template: function MatTabHeader_Template(rf, ctx) {
1227        if (rf & 1) {
1228          const _r1 = \u0275\u0275getCurrentView();
1229          \u0275\u0275projectionDef();
1230          \u0275\u0275elementStart(0, "div", 5, 0);
1231          \u0275\u0275listener("click", function MatTabHeader_Template_div_click_0_listener() {
1232            \u0275\u0275restoreView(_r1);
1233            return \u0275\u0275resetView(ctx._handlePaginatorClick("before"));
1234          })("mousedown", function MatTabHeader_Template_div_mousedown_0_listener($event) {
1235            \u0275\u0275restoreView(_r1);
1236            return \u0275\u0275resetView(ctx._handlePaginatorPress("before", $event));
1237          })("touchend", function MatTabHeader_Template_div_touchend_0_listener() {
1238            \u0275\u0275restoreView(_r1);
1239            return \u0275\u0275resetView(ctx._stopInterval());
1240          });
1241          \u0275\u0275element(2, "div", 6);
1242          \u0275\u0275elementEnd();
1243          \u0275\u0275elementStart(3, "div", 7, 1);
1244          \u0275\u0275listener("keydown", function MatTabHeader_Template_div_keydown_3_listener($event) {
1245            \u0275\u0275restoreView(_r1);
1246            return \u0275\u0275resetView(ctx._handleKeydown($event));
1247          });
1248          \u0275\u0275elementStart(5, "div", 8, 2);
1249          \u0275\u0275listener("cdkObserveContent", function MatTabHeader_Template_div_cdkObserveContent_5_listener() {
1250            \u0275\u0275restoreView(_r1);
1251            return \u0275\u0275resetView(ctx._onContentChanges());
1252          });
1253          \u0275\u0275elementStart(7, "div", 9, 3);
1254          \u0275\u0275projection(9);
1255          \u0275\u0275elementEnd()()();
1256          \u0275\u0275elementStart(10, "div", 10, 4);
1257          \u0275\u0275listener("mousedown", function MatTabHeader_Template_div_mousedown_10_listener($event) {
1258            \u0275\u0275restoreView(_r1);
1259            return \u0275\u0275resetView(ctx._handlePaginatorPress("after", $event));
1260          })("click", function MatTabHeader_Template_div_click_10_listener() {
1261            \u0275\u0275restoreView(_r1);
1262            return \u0275\u0275resetView(ctx._handlePaginatorClick("after"));
1263          })("touchend", function MatTabHeader_Template_div_touchend_10_listener() {
1264            \u0275\u0275restoreView(_r1);
1265            return \u0275\u0275resetView(ctx._stopInterval());
1266          });
1267          \u0275\u0275element(12, "div", 6);
1268          \u0275\u0275elementEnd();
1269        }
1270        if (rf & 2) {
1271          \u0275\u0275classProp("mat-mdc-tab-header-pagination-disabled", ctx._disableScrollBefore);
1272          \u0275\u0275property("matRippleDisabled", ctx._disableScrollBefore || ctx.disableRipple);
1273          \u0275\u0275advance(3);
1274          \u0275\u0275classProp("_mat-animation-noopable", ctx._animationMode === "NoopAnimations");
1275          \u0275\u0275advance(2);
1276          \u0275\u0275attribute("aria-label", ctx.ariaLabel || null)("aria-labelledby", ctx.ariaLabelledby || null);
1277          \u0275\u0275advance(5);
1278          \u0275\u0275classProp("mat-mdc-tab-header-pagination-disabled", ctx._disableScrollAfter);
1279          \u0275\u0275property("matRippleDisabled", ctx._disableScrollAfter || ctx.disableRipple);
1280        }
1281      },
1282      dependencies: [MatRipple, CdkObserveContent],
1283      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-app-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-app-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);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-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);border-top-color:var(--mat-tab-header-divider-color, var(--mat-app-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)}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],
1284      encapsulation: 2
1285    });
1286  }
1287};
1288(() => {
1289  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabHeader, [{
1290    type: Component,
1291    args: [{
1292      selector: "mat-tab-header",
1293      encapsulation: ViewEncapsulation$1.None,
1294      changeDetection: ChangeDetectionStrategy.Default,
1295      host: {
1296        "class": "mat-mdc-tab-header",
1297        "[class.mat-mdc-tab-header-pagination-controls-enabled]": "_showPaginationControls",
1298        "[class.mat-mdc-tab-header-rtl]": "_getLayoutDirection() == 'rtl'"
1299      },
1300      standalone: true,
1301      imports: [MatRipple, CdkObserveContent],
1302      template: `<!--
1303 Note that this intentionally uses a \`div\` instead of a \`button\`, because it's not part of
1304 the regular tabs flow and is only here to support mouse users. It should also not be focusable.
1305-->
1306<div class="mat-mdc-tab-header-pagination mat-mdc-tab-header-pagination-before"
1307     #previousPaginator
1308     mat-ripple
1309     [matRippleDisabled]="_disableScrollBefore || disableRipple"
1310     [class.mat-mdc-tab-header-pagination-disabled]="_disableScrollBefore"
1311     (click)="_handlePaginatorClick('before')"
1312     (mousedown)="_handlePaginatorPress('before', $event)"
1313     (touchend)="_stopInterval()">
1314  <div class="mat-mdc-tab-header-pagination-chevron"></div>
1315</div>
1316
1317<div
1318  class="mat-mdc-tab-label-container"
1319  #tabListContainer
1320  (keydown)="_handleKeydown($event)"
1321  [class._mat-animation-noopable]="_animationMode === 'NoopAnimations'">
1322  <div
1323    #tabList
1324    class="mat-mdc-tab-list"
1325    role="tablist"
1326    [attr.aria-label]="ariaLabel || null"
1327    [attr.aria-labelledby]="ariaLabelledby || null"
1328    (cdkObserveContent)="_onContentChanges()">
1329    <div class="mat-mdc-tab-labels" #tabListInner>
1330      <ng-content></ng-content>
1331    </div>
1332  </div>
1333</div>
1334
1335<div class="mat-mdc-tab-header-pagination mat-mdc-tab-header-pagination-after"
1336     #nextPaginator
1337     mat-ripple
1338     [matRippleDisabled]="_disableScrollAfter || disableRipple"
1339     [class.mat-mdc-tab-header-pagination-disabled]="_disableScrollAfter"
1340     (mousedown)="_handlePaginatorPress('after', $event)"
1341     (click)="_handlePaginatorClick('after')"
1342     (touchend)="_stopInterval()">
1343  <div class="mat-mdc-tab-header-pagination-chevron"></div>
1344</div>
1345`,
1346      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-app-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-app-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);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-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);border-top-color:var(--mat-tab-header-divider-color, var(--mat-app-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)}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"]
1347    }]
1348  }], () => [{
1349    type: ElementRef
1350  }, {
1351    type: ChangeDetectorRef
1352  }, {
1353    type: ViewportRuler
1354  }, {
1355    type: Directionality,
1356    decorators: [{
1357      type: Optional
1358    }]
1359  }, {
1360    type: NgZone
1361  }, {
1362    type: Platform
1363  }, {
1364    type: void 0,
1365    decorators: [{
1366      type: Optional
1367    }, {
1368      type: Inject,
1369      args: [ANIMATION_MODULE_TYPE]
1370    }]
1371  }], {
1372    _items: [{
1373      type: ContentChildren,
1374      args: [MatTabLabelWrapper, {
1375        descendants: false
1376      }]
1377    }],
1378    _tabListContainer: [{
1379      type: ViewChild,
1380      args: ["tabListContainer", {
1381        static: true
1382      }]
1383    }],
1384    _tabList: [{
1385      type: ViewChild,
1386      args: ["tabList", {
1387        static: true
1388      }]
1389    }],
1390    _tabListInner: [{
1391      type: ViewChild,
1392      args: ["tabListInner", {
1393        static: true
1394      }]
1395    }],
1396    _nextPaginator: [{
1397      type: ViewChild,
1398      args: ["nextPaginator"]
1399    }],
1400    _previousPaginator: [{
1401      type: ViewChild,
1402      args: ["previousPaginator"]
1403    }],
1404    ariaLabel: [{
1405      type: Input,
1406      args: ["aria-label"]
1407    }],
1408    ariaLabelledby: [{
1409      type: Input,
1410      args: ["aria-labelledby"]
1411    }],
1412    disableRipple: [{
1413      type: Input,
1414      args: [{
1415        transform: booleanAttribute
1416      }]
1417    }]
1418  });
1419})();
1420var MAT_TABS_CONFIG = new InjectionToken("MAT_TABS_CONFIG");
1421var matTabsAnimations = {
1422  /** Animation translates a tab along the X axis. */
1423  translateTab: trigger("translateTab", [
1424    // Transitions to `none` instead of 0, because some browsers might blur the content.
1425    state("center, void, left-origin-center, right-origin-center", style({
1426      transform: "none",
1427      visibility: "visible"
1428    })),
1429    // If the tab is either on the left or right, we additionally add a `min-height` of 1px
1430    // in order to ensure that the element has a height before its state changes. This is
1431    // necessary because Chrome does seem to skip the transition in RTL mode if the element does
1432    // not have a static height and is not rendered. See related issue: #9465
1433    state("left", style({
1434      transform: "translate3d(-100%, 0, 0)",
1435      minHeight: "1px",
1436      // Normally this is redundant since we detach the content from the DOM, but if the user
1437      // opted into keeping the content in the DOM, we have to hide it so it isn't focusable.
1438      visibility: "hidden"
1439    })),
1440    state("right", style({
1441      transform: "translate3d(100%, 0, 0)",
1442      minHeight: "1px",
1443      visibility: "hidden"
1444    })),
1445    transition("* => left, * => right, left => center, right => center", animate("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),
1446    transition("void => left-origin-center", [style({
1447      transform: "translate3d(-100%, 0, 0)",
1448      visibility: "hidden"
1449    }), animate("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),
1450    transition("void => right-origin-center", [style({
1451      transform: "translate3d(100%, 0, 0)",
1452      visibility: "hidden"
1453    }), animate("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])
1454  ])
1455};
1456var MatTabBodyPortal = class _MatTabBodyPortal extends CdkPortalOutlet {
1457  constructor(componentFactoryResolver, viewContainerRef, _host, _document) {
1458    super(componentFactoryResolver, viewContainerRef, _document);
1459    this._host = _host;
1460    this._centeringSub = Subscription.EMPTY;
1461    this._leavingSub = Subscription.EMPTY;
1462  }
1463  /** Set initial visibility or set up subscription for changing visibility. */
1464  ngOnInit() {
1465    super.ngOnInit();
1466    this._centeringSub = this._host._beforeCentering.pipe(startWith(this._host._isCenterPosition(this._host._position))).subscribe((isCentering) => {
1467      if (this._host._content && isCentering && !this.hasAttached()) {
1468        this.attach(this._host._content);
1469      }
1470    });
1471    this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {
1472      if (!this._host.preserveContent) {
1473        this.detach();
1474      }
1475    });
1476  }
1477  /** Clean up centering subscription. */
1478  ngOnDestroy() {
1479    super.ngOnDestroy();
1480    this._centeringSub.unsubscribe();
1481    this._leavingSub.unsubscribe();
1482  }
1483  static {
1484    this.\u0275fac = function MatTabBodyPortal_Factory(__ngFactoryType__) {
1485      return new (__ngFactoryType__ || _MatTabBodyPortal)(\u0275\u0275directiveInject(ComponentFactoryResolver$1), \u0275\u0275directiveInject(ViewContainerRef), \u0275\u0275directiveInject(forwardRef(() => MatTabBody)), \u0275\u0275directiveInject(DOCUMENT));
1486    };
1487  }
1488  static {
1489    this.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1490      type: _MatTabBodyPortal,
1491      selectors: [["", "matTabBodyHost", ""]],
1492      standalone: true,
1493      features: [\u0275\u0275InheritDefinitionFeature]
1494    });
1495  }
1496};
1497(() => {
1498  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabBodyPortal, [{
1499    type: Directive,
1500    args: [{
1501      selector: "[matTabBodyHost]",
1502      standalone: true
1503    }]
1504  }], () => [{
1505    type: ComponentFactoryResolver$1
1506  }, {
1507    type: ViewContainerRef
1508  }, {
1509    type: MatTabBody,
1510    decorators: [{
1511      type: Inject,
1512      args: [forwardRef(() => MatTabBody)]
1513    }]
1514  }, {
1515    type: void 0,
1516    decorators: [{
1517      type: Inject,
1518      args: [DOCUMENT]
1519    }]
1520  }], null);
1521})();
1522var MatTabBody = class _MatTabBody {
1523  /** The shifted index position of the tab body, where zero represents the active center tab. */
1524  set position(position) {
1525    this._positionIndex = position;
1526    this._computePositionAnimationState();
1527  }
1528  constructor(_elementRef, _dir, changeDetectorRef) {
1529    this._elementRef = _elementRef;
1530    this._dir = _dir;
1531    this._dirChangeSubscription = Subscription.EMPTY;
1532    this._translateTabComplete = new Subject();
1533    this._onCentering = new EventEmitter();
1534    this._beforeCentering = new EventEmitter();
1535    this._afterLeavingCenter = new EventEmitter();
1536    this._onCentered = new EventEmitter(true);
1537    this.animationDuration = "500ms";
1538    this.preserveContent = false;
1539    if (_dir) {
1540      this._dirChangeSubscription = _dir.change.subscribe((dir) => {
1541        this._computePositionAnimationState(dir);
1542        changeDetectorRef.markForCheck();
1543      });
1544    }
1545    this._translateTabComplete.subscribe((event) => {
1546      if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {
1547        this._onCentered.emit();
1548      }
1549      if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {
1550        this._afterLeavingCenter.emit();
1551      }
1552    });
1553  }
1554  /**
1555   * After initialized, check if the content is centered and has an origin. If so, set the
1556   * special position states that transition the tab from the left or right before centering.
1557   */
1558  ngOnInit() {
1559    if (this._position == "center" && this.origin != null) {
1560      this._position = this._computePositionFromOrigin(this.origin);
1561    }
1562  }
1563  ngOnDestroy() {
1564    this._dirChangeSubscription.unsubscribe();
1565    this._translateTabComplete.complete();
1566  }
1567  _onTranslateTabStarted(event) {
1568    const isCentering = this._isCenterPosition(event.toState);
1569    this._beforeCentering.emit(isCentering);
1570    if (isCentering) {
1571      this._onCentering.emit(this._elementRef.nativeElement.clientHeight);
1572    }
1573  }
1574  /** The text direction of the containing app. */
1575  _getLayoutDirection() {
1576    return this._dir && this._dir.value === "rtl" ? "rtl" : "ltr";
1577  }
1578  /** Whether the provided position state is considered center, regardless of origin. */
1579  _isCenterPosition(position) {
1580    return position == "center" || position == "left-origin-center" || position == "right-origin-center";
1581  }
1582  /** Computes the position state that will be used for the tab-body animation trigger. */
1583  _computePositionAnimationState(dir = this._getLayoutDirection()) {
1584    if (this._positionIndex < 0) {
1585      this._position = dir == "ltr" ? "left" : "right";
1586    } else if (this._positionIndex > 0) {
1587      this._position = dir == "ltr" ? "right" : "left";
1588    } else {
1589      this._position = "center";
1590    }
1591  }
1592  /**
1593   * Computes the position state based on the specified origin position. This is used if the
1594   * tab is becoming visible immediately after creation.
1595   */
1596  _computePositionFromOrigin(origin) {
1597    const dir = this._getLayoutDirection();
1598    if (dir == "ltr" && origin <= 0 || dir == "rtl" && origin > 0) {
1599      return "left-origin-center";
1600    }
1601    return "right-origin-center";
1602  }
1603  static {
1604    this.\u0275fac = function MatTabBody_Factory(__ngFactoryType__) {
1605      return new (__ngFactoryType__ || _MatTabBody)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Directionality, 8), \u0275\u0275directiveInject(ChangeDetectorRef));
1606    };
1607  }
1608  static {
1609    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
1610      type: _MatTabBody,
1611      selectors: [["mat-tab-body"]],
1612      viewQuery: function MatTabBody_Query(rf, ctx) {
1613        if (rf & 1) {
1614          \u0275\u0275viewQuery(CdkPortalOutlet, 5);
1615        }
1616        if (rf & 2) {
1617          let _t;
1618          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._portalHost = _t.first);
1619        }
1620      },
1621      hostAttrs: [1, "mat-mdc-tab-body"],
1622      inputs: {
1623        _content: [0, "content", "_content"],
1624        origin: "origin",
1625        animationDuration: "animationDuration",
1626        preserveContent: "preserveContent",
1627        position: "position"
1628      },
1629      outputs: {
1630        _onCentering: "_onCentering",
1631        _beforeCentering: "_beforeCentering",
1632        _afterLeavingCenter: "_afterLeavingCenter",
1633        _onCentered: "_onCentered"
1634      },
1635      standalone: true,
1636      features: [\u0275\u0275StandaloneFeature],
1637      decls: 3,
1638      vars: 6,
1639      consts: [["content", ""], ["cdkScrollable", "", 1, "mat-mdc-tab-body-content"], ["matTabBodyHost", ""]],
1640      template: function MatTabBody_Template(rf, ctx) {
1641        if (rf & 1) {
1642          const _r1 = \u0275\u0275getCurrentView();
1643          \u0275\u0275elementStart(0, "div", 1, 0);
1644          \u0275\u0275listener("@translateTab.start", function MatTabBody_Template_div_animation_translateTab_start_0_listener($event) {
1645            \u0275\u0275restoreView(_r1);
1646            return \u0275\u0275resetView(ctx._onTranslateTabStarted($event));
1647          })("@translateTab.done", function MatTabBody_Template_div_animation_translateTab_done_0_listener($event) {
1648            \u0275\u0275restoreView(_r1);
1649            return \u0275\u0275resetView(ctx._translateTabComplete.next($event));
1650          });
1651          \u0275\u0275template(2, MatTabBody_ng_template_2_Template, 0, 0, "ng-template", 2);
1652          \u0275\u0275elementEnd();
1653        }
1654        if (rf & 2) {
1655          \u0275\u0275property("@translateTab", \u0275\u0275pureFunction2(3, _c7, ctx._position, \u0275\u0275pureFunction1(1, _c6, ctx.animationDuration)));
1656        }
1657      },
1658      dependencies: [MatTabBodyPortal, CdkScrollable],
1659      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}'],
1660      encapsulation: 2,
1661      data: {
1662        animation: [matTabsAnimations.translateTab]
1663      }
1664    });
1665  }
1666};
1667(() => {
1668  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabBody, [{
1669    type: Component,
1670    args: [{
1671      selector: "mat-tab-body",
1672      encapsulation: ViewEncapsulation$1.None,
1673      changeDetection: ChangeDetectionStrategy.Default,
1674      animations: [matTabsAnimations.translateTab],
1675      host: {
1676        "class": "mat-mdc-tab-body"
1677      },
1678      standalone: true,
1679      imports: [MatTabBodyPortal, CdkScrollable],
1680      template: '<div class="mat-mdc-tab-body-content" #content\n     [@translateTab]="{\n        value: _position,\n        params: {animationDuration: animationDuration}\n     }"\n     (@translateTab.start)="_onTranslateTabStarted($event)"\n     (@translateTab.done)="_translateTabComplete.next($event)"\n     cdkScrollable>\n  <ng-template matTabBodyHost></ng-template>\n</div>\n',
1681      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}']
1682    }]
1683  }], () => [{
1684    type: ElementRef
1685  }, {
1686    type: Directionality,
1687    decorators: [{
1688      type: Optional
1689    }]
1690  }, {
1691    type: ChangeDetectorRef
1692  }], {
1693    _onCentering: [{
1694      type: Output
1695    }],
1696    _beforeCentering: [{
1697      type: Output
1698    }],
1699    _afterLeavingCenter: [{
1700      type: Output
1701    }],
1702    _onCentered: [{
1703      type: Output
1704    }],
1705    _portalHost: [{
1706      type: ViewChild,
1707      args: [CdkPortalOutlet]
1708    }],
1709    _content: [{
1710      type: Input,
1711      args: ["content"]
1712    }],
1713    origin: [{
1714      type: Input
1715    }],
1716    animationDuration: [{
1717      type: Input
1718    }],
1719    preserveContent: [{
1720      type: Input
1721    }],
1722    position: [{
1723      type: Input
1724    }]
1725  });
1726})();
1727var nextId = 0;
1728var ENABLE_BACKGROUND_INPUT = true;
1729var MatTabGroup = class _MatTabGroup {
1730  /** Whether the ink bar should fit its width to the size of the tab label content. */
1731  get fitInkBarToContent() {
1732    return this._fitInkBarToContent;
1733  }
1734  set fitInkBarToContent(value) {
1735    this._fitInkBarToContent = value;
1736    this._changeDetectorRef.markForCheck();
1737  }
1738  /** The index of the active tab. */
1739  get selectedIndex() {
1740    return this._selectedIndex;
1741  }
1742  set selectedIndex(value) {
1743    this._indexToSelect = isNaN(value) ? null : value;
1744  }
1745  /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */
1746  get animationDuration() {
1747    return this._animationDuration;
1748  }
1749  set animationDuration(value) {
1750    const stringValue = value + "";
1751    this._animationDuration = /^\d+$/.test(stringValue) ? value + "ms" : stringValue;
1752  }
1753  /**
1754   * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved
1755   * accessibility when the tab does not have focusable elements or if it has scrollable content.
1756   * The `tabindex` will be removed automatically for inactive tabs.
1757   * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html
1758   */
1759  get contentTabIndex() {
1760    return this._contentTabIndex;
1761  }
1762  set contentTabIndex(value) {
1763    this._contentTabIndex = isNaN(value) ? null : value;
1764  }
1765  /**
1766   * Theme color of the background of the tab group. This API is supported in M2 themes only, it
1767   * has no effect in M3 themes.
1768   *
1769   * For information on applying color variants in M3, see
1770   * https://material.angular.io/guide/theming#using-component-color-variants.
1771   *
1772   * @deprecated The background color should be customized through Sass theming APIs.
1773   * @breaking-change 20.0.0 Remove this input
1774   */
1775  get backgroundColor() {
1776    return this._backgroundColor;
1777  }
1778  set backgroundColor(value) {
1779    if (!ENABLE_BACKGROUND_INPUT) {
1780      throw new Error(`mat-tab-group background color must be set through the Sass theming API`);
1781    }
1782    const classList = this._elementRef.nativeElement.classList;
1783    classList.remove("mat-tabs-with-background", `mat-background-${this.backgroundColor}`);
1784    if (value) {
1785      classList.add("mat-tabs-with-background", `mat-background-${value}`);
1786    }
1787    this._backgroundColor = value;
1788  }
1789  constructor(_elementRef, _changeDetectorRef, defaultConfig, _animationMode) {
1790    this._elementRef = _elementRef;
1791    this._changeDetectorRef = _changeDetectorRef;
1792    this._animationMode = _animationMode;
1793    this._tabs = new QueryList();
1794    this._indexToSelect = 0;
1795    this._lastFocusedTabIndex = null;
1796    this._tabBodyWrapperHeight = 0;
1797    this._tabsSubscription = Subscription.EMPTY;
1798    this._tabLabelSubscription = Subscription.EMPTY;
1799    this._fitInkBarToContent = false;
1800    this.stretchTabs = true;
1801    this.dynamicHeight = false;
1802    this._selectedIndex = null;
1803    this.headerPosition = "above";
1804    this.disablePagination = false;
1805    this.disableRipple = false;
1806    this.preserveContent = false;
1807    this.selectedIndexChange = new EventEmitter();
1808    this.focusChange = new EventEmitter();
1809    this.animationDone = new EventEmitter();
1810    this.selectedTabChange = new EventEmitter(true);
1811    this._isServer = !inject(Platform).isBrowser;
1812    this._groupId = nextId++;
1813    this.animationDuration = defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : "500ms";
1814    this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;
1815    this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;
1816    if (defaultConfig?.contentTabIndex != null) {
1817      this.contentTabIndex = defaultConfig.contentTabIndex;
1818    }
1819    this.preserveContent = !!defaultConfig?.preserveContent;
1820    this.fitInkBarToContent = defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;
1821    this.stretchTabs = defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;
1822  }
1823  /**
1824   * After the content is checked, this component knows what tabs have been defined
1825   * and what the selected index should be. This is where we can know exactly what position
1826   * each tab should be in according to the new selected index, and additionally we know how
1827   * a new selected tab should transition in (from the left or right).
1828   */
1829  ngAfterContentChecked() {
1830    const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);
1831    if (this._selectedIndex != indexToSelect) {
1832      const isFirstRun = this._selectedIndex == null;
1833      if (!isFirstRun) {
1834        this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));
1835        const wrapper = this._tabBodyWrapper.nativeElement;
1836        wrapper.style.minHeight = wrapper.clientHeight + "px";
1837      }
1838      Promise.resolve().then(() => {
1839        this._tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);
1840        if (!isFirstRun) {
1841          this.selectedIndexChange.emit(indexToSelect);
1842          this._tabBodyWrapper.nativeElement.style.minHeight = "";
1843        }
1844      });
1845    }
1846    this._tabs.forEach((tab, index) => {
1847      tab.position = index - indexToSelect;
1848      if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {
1849        tab.origin = indexToSelect - this._selectedIndex;
1850      }
1851    });
1852    if (this._selectedIndex !== indexToSelect) {
1853      this._selectedIndex = indexToSelect;
1854      this._lastFocusedTabIndex = null;
1855      this._changeDetectorRef.markForCheck();
1856    }
1857  }
1858  ngAfterContentInit() {
1859    this._subscribeToAllTabChanges();
1860    this._subscribeToTabLabels();
1861    this._tabsSubscription = this._tabs.changes.subscribe(() => {
1862      const indexToSelect = this._clampTabIndex(this._indexToSelect);
1863      if (indexToSelect === this._selectedIndex) {
1864        const tabs = this._tabs.toArray();
1865        let selectedTab;
1866        for (let i = 0; i < tabs.length; i++) {
1867          if (tabs[i].isActive) {
1868            this._indexToSelect = this._selectedIndex = i;
1869            this._lastFocusedTabIndex = null;
1870            selectedTab = tabs[i];
1871            break;
1872          }
1873        }
1874        if (!selectedTab && tabs[indexToSelect]) {
1875          Promise.resolve().then(() => {
1876            tabs[indexToSelect].isActive = true;
1877            this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));
1878          });
1879        }
1880      }
1881      this._changeDetectorRef.markForCheck();
1882    });
1883  }
1884  /** Listens to changes in all of the tabs. */
1885  _subscribeToAllTabChanges() {
1886    this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs) => {
1887      this._tabs.reset(tabs.filter((tab) => {
1888        return tab._closestTabGroup === this || !tab._closestTabGroup;
1889      }));
1890      this._tabs.notifyOnChanges();
1891    });
1892  }
1893  ngOnDestroy() {
1894    this._tabs.destroy();
1895    this._tabsSubscription.unsubscribe();
1896    this._tabLabelSubscription.unsubscribe();
1897  }
1898  /** Re-aligns the ink bar to the selected tab element. */
1899  realignInkBar() {
1900    if (this._tabHeader) {
1901      this._tabHeader._alignInkBarToSelectedTab();
1902    }
1903  }
1904  /**
1905   * Recalculates the tab group's pagination dimensions.
1906   *
1907   * WARNING: Calling this method can be very costly in terms of performance. It should be called
1908   * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
1909   * page.
1910   */
1911  updatePagination() {
1912    if (this._tabHeader) {
1913      this._tabHeader.updatePagination();
1914    }
1915  }
1916  /**
1917   * Sets focus to a particular tab.
1918   * @param index Index of the tab to be focused.
1919   */
1920  focusTab(index) {
1921    const header = this._tabHeader;
1922    if (header) {
1923      header.focusIndex = index;
1924    }
1925  }
1926  _focusChanged(index) {
1927    this._lastFocusedTabIndex = index;
1928    this.focusChange.emit(this._createChangeEvent(index));
1929  }
1930  _createChangeEvent(index) {
1931    const event = new MatTabChangeEvent();
1932    event.index = index;
1933    if (this._tabs && this._tabs.length) {
1934      event.tab = this._tabs.toArray()[index];
1935    }
1936    return event;
1937  }
1938  /**
1939   * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
1940   * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the
1941   * binding to be updated, we need to subscribe to changes in it and trigger change detection
1942   * manually.
1943   */
1944  _subscribeToTabLabels() {
1945    if (this._tabLabelSubscription) {
1946      this._tabLabelSubscription.unsubscribe();
1947    }
1948    this._tabLabelSubscription = merge(...this._tabs.map((tab) => tab._stateChanges)).subscribe(() => this._changeDetectorRef.markForCheck());
1949  }
1950  /** Clamps the given index to the bounds of 0 and the tabs length. */
1951  _clampTabIndex(index) {
1952    return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));
1953  }
1954  /** Returns a unique id for each tab label element */
1955  _getTabLabelId(i) {
1956    return `mat-tab-label-${this._groupId}-${i}`;
1957  }
1958  /** Returns a unique id for each tab content element */
1959  _getTabContentId(i) {
1960    return `mat-tab-content-${this._groupId}-${i}`;
1961  }
1962  /**
1963   * Sets the height of the body wrapper to the height of the activating tab if dynamic
1964   * height property is true.
1965   */
1966  _setTabBodyWrapperHeight(tabHeight) {
1967    if (!this.dynamicHeight || !this._tabBodyWrapperHeight) {
1968      return;
1969    }
1970    const wrapper = this._tabBodyWrapper.nativeElement;
1971    wrapper.style.height = this._tabBodyWrapperHeight + "px";
1972    if (this._tabBodyWrapper.nativeElement.offsetHeight) {
1973      wrapper.style.height = tabHeight + "px";
1974    }
1975  }
1976  /** Removes the height of the tab body wrapper. */
1977  _removeTabBodyWrapperHeight() {
1978    const wrapper = this._tabBodyWrapper.nativeElement;
1979    this._tabBodyWrapperHeight = wrapper.clientHeight;
1980    wrapper.style.height = "";
1981    this.animationDone.emit();
1982  }
1983  /** Handle click events, setting new selected index if appropriate. */
1984  _handleClick(tab, tabHeader, index) {
1985    tabHeader.focusIndex = index;
1986    if (!tab.disabled) {
1987      this.selectedIndex = index;
1988    }
1989  }
1990  /** Retrieves the tabindex for the tab. */
1991  _getTabIndex(index) {
1992    const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;
1993    return index === targetIndex ? 0 : -1;
1994  }
1995  /** Callback for when the focused state of a tab has changed. */
1996  _tabFocusChanged(focusOrigin, index) {
1997    if (focusOrigin && focusOrigin !== "mouse" && focusOrigin !== "touch") {
1998      this._tabHeader.focusIndex = index;
1999    }
2000  }
2001  static {
2002    this.\u0275fac = function MatTabGroup_Factory(__ngFactoryType__) {
2003      return new (__ngFactoryType__ || _MatTabGroup)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(MAT_TABS_CONFIG, 8), \u0275\u0275directiveInject(ANIMATION_MODULE_TYPE, 8));
2004    };
2005  }
2006  static {
2007    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2008      type: _MatTabGroup,
2009      selectors: [["mat-tab-group"]],
2010      contentQueries: function MatTabGroup_ContentQueries(rf, ctx, dirIndex) {
2011        if (rf & 1) {
2012          \u0275\u0275contentQuery(dirIndex, MatTab, 5);
2013        }
2014        if (rf & 2) {
2015          let _t;
2016          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._allTabs = _t);
2017        }
2018      },
2019      viewQuery: function MatTabGroup_Query(rf, ctx) {
2020        if (rf & 1) {
2021          \u0275\u0275viewQuery(_c8, 5);
2022          \u0275\u0275viewQuery(_c9, 5);
2023        }
2024        if (rf & 2) {
2025          let _t;
2026          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabBodyWrapper = _t.first);
2027          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabHeader = _t.first);
2028        }
2029      },
2030      hostAttrs: [1, "mat-mdc-tab-group"],
2031      hostVars: 10,
2032      hostBindings: function MatTabGroup_HostBindings(rf, ctx) {
2033        if (rf & 2) {
2034          \u0275\u0275classMap("mat-" + (ctx.color || "primary"));
2035          \u0275\u0275styleProp("--mat-tab-animation-duration", ctx.animationDuration);
2036          \u0275\u0275classProp("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);
2037        }
2038      },
2039      inputs: {
2040        color: "color",
2041        fitInkBarToContent: [2, "fitInkBarToContent", "fitInkBarToContent", booleanAttribute],
2042        stretchTabs: [2, "mat-stretch-tabs", "stretchTabs", booleanAttribute],
2043        dynamicHeight: [2, "dynamicHeight", "dynamicHeight", booleanAttribute],
2044        selectedIndex: [2, "selectedIndex", "selectedIndex", numberAttribute],
2045        headerPosition: "headerPosition",
2046        animationDuration: "animationDuration",
2047        contentTabIndex: [2, "contentTabIndex", "contentTabIndex", numberAttribute],
2048        disablePagination: [2, "disablePagination", "disablePagination", booleanAttribute],
2049        disableRipple: [2, "disableRipple", "disableRipple", booleanAttribute],
2050        preserveContent: [2, "preserveContent", "preserveContent", booleanAttribute],
2051        backgroundColor: "backgroundColor",
2052        ariaLabel: [0, "aria-label", "ariaLabel"],
2053        ariaLabelledby: [0, "aria-labelledby", "ariaLabelledby"]
2054      },
2055      outputs: {
2056        selectedIndexChange: "selectedIndexChange",
2057        focusChange: "focusChange",
2058        animationDone: "animationDone",
2059        selectedTabChange: "selectedTabChange"
2060      },
2061      exportAs: ["matTabGroup"],
2062      standalone: true,
2063      features: [\u0275\u0275ProvidersFeature([{
2064        provide: MAT_TAB_GROUP,
2065        useExisting: _MatTabGroup
2066      }]), \u0275\u0275InputTransformsFeature, \u0275\u0275StandaloneFeature],
2067      ngContentSelectors: _c0,
2068      decls: 9,
2069      vars: 8,
2070      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-mdc-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-mdc-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"]],
2071      template: function MatTabGroup_Template(rf, ctx) {
2072        if (rf & 1) {
2073          const _r1 = \u0275\u0275getCurrentView();
2074          \u0275\u0275projectionDef();
2075          \u0275\u0275elementStart(0, "mat-tab-header", 3, 0);
2076          \u0275\u0275listener("indexFocused", function MatTabGroup_Template_mat_tab_header_indexFocused_0_listener($event) {
2077            \u0275\u0275restoreView(_r1);
2078            return \u0275\u0275resetView(ctx._focusChanged($event));
2079          })("selectFocusedIndex", function MatTabGroup_Template_mat_tab_header_selectFocusedIndex_0_listener($event) {
2080            \u0275\u0275restoreView(_r1);
2081            return \u0275\u0275resetView(ctx.selectedIndex = $event);
2082          });
2083          \u0275\u0275repeaterCreate(2, MatTabGroup_For_3_Template, 8, 17, "div", 4, \u0275\u0275repeaterTrackByIdentity);
2084          \u0275\u0275elementEnd();
2085          \u0275\u0275template(4, MatTabGroup_Conditional_4_Template, 1, 0);
2086          \u0275\u0275elementStart(5, "div", 5, 1);
2087          \u0275\u0275repeaterCreate(7, MatTabGroup_For_8_Template, 1, 13, "mat-tab-body", 6, \u0275\u0275repeaterTrackByIdentity);
2088          \u0275\u0275elementEnd();
2089        }
2090        if (rf & 2) {
2091          \u0275\u0275property("selectedIndex", ctx.selectedIndex || 0)("disableRipple", ctx.disableRipple)("disablePagination", ctx.disablePagination)("aria-label", ctx.ariaLabel)("aria-labelledby", ctx.ariaLabelledby);
2092          \u0275\u0275advance(2);
2093          \u0275\u0275repeater(ctx._tabs);
2094          \u0275\u0275advance(2);
2095          \u0275\u0275conditional(ctx._isServer ? 4 : -1);
2096          \u0275\u0275advance();
2097          \u0275\u0275classProp("_mat-animation-noopable", ctx._animationMode === "NoopAnimations");
2098          \u0275\u0275advance(2);
2099          \u0275\u0275repeater(ctx._tabs);
2100        }
2101      },
2102      dependencies: [MatTabHeader, MatTabLabelWrapper, CdkMonitorFocus, MatRipple, CdkPortalOutlet, MatTabBody],
2103      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}
2103.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{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);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-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-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-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-app-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-app-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-app-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-app-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-app-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-app-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-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-app-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}
2103.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{al
2103ign-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}'],
2104      encapsulation: 2
2105    });
2106  }
2107};
2108(() => {
2109  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabGroup, [{
2110    type: Component,
2111    args: [{
2112      selector: "mat-tab-group",
2113      exportAs: "matTabGroup",
2114      encapsulation: ViewEncapsulation$1.None,
2115      changeDetection: ChangeDetectionStrategy.Default,
2116      providers: [{
2117        provide: MAT_TAB_GROUP,
2118        useExisting: MatTabGroup
2119      }],
2120      host: {
2121        "class": "mat-mdc-tab-group",
2122        "[class]": '"mat-" + (color || "primary")',
2123        "[class.mat-mdc-tab-group-dynamic-height]": "dynamicHeight",
2124        "[class.mat-mdc-tab-group-inverted-header]": 'headerPosition === "below"',
2125        "[class.mat-mdc-tab-group-stretch-tabs]": "stretchTabs",
2126        "[style.--mat-tab-animation-duration]": "animationDuration"
2127      },
2128      standalone: true,
2129      imports: [MatTabHeader, MatTabLabelWrapper, CdkMonitorFocus, MatRipple, CdkPortalOutlet, MatTabBody],
2130      template: '<mat-tab-header #tabHeader\n                [selectedIndex]="selectedIndex || 0"\n                [disableRipple]="disableRipple"\n                [disablePagination]="disablePagination"\n                [aria-label]="ariaLabel"\n                [aria-labelledby]="ariaLabelledby"\n                (indexFocused)="_focusChanged($event)"\n                (selectFocusedIndex)="selectedIndex = $event">\n\n  @for (tab of _tabs; track tab; let i = $index) {\n    <div class="mdc-tab mat-mdc-tab mat-mdc-focus-indicator"\n        #tabNode\n        role="tab"\n        matTabLabelWrapper\n        cdkMonitorElementFocus\n        [id]="_getTabLabelId(i)"\n        [attr.tabIndex]="_getTabIndex(i)"\n        [attr.aria-posinset]="i + 1"\n        [attr.aria-setsize]="_tabs.length"\n        [attr.aria-controls]="_getTabContentId(i)"\n        [attr.aria-selected]="selectedIndex === i"\n        [attr.aria-label]="tab.ariaLabel || null"\n        [attr.aria-labelledby]="(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null"\n        [class.mdc-tab--active]="selectedIndex === i"\n        [class]="tab.labelClass"\n        [disabled]="tab.disabled"\n        [fitInkBarToContent]="fitInkBarToContent"\n        (click)="_handleClick(tab, tabHeader, i)"\n        (cdkFocusChange)="_tabFocusChanged($event, i)">
2130\n      <span class="mdc-tab__ripple"></span>\n\n      <!-- Needs to be a separate element, because we can\'t put\n          `overflow: hidden` on tab due to the ink bar. -->\n      <div\n        class="mat-mdc-tab-ripple"\n        mat-ripple\n        [matRippleTrigger]="tabNode"\n        [matRippleDisabled]="tab.disabled || disableRipple"></div>\n\n      <span class="mdc-tab__content">\n        <span class="mdc-tab__text-label">\n          <!--\n            If there is a label template, use it, otherwise fall back to the text label.\n            Note that we don\'t have indentation around the text label, because it adds\n            whitespace around the text which breaks some internal tests.\n          -->\n          @if (tab.templateLabel) {\n            <ng-template [cdkPortalOutlet]="tab.templateLabel"></ng-template>\n          } @else {{{tab.textLabel}}}\n        </span>\n      </span>\n    </div>\n  }\n</mat-tab-header>\n\n<!--\n  We need to project the content somewhere to avoid hydration errors. Some observations:\n  1. This is only necessary on the server.\n  2. We get a hydration error if there aren\'t any nodes after the `ng-content`.\n  3. We get a hydration error if `ng-content` is wrapped in another element.\n-->\n@if (_isServer) {\n  <ng-content/>\n}\n\n<div\n  class="mat-mdc-tab-body-wrapper"\n  [class._mat-animation-noopable]="_animationMode === \'NoopAnimations\'"\n  #tabBodyWrapper>\n  @for (tab of _tabs; track tab; let i = $index) {\n    <mat-tab-body role="tabpanel"\n                 [id]="_getTabContentId(i)"\n                 [attr.tabindex]="(contentTabIndex != null && selectedIndex === i) ? contentTabIndex : null"\n                 [attr.aria-labelledby]="_getTabLabelId(i)"\n                 [attr.aria-hidden]="selectedIndex !== i"\n                 [class.mat-mdc-tab-body-active]="selectedIndex === i"\n                 [class]="tab.bodyClass"\n                 [content]="tab.content!"\n                 [position]="tab.position!"\n                 [origin]="tab.origin"\n                 [animationDuration]="animationDuration"\n                 [preserveContent]="preserveContent"\n                 (_onCentered)="_removeTabBodyWrapperHeight()"\n                 (_onCentering)="_setTabBodyWrapperHeight($event)">\n    </mat-tab-body>\n  }\n</div>\n',
2131      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}
2131.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{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);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-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-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-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-app-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-app-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-app-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-app-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-app-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-app-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-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-app-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}
2131.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{al
2131ign-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}']
2132    }]
2133  }], () => [{
2134    type: ElementRef
2135  }, {
2136    type: ChangeDetectorRef
2137  }, {
2138    type: void 0,
2139    decorators: [{
2140      type: Inject,
2141      args: [MAT_TABS_CONFIG]
2142    }, {
2143      type: Optional
2144    }]
2145  }, {
2146    type: void 0,
2147    decorators: [{
2148      type: Optional
2149    }, {
2150      type: Inject,
2151      args: [ANIMATION_MODULE_TYPE]
2152    }]
2153  }], {
2154    _allTabs: [{
2155      type: ContentChildren,
2156      args: [MatTab, {
2157        descendants: true
2158      }]
2159    }],
2160    _tabBodyWrapper: [{
2161      type: ViewChild,
2162      args: ["tabBodyWrapper"]
2163    }],
2164    _tabHeader: [{
2165      type: ViewChild,
2166      args: ["tabHeader"]
2167    }],
2168    color: [{
2169      type: Input
2170    }],
2171    fitInkBarToContent: [{
2172      type: Input,
2173      args: [{
2174        transform: booleanAttribute
2175      }]
2176    }],
2177    stretchTabs: [{
2178      type: Input,
2179      args: [{
2180        alias: "mat-stretch-tabs",
2181        transform: booleanAttribute
2182      }]
2183    }],
2184    dynamicHeight: [{
2185      type: Input,
2186      args: [{
2187        transform: booleanAttribute
2188      }]
2189    }],
2190    selectedIndex: [{
2191      type: Input,
2192      args: [{
2193        transform: numberAttribute
2194      }]
2195    }],
2196    headerPosition: [{
2197      type: Input
2198    }],
2199    animationDuration: [{
2200      type: Input
2201    }],
2202    contentTabIndex: [{
2203      type: Input,
2204      args: [{
2205        transform: numberAttribute
2206      }]
2207    }],
2208    disablePagination: [{
2209      type: Input,
2210      args: [{
2211        transform: booleanAttribute
2212      }]
2213    }],
2214    disableRipple: [{
2215      type: Input,
2216      args: [{
2217        transform: booleanAttribute
2218      }]
2219    }],
2220    preserveContent: [{
2221      type: Input,
2222      args: [{
2223        transform: booleanAttribute
2224      }]
2225    }],
2226    backgroundColor: [{
2227      type: Input
2228    }],
2229    ariaLabel: [{
2230      type: Input,
2231      args: ["aria-label"]
2232    }],
2233    ariaLabelledby: [{
2234      type: Input,
2235      args: ["aria-labelledby"]
2236    }],
2237    selectedIndexChange: [{
2238      type: Output
2239    }],
2240    focusChange: [{
2241      type: Output
2242    }],
2243    animationDone: [{
2244      type: Output
2245    }],
2246    selectedTabChange: [{
2247      type: Output
2248    }]
2249  });
2250})();
2251var MatTabChangeEvent = class {
2252};
2253var nextUniqueId = 0;
2254var MatTabNav = class _MatTabNav extends MatPaginatedTabHeader {
2255  /** Whether the ink bar should fit its width to the size of the tab label content. */
2256  get fitInkBarToContent() {
2257    return this._fitInkBarToContent.value;
2258  }
2259  set fitInkBarToContent(value) {
2260    this._fitInkBarToContent.next(value);
2261    this._changeDetectorRef.markForCheck();
2262  }
2263  get animationDuration() {
2264    return this._animationDuration;
2265  }
2266  set animationDuration(value) {
2267    const stringValue = value + "";
2268    this._animationDuration = /^\d+$/.test(stringValue) ? value + "ms" : stringValue;
2269  }
2270  /**
2271   * Theme color of the background of the tab nav. This API is supported in M2 themes only, it
2272   * has no effect in M3 themes.
2273   *
2274   * For information on applying color variants in M3, see
2275   * https://material.angular.io/guide/theming#using-component-color-variants.
2276   */
2277  get backgroundColor() {
2278    return this._backgroundColor;
2279  }
2280  set backgroundColor(value) {
2281    const classList = this._elementRef.nativeElement.classList;
2282    classList.remove("mat-tabs-with-background", `mat-background-${this.backgroundColor}`);
2283    if (value) {
2284      classList.add("mat-tabs-with-background", `mat-background-${value}`);
2285    }
2286    this._backgroundColor = value;
2287  }
2288  constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode, defaultConfig) {
2289    super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);
2290    this._fitInkBarToContent = new BehaviorSubject(false);
2291    this.stretchTabs = true;
2292    this.disableRipple = false;
2293    this.color = "primary";
2294    this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;
2295    this.fitInkBarToContent = defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;
2296    this.stretchTabs = defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;
2297  }
2298  _itemSelected() {
2299  }
2300  ngAfterContentInit() {
2301    this._inkBar = new MatInkBar(this._items);
2302    this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {
2303      this.updateActiveLink();
2304    });
2305    super.ngAfterContentInit();
2306  }
2307  ngAfterViewInit() {
2308    if (!this.tabPanel && (typeof ngDevMode === "undefined" || ngDevMode)) {
2309      throw new Error("A mat-tab-nav-panel must be specified via [tabPanel].");
2310    }
2311    super.ngAfterViewInit();
2312  }
2313  /** Notifies the component that the active link has been changed. */
2314  updateActiveLink() {
2315    if (!this._items) {
2316      return;
2317    }
2318    const items = this._items.toArray();
2319    for (let i = 0; i < items.length; i++) {
2320      if (items[i].active) {
2321        this.selectedIndex = i;
2322        this._changeDetectorRef.markForCheck();
2323        if (this.tabPanel) {
2324          this.tabPanel._activeTabId = items[i].id;
2325        }
2326        return;
2327      }
2328    }
2329    this.selectedIndex = -1;
2330    this._inkBar.hide();
2331  }
2332  _getRole() {
2333    return this.tabPanel ? "tablist" : this._elementRef.nativeElement.getAttribute("role");
2334  }
2335  static {
2336    this.\u0275fac = function MatTabNav_Factory(__ngFactoryType__) {
2337      return new (__ngFactoryType__ || _MatTabNav)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Directionality, 8), \u0275\u0275directiveInject(NgZone), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ViewportRuler), \u0275\u0275directiveInject(Platform), \u0275\u0275directiveInject(ANIMATION_MODULE_TYPE, 8), \u0275\u0275directiveInject(MAT_TABS_CONFIG, 8));
2338    };
2339  }
2340  static {
2341    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2342      type: _MatTabNav,
2343      selectors: [["", "mat-tab-nav-bar", ""]],
2344      contentQueries: function MatTabNav_ContentQueries(rf, ctx, dirIndex) {
2345        if (rf & 1) {
2346          \u0275\u0275contentQuery(dirIndex, MatTabLink, 5);
2347        }
2348        if (rf & 2) {
2349          let _t;
2350          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._items = _t);
2351        }
2352      },
2353      viewQuery: function MatTabNav_Query(rf, ctx) {
2354        if (rf & 1) {
2355          \u0275\u0275viewQuery(_c1, 7);
2356          \u0275\u0275viewQuery(_c2, 7);
2357          \u0275\u0275viewQuery(_c3, 7);
2358          \u0275\u0275viewQuery(_c4, 5);
2359          \u0275\u0275viewQuery(_c5, 5);
2360        }
2361        if (rf & 2) {
2362          let _t;
2363          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabListContainer = _t.first);
2364          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabList = _t.first);
2365          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tabListInner = _t.first);
2366          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._nextPaginator = _t.first);
2367          \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._previousPaginator = _t.first);
2368        }
2369      },
2370      hostAttrs: [1, "mat-mdc-tab-nav-bar", "mat-mdc-tab-header"],
2371      hostVars: 17,
2372      hostBindings: function MatTabNav_HostBindings(rf, ctx) {
2373        if (rf & 2) {
2374          \u0275\u0275attribute("role", ctx._getRole());
2375          \u0275\u0275styleProp("--mat-tab-animation-duration", ctx.animationDuration);
2376          \u0275\u0275classProp("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");
2377        }
2378      },
2379      inputs: {
2380        fitInkBarToContent: [2, "fitInkBarToContent", "fitInkBarToContent", booleanAttribute],
2381        stretchTabs: [2, "mat-stretch-tabs", "stretchTabs", booleanAttribute],
2382        animationDuration: "animationDuration",
2383        backgroundColor: "backgroundColor",
2384        disableRipple: [2, "disableRipple", "disableRipple", booleanAttribute],
2385        color: "color",
2386        tabPanel: "tabPanel"
2387      },
2388      exportAs: ["matTabNavBar", "matTabNav"],
2389      standalone: true,
2390      features: [\u0275\u0275InputTransformsFeature, \u0275\u0275InheritDefinitionFeature, \u0275\u0275StandaloneFeature],
2391      attrs: _c10,
2392      ngContentSelectors: _c0,
2393      decls: 13,
2394      vars: 6,
2395      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"]],
2396      template: function MatTabNav_Template(rf, ctx) {
2397        if (rf & 1) {
2398          const _r1 = \u0275\u0275getCurrentView();
2399          \u0275\u0275projectionDef();
2400          \u0275\u0275elementStart(0, "div", 5, 0);
2401          \u0275\u0275listener("click", function MatTabNav_Template_div_click_0_listener() {
2402            \u0275\u0275restoreView(_r1);
2403            return \u0275\u0275resetView(ctx._handlePaginatorClick("before"));
2404          })("mousedown", function MatTabNav_Template_div_mousedown_0_listener($event) {
2405            \u0275\u0275restoreView(_r1);
2406            return \u0275\u0275resetView(ctx._handlePaginatorPress("before", $event));
2407          })("touchend", function MatTabNav_Template_div_touchend_0_listener() {
2408            \u0275\u0275restoreView(_r1);
2409            return \u0275\u0275resetView(ctx._stopInterval());
2410          });
2411          \u0275\u0275element(2, "div", 6);
2412          \u0275\u0275elementEnd();
2413          \u0275\u0275elementStart(3, "div", 7, 1);
2414          \u0275\u0275listener("keydown", function MatTabNav_Template_div_keydown_3_listener($event) {
2415            \u0275\u0275restoreView(_r1);
2416            return \u0275\u0275resetView(ctx._handleKeydown($event));
2417          });
2418          \u0275\u0275elementStart(5, "div", 8, 2);
2419          \u0275\u0275listener("cdkObserveContent", function MatTabNav_Template_div_cdkObserveContent_5_listener() {
2420            \u0275\u0275restoreView(_r1);
2421            return \u0275\u0275resetView(ctx._onContentChanges());
2422          });
2423          \u0275\u0275elementStart(7, "div", 9, 3);
2424          \u0275\u0275projection(9);
2425          \u0275\u0275elementEnd()()();
2426          \u0275\u0275elementStart(10, "div", 10, 4);
2427          \u0275\u0275listener("mousedown", function MatTabNav_Template_div_mousedown_10_listener($event) {
2428            \u0275\u0275restoreView(_r1);
2429            return \u0275\u0275resetView(ctx._handlePaginatorPress("after", $event));
2430          })("click", function MatTabNav_Template_div_click_10_listener() {
2431            \u0275\u0275restoreView(_r1);
2432            return \u0275\u0275resetView(ctx._handlePaginatorClick("after"));
2433          })("touchend", function MatTabNav_Template_div_touchend_10_listener() {
2434            \u0275\u0275restoreView(_r1);
2435            return \u0275\u0275resetView(ctx._stopInterval());
2436          });
2437          \u0275\u0275element(12, "div", 6);
2438          \u0275\u0275elementEnd();
2439        }
2440        if (rf & 2) {
2441          \u0275\u0275classProp("mat-mdc-tab-header-pagination-disabled", ctx._disableScrollBefore);
2442          \u0275\u0275property("matRippleDisabled", ctx._disableScrollBefore || ctx.disableRipple);
2443          \u0275\u0275advance(10);
2444          \u0275\u0275classProp("mat-mdc-tab-header-pagination-disabled", ctx._disableScrollAfter);
2445          \u0275\u0275property("matRippleDisabled", ctx._disableScrollAfter || ctx.disableRipple);
2446        }
2447      },
2448      dependencies: [MatRipple, CdkObserveContent],
2449      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}
2449.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{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-app-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-app-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)}.mat-mdc-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-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-mdc-focus-indicator::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mdc-tab__ripple::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}"],
2450      encapsulation: 2
2451    });
2452  }
2453};
2454(() => {
2455  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabNav, [{
2456    type: Component,
2457    args: [{
2458      selector: "[mat-tab-nav-bar]",
2459      exportAs: "matTabNavBar, matTabNav",
2460      host: {
2461        "[attr.role]": "_getRole()",
2462        "class": "mat-mdc-tab-nav-bar mat-mdc-tab-header",
2463        "[class.mat-mdc-tab-header-pagination-controls-enabled]": "_showPaginationControls",
2464        "[class.mat-mdc-tab-header-rtl]": "_getLayoutDirection() == 'rtl'",
2465        "[class.mat-mdc-tab-nav-bar-stretch-tabs]": "stretchTabs",
2466        "[class.mat-primary]": 'color !== "warn" && color !== "accent"',
2467        "[class.mat-accent]": 'color === "accent"',
2468        "[class.mat-warn]": 'color === "warn"',
2469        "[class._mat-animation-noopable]": '_animationMode === "NoopAnimations"',
2470        "[style.--mat-tab-animation-duration]": "animationDuration"
2471      },
2472      encapsulation: ViewEncapsulation$1.None,
2473      changeDetection: ChangeDetectionStrategy.Default,
2474      standalone: true,
2475      imports: [MatRipple, CdkObserveContent],
2476      template: `<!--
2477 Note that this intentionally uses a \`div\` instead of a \`button\`, because it's not part of
2478 the regular tabs flow and is only here to support mouse users. It should also not be focusable.
2479-->
2480<div class="mat-mdc-tab-header-pagination mat-mdc-tab-header-pagination-before"
2481     #previousPaginator
2482     mat-ripple
2483     [matRippleDisabled]="_disableScrollBefore || disableRipple"
2484     [class.mat-mdc-tab-header-pagination-disabled]="_disableScrollBefore"
2485     (click)="_handlePaginatorClick('before')"
2486     (mousedown)="_handlePaginatorPress('before', $event)"
2487     (touchend)="_stopInterval()">
2488  <div class="mat-mdc-tab-header-pagination-chevron"></div>
2489</div>
2490
2491<div class="mat-mdc-tab-link-container" #tabListContainer (keydown)="_handleKeydown($event)">
2492  <div class="mat-mdc-tab-list" #tabList (cdkObserveContent)="_onContentChanges()">
2493    <div class="mat-mdc-tab-links" #tabListInner>
2494      <ng-content></ng-content>
2495    </div>
2496  </div>
2497</div>
2498
2499<div class="mat-mdc-tab-header-pagination mat-mdc-tab-header-pagination-after"
2500     #nextPaginator
2501     mat-ripple
2502     [matRippleDisabled]="_disableScrollAfter || disableRipple"
2503     [class.mat-mdc-tab-header-pagination-disabled]="_disableScrollAfter"
2504     (mousedown)="_handlePaginatorPress('after', $event)"
2505     (click)="_handlePaginatorClick('after')"
2506     (touchend)="_stopInterval()">
2507  <div class="mat-mdc-tab-header-pagination-chevron"></div>
2508</div>
2509`,
2510      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}
2510.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{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-app-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-app-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)}.mat-mdc-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-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-mdc-focus-indicator::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mdc-tab__ripple::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}"]
2511    }]
2512  }], () => [{
2513    type: ElementRef
2514  }, {
2515    type: Directionality,
2516    decorators: [{
2517      type: Optional
2518    }]
2519  }, {
2520    type: NgZone
2521  }, {
2522    type: ChangeDetectorRef
2523  }, {
2524    type: ViewportRuler
2525  }, {
2526    type: Platform
2527  }, {
2528    type: void 0,
2529    decorators: [{
2530      type: Optional
2531    }, {
2532      type: Inject,
2533      args: [ANIMATION_MODULE_TYPE]
2534    }]
2535  }, {
2536    type: void 0,
2537    decorators: [{
2538      type: Optional
2539    }, {
2540      type: Inject,
2541      args: [MAT_TABS_CONFIG]
2542    }]
2543  }], {
2544    fitInkBarToContent: [{
2545      type: Input,
2546      args: [{
2547        transform: booleanAttribute
2548      }]
2549    }],
2550    stretchTabs: [{
2551      type: Input,
2552      args: [{
2553        alias: "mat-stretch-tabs",
2554        transform: booleanAttribute
2555      }]
2556    }],
2557    animationDuration: [{
2558      type: Input
2559    }],
2560    _items: [{
2561      type: ContentChildren,
2562      args: [forwardRef(() => MatTabLink), {
2563        descendants: true
2564      }]
2565    }],
2566    backgroundColor: [{
2567      type: Input
2568    }],
2569    disableRipple: [{
2570      type: Input,
2571      args: [{
2572        transform: booleanAttribute
2573      }]
2574    }],
2575    color: [{
2576      type: Input
2577    }],
2578    tabPanel: [{
2579      type: Input
2580    }],
2581    _tabListContainer: [{
2582      type: ViewChild,
2583      args: ["tabListContainer", {
2584        static: true
2585      }]
2586    }],
2587    _tabList: [{
2588      type: ViewChild,
2589      args: ["tabList", {
2590        static: true
2591      }]
2592    }],
2593    _tabListInner: [{
2594      type: ViewChild,
2595      args: ["tabListInner", {
2596        static: true
2597      }]
2598    }],
2599    _nextPaginator: [{
2600      type: ViewChild,
2601      args: ["nextPaginator"]
2602    }],
2603    _previousPaginator: [{
2604      type: ViewChild,
2605      args: ["previousPaginator"]
2606    }]
2607  });
2608})();
2609var MatTabLink = class _MatTabLink extends InkBarItem {
2610  /** Whether the link is active. */
2611  get active() {
2612    return this._isActive;
2613  }
2614  set active(value) {
2615    if (value !== this._isActive) {
2616      this._isActive = value;
2617      this._tabNavBar.updateActiveLink();
2618    }
2619  }
2620  /**
2621   * Whether ripples are disabled on interaction.
2622   * @docs-private
2623   */
2624  get rippleDisabled() {
2625    return this.disabled || this.disableRipple || this._tabNavBar.disableRipple || !!this.rippleConfig.disabled;
2626  }
2627  constructor(_tabNavBar, elementRef, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {
2628    super();
2629    this._tabNavBar = _tabNavBar;
2630    this.elementRef = elementRef;
2631    this._focusMonitor = _focusMonitor;
2632    this._destroyed = new Subject();
2633    this._isActive = false;
2634    this.disabled = false;
2635    this.disableRipple = false;
2636    this.tabIndex = 0;
2637    this.id = `mat-tab-link-${nextUniqueId++}`;
2638    this.rippleConfig = globalRippleOptions || {};
2639    this.tabIndex = parseInt(tabIndex) || 0;
2640    if (animationMode === "NoopAnimations") {
2641      this.rippleConfig.animation = {
2642        enterDuration: 0,
2643        exitDuration: 0
2644      };
2645    }
2646    _tabNavBar._fitInkBarToContent.pipe(takeUntil(this._destroyed)).subscribe((fitInkBarToContent) => {
2647      this.fitInkBarToContent = fitInkBarToContent;
2648    });
2649  }
2650  /** Focuses the tab link. */
2651  focus() {
2652    this.elementRef.nativeElement.focus();
2653  }
2654  ngAfterViewInit() {
2655    this._focusMonitor.monitor(this.elementRef);
2656  }
2657  ngOnDestroy() {
2658    this._destroyed.next();
2659    this._destroyed.complete();
2660    super.ngOnDestroy();
2661    this._focusMonitor.stopMonitoring(this.elementRef);
2662  }
2663  _handleFocus() {
2664    this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);
2665  }
2666  _handleKeydown(event) {
2667    if (event.keyCode === SPACE || event.keyCode === ENTER) {
2668      if (this.disabled) {
2669        event.preventDefault();
2670      } else if (this._tabNavBar.tabPanel) {
2671        if (event.keyCode === SPACE) {
2672          event.preventDefault();
2673        }
2674        this.elementRef.nativeElement.click();
2675      }
2676    }
2677  }
2678  _getAriaControls() {
2679    return this._tabNavBar.tabPanel ? this._tabNavBar.tabPanel?.id : this.elementRef.nativeElement.getAttribute("aria-controls");
2680  }
2681  _getAriaSelected() {
2682    if (this._tabNavBar.tabPanel) {
2683      return this.active ? "true" : "false";
2684    } else {
2685      return this.elementRef.nativeElement.getAttribute("aria-selected");
2686    }
2687  }
2688  _getAriaCurrent() {
2689    return this.active && !this._tabNavBar.tabPanel ? "page" : null;
2690  }
2691  _getRole() {
2692    return this._tabNavBar.tabPanel ? "tab" : this.elementRef.nativeElement.getAttribute("role");
2693  }
2694  _getTabIndex() {
2695    if (this._tabNavBar.tabPanel) {
2696      return this._isActive && !this.disabled ? 0 : -1;
2697    } else {
2698      return this.disabled ? -1 : this.tabIndex;
2699    }
2700  }
2701  static {
2702    this.\u0275fac = function MatTabLink_Factory(__ngFactoryType__) {
2703      return new (__ngFactoryType__ || _MatTabLink)(\u0275\u0275directiveInject(MatTabNav), \u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(MAT_RIPPLE_GLOBAL_OPTIONS, 8), \u0275\u0275injectAttribute("tabindex"), \u0275\u0275directiveInject(FocusMonitor), \u0275\u0275directiveInject(ANIMATION_MODULE_TYPE, 8));
2704    };
2705  }
2706  static {
2707    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2708      type: _MatTabLink,
2709      selectors: [["", "mat-tab-link", ""], ["", "matTabLink", ""]],
2710      hostAttrs: [1, "mdc-tab", "mat-mdc-tab-link", "mat-mdc-focus-indicator"],
2711      hostVars: 11,
2712      hostBindings: function MatTabLink_HostBindings(rf, ctx) {
2713        if (rf & 1) {
2714          \u0275\u0275listener("focus", function MatTabLink_focus_HostBindingHandler() {
2715            return ctx._handleFocus();
2716          })("keydown", function MatTabLink_keydown_HostBindingHandler($event) {
2717            return ctx._handleKeydown($event);
2718          });
2719        }
2720        if (rf & 2) {
2721          \u0275\u0275attribute("aria-controls", ctx._getAriaControl
2721s())("aria-current", ctx._getAriaCurrent())("aria-disabled", ctx.disabled)("aria-selected", ctx._getAriaSelected())("id", ctx.id)("tabIndex", ctx._getTabIndex())("role", ctx._getRole());
2722          \u0275\u0275classProp("mat-mdc-tab-disabled", ctx.disabled)("mdc-tab--active", ctx.active);
2723        }
2724      },
2725      inputs: {
2726        active: [2, "active", "active", booleanAttribute],
2727        disabled: [2, "disabled", "disabled", booleanAttribute],
2728        disableRipple: [2, "disableRipple", "disableRipple", booleanAttribute],
2729        tabIndex: [2, "tabIndex", "tabIndex", (value) => value == null ? 0 : numberAttribute(value)],
2730        id: "id"
2731      },
2732      exportAs: ["matTabLink"],
2733      standalone: true,
2734      features: [\u0275\u0275InputTransformsFeature, \u0275\u0275InheritDefinitionFeature, \u0275\u0275StandaloneFeature],
2735      attrs: _c11,
2736      ngContentSelectors: _c0,
2737      decls: 5,
2738      vars: 2,
2739      consts: [[1, "mdc-tab__ripple"], ["mat-ripple", "", 1, "mat-mdc-tab-ripple", 3, "matRippleTrigger", "matRippleDisabled"], [1, "mdc-tab__content"], [1, "mdc-tab__text-label"]],
2740      template: function MatTabLink_Template(rf, ctx) {
2741        if (rf & 1) {
2742          \u0275\u0275projectionDef();
2743          \u0275\u0275element(0, "span", 0)(1, "div", 1);
2744          \u0275\u0275elementStart(2, "span", 2)(3, "span", 3);
2745          \u0275\u0275projection(4);
2746          \u0275\u0275elementEnd()();
2747        }
2748        if (rf & 2) {
2749          \u0275\u0275advance();
2750          \u0275\u0275property("matRippleTrigger", ctx.elementRef.nativeElement)("matRippleDisabled", ctx.rippleDisabled);
2751        }
2752      },
2753      dependencies: [MatRipple],
2754      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);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-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-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-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-app-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-app-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-app-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-app-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-app-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-app-on-surface))}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-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-app-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}}'],
2755      encapsulation: 2,
2756      changeDetection: 0
2757    });
2758  }
2759};
2760(() => {
2761  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabLink, [{
2762    type: Component,
2763    args: [{
2764      selector: "[mat-tab-link], [matTabLink]",
2765      exportAs: "matTabLink",
2766      changeDetection: ChangeDetectionStrategy.OnPush,
2767      encapsulation: ViewEncapsulation$1.None,
2768      host: {
2769        "class": "mdc-tab mat-mdc-tab-link mat-mdc-focus-indicator",
2770        "[attr.aria-controls]": "_getAriaControls()",
2771        "[attr.aria-current]": "_getAriaCurrent()",
2772        "[attr.aria-disabled]": "disabled",
2773        "[attr.aria-selected]": "_getAriaSelected()",
2774        "[attr.id]": "id",
2775        "[attr.tabIndex]": "_getTabIndex()",
2776        "[attr.role]": "_getRole()",
2777        "[class.mat-mdc-tab-disabled]": "disabled",
2778        "[class.mdc-tab--active]": "active",
2779        "(focus)": "_handleFocus()",
2780        "(keydown)": "_handleKeydown($event)"
2781      },
2782      standalone: true,
2783      imports: [MatRipple],
2784      template: '<span class="mdc-tab__ripple"></span>\n\n<div\n  class="mat-mdc-tab-ripple"\n  mat-ripple\n  [matRippleTrigger]="elementRef.nativeElement"\n  [matRippleDisabled]="rippleDisabled"></div>\n\n<span class="mdc-tab__content">\n  <span class="mdc-tab__text-label">\n    <ng-content></ng-content>\n  </span>\n</span>\n\n',
2785      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);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-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-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-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-app-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-app-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-app-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-app-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-app-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-app-on-surface))}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-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-app-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}}']
2786    }]
2787  }], () => [{
2788    type: MatTabNav
2789  }, {
2790    type: ElementRef
2791  }, {
2792    type: void 0,
2793    decorators: [{
2794      type: Optional
2795    }, {
2796      type: Inject,
2797      args: [MAT_RIPPLE_GLOBAL_OPTIONS]
2798    }]
2799  }, {
2800    type: void 0,
2801    decorators: [{
2802      type: Attribute,
2803      args: ["tabindex"]
2804    }]
2805  }, {
2806    type: FocusMonitor
2807  }, {
2808    type: void 0,
2809    decorators: [{
2810      type: Optional
2811    }, {
2812      type: Inject,
2813      args: [ANIMATION_MODULE_TYPE]
2814    }]
2815  }], {
2816    active: [{
2817      type: Input,
2818      args: [{
2819        transform: booleanAttribute
2820      }]
2821    }],
2822    disabled: [{
2823      type: Input,
2824      args: [{
2825        transform: booleanAttribute
2826      }]
2827    }],
2828    disableRipple: [{
2829      type: Input,
2830      args: [{
2831        transform: booleanAttribute
2832      }]
2833    }],
2834    tabIndex: [{
2835      type: Input,
2836      args: [{
2837        transform: (value) => value == null ? 0 : numberAttribute(value)
2838      }]
2839    }],
2840    id: [{
2841      type: Input
2842    }]
2843  });
2844})();
2845var MatTabNavPanel = class _MatTabNavPanel {
2846  constructor() {
2847    this.id = `mat-tab-nav-panel-${nextUniqueId++}`;
2848  }
2849  static {
2850    this.\u0275fac = function MatTabNavPanel_Factory(__ngFactoryType__) {
2851      return new (__ngFactoryType__ || _MatTabNavPanel)();
2852    };
2853  }
2854  static {
2855    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2856      type: _MatTabNavPanel,
2857      selectors: [["mat-tab-nav-panel"]],
2858      hostAttrs: ["role", "tabpanel", 1, "mat-mdc-tab-nav-panel"],
2859      hostVars: 2,
2860      hostBindings: function MatTabNavPanel_HostBindings(rf, ctx) {
2861        if (rf & 2) {
2862          \u0275\u0275attribute("aria-labelledby", ctx._activeTabId)("id", ctx.id);
2863        }
2864      },
2865      inputs: {
2866        id: "id"
2867      },
2868      exportAs: ["matTabNavPanel"],
2869      standalone: true,
2870      features: [\u0275\u0275StandaloneFeature],
2871      ngContentSelectors: _c0,
2872      decls: 1,
2873      vars: 0,
2874      template: function MatTabNavPanel_Template(rf, ctx) {
2875        if (rf & 1) {
2876          \u0275\u0275projectionDef();
2877          \u0275\u0275projection(0);
2878        }
2879      },
2880      encapsulation: 2,
2881      changeDetection: 0
2882    });
2883  }
2884};
2885(() => {
2886  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabNavPanel, [{
2887    type: Component,
2888    args: [{
2889      selector: "mat-tab-nav-panel",
2890      exportAs: "matTabNavPanel",
2891      template: "<ng-content></ng-content>",
2892      host: {
2893        "[attr.aria-labelledby]": "_activeTabId",
2894        "[attr.id]": "id",
2895        "class": "mat-mdc-tab-nav-panel",
2896        "role": "tabpanel"
2897      },
2898      encapsulation: ViewEncapsulation$1.None,
2899      changeDetection: ChangeDetectionStrategy.OnPush,
2900      standalone: true
2901    }]
2902  }], null, {
2903    id: [{
2904      type: Input
2905    }]
2906  });
2907})();
2908var MatTabsModule = class _MatTabsModule {
2909  static {
2910    this.\u0275fac = function MatTabsModule_Factory(__ngFactoryType__) {
2911      return new (__ngFactoryType__ || _MatTabsModule)();
2912    };
2913  }
2914  static {
2915    this.\u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({
2916      type: _MatTabsModule
2917    });
2918  }
2919  static {
2920    this.\u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({
2921      imports: [MatCommonModule, MatCommonModule]
2922    });
2923  }
2924};
2925(() => {
2926  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTabsModule, [{
2927    type: NgModule,
2928    args: [{
2929      imports: [MatCommonModule, MatTabContent, MatTabLabel, MatTab, MatTabGroup, MatTabNav, MatTabNavPanel, MatTabLink],
2930      exports: [MatCommonModule, MatTabContent, MatTabLabel, MatTab, MatTabGroup, MatTabNav, MatTabNavPanel, MatTabLink]
2931    }]
2932  }], null, null);
2933})();
2934
2935export {
2936  MatTabLabel,
2937  MatTab,
2938  MatTabGroup,
2939  MatTabsModule
2940};
2941//# sourceMappingURL=chunk-GLGFOAZ2.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.