{"version":3,"sources":["libs/shared/utils/configs/src/shared-api.config.ts","libs/shared/utils/configs/src/shared-default-grid-options.config.ts","node_modules/@angular/cdk/fesm2022/observers/private.mjs","node_modules/@angular/material/fesm2022/form-field.mjs","node_modules/@angular/material/fesm2022/select.mjs"],"sourcesContent":["export class SharedAPIConfig {\n public static DEFAULT_PAGE = 1;\n public static DEFAULT_SORT: 'asc' | 'desc' = 'desc';\n public static DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n}\n","import {\n SharedColDef,\n SharedGridComponents,\n SharedGridOptions,\n SharedGridOverlayState,\n} from '@ess/shared/utils/models';\n\nexport class SharedDefaultGridOptions implements SharedGridOptions {\n animateRows = true;\n context: { componentParent: T };\n domLayout: 'normal' | 'autoHeight' | 'print' | undefined = 'normal';\n suppressCellFocus = true;\n suppressClipboardPaste = true;\n enableCellTextSelection = true;\n ensureDomOrder = true;\n components: SharedGridComponents;\n noRowsOverlayComponentParams: SharedGridOverlayState = {\n placeholder: 'No rows to show',\n };\n suppressDragLeaveHidesColumns = true;\n\n defaultColDef: SharedColDef | undefined = {\n sortable: true,\n resizable: false,\n suppressMovable: true,\n comparator: () => 0,\n sortingOrder: ['asc', 'desc'],\n };\n\n static readonly defaultColumnOptions: SharedColDef = {\n toggleEnabled: true,\n };\n\n constructor(scope: T, overlayComponent: any) {\n this.context = { componentParent: scope };\n this.components = {\n agNoRowsOverlay: overlayComponent,\n agLoadingOverlay: overlayComponent,\n };\n }\n}\n","import * as i0 from '@angular/core';\nimport { inject, NgZone, Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { filter, shareReplay, takeUntil } from 'rxjs/operators';\n\n/**\n * Handler that logs \"ResizeObserver loop limit exceeded\" errors.\n * These errors are not shown in the Chrome console, so we log them to ensure developers are aware.\n * @param e The error\n */\nconst loopLimitExceededErrorHandler = e => {\n if (e instanceof ErrorEvent && e.message === 'ResizeObserver loop limit exceeded') {\n console.error(`${e.message}. This could indicate a performance issue with your app. See https://github.com/WICG/resize-observer/blob/master/explainer.md#error-handling`);\n }\n};\n/**\n * A shared ResizeObserver to be used for a particular box type (content-box, border-box, or\n * device-pixel-content-box)\n */\nclass SingleBoxSharedResizeObserver {\n constructor(/** The box type to observe for resizes. */\n _box) {\n this._box = _box;\n /** Stream that emits when the shared observer is destroyed. */\n this._destroyed = new Subject();\n /** Stream of all events from the ResizeObserver. */\n this._resizeSubject = new Subject();\n /** A map of elements to streams of their resize events. */\n this._elementObservables = new Map();\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(entries => this._resizeSubject.next(entries));\n }\n }\n /**\n * Gets a stream of resize events for the given element.\n * @param target The element to observe.\n * @return The stream of resize events for the element.\n */\n observe(target) {\n if (!this._elementObservables.has(target)) {\n this._elementObservables.set(target, new Observable(observer => {\n const subscription = this._resizeSubject.subscribe(observer);\n this._resizeObserver?.observe(target, {\n box: this._box\n });\n return () => {\n this._resizeObserver?.unobserve(target);\n subscription.unsubscribe();\n this._elementObservables.delete(target);\n };\n }).pipe(filter(entries => entries.some(entry => entry.target === target)),\n // Share a replay of the last event so that subsequent calls to observe the same element\n // receive initial sizing info like the first one. Also enable ref counting so the\n // element will be automatically unobserved when there are no more subscriptions.\n shareReplay({\n bufferSize: 1,\n refCount: true\n }), takeUntil(this._destroyed)));\n }\n return this._elementObservables.get(target);\n }\n /** Destroys this instance. */\n destroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._resizeSubject.complete();\n this._elementObservables.clear();\n }\n}\n/**\n * Allows observing resize events on multiple elements using a shared set of ResizeObserver.\n * Sharing a ResizeObserver instance is recommended for better performance (see\n * https://github.com/WICG/resize-observer/issues/59).\n *\n * Rather than share a single `ResizeObserver`, this class creates one `ResizeObserver` per type\n * of observed box ('content-box', 'border-box', and 'device-pixel-content-box'). This avoids\n * later calls to `observe` with a different box type from influencing the events dispatched to\n * earlier calls.\n */\nlet SharedResizeObserver = /*#__PURE__*/(() => {\n class SharedResizeObserver {\n constructor() {\n /** Map of box type to shared resize observer. */\n this._observers = new Map();\n /** The Angular zone. */\n this._ngZone = inject(NgZone);\n if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n this._ngZone.runOutsideAngular(() => {\n window.addEventListener('error', loopLimitExceededErrorHandler);\n });\n }\n }\n ngOnDestroy() {\n for (const [, observer] of this._observers) {\n observer.destroy();\n }\n this._observers.clear();\n if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n window.removeEventListener('error', loopLimitExceededErrorHandler);\n }\n }\n /**\n * Gets a stream of resize events for the given target element and box type.\n * @param target The element to observe for resizes.\n * @param options Options to pass to the `ResizeObserver`\n * @return The stream of resize events for the element.\n */\n observe(target, options) {\n const box = options?.box || 'content-box';\n if (!this._observers.has(box)) {\n this._observers.set(box, new SingleBoxSharedResizeObserver(box));\n }\n return this._observers.get(box).observe(target);\n }\n static {\n this.ɵfac = function SharedResizeObserver_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedResizeObserver)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SharedResizeObserver,\n factory: SharedResizeObserver.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SharedResizeObserver;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SharedResizeObserver };\n","import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, Attribute, Input, inject, NgZone, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, contentChild, Injector, computed, afterRender, ANIMATION_MODULE_TYPE, Optional, Inject, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/platform';\nimport { DOCUMENT, NgTemplateOutlet, CommonModule } from '@angular/common';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** The floating label for a `mat-form-field`. */\nconst _c0 = [\"notch\"];\nconst _c1 = [\"matFormFieldNotchedOutline\", \"\"];\nconst _c2 = [\"*\"];\nconst _c3 = [\"textField\"];\nconst _c4 = [\"iconPrefixContainer\"];\nconst _c5 = [\"textPrefixContainer\"];\nconst _c6 = [\"iconSuffixContainer\"];\nconst _c7 = [\"textSuffixContainer\"];\nconst _c8 = [\"*\", [[\"mat-label\"]], [[\"\", \"matPrefix\", \"\"], [\"\", \"matIconPrefix\", \"\"]], [[\"\", \"matTextPrefix\", \"\"]], [[\"\", \"matTextSuffix\", \"\"]], [[\"\", \"matSuffix\", \"\"], [\"\", \"matIconSuffix\", \"\"]], [[\"mat-error\"], [\"\", \"matError\", \"\"]], [[\"mat-hint\", 3, \"align\", \"end\"]], [[\"mat-hint\", \"align\", \"end\"]]];\nconst _c9 = [\"*\", \"mat-label\", \"[matPrefix], [matIconPrefix]\", \"[matTextPrefix]\", \"[matTextSuffix]\", \"[matSuffix], [matIconSuffix]\", \"mat-error, [matError]\", \"mat-hint:not([align='end'])\", \"mat-hint[align='end']\"];\nfunction MatFormField_ng_template_0_Conditional_0_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 21);\n }\n}\nfunction MatFormField_ng_template_0_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"label\", 20);\n i0.ɵɵprojection(1, 1);\n i0.ɵɵtemplate(2, MatFormField_ng_template_0_Conditional_0_Conditional_2_Template, 1, 0, \"span\", 21);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"floating\", ctx_r1._shouldLabelFloat())(\"monitorResize\", ctx_r1._hasOutline())(\"id\", ctx_r1._labelId);\n i0.ɵɵattribute(\"for\", ctx_r1._control.disableAutomaticLabeling ? null : ctx_r1._control.id);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(!ctx_r1.hideRequiredMarker && ctx_r1._control.required ? 2 : -1);\n }\n}\nfunction MatFormField_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatFormField_ng_template_0_Conditional_0_Template, 3, 5, \"label\", 20);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵconditional(ctx_r1._hasFloatingLabel() ? 0 : -1);\n }\n}\nfunction MatFormField_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 7);\n }\n}\nfunction MatFormField_Conditional_6_Conditional_1_ng_template_0_Template(rf, ctx) {}\nfunction MatFormField_Conditional_6_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatFormField_Conditional_6_Conditional_1_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n }\n if (rf & 2) {\n i0.ɵɵnextContext(2);\n const labelTemplate_r3 = i0.ɵɵreference(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", labelTemplate_r3);\n }\n}\nfunction MatFormField_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 9);\n i0.ɵɵtemplate(1, MatFormField_Conditional_6_Conditional_1_Template, 1, 1, null, 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"matFormFieldNotchedOutlineOpen\", ctx_r1._shouldLabelFloat());\n i0.ɵɵadvance();\n i0.ɵɵconditional(!ctx_r1._forceDisplayInfixLabel() ? 1 : -1);\n }\n}\nfunction MatFormField_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 10, 2);\n i0.ɵɵprojection(2, 2);\n i0.ɵɵelementEnd();\n }\n}\nfunction MatFormField_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 11, 3);\n i0.ɵɵprojection(2, 3);\n i0.ɵɵelementEnd();\n }\n}\nfunction MatFormField_Conditional_10_ng_template_0_Template(rf, ctx) {}\nfunction MatFormField_Conditional_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatFormField_Conditional_10_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const labelTemplate_r3 = i0.ɵɵreference(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", labelTemplate_r3);\n }\n}\nfunction MatFormField_Conditional_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 14, 4);\n i0.ɵɵprojection(2, 4);\n i0.ɵɵelementEnd();\n }\n}\nfunction MatFormField_Conditional_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 15, 5);\n i0.ɵɵprojection(2, 5);\n i0.ɵɵelementEnd();\n }\n}\nfunction MatFormField_Conditional_14_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 16);\n }\n}\nfunction MatFormField_Case_16_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 18);\n i0.ɵɵprojection(1, 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@transitionMessages\", ctx_r1._subscriptAnimationState);\n }\n}\nfunction MatFormField_Case_17_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"mat-hint\", 22);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"id\", ctx_r1._hintLabelId);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.hintLabel);\n }\n}\nfunction MatFormField_Case_17_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 19);\n i0.ɵɵtemplate(1, MatFormField_Case_17_Conditional_1_Template, 2, 2, \"mat-hint\", 22);\n i0.ɵɵprojection(2, 7);\n i0.ɵɵelement(3, \"div\", 23);\n i0.ɵɵprojection(4, 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@transitionMessages\", ctx_r1._subscriptAnimationState);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.hintLabel ? 1 : -1);\n }\n}\nlet MatLabel = /*#__PURE__*/(() => {\n class MatLabel {\n static {\n this.ɵfac = function MatLabel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatLabel)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatLabel,\n selectors: [[\"mat-label\"]],\n standalone: true\n });\n }\n }\n return MatLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextUniqueId$2 = 0;\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_ERROR = /*#__PURE__*/new InjectionToken('MatError');\n/** Single error message to be shown underneath the form-field. */\nlet MatError = /*#__PURE__*/(() => {\n class MatError {\n constructor(ariaLive, elementRef) {\n this.id = `mat-mdc-error-${nextUniqueId$2++}`;\n // If no aria-live value is set add 'polite' as a default. This is preferred over setting\n // role='alert' so that screen readers do not interrupt the current task to read this aloud.\n if (!ariaLive) {\n elementRef.nativeElement.setAttribute('aria-live', 'polite');\n }\n }\n static {\n this.ɵfac = function MatError_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatError)(i0.ɵɵinjectAttribute('aria-live'), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatError,\n selectors: [[\"mat-error\"], [\"\", \"matError\", \"\"]],\n hostAttrs: [\"aria-atomic\", \"true\", 1, \"mat-mdc-form-field-error\", \"mat-mdc-form-field-bottom-align\"],\n hostVars: 1,\n hostBindings: function MatError_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n }\n },\n inputs: {\n id: \"id\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_ERROR,\n useExisting: MatError\n }])]\n });\n }\n }\n return MatError;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextUniqueId$1 = 0;\n/** Hint text to be shown underneath the form field control. */\nlet MatHint = /*#__PURE__*/(() => {\n class MatHint {\n constructor() {\n /** Whether to align the hint label at the start or end of the line. */\n this.align = 'start';\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n this.id = `mat-mdc-hint-${nextUniqueId$1++}`;\n }\n static {\n this.ɵfac = function MatHint_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatHint)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatHint,\n selectors: [[\"mat-hint\"]],\n hostAttrs: [1, \"mat-mdc-form-field-hint\", \"mat-mdc-form-field-bottom-align\"],\n hostVars: 4,\n hostBindings: function MatHint_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n i0.ɵɵattribute(\"align\", null);\n i0.ɵɵclassProp(\"mat-mdc-form-field-hint-end\", ctx.align === \"end\");\n }\n },\n inputs: {\n align: \"align\",\n id: \"id\"\n },\n standalone: true\n });\n }\n }\n return MatHint;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_PREFIX = /*#__PURE__*/new InjectionToken('MatPrefix');\n/** Prefix to be placed in front of the form field. */\nlet MatPrefix = /*#__PURE__*/(() => {\n class MatPrefix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static {\n this.ɵfac = function MatPrefix_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatPrefix)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatPrefix,\n selectors: [[\"\", \"matPrefix\", \"\"], [\"\", \"matIconPrefix\", \"\"], [\"\", \"matTextPrefix\", \"\"]],\n inputs: {\n _isTextSelector: [0, \"matTextPrefix\", \"_isTextSelector\"]\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_PREFIX,\n useExisting: MatPrefix\n }])]\n });\n }\n }\n return MatPrefix;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SUFFIX = /*#__PURE__*/new InjectionToken('MatSuffix');\n/** Suffix to be placed at the end of the form field. */\nlet MatSuffix = /*#__PURE__*/(() => {\n class MatSuffix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static {\n this.ɵfac = function MatSuffix_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSuffix)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSuffix,\n selectors: [[\"\", \"matSuffix\", \"\"], [\"\", \"matIconSuffix\", \"\"], [\"\", \"matTextSuffix\", \"\"]],\n inputs: {\n _isTextSelector: [0, \"matTextSuffix\", \"_isTextSelector\"]\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SUFFIX,\n useExisting: MatSuffix\n }])]\n });\n }\n }\n return MatSuffix;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** An injion token for the parent form-field. */\nconst FLOATING_LABEL_PARENT = /*#__PURE__*/new InjectionToken('FloatingLabelParent');\n/**\n * Internal directive that maintains a MDC floating label. This directive does not\n * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of\n * including it just to measure the label width and toggle some classes.\n *\n * The use of a directive allows us to conditionally render a floating label in the\n * template without having to manually manage instantiation and destruction of the\n * floating label component based on.\n *\n * The component is responsible for setting up the floating label styles, measuring label\n * width for the outline notch, and providing inputs that can be used to toggle the\n * label's floating or required state.\n */\nlet MatFormFieldFloatingLabel = /*#__PURE__*/(() => {\n class MatFormFieldFloatingLabel {\n /** Whether the label is floating. */\n get floating() {\n return this._floating;\n }\n set floating(value) {\n this._floating = value;\n if (this.monitorResize) {\n this._handleResize();\n }\n }\n /** Whether to monitor for resize events on the floating label. */\n get monitorResize() {\n return this._monitorResize;\n }\n set monitorResize(value) {\n this._monitorResize = value;\n if (this._monitorResize) {\n this._subscribeToResize();\n } else {\n this._resizeSubscription.unsubscribe();\n }\n }\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this._floating = false;\n this._monitorResize = false;\n /** The shared ResizeObserver. */\n this._resizeObserver = inject(SharedResizeObserver);\n /** The Angular zone. */\n this._ngZone = inject(NgZone);\n /** The parent form-field. */\n this._parent = inject(FLOATING_LABEL_PARENT);\n /** The current resize event subscription. */\n this._resizeSubscription = new Subscription();\n }\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n /** Gets the width of the label. Used for the outline notch. */\n getWidth() {\n return estimateScrollWidth(this._elementRef.nativeElement);\n }\n /** Gets the HTML element for the floating label. */\n get element() {\n return this._elementRef.nativeElement;\n }\n /** Handles resize events from the ResizeObserver. */\n _handleResize() {\n // In the case where the label grows in size, the following sequence of events occurs:\n // 1. The label grows by 1px triggering the ResizeObserver\n // 2. The notch is expanded to accommodate the entire label\n // 3. The label expands to its full width, triggering the ResizeObserver again\n //\n // This is expected, but If we allow this to all happen within the same macro task it causes an\n // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until\n // the next macro task.\n setTimeout(() => this._parent._handleLabelResized());\n }\n /** Subscribes to resize events. */\n _subscribeToResize() {\n this._resizeSubscription.unsubscribe();\n this._ngZone.runOutsideAngular(() => {\n this._resizeSubscription = this._resizeObserver.observe(this._elementRef.nativeElement, {\n box: 'border-box'\n }).subscribe(() => this._handleResize());\n });\n }\n static {\n this.ɵfac = function MatFormFieldFloatingLabel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormFieldFloatingLabel)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatFormFieldFloatingLabel,\n selectors: [[\"label\", \"matFormFieldFloatingLabel\", \"\"]],\n hostAttrs: [1, \"mdc-floating-label\", \"mat-mdc-floating-label\"],\n hostVars: 2,\n hostBindings: function MatFormFieldFloatingLabel_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-floating-label--float-above\", ctx.floating);\n }\n },\n inputs: {\n floating: \"floating\",\n monitorResize: \"monitorResize\"\n },\n standalone: true\n });\n }\n }\n return MatFormFieldFloatingLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Estimates the scroll width of an element.\n * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts\n */\nfunction estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n const htmlEl = element;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n const clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n const scrollWidth = clone.scrollWidth;\n clone.remove();\n return scrollWidth;\n}\n\n/** Class added when the line ripple is active. */\nconst ACTIVATE_CLASS = 'mdc-line-ripple--active';\n/** Class added when the line ripple is being deactivated. */\nconst DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';\n/**\n * Internal directive that creates an instance of the MDC line-ripple component. Using a\n * directive allows us to conditionally render a line-ripple in the template without having\n * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.\n *\n * The directive sets up the styles for the line-ripple and provides an API for activating\n * and deactivating the line-ripple.\n */\nlet MatFormFieldLineRipple = /*#__PURE__*/(() => {\n class MatFormFieldLineRipple {\n constructor(_elementRef, ngZone) {\n this._elementRef = _elementRef;\n this._handleTransitionEnd = event => {\n const classList = this._elementRef.nativeElement.classList;\n const isDeactivating = classList.contains(DEACTIVATING_CLASS);\n if (event.propertyName === 'opacity' && isDeactivating) {\n classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);\n }\n };\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('transitionend', this._handleTransitionEnd);\n });\n }\n activate() {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(DEACTIVATING_CLASS);\n classList.add(ACTIVATE_CLASS);\n }\n deactivate() {\n this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);\n }\n ngOnDestroy() {\n this._elementRef.nativeElement.removeEventListener('transitionend', this._handleTransitionEnd);\n }\n static {\n this.ɵfac = function MatFormFieldLineRipple_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormFieldLineRipple)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatFormFieldLineRipple,\n selectors: [[\"div\", \"matFormFieldLineRipple\", \"\"]],\n hostAttrs: [1, \"mdc-line-ripple\"],\n standalone: true\n });\n }\n }\n return MatFormFieldLineRipple;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Internal component that creates an instance of the MDC notched-outline component.\n *\n * The component sets up the HTML structure and styles for the notched-outline. It provides\n * inputs to toggle the notch state and width.\n */\nlet MatFormFieldNotchedOutline = /*#__PURE__*/(() => {\n class MatFormFieldNotchedOutline {\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Whether the notch should be opened. */\n this.open = false;\n }\n ngAfterViewInit() {\n const label = this._elementRef.nativeElement.querySelector('.mdc-floating-label');\n if (label) {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--upgraded');\n if (typeof requestAnimationFrame === 'function') {\n label.style.transitionDuration = '0s';\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => label.style.transitionDuration = '');\n });\n }\n } else {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--no-label');\n }\n }\n _setNotchWidth(labelWidth) {\n if (!this.open || !labelWidth) {\n this._notch.nativeElement.style.width = '';\n } else {\n const NOTCH_ELEMENT_PADDING = 8;\n const NOTCH_ELEMENT_BORDER = 1;\n this._notch.nativeElement.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER}px)`;\n }\n }\n static {\n this.ɵfac = function MatFormFieldNotchedOutline_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormFieldNotchedOutline)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFormFieldNotchedOutline,\n selectors: [[\"div\", \"matFormFieldNotchedOutline\", \"\"]],\n viewQuery: function MatFormFieldNotchedOutline_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._notch = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-notched-outline\"],\n hostVars: 2,\n hostBindings: function MatFormFieldNotchedOutline_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-notched-outline--notched\", ctx.open);\n }\n },\n inputs: {\n open: [0, \"matFormFieldNotchedOutlineOpen\", \"open\"]\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c1,\n ngContentSelectors: _c2,\n decls: 5,\n vars: 0,\n consts: [[\"notch\", \"\"], [1, \"mat-mdc-notch-piece\", \"mdc-notched-outline__leading\"], [1, \"mat-mdc-notch-piece\", \"mdc-notched-outline__notch\"], [1, \"mat-mdc-notch-piece\", \"mdc-notched-outline__trailing\"]],\n template: function MatFormFieldNotchedOutline_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"div\", 1);\n i0.ɵɵelementStart(1, \"div\", 2, 0);\n i0.ɵɵprojection(3);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(4, \"div\", 3);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatFormFieldNotchedOutline;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nconst matFormFieldAnimations = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: /*#__PURE__*/trigger('transitionMessages', [\n /*#__PURE__*/\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', /*#__PURE__*/style({\n opacity: 1,\n transform: 'translateY(0%)'\n })), /*#__PURE__*/transition('void => enter', [/*#__PURE__*/style({\n opacity: 0,\n transform: 'translateY(-5px)'\n }), /*#__PURE__*/animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')])])\n};\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nlet MatFormFieldControl = /*#__PURE__*/(() => {\n class MatFormFieldControl {\n static {\n this.ɵfac = function MatFormFieldControl_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormFieldControl)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatFormFieldControl\n });\n }\n }\n return MatFormFieldControl;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @docs-private */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/** @docs-private */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n/** @docs-private */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nconst MAT_FORM_FIELD = /*#__PURE__*/new InjectionToken('MatFormField');\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nconst MAT_FORM_FIELD_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');\nlet nextUniqueId = 0;\n/** Default appearance used by the form field. */\nconst DEFAULT_APPEARANCE = 'fill';\n/**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto`.\n */\nconst DEFAULT_FLOAT_LABEL = 'auto';\n/** Default way that the subscript element height is set. */\nconst DEFAULT_SUBSCRIPT_SIZING = 'fixed';\n/**\n * Default transform for docked floating labels in a MDC text-field. This value has been\n * extracted from the MDC text-field styles because we programmatically modify the docked\n * label transform, but do not want to accidentally discard the default label transform.\n */\nconst FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;\n/** Container for form controls that applies Material Design styling and behavior. */\nlet MatFormField = /*#__PURE__*/(() => {\n class MatFormField {\n /** Whether the required marker should be hidden. */\n get hideRequiredMarker() {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n /** Whether the label should always float or float as the user types. */\n get floatLabel() {\n return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;\n }\n set floatLabel(value) {\n if (value !== this._floatLabel) {\n this._floatLabel = value;\n // For backwards compatibility. Custom form field controls or directives might set\n // the \"floatLabel\" input and expect the form field view to be updated automatically.\n // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just\n // emit the \"stateChanges\" observable. TODO(devversion): consider removing.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** The form field appearance style. */\n get appearance() {\n return this._appearance;\n }\n set appearance(value) {\n const oldValue = this._appearance;\n const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (newAppearance !== 'fill' && newAppearance !== 'outline') {\n throw new Error(`MatFormField: Invalid appearance \"${newAppearance}\", valid values are \"fill\" or \"outline\".`);\n }\n }\n this._appearance = newAppearance;\n if (this._appearance === 'outline' && this._appearance !== oldValue) {\n // If the appearance has been switched to `outline`, the label offset needs to be updated.\n // The update can happen once the view has been re-checked, but not immediately because\n // the view has not been updated and the notched-outline floating label is not present.\n this._needsOutlineLabelOffsetUpdate = true;\n }\n }\n /**\n * Whether the form field should reserve space for one line of hint/error text (default)\n * or to have the spacing grow from 0px as needed based on the size of the hint/error content.\n * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.\n */\n get subscriptSizing() {\n return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n set subscriptSizing(value) {\n this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n /** Text for the form field hint. */\n get hintLabel() {\n return this._hintLabel;\n }\n set hintLabel(value) {\n this._hintLabel = value;\n this._processHints();\n }\n /** Gets the current form field control */\n get _control() {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n constructor(_elementRef, _changeDetectorRef,\n /**\n * @deprecated not needed, to be removed.\n * @breaking-change 19.0.0 remove this param\n */\n _unusedNgZone, _dir, _platform, _defaults, _animationMode,\n /**\n * @deprecated not needed, to be removed.\n * @breaking-change 17.0.0 remove this param\n */\n _unusedDocument) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._platform = _platform;\n this._defaults = _defaults;\n this._animationMode = _animationMode;\n this._labelChild = contentChild(MatLabel);\n this._hideRequiredMarker = false;\n /**\n * Theme color of the form field. This API is supported in M2 themes only, it\n * has no effect in M3 themes.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/theming#using-component-color-variants.\n */\n this.color = 'primary';\n this._appearance = DEFAULT_APPEARANCE;\n this._subscriptSizing = null;\n this._hintLabel = '';\n this._hasIconPrefix = false;\n this._hasTextPrefix = false;\n this._hasIconSuffix = false;\n this._hasTextSuffix = false;\n // Unique id for the internal form field label.\n this._labelId = `mat-mdc-form-field-label-${nextUniqueId++}`;\n // Unique id for the hint label.\n this._hintLabelId = `mat-mdc-hint-${nextUniqueId++}`;\n /** State of the mat-hint and mat-error animations. */\n this._subscriptAnimationState = '';\n this._destroyed = new Subject();\n this._isFocused = null;\n this._needsOutlineLabelOffsetUpdate = false;\n this._previousControl = null;\n this._injector = inject(Injector);\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n this.getLabelId = computed(() => this._hasFloatingLabel() ? this._labelId : null);\n this._hasFloatingLabel = computed(() => !!this._labelChild());\n if (_defaults) {\n if (_defaults.appearance) {\n this.appearance = _defaults.appearance;\n }\n this._hideRequiredMarker = Boolean(_defaults?.hideRequiredMarker);\n if (_defaults.color) {\n this.color = _defaults.color;\n }\n }\n }\n ngAfterViewInit() {\n // Initial focus state sync. This happens rarely, but we want to account for\n // it in case the form field control has \"focused\" set to true on init.\n this._updateFocusState();\n // Enable animations now. This ensures we don't animate on initial render.\n this._subscriptAnimationState = 'enter';\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this._changeDetectorRef.detectChanges();\n }\n ngAfterContentInit() {\n this._assertFormFieldControl();\n this._initializeSubscript();\n this._initializePrefixAndSuffix();\n this._initializeOutlineLabelOffsetSubscriptions();\n }\n ngAfterContentChecked() {\n this._assertFormFieldControl();\n if (this._control !== this._previousControl) {\n this._initializeControl(this._previousControl);\n this._previousControl = this._control;\n }\n }\n ngOnDestroy() {\n this._stateChanges?.unsubscribe();\n this._valueChanges?.unsubscribe();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field\n * should be positioned relative to.\n */\n getConnectedOverlayOrigin() {\n return this._textField || this._elementRef;\n }\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel() {\n // This is for backwards compatibility only. Consumers of the form field might use\n // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC\n // form field because setting \"floatLabel\" to \"always\" caused the label to float without\n // animation. This is different in MDC where the label always animates, so this method\n // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing\n // the floating label state without animations. The non-MDC implementation was inconsistent\n // because it always animates if \"floatLabel\" is set away from \"always\".\n // TODO(devversion): consider removing this method when releasing the MDC form field.\n if (this._hasFloatingLabel()) {\n this.floatLabel = 'always';\n }\n }\n /** Initializes the registered form field control. */\n _initializeControl(previousControl) {\n const control = this._control;\n const classPrefix = 'mat-mdc-form-field-type-';\n if (previousControl) {\n this._elementRef.nativeElement.classList.remove(classPrefix + previousControl.controlType);\n }\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(classPrefix + control.controlType);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n this._stateChanges?.unsubscribe();\n this._stateChanges = control.stateChanges.subscribe(() => {\n this._updateFocusState();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChanges?.unsubscribe();\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n this._valueChanges = control.ngControl.valueChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n _checkPrefixAndSuffixTypes() {\n this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);\n this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);\n this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);\n }\n /** Initializes the prefix and suffix containers. */\n _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n });\n }\n /**\n * Initializes the subscript by validating hints and synchronizing \"aria-describedby\" ids\n * with the custom form field control. Also subscribes to hint and error changes in order\n * to be able to validate and synchronize ids on change.\n */\n _initializeSubscript() {\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Initial mat-hint validation and subscript describedByIds sync.\n this._validateHints();\n this._syncDescribedByIds();\n }\n /** Throws an error if the form field's control is missing. */\n _assertFormFieldControl() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n _updateFocusState() {\n // Usually the MDC foundation would call \"activateFocus\" and \"deactivateFocus\" whenever\n // certain DOM events are emitted. This is not possible in our implementation of the\n // form field because we support abstract form field controls which are not necessarily\n // of type input, nor do we have a reference to a native form field control element. Instead\n // we handle the focus by checking if the abstract form field control focused state changes.\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n this._lineRipple?.activate();\n } else if (!this._control.focused && (this._isFocused || this._isFocused === null)) {\n this._isFocused = false;\n this._lineRipple?.deactivate();\n }\n this._textField?.nativeElement.classList.toggle('mdc-text-field--focused', this._control.focused);\n }\n /**\n * The floating label in the docked state needs to account for prefixes. The horizontal offset\n * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the\n * form field is added to the DOM. This method sets up all subscriptions which are needed to\n * trigger the label offset update.\n */\n _initializeOutlineLabelOffsetSubscriptions() {\n // Whenever the prefix changes, schedule an update of the label offset.\n // TODO(mmalerba): Use ResizeObserver to better support dynamically changing prefix content.\n this._prefixChildren.changes.subscribe(() => this._needsOutlineLabelOffsetUpdate = true);\n // TODO(mmalerba): Split this into separate `afterRender` calls using the `EarlyRead` and\n // `Write` phases.\n afterRender(() => {\n if (this._needsOutlineLabelOffsetUpdate) {\n this._needsOutlineLabelOffsetUpdate = false;\n this._updateOutlineLabelOffset();\n }\n }, {\n injector: this._injector\n });\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._needsOutlineLabelOffsetUpdate = true);\n }\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always';\n }\n _hasOutline() {\n return this.appearance === 'outline';\n }\n /**\n * Whether the label should display in the infix. Labels in the outline appearance are\n * displayed as part of the notched-outline and are horizontally offset to account for\n * form field prefix content. This won't work in server side rendering since we cannot\n * measure the width of the prefix container. To make the docked label appear as if the\n * right offset has been calculated, we forcibly render the label inside the infix. Since\n * the label is part of the infix, the label cannot overflow the prefix content.\n */\n _forceDisplayInfixLabel() {\n return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();\n }\n _shouldLabelFloat() {\n if (!this._hasFloatingLabel()) {\n return false;\n }\n return this._control.shouldLabelFloat || this._shouldAlwaysFloat();\n }\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop) {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages() {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState ? 'error' : 'hint';\n }\n /** Handle label resize events. */\n _handleLabelResized() {\n this._refreshOutlineNotchWidth();\n }\n /** Refreshes the width of the outline-notch, if present. */\n _refreshOutlineNotchWidth() {\n if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {\n this._notchedOutline?._setNotchWidth(0);\n } else {\n this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());\n }\n }\n /** Does any extra processing that is required when handling the hints. */\n _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n /**\n * Ensure that there is a maximum of one of each \"mat-hint\" alignment specified. The hint\n * label specified set through the input is being considered as \"start\" aligned.\n *\n * This method is a noop if Angular runs in production mode.\n */\n _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint;\n let endHint;\n this._hintChildren.forEach(hint => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n _syncDescribedByIds() {\n if (this._control) {\n let ids = [];\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (this._control.userAriaDescribedBy && typeof this._control.userAriaDescribedBy === 'string') {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren ? this._hintChildren.find(hint => hint.align === 'start') : null;\n const endHint = this._hintChildren ? this._hintChildren.find(hint => hint.align === 'end') : null;\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n this._control.setDescribedByIds(ids);\n }\n }\n /**\n * Updates the horizontal offset of the label in the outline appearance. In the outline\n * appearance, the notched-outline and label are not relative to the infix container because\n * the outline intends to surround prefixes, suffixes and the infix. This means that the\n * floating label by default overlaps prefixes in the docked state. To avoid this, we need to\n * horizontally offset the label by the width of the prefix container. The MDC text-field does\n * not need to do this because they use a fixed width for prefixes. Hence, they can simply\n * incorporate the horizontal offset into their default text-field styles.\n */\n _updateOutlineLabelOffset() {\n if (!this._hasOutline() || !this._floatingLabel) {\n return;\n }\n const floatingLabel = this._floatingLabel.element;\n // If no prefix is displayed, reset the outline label offset from potential\n // previous label offset updates.\n if (!(this._iconPrefixContainer || this._textPrefixContainer)) {\n floatingLabel.style.transform = '';\n return;\n }\n // If the form field is not attached to the DOM yet (e.g. in a tab), we defer\n // the label offset update until the zone stabilizes.\n if (!this._isAttachedToDom()) {\n this._needsOutlineLabelOffsetUpdate = true;\n return;\n }\n const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;\n const textPrefixContainer = this._textPrefixContainer?.nativeElement;\n const iconSuffixContainer = this._iconSuffixContainer?.nativeElement;\n const textSuffixContainer = this._textSuffixContainer?.nativeElement;\n const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;\n const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;\n const iconSuffixContainerWidth = iconSuffixContainer?.getBoundingClientRect().width ?? 0;\n const textSuffixContainerWidth = textSuffixContainer?.getBoundingClientRect().width ?? 0;\n // If the directionality is RTL, the x-axis transform needs to be inverted. This\n // is because `transformX` does not change based on the page directionality.\n const negate = this._dir.value === 'rtl' ? '-1' : '1';\n const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;\n const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;\n const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;\n // Update the translateX of the floating label to account for the prefix container,\n // but allow the CSS to override this setting via a CSS variable when the label is\n // floating.\n floatingLabel.style.transform = `var(\n --mat-mdc-form-field-label-transform,\n ${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset})\n )`;\n // Prevent the label from overlapping the suffix when in resting position.\n const prefixAndSuffixWidth = iconPrefixContainerWidth + textPrefixContainerWidth + iconSuffixContainerWidth + textSuffixContainerWidth;\n this._elementRef.nativeElement.style.setProperty('--mat-form-field-notch-max-width', `calc(100% - ${prefixAndSuffixWidth}px)`);\n }\n /** Checks whether the form field is attached to the DOM. */\n _isAttachedToDom() {\n const element = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement.contains(element);\n }\n static {\n this.ɵfac = function MatFormField_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormField)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.Directionality), i0.ɵɵdirectiveInject(i2.Platform), i0.ɵɵdirectiveInject(MAT_FORM_FIELD_DEFAULT_OPTIONS, 8), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFormField,\n selectors: [[\"mat-form-field\"]],\n contentQueries: function MatFormField_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuerySignal(dirIndex, ctx._labelChild, MatLabel, 5);\n i0.ɵɵcontentQuery(dirIndex, MatFormFieldControl, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_PREFIX, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_SUFFIX, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_ERROR, 5);\n i0.ɵɵcontentQuery(dirIndex, MatHint, 5);\n }\n if (rf & 2) {\n i0.ɵɵqueryAdvance();\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._formFieldControl = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._prefixChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._suffixChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._errorChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._hintChildren = _t);\n }\n },\n viewQuery: function MatFormField_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c3, 5);\n i0.ɵɵviewQuery(_c4, 5);\n i0.ɵɵviewQuery(_c5, 5);\n i0.ɵɵviewQuery(_c6, 5);\n i0.ɵɵviewQuery(_c7, 5);\n i0.ɵɵviewQuery(MatFormFieldFloatingLabel, 5);\n i0.ɵɵviewQuery(MatFormFieldNotchedOutline, 5);\n i0.ɵɵviewQuery(MatFormFieldLineRipple, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._textField = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._iconPrefixContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._textPrefixContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._iconSuffixContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._textSuffixContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._floatingLabel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._notchedOutline = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._lineRipple = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-form-field\"],\n hostVars: 42,\n hostBindings: function MatFormField_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-mdc-form-field-label-always-float\", ctx._shouldAlwaysFloat())(\"mat-mdc-form-field-has-icon-prefix\", ctx._hasIconPrefix)(\"mat-mdc-form-field-has-icon-suffix\", ctx._hasIconSuffix)(\"mat-form-field-invalid\", ctx._control.errorState)(\"mat-form-field-disabled\", ctx._control.disabled)(\"mat-form-field-autofilled\", ctx._control.autofilled)(\"mat-form-field-no-animations\", ctx._animationMode === \"NoopAnimations\")(\"mat-form-field-appearance-fill\", ctx.appearance == \"fill\")(\"mat-form-field-appearance-outline\", ctx.appearance == \"outline\")(\"mat-form-field-hide-placeholder\", ctx._hasFloatingLabel() && !ctx._shouldLabelFloat())(\"mat-focused\", ctx._control.focused)(\"mat-primary\", ctx.color !== \"accent\" && ctx.color !== \"warn\")(\"mat-accent\", ctx.color === \"accent\")(\"mat-warn\", ctx.color === \"warn\")(\"ng-untouched\", ctx._shouldForward(\"untouched\"))(\"ng-touched\", ctx._shouldForward(\"touched\"))(\"ng-pristine\", ctx._shouldForward(\"pristine\"))(\"ng-dirty\", ctx._shouldForward(\"dirty\"))(\"ng-valid\", ctx._shouldForward(\"valid\"))(\"ng-invalid\", ctx._shouldForward(\"invalid\"))(\"ng-pending\", ctx._shouldForward(\"pending\"));\n }\n },\n inputs: {\n hideRequiredMarker: \"hideRequiredMarker\",\n color: \"color\",\n floatLabel: \"floatLabel\",\n appearance: \"appearance\",\n subscriptSizing: \"subscriptSizing\",\n hintLabel: \"hintLabel\"\n },\n exportAs: [\"matFormField\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_FORM_FIELD,\n useExisting: MatFormField\n }, {\n provide: FLOATING_LABEL_PARENT,\n useExisting: MatFormField\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c9,\n decls: 18,\n vars: 21,\n consts: [[\"labelTemplate\", \"\"], [\"textField\", \"\"], [\"iconPrefixContainer\", \"\"], [\"textPrefixContainer\", \"\"], [\"textSuffixContainer\", \"\"], [\"iconSuffixContainer\", \"\"], [1, \"mat-mdc-text-field-wrapper\", \"mdc-text-field\", 3, \"click\"], [1, \"mat-mdc-form-field-focus-overlay\"], [1, \"mat-mdc-form-field-flex\"], [\"matFormFieldNotchedOutline\", \"\", 3, \"matFormFieldNotchedOutlineOpen\"], [1, \"mat-mdc-form-field-icon-prefix\"], [1, \"mat-mdc-form-field-text-prefix\"], [1, \"mat-mdc-form-field-infix\"], [3, \"ngTemplateOutlet\"], [1, \"mat-mdc-form-field-text-suffix\"], [1, \"mat-mdc-form-field-icon-suffix\"], [\"matFormFieldLineRipple\", \"\"], [1, \"mat-mdc-form-field-subscript-wrapper\", \"mat-mdc-form-field-bottom-align\"], [1, \"mat-mdc-form-field-error-wrapper\"], [1, \"mat-mdc-form-field-hint-wrapper\"], [\"matFormFieldFloatingLabel\", \"\", 3, \"floating\", \"monitorResize\", \"id\"], [\"aria-hidden\", \"true\", 1, \"mat-mdc-form-field-required-marker\", \"mdc-floating-label--required\"], [3, \"id\"], [1, \"mat-mdc-form-field-hint-spacer\"]],\n template: function MatFormField_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef(_c8);\n i0.ɵɵtemplate(0, MatFormField_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementStart(2, \"div\", 6, 1);\n i0.ɵɵlistener(\"click\", function MatFormField_Template_div_click_2_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._control.onContainerClick($event));\n });\n i0.ɵɵtemplate(4, MatFormField_Conditional_4_Template, 1, 0, \"div\", 7);\n i0.ɵɵelementStart(5, \"div\", 8);\n i0.ɵɵtemplate(6, MatFormField_Conditional_6_Template, 2, 2, \"div\", 9)(7, MatFormField_Conditional_7_Template, 3, 0, \"div\", 10)(8, MatFormField_Conditional_8_Template, 3, 0, \"div\", 11);\n i0.ɵɵelementStart(9, \"div\", 12);\n i0.ɵɵtemplate(10, MatFormField_Conditional_10_Template, 1, 1, null, 13);\n i0.ɵɵprojection(11);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(12, MatFormField_Conditional_12_Template, 3, 0, \"div\", 14)(13, MatFormField_Conditional_13_Template, 3, 0, \"div\", 15);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(14, MatFormField_Conditional_14_Template, 1, 0, \"div\", 16);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 17);\n i0.ɵɵtemplate(16, MatFormField_Case_16_Template, 2, 1, \"div\", 18)(17, MatFormField_Case_17_Template, 5, 2, \"div\", 19);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n let tmp_16_0;\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"mdc-text-field--filled\", !ctx._hasOutline())(\"mdc-text-field--outlined\", ctx._hasOutline())(\"mdc-text-field--no-label\", !ctx._hasFloatingLabel())(\"mdc-text-field--disabled\", ctx._control.disabled)(\"mdc-text-field--invalid\", ctx._control.errorState);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(!ctx._hasOutline() && !ctx._control.disabled ? 4 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx._hasOutline() ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._hasIconPrefix ? 7 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._hasTextPrefix ? 8 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(!ctx._hasOutline() || ctx._forceDisplayInfixLabel() ? 10 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx._hasTextSuffix ? 12 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._hasIconSuffix ? 13 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(!ctx._hasOutline() ? 14 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"mat-mdc-form-field-subscript-dynamic-size\", ctx.subscriptSizing === \"dynamic\");\n i0.ɵɵadvance();\n i0.ɵɵconditional((tmp_16_0 = ctx._getDisplayedMessages()) === \"error\" ? 16 : tmp_16_0 === \"hint\" ? 17 : -1);\n }\n },\n dependencies: [MatFormFieldFloatingLabel, MatFormFieldNotchedOutline, NgTemplateOutlet, MatFormFieldLineRipple, MatHint],\n styles: [\".mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--disabled .cdk-high-contrast-active .mdc-text-field__input{background-color:Window}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-app-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.cdk-high-contrast-active .mdc-text-field--disabled .mdc-floating-label{z-index:1}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-app-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:\\\"*\\\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-app-outline));border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-app-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-app-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\\\"\\\"}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-app-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-app-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-app-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-app-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\\\"\\\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-app-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-app-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-app-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-app-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-app-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-app-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-app-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-app-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-app-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-app-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-app-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-app-body-large-weight))}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-app-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-app-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-app-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\"],\n encapsulation: 2,\n data: {\n animation: [matFormFieldAnimations.transitionMessages]\n },\n changeDetection: 0\n });\n }\n }\n return MatFormField;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatFormFieldModule = /*#__PURE__*/(() => {\n class MatFormFieldModule {\n static {\n this.ɵfac = function MatFormFieldModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFormFieldModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatFormFieldModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, CommonModule, ObserversModule, MatCommonModule]\n });\n }\n }\n return MatFormFieldModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_ERROR, MAT_FORM_FIELD, MAT_FORM_FIELD_DEFAULT_OPTIONS, MAT_PREFIX, MAT_SUFFIX, MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatLabel, MatPrefix, MatSuffix, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError, matFormFieldAnimations };\n","import { Overlay, CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, booleanAttribute, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Self, Attribute, ContentChildren, ContentChild, Input, ViewChild, Output, Directive, NgModule } from '@angular/core';\nimport * as i2 from '@angular/material/core';\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, _ErrorStateTracker, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\nfunction MatSelect_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.placeholder);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 11);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.triggerValue);\n }\n}\nfunction MatSelect_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵtemplate(1, MatSelect_Conditional_5_Conditional_1_Template, 1, 0)(2, MatSelect_Conditional_5_Conditional_2_Template, 2, 1, \"span\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.customTrigger ? 1 : 2);\n }\n}\nfunction MatSelect_ng_template_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 12, 1);\n i0.ɵɵlistener(\"@transformPanel.done\", function MatSelect_ng_template_10_Template_div_animation_transformPanel_done_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._panelDoneAnimatingStream.next($event.toState));\n })(\"keydown\", function MatSelect_ng_template_10_Template_div_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._handleKeydown($event));\n });\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open \", ctx_r1._getPanelTheme(), \"\");\n i0.ɵɵproperty(\"ngClass\", ctx_r1.panelClass)(\"@transformPanel\", \"showing\");\n i0.ɵɵattribute(\"id\", ctx_r1.id + \"-panel\")(\"aria-multiselectable\", ctx_r1.multiple)(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1._getPanelAriaLabelledby());\n }\n}\nexport { MatOptgroup, MatOption } from '@angular/material/core';\nimport * as i6 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nexport { MatError, MatFormField, MatHint, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i5 from '@angular/cdk/a11y';\nimport { removeAriaReferencedId, addAriaReferencedId, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport * as i4 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, filter, map, distinctUntilChanged, takeUntil, take } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\n\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\nconst matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: /*#__PURE__*/trigger('transformPanelWrap', [/*#__PURE__*/transition('* => void', /*#__PURE__*/query('@transformPanel', [/*#__PURE__*/animateChild()], {\n optional: true\n }))]),\n /** This animation transforms the select's overlay panel on and off the page. */\n transformPanel: /*#__PURE__*/trigger('transformPanel', [/*#__PURE__*/state('void', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })), /*#__PURE__*/transition('void => showing', /*#__PURE__*/animate('120ms cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))), /*#__PURE__*/transition('* => void', /*#__PURE__*/animate('100ms linear', /*#__PURE__*/style({\n opacity: 0\n })))])\n};\n\n// Note that these have been copied over verbatim from\n// `material/select` so that we don't have to expose them publicly.\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n}\nlet nextUniqueId = 0;\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-select-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/** @docs-private */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** Injection token that can be used to provide the default options the select module. */\nconst MAT_SELECT_CONFIG = /*#__PURE__*/new InjectionToken('MAT_SELECT_CONFIG');\n/** @docs-private */\nconst MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SELECT_TRIGGER = /*#__PURE__*/new InjectionToken('MatSelectTrigger');\n/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n constructor(/** Reference to the select that emitted the change event. */\n source, /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\nlet MatSelect = /*#__PURE__*/(() => {\n class MatSelect {\n /** Scrolls a particular option into the view. */\n _scrollOptionIntoView(index) {\n const option = this.options.toArray()[index];\n if (option) {\n const panel = this.panel.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const element = option._getHostElement();\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, panel.scrollTop, panel.offsetHeight);\n }\n }\n }\n /** Called when the panel has been opened and the overlay has settled on its final position. */\n _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n /** Creates a change event object that should be emitted by the select. */\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether the component is required. */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = value;\n this.stateChanges.next();\n }\n /** Whether the user should be allowed to select multiple options. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = value;\n }\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /** Value of the select control. */\n get value() {\n return this._value;\n }\n set value(newValue) {\n const hasAssigned = this._assignValue(newValue);\n if (hasAssigned) {\n this._onChange(newValue);\n }\n }\n /** Object used to control when error messages are shown. */\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value) {\n this._errorStateTracker.matcher = value;\n }\n /** Unique id of the element. */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n /** Whether the select is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value) {\n this._errorStateTracker.errorState = value;\n }\n constructor(_viewportRuler, _changeDetectorRef,\n /**\n * @deprecated Unused param, will be removed.\n * @breaking-change 19.0.0\n */\n _unusedNgZone, defaultErrorStateMatcher, _elementRef, _dir, parentForm, parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {\n this._viewportRuler = _viewportRuler;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._parentFormField = _parentFormField;\n this.ngControl = ngControl;\n this._liveAnnouncer = _liveAnnouncer;\n this._defaultOptions = _defaultOptions;\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n this._positions = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }];\n /** Whether or not the overlay panel is open. */\n this._panelOpen = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n this._compareWith = (o1, o2) => o1 === o2;\n /** Unique id for this input. */\n this._uid = `mat-select-${nextUniqueId++}`;\n /** Current `aria-labelledby` value for the select trigger. */\n this._triggerAriaLabelledBy = null;\n /** Emits whenever the component is destroyed. */\n this._destroy = new Subject();\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n this.stateChanges = new Subject();\n /**\n * Disable the automatic labeling to avoid issues like #27241.\n * @docs-private\n */\n this.disableAutomaticLabeling = true;\n /** `View -> model callback called when value changes` */\n this._onChange = () => {};\n /** `View -> model callback called when select has been touched` */\n this._onTouched = () => {};\n /** ID for the DOM node containing the select's value. */\n this._valueId = `mat-select-value-${nextUniqueId++}`;\n /** Emits when the panel element is finished transforming in. */\n this._panelDoneAnimatingStream = new Subject();\n this._overlayPanelClass = this._defaultOptions?.overlayPanelClass || '';\n this._focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n this.controlType = 'mat-select';\n /** Whether the select is disabled. */\n this.disabled = false;\n /** Whether ripples in the select are disabled. */\n this.disableRipple = false;\n /** Tab index of the select. */\n this.tabIndex = 0;\n this._hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._multiple = false;\n /** Whether to center the active option over the trigger. */\n this.disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;\n /** Aria label of the select. */\n this.ariaLabel = '';\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n this.panelWidth = this._defaultOptions && typeof this._defaultOptions.panelWidth !== 'undefined' ? this._defaultOptions.panelWidth : 'auto';\n this._initialized = new Subject();\n /** Combined stream of all of the child options' change events. */\n this.optionSelectionChanges = defer(() => {\n const options = this.options;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n /** Event emitted when the select panel has been toggled. */\n this.openedChange = new EventEmitter();\n /** Event emitted when the select has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => {}));\n /** Event emitted when the select has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => {}));\n /** Event emitted when the selected value has been changed by the user. */\n this.selectionChange = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n this._trackedModal = null;\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n this._skipPredicate = option => {\n if (this.panelOpen) {\n // Support keyboard focusing disabled options in an ARIA listbox.\n return false;\n }\n // When the panel is closed, skip over disabled options. Support options via the UP/DOWN arrow\n // keys on a closed select. ARIA listbox interaction pattern is less relevant when the panel is\n // closed.\n return option.disabled;\n };\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if (_defaultOptions?.typeaheadDebounceInterval != null) {\n this.typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;\n }\n this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, ngControl, parentFormGroup, parentForm, this.stateChanges);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream.pipe(distinctUntilChanged(), takeUntil(this._destroy)).subscribe(() => this._panelDoneAnimating(this.panelOpen));\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n ngAfterContentInit() {\n this._initialized.next();\n this._initialized.complete();\n this._initKeyManager();\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n const ngControl = this.ngControl;\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n } else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (ngControl) {\n // The disabled state might go out of sync if the form group is swapped out. See #17860.\n if (this._previousControl !== ngControl.control) {\n if (this._previousControl !== undefined && ngControl.disabled !== null && ngControl.disabled !== this.disabled) {\n this.disabled = ngControl.disabled;\n }\n this._previousControl = ngControl.control;\n }\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by the input, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled'] || changes['userAriaDescribedBy']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n this._clearFromModal();\n }\n /** Toggles the overlay panel open or closed. */\n toggle() {\n this.panelOpen ? this.close() : this.open();\n }\n /** Opens the overlay panel. */\n open() {\n if (!this._canOpen()) {\n return;\n }\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._applyModalPanelOwnership();\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n }\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the reference to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (!this._trackedModal) {\n // Most commonly, the autocomplete trigger is not used inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n /** Closes the overlay panel and focuses the host element. */\n close() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n }\n }\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value) {\n this._assignValue(value);\n }\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /** Whether or not the overlay panel is open. */\n get panelOpen() {\n return this._panelOpen;\n }\n /** The currently selected option. */\n get selected() {\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\n }\n /** The value displayed in the trigger. */\n get triggerValue() {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n }\n /** Refreshes the error state of the select. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n /** Whether the element is in RTL mode. */\n _isRtl() {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n /** Handles all keydown events on the select. */\n _handleKeydown(event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n /** Handles keyboard events while the select is closed. */\n _handleClosedKeydown(event) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native \n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem && !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n this._keyManager?.cancelTypeahead();\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n _onAttached() {\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n /** Returns the theme to be used on the panel. */\n _getPanelTheme() {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n /** Whether the select has a value. */\n get empty() {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n _setSelectionByValue(value) {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n value.forEach(currentValue => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectOptionByValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n _selectOptionByValue(value) {\n const correspondingOption = this.options.find(option => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n } catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n }\n /** Assigns a specific value to the select. Returns whether the value has changed. */\n _assignValue(newValue) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || this._multiple && Array.isArray(newValue)) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n return true;\n }\n return false;\n }\n /** Gets how wide the overlay panel should be. */\n _getOverlayWidth(preferredOrigin) {\n if (this.panelWidth === 'auto') {\n const refToMeasure = preferredOrigin instanceof CdkOverlayOrigin ? preferredOrigin.elementRef : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n return this.panelWidth === null ? '' : this.panelWidth;\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr').withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(['shiftKey']).skipPredicate(this._skipPredicate);\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n /** Drops current option subscriptions and IDs and resets from scratch. */\n _resetOptions() {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges)).pipe(takeUntil(changedOrDestroyed)).subscribe(() => {\n // `_stateChanges` can fire as a result of a change in the label's DOM value which may\n // be the result of an expression changing. We have to use `detectChanges` in order\n // to avoid \"changed after checked\" errors (see #14793).\n this._changeDetectorRef.detectChanges();\n this.stateChanges.next();\n });\n }\n /** Invoked when an option is clicked. */\n _onSelect(option, isUserInput) {\n const wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n }\n /** Sorts the selected values in the selected based on their order in the panel. */\n _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n this._selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first *enabled* option.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n return !this._panelOpen && !this.disabled && this.options?.length > 0;\n }\n /** Focuses the select element. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId();\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant() {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n }\n /** Gets the aria-labelledby of the select component trigger. */\n _getTriggerAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n return value;\n }\n /** Called when the overlay panel is done animating. */\n _panelDoneAnimating(isOpen) {\n this.openedChange.emit(isOpen);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n // Since the panel doesn't overlap the trigger, we\n // want the label to only float when there's a value.\n return this.panelOpen || !this.empty || this.focused && !!this.placeholder;\n }\n static {\n this.ɵfac = function MatSelect_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelect)(i0.ɵɵdirectiveInject(i1.ViewportRuler), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.ErrorStateMatcher), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i4.NgForm, 8), i0.ɵɵdirectiveInject(i4.FormGroupDirective, 8), i0.ɵɵdirectiveInject(MAT_FORM_FIELD, 8), i0.ɵɵdirectiveInject(i4.NgControl, 10), i0.ɵɵinjectAttribute('tabindex'), i0.ɵɵdirectiveInject(MAT_SELECT_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i5.LiveAnnouncer), i0.ɵɵdirectiveInject(MAT_SELECT_CONFIG, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSelect,\n selectors: [[\"mat-select\"]],\n contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 5);\n i0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n viewQuery: function MatSelect_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n i0.ɵɵviewQuery(CdkConnectedOverlay, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._overlayDir = _t.first);\n }\n },\n hostAttrs: [\"role\", \"combobox\", \"aria-haspopup\", \"listbox\", 1, \"mat-mdc-select\"],\n hostVars: 19,\n hostBindings: function MatSelect_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function MatSelect_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"focus\", function MatSelect_focus_HostBindingHandler() {\n return ctx._onFocus();\n })(\"blur\", function MatSelect_blur_HostBindingHandler() {\n return ctx._onBlur();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex)(\"aria-controls\", ctx.panelOpen ? ctx.id + \"-panel\" : null)(\"aria-expanded\", ctx.panelOpen)(\"aria-label\", ctx.ariaLabel || null)(\"aria-required\", ctx.required.toString())(\"aria-disabled\", ctx.disabled.toString())(\"aria-invalid\", ctx.errorState)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n i0.ɵɵclassProp(\"mat-mdc-select-disabled\", ctx.disabled)(\"mat-mdc-select-invalid\", ctx.errorState)(\"mat-mdc-select-required\", ctx.required)(\"mat-mdc-select-empty\", ctx.empty)(\"mat-mdc-select-multiple\", ctx.multiple);\n }\n },\n inputs: {\n userAriaDescribedBy: [0, \"aria-describedby\", \"userAriaDescribedBy\"],\n panelClass: \"panelClass\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n hideSingleSelectionIndicator: [2, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute],\n placeholder: \"placeholder\",\n required: [2, \"required\", \"required\", booleanAttribute],\n multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n disableOptionCentering: [2, \"disableOptionCentering\", \"disableOptionCentering\", booleanAttribute],\n compareWith: \"compareWith\",\n value: \"value\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n errorStateMatcher: \"errorStateMatcher\",\n typeaheadDebounceInterval: [2, \"typeaheadDebounceInterval\", \"typeaheadDebounceInterval\", numberAttribute],\n sortComparator: \"sortComparator\",\n id: \"id\",\n panelWidth: \"panelWidth\"\n },\n outputs: {\n openedChange: \"openedChange\",\n _openedStream: \"opened\",\n _closedStream: \"closed\",\n selectionChange: \"selectionChange\",\n valueChange: \"valueChange\"\n },\n exportAs: [\"matSelect\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 11,\n vars: 8,\n consts: [[\"fallbackOverlayOrigin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [\"panel\", \"\"], [\"cdk-overlay-origin\", \"\", 1, \"mat-mdc-select-trigger\", 3, \"click\"], [1, \"mat-mdc-select-value\"], [1, \"mat-mdc-select-placeholder\", \"mat-mdc-select-min-line\"], [1, \"mat-mdc-select-value-text\"], [1, \"mat-mdc-select-arrow-wrapper\"], [1, \"mat-mdc-select-arrow\"], [\"viewBox\", \"0 0 24 24\", \"width\", \"24px\", \"height\", \"24px\", \"focusable\", \"false\", \"aria-hidden\", \"true\"], [\"d\", \"M7 10l5 5 5-5z\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"backdropClick\", \"attach\", \"detach\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayWidth\"], [1, \"mat-mdc-select-min-line\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"keydown\", \"ngClass\"]],\n template: function MatSelect_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵelementStart(0, \"div\", 2, 0);\n i0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.open());\n });\n i0.ɵɵelementStart(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSelect_Conditional_4_Template, 2, 1, \"span\", 4)(5, MatSelect_Conditional_5_Template, 3, 1, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 6)(7, \"div\", 7);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(8, \"svg\", 8);\n i0.ɵɵelement(9, \"path\", 9);\n i0.ɵɵelementEnd()()()();\n i0.ɵɵtemplate(10, MatSelect_ng_template_10_Template, 3, 9, \"ng-template\", 10);\n i0.ɵɵlistener(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n })(\"attach\", function MatSelect_Template_ng_template_attach_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onAttached());\n })(\"detach\", function MatSelect_Template_ng_template_detach_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n });\n }\n if (rf & 2) {\n const fallbackOverlayOrigin_r4 = i0.ɵɵreference(1);\n i0.ɵɵadvance(3);\n i0.ɵɵattribute(\"id\", ctx._valueId);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.empty ? 4 : 5);\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", ctx._preferredOverlayOrigin || fallbackOverlayOrigin_r4)(\"cdkConnectedOverlayOpen\", ctx.panelOpen)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayWidth\", ctx._overlayWidth);\n }\n },\n dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\n styles: [\".mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-app-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-app-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-app-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-app-on-surface-variant))}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}\"],\n encapsulation: 2,\n data: {\n animation: [matSelectAnimations.transformPanel]\n },\n changeDetection: 0\n });\n }\n }\n return MatSelect;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nlet MatSelectTrigger = /*#__PURE__*/(() => {\n class MatSelectTrigger {\n static {\n this.ɵfac = function MatSelectTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectTrigger)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSelectTrigger,\n selectors: [[\"mat-select-trigger\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }])]\n });\n }\n }\n return MatSelectTrigger;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSelectModule = /*#__PURE__*/(() => {\n class MatSelectModule {\n static {\n this.ɵfac = function MatSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSelectModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule, MatFormFieldModule, MatOptionModule, MatCommonModule]\n });\n }\n }\n return MatSelectModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SELECT_CONFIG, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_TRIGGER, MatSelect, MatSelectChange, MatSelectModule, MatSelectTrigger, matSelectAnimations };\n"],"mappings":"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","names":["SharedAPIConfig","_SharedAPIConfig","DEFAULT_PAGE","DEFAULT_SORT","DEFAULT_PAGE_SIZE_OPTIONS","SharedDefaultGridOptions","constructor","scope","overlayComponent","animateRows","domLayout","suppressCellFocus","suppressClipboardPaste","enableCellTextSelection","ensureDomOrder","noRowsOverlayComponentParams","placeholder","suppressDragLeaveHidesColumns","defaultColDef","sortable","resizable","suppressMovable","comparator","sortingOrder","context","componentParent","components","agNoRowsOverlay","agLoadingOverlay","_SharedDefaultGridOptions","defaultColumnOptions","toggleEnabled","SingleBoxSharedResizeObserver","_box","Subject","entries","target","Observable","observer","subscription","filter","entry","shareReplay","takeUntil","SharedResizeObserver","_SharedResizeObserver","inject","NgZone","options","box","__ngFactoryType__","ɵɵdefineInjectable","_c0","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_c8","_c9","MatFormField_ng_template_0_Conditional_0_Conditional_2_Template","rf","ctx","ɵɵelement","MatFormField_ng_template_0_Conditional_0_Template","ɵɵelementStart","ɵɵprojection","ɵɵtemplate","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵproperty","ɵɵattribute","ɵɵadvance","ɵɵconditional","MatFormField_ng_template_0_Template","MatFormField_Conditional_4_Template","MatFormField_Conditional_6_Conditional_1_ng_template_0_Template","MatFormField_Conditional_6_Conditional_1_Template","labelTemplate_r3","ɵɵreference","MatFormField_Conditional_6_Template","MatFormField_Conditional_7_Template","MatFormField_Conditional_8_Template","MatFormField_Conditional_10_ng_template_0_Template","MatFormField_Conditional_10_Template","MatFormField_Conditional_12_Template","MatFormField_Conditional_13_Template","MatFormField_Conditional_14_Template","MatFormField_Case_16_Template","MatFormField_Case_17_Conditional_1_Template","ɵɵtext","ɵɵtextInterpolate","MatFormField_Case_17_Template","MatLabel","_MatLabel","__ngFactoryType__","ɵɵdefineDirective","nextUniqueId$2","MAT_ERROR","InjectionToken","MatError","_MatError","ariaLive","elementRef","ɵɵinjectAttribute","ɵɵdirectiveInject","ElementRef","ɵɵhostProperty","ɵɵProvidersFeature","nextUniqueId$1","MatHint","_MatHint","ɵɵclassProp","MAT_PREFIX","MatPrefix","_MatPrefix","value","MAT_SUFFIX","MatSuffix","_MatSuffix","FLOATING_LABEL_PARENT","MatFormFieldFloatingLabel","_MatFormFieldFloatingLabel","_elementRef","inject","SharedResizeObserver","NgZone","Subscription","estimateScrollWidth","element","htmlEl","clone","scrollWidth","ACTIVATE_CLASS","DEACTIVATING_CLASS","MatFormFieldLineRipple","_MatFormFieldLineRipple","ngZone","event","classList","isDeactivating","MatFormFieldNotchedOutline","_MatFormFieldNotchedOutline","_ngZone","label","labelWidth","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵStandaloneFeature","ɵɵprojectionDef","matFormFieldAnimations","trigger","state","style","transition","animate","MatFormFieldControl","_MatFormFieldControl","MAT_FORM_FIELD","InjectionToken","MAT_FORM_FIELD_DEFAULT_OPTIONS","nextUniqueId","DEFAULT_APPEARANCE","DEFAULT_FLOAT_LABEL","DEFAULT_SUBSCRIPT_SIZING","FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM","MatFormField","_MatFormField","value","coerceBooleanProperty","oldValue","newAppearance","_elementRef","_changeDetectorRef","_unusedNgZone","_dir","_platform","_defaults","_animationMode","_unusedDocument","contentChild","MatLabel","Subject","inject","Injector","computed","previousControl","control","classPrefix","takeUntil","p","s","merge","afterRender","prop","ids","startHint","hint","endHint","error","floatingLabel","iconPrefixContainer","textPrefixContainer","iconSuffixContainer","textSuffixContainer","iconPrefixContainerWidth","textPrefixContainerWidth","iconSuffixContainerWidth","textSuffixContainerWidth","negate","prefixWidth","labelHorizontalOffset","prefixAndSuffixWidth","element","rootNode","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","ChangeDetectorRef","NgZone","Directionality","Platform","ANIMATION_MODULE_TYPE","DOCUMENT","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuerySignal","ɵɵcontentQuery","MatFormFieldControl","MAT_PREFIX","MAT_SUFFIX","MAT_ERROR","MatHint","ɵɵqueryAdvance","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c3","_c4","_c5","_c6","_c7","MatFormFieldFloatingLabel","MatFormFieldNotchedOutline","MatFormFieldLineRipple","ɵɵclassProp","ɵɵProvidersFeature","FLOATING_LABEL_PARENT","ɵɵStandaloneFeature","_c9","_r1","ɵɵgetCurrentView","ɵɵprojectionDef","_c8","ɵɵtemplate","MatFormField_ng_template_0_Template","ɵɵtemplateRefExtractor","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","MatFormField_Conditional_4_Template","MatFormField_Conditional_6_Template","MatFormField_Conditional_7_Template","MatFormField_Conditional_8_Template","MatFormField_Conditional_10_Template","ɵɵprojection","ɵɵelementEnd","MatFormField_Conditional_12_Template","MatFormField_Conditional_13_Template","MatFormField_Conditional_14_Template","MatFormField_Case_16_Template","MatFormField_Case_17_Template","tmp_16_0","ɵɵadvance","ɵɵconditional","NgTemplateOutlet","matFormFieldAnimations","MatFormFieldModule","_MatFormFieldModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","CommonModule","ObserversModule","_c0","_c1","_c2","_c3","MatSelect_Conditional_4_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","MatSelect_Conditional_5_Conditional_1_Template","ɵɵprojection","MatSelect_Conditional_5_Conditional_2_Template","MatSelect_Conditional_5_Template","ɵɵtemplate","ɵɵconditional","MatSelect_ng_template_10_Template","_r3","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵclassMapInterpolate1","ɵɵproperty","ɵɵattribute","matSelectAnimations","trigger","transition","query","animateChild","state","style","animate","nextUniqueId","MAT_SELECT_SCROLL_STRATEGY","InjectionToken","overlay","inject","Overlay","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_TRIGGER","MatSelectChange","source","value","MatSelect","_MatSelect","index","option","panel","labelCount","_countGroupLabelsBeforeOption","element","_getOptionScrollPosition","Validators","fn","newValue","_viewportRuler","_changeDetectorRef","_unusedNgZone","defaultErrorStateMatcher","_elementRef","_dir","parentForm","parentFormGroup","_parentFormField","ngControl","tabIndex","scrollStrategyFactory","_liveAnnouncer","_defaultOptions","o1","o2","Subject","defer","options","startWith","switchMap","merge","EventEmitter","filter","o","map","_ErrorStateTracker","SelectionModel","distinctUntilChanged","takeUntil","event","newAriaLabelledby","changes","modal","panelId","removeAriaReferencedId","addAriaReferencedId","isDisabled","selectedOptions","keyCode","isArrowKey","isOpenKey","manager","hasModifierKey","previouslySelectedOption","selectedOption","isTyping","hasDeselectedOptions","opt","previouslyFocusedIndex","take","currentValue","correspondingOption","preferredOrigin","CdkOverlayOrigin","ActiveDescendantKeyManager","changedOrDestroyed","isUserInput","wasSelected","a","b","fallbackValue","valueToEmit","firstEnabledOptionIndex","labelId","labelExpression","isOpen","ids","__ngFactoryType__","ɵɵdirectiveInject","ViewportRuler","ChangeDetectorRef","NgZone","ErrorStateMatcher","ElementRef","Directionality","NgForm","FormGroupDirective","MAT_FORM_FIELD","NgControl","ɵɵinjectAttribute","LiveAnnouncer","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","MatOption","MAT_OPTGROUP","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c0","_c1","CdkConnectedOverlay","ɵɵlistener","$event","ɵɵattribute","ɵɵclassProp","booleanAttribute","numberAttribute","ɵɵProvidersFeature","MatFormFieldControl","MAT_OPTION_PARENT_COMPONENT","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","_c3","_r1","ɵɵgetCurrentView","ɵɵprojectionDef","_c2","ɵɵelementStart","ɵɵrestoreView","ɵɵresetView","ɵɵtemplate","MatSelect_Conditional_4_Template","MatSelect_Conditional_5_Template","ɵɵelementEnd","ɵɵnamespaceSVG","ɵɵelement","MatSelect_ng_template_10_Template","fallbackOverlayOrigin_r4","ɵɵreference","ɵɵadvance","ɵɵconditional","ɵɵproperty","NgClass","matSelectAnimations","MatSelectTrigger","_MatSelectTrigger","ɵɵdefineDirective","MatSelectModule","_MatSelectModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","MatFormFieldModule"],"x_google_ignoreList":[2,3,4]}