mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
1 line
218 KiB
JSON
1 line
218 KiB
JSON
{"ast":null,"code":"import { Overlay, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { InjectionToken, Directive, EventEmitter, ChangeDetectorRef, NgZone, ElementRef, Optional, Inject, Self, Attribute, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { mixinDisableRipple, mixinTabIndex, mixinDisabled, mixinErrorState, ErrorStateMatcher, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { MatFormField, MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport { NgForm, FormGroupDirective, NgControl } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, take, filter, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\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 */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/cdk/bidi';\nimport * as ɵngcc4 from '@angular/forms';\nimport * as ɵngcc5 from '@angular/cdk/a11y';\nimport * as ɵngcc6 from '@angular/material/form-field';\nimport * as ɵngcc7 from '@angular/common';\nimport * as ɵngcc8 from '@angular/cdk/overlay';\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nfunction MatSelect_span_4_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.placeholder);\n }\n}\nfunction MatSelect_span_5_span_1_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r5.triggerValue);\n }\n}\nfunction MatSelect_span_5_ng_content_2_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngSwitchCase\", \"true\"]);\n }\n}\nfunction MatSelect_span_5_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtemplate(1, MatSelect_span_5_span_1_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵtemplate(2, MatSelect_span_5_ng_content_2_Template, 1, 0, \"ng-content\", 11);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngSwitch\", !!ctx_r3.customTrigger);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n }\n}\nfunction MatSelect_ng_template_8_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 13)(1, \"div\", 14, 15);\n ɵngcc0.ɵɵlistener(\"@transformPanel.done\", function MatSelect_ng_template_8_Template_div_animation_transformPanel_done_1_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r9);\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r8._panelDoneAnimatingStream.next($event.toState));\n })(\"keydown\", function MatSelect_ng_template_8_Template_div_keydown_1_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r9);\n const ctx_r10 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r10._handleKeydown($event));\n });\n ɵngcc0.ɵɵprojection(3, 1);\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@transformPanelWrap\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"mat-select-panel \", ctx_r4._getPanelTheme(), \"\");\n ɵngcc0.ɵɵstyleProp(\"transform-origin\", ctx_r4._transformOrigin)(\"font-size\", ctx_r4._triggerFontSize, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.panelClass)(\"@transformPanel\", ctx_r4.multiple ? \"showing-multiple\" : \"showing\");\n ɵngcc0.ɵɵattribute(\"id\", ctx_r4.id + \"-panel\")(\"aria-multiselectable\", ctx_r4.multiple)(\"aria-label\", ctx_r4.ariaLabel || null)(\"aria-labelledby\", ctx_r4._getPanelAriaLabelledby());\n }\n}\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\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: trigger('transformPanelWrap', [transition('* => void', query('@transformPanel', [animateChild()], {\n optional: true\n }))]),\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [state('void', style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })), state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })), state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })), transition('void => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')), transition('* => void', animate('100ms 25ms linear', style({\n opacity: 0\n })))])\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\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}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n/**\n * The max height of the select's overlay panel.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_VIEWPORT_PADDING = 8;\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\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 = 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/** 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}\n// Boilerplate for applying mixins to MatSelect.\n/** @docs-private */\nclass MatSelectBase {\n constructor(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n}\nconst _MatSelectMixinBase = mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));\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 = new InjectionToken('MatSelectTrigger');\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nclass MatSelectTrigger {}\nMatSelectTrigger.ɵfac = function MatSelectTrigger_Factory(t) {\n return new (t || MatSelectTrigger)();\n};\nMatSelectTrigger.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: MatSelectTrigger,\n selectors: [[\"mat-select-trigger\"]],\n features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }])]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectTrigger, [{\n type: Directive,\n args: [{\n selector: 'mat-select-trigger',\n providers: [{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }]\n }]\n }], null, null);\n})();\n/** Base class with all of the `MatSelect` functionality. */\nclass _MatSelectBase extends _MatSelectMixinBase {\n constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {\n var _a, _b, _c;\n super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._viewportRuler = _viewportRuler;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._parentFormField = _parentFormField;\n this.ngControl = ngControl;\n this._liveAnnouncer = _liveAnnouncer;\n this._defaultOptions = _defaultOptions;\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 `ariar-labelledby` value for the select trigger. */\n this._triggerAriaLabelledBy = null;\n /** Emits whenever the component is destroyed. */\n this._destroy = new Subject();\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 = ((_a = this._defaultOptions) === null || _a === void 0 ? void 0 : _a.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 this._required = false;\n this._multiple = false;\n this._disableOptionCentering = (_c = (_b = this._defaultOptions) === null || _b === void 0 ? void 0 : _b.disableOptionCentering) !== null && _c !== void 0 ? _c : false;\n /** Aria label of the select. */\n this.ariaLabel = '';\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._ngZone.onStable.pipe(take(1), 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 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 === null || _defaultOptions === void 0 ? void 0 : _defaultOptions.typeaheadDebounceInterval) != null) {\n this._typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;\n }\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 /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\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;\n }\n set required(value) {\n this._required = coerceBooleanProperty(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 = coerceBooleanProperty(value);\n }\n /** Whether to center the active option over the trigger. */\n get disableOptionCentering() {\n return this._disableOptionCentering;\n }\n set disableOptionCentering(value) {\n this._disableOptionCentering = coerceBooleanProperty(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 // 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 }\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get typeaheadDebounceInterval() {\n return this._typeaheadDebounceInterval;\n }\n set typeaheadDebounceInterval(value) {\n this._typeaheadDebounceInterval = coerceNumberProperty(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 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 }\n ngAfterContentInit() {\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 // 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 (this.ngControl) {\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by `mixinDisabled`, 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']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\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 this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\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 }\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.value = 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 /** 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 <select>\n if (!manager.isTyping() && isOpenKey && !hasModifierKey(event) || (this.multiple || event.altKey) && isArrowKey) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.multiple) {\n const previouslySelectedOption = this.selected;\n manager.onKeydown(event);\n const selectedOption = this.selected;\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce(selectedOption.viewValue, 10000);\n }\n }\n }\n /** Handles keyboard events when the selected is open. */\n _handleOpenKeydown(event) {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\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 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 this._setSelectionByValue(this.ngControl ? this.ngControl.value : 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._selectionModel.selected.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._selectValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectValue(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 _selectValue(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 /** 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().withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).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.pipe(takeUntil(this._destroy)).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 this._changeDetectorRef.markForCheck();\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 = null;\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 item instead.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n var _a;\n return !this._panelOpen && !this.disabled && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.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 var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.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 var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.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 this._ariaDescribedby = ids.join(' ');\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 return this._panelOpen || !this.empty || this._focused && !!this._placeholder;\n }\n}\n_MatSelectBase.ɵfac = function _MatSelectBase_Factory(t) {\n return new (t || _MatSelectBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ErrorStateMatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgForm, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.FormGroupDirective, 8), ɵngcc0.ɵɵdirectiveInject(MAT_FORM_FIELD, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgControl, 10), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LiveAnnouncer), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_CONFIG, 8));\n};\n_MatSelectBase.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: _MatSelectBase,\n viewQuery: function _MatSelectBase_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n ɵngcc0.ɵɵviewQuery(CdkConnectedOverlay, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overlayDir = _t.first);\n }\n },\n inputs: {\n ariaLabel: [\"aria-label\", \"ariaLabel\"],\n id: \"id\",\n placeholder: \"placeholder\",\n required: \"required\",\n multiple: \"multiple\",\n disableOptionCentering: \"disableOptionCentering\",\n compareWith: \"compareWith\",\n value: \"value\",\n typeaheadDebounceInterval: \"typeaheadDebounceInterval\",\n panelClass: \"panelClass\",\n ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"],\n errorStateMatcher: \"errorStateMatcher\",\n sortComparator: \"sortComparator\"\n },\n outputs: {\n openedChange: \"openedChange\",\n _openedStream: \"opened\",\n _closedStream: \"closed\",\n selectionChange: \"selectionChange\",\n valueChange: \"valueChange\"\n },\n features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature]\n});\n_MatSelectBase.ctorParameters = () => [{\n type: ViewportRuler\n}, {\n type: ChangeDetectorRef\n}, {\n type: NgZone\n}, {\n type: ErrorStateMatcher\n}, {\n type: ElementRef\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}, {\n type: NgForm,\n decorators: [{\n type: Optional\n }]\n}, {\n type: FormGroupDirective,\n decorators: [{\n type: Optional\n }]\n}, {\n type: MatFormField,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }]\n}, {\n type: NgControl,\n decorators: [{\n type: Self\n }, {\n type: Optional\n }]\n}, {\n type: String,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_SELECT_SCROLL_STRATEGY]\n }]\n}, {\n type: LiveAnnouncer\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SELECT_CONFIG]\n }]\n}];\n_MatSelectBase.propDecorators = {\n trigger: [{\n type: ViewChild,\n args: ['trigger']\n }],\n panel: [{\n type: ViewChild,\n args: ['panel']\n }],\n overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }],\n panelClass: [{\n type: Input\n }],\n placeholder: [{\n type: Input\n }],\n required: [{\n type: Input\n }],\n multiple: [{\n type: Input\n }],\n disableOptionCentering: [{\n type: Input\n }],\n compareWith: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n errorStateMatcher: [{\n type: Input\n }],\n typeaheadDebounceInterval: [{\n type: Input\n }],\n sortComparator: [{\n type: Input\n }],\n id: [{\n type: Input\n }],\n openedChange: [{\n type: Output\n }],\n _openedStream: [{\n type: Output,\n args: ['opened']\n }],\n _closedStream: [{\n type: Output,\n args: ['closed']\n }],\n selectionChange: [{\n type: Output\n }],\n valueChange: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatSelectBase, [{\n type: Directive\n }], function () {\n return [{\n type: ɵngcc1.ViewportRuler\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: ɵngcc0.NgZone\n }, {\n type: ɵngcc2.ErrorStateMatcher\n }, {\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc4.NgForm,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc4.FormGroupDirective,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc6.MatFormField,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }]\n }, {\n type: ɵngcc4.NgControl,\n decorators: [{\n type: Self\n }, {\n type: Optional\n }]\n }, {\n type: String,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_SELECT_SCROLL_STRATEGY]\n }]\n }, {\n type: ɵngcc5.LiveAnnouncer\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SELECT_CONFIG]\n }]\n }];\n }, {\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n openedChange: [{\n type: Output\n }],\n _openedStream: [{\n type: Output,\n args: ['opened']\n }],\n _closedStream: [{\n type: Output,\n args: ['closed']\n }],\n selectionChange: [{\n type: Output\n }],\n valueChange: [{\n type: Output\n }],\n id: [{\n type: Input\n }],\n placeholder: [{\n type: Input\n }],\n required: [{\n type: Input\n }],\n multiple: [{\n type: Input\n }],\n disableOptionCentering: [{\n type: Input\n }],\n compareWith: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n typeaheadDebounceInterval: [{\n type: Input\n }],\n trigger: [{\n type: ViewChild,\n args: ['trigger']\n }],\n panel: [{\n type: ViewChild,\n args: ['panel']\n }],\n overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }],\n panelClass: [{\n type: Input\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n errorStateMatcher: [{\n type: Input\n }],\n sortComparator: [{\n type: Input\n }]\n });\n})();\nclass MatSelect extends _MatSelectBase {\n constructor() {\n super(...arguments);\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n this._scrollTop = 0;\n /** The cached font-size of the trigger element. */\n this._triggerFontSize = 0;\n /** The value of the select panel's transform-origin property. */\n this._transformOrigin = 'top';\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n this._offsetY = 0;\n this._positions = [{\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }];\n }\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n */\n _calculateOverlayScroll(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionOffsetFromScrollTop = itemHeight * selectedIndex;\n const halfOptionHeight = itemHeight / 2;\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n }\n ngOnInit() {\n super.ngOnInit();\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n open() {\n if (super._canOpen()) {\n super.open();\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement).fontSize || '0');\n this._calculateOverlayPosition();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this._triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this._triggerFontSize}px`;\n }\n });\n }\n }\n /** Scrolls the active option into view. */\n _scrollOptionIntoView(index) {\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition((index + labelCount) * itemHeight, itemHeight, this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n }\n _positioningSettled() {\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n }\n _panelDoneAnimating(isOpen) {\n if (this.panelOpen) {\n this._scrollTop = 0;\n } else {\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n super._panelDoneAnimating(isOpen);\n }\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n _calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this._viewportRuler.getViewportSize();\n const isRtl = this._isRtl();\n const paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X : SELECT_PANEL_PADDING_X * 2;\n let offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n } else if (this.disableOptionCentering) {\n offsetX = SELECT_PANEL_PADDING_X;\n } else {\n let selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width + (isRtl ? 0 : paddingWidth);\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n */\n _calculateOverlayOffsetY(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n let optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this.disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n } else if (this._scrollTop === maxScroll) {\n const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n let partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n } else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n // The final offset is the option's offset from the top, adjusted for the height difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n }\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n */\n _checkOverlayWithinViewport(maxScroll) {\n const itemHeight = this._getItemHeight();\n const viewportSize = this._viewportRuler.getViewportSize();\n const topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n const bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n const panelHeightTop = Math.abs(this._offsetY);\n const totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n } else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n } else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n }\n /** Adjusts the overlay panel up to fit in the viewport. */\n _adjustPanelUp(panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = `50% bottom 0px`;\n }\n }\n /** Adjusts the overlay panel down to fit in the viewport. */\n _adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = `50% top 0px`;\n return;\n }\n }\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n _calculateOverlayPosition() {\n const itemHeight = this._getItemHeight();\n const items = this._getItemCount();\n const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n const maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n let selectedOptionOffset;\n if (this.empty) {\n selectedOptionOffset = 0;\n } else {\n selectedOptionOffset = Math.max(this.options.toArray().indexOf(this._selectionModel.selected[0]), 0);\n }\n selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n const scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\n }\n /** Sets the transform origin point based on the selected option. */\n _getOriginBasedOnOption() {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return `50% ${originY}px 0px`;\n }\n /** Calculates the height of the select's options. */\n _getItemHeight() {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n }\n /** Calculates the amount of items in the select. This includes options and group labels. */\n _getItemCount() {\n return this.options.length + this.optionGroups.length;\n }\n}\nMatSelect.ɵfac = /*@__PURE__*/function () {\n let ɵMatSelect_BaseFactory;\n return function MatSelect_Factory(t) {\n return (ɵMatSelect_BaseFactory || (ɵMatSelect_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(MatSelect)))(t || MatSelect);\n };\n}();\nMatSelect.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: MatSelect,\n selectors: [[\"mat-select\"]],\n contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.options = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n hostAttrs: [\"role\", \"combobox\", \"aria-autocomplete\", \"none\", \"aria-haspopup\", \"true\", 1, \"mat-select\"],\n hostVars: 20,\n hostBindings: function MatSelect_HostBindings(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵ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 ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", 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-describedby\", ctx._ariaDescribedby || null)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n ɵngcc0.ɵɵclassProp(\"mat-select-disabled\", ctx.disabled)(\"mat-select-invalid\", ctx.errorState)(\"mat-select-required\", ctx.required)(\"mat-select-empty\", ctx.empty)(\"mat-select-multiple\", ctx.multiple);\n }\n },\n inputs: {\n disabled: \"disabled\",\n disableRipple: \"disableRipple\",\n tabIndex: \"tabIndex\"\n },\n exportAs: [\"matSelect\"],\n features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }]), ɵngcc0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 12,\n consts: [[\"cdk-overlay-origin\", \"\", 1, \"mat-select-trigger\", 3, \"click\"], [\"origin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [1, \"mat-select-value\", 3, \"ngSwitch\"], [\"class\", \"mat-select-placeholder mat-select-min-line\", 4, \"ngSwitchCase\"], [\"class\", \"mat-select-value-text\", 3, \"ngSwitch\", 4, \"ngSwitchCase\"], [1, \"mat-select-arrow-wrapper\"], [1, \"mat-select-arrow\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayOffsetY\", \"backdropClick\", \"attach\", \"detach\"], [1, \"mat-select-placeholder\", \"mat-select-min-line\"], [1, \"mat-select-value-text\", 3, \"ngSwitch\"], [\"class\", \"mat-select-min-line\", 4, \"ngSwitchDefault\"], [4, \"ngSwitchCase\"], [1, \"mat-select-min-line\"], [1, \"mat-select-panel-wrap\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"ngClass\", \"keydown\"], [\"panel\", \"\"]],\n template: function MatSelect_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() {\n return ctx.toggle();\n });\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, MatSelect_span_4_Template, 2, 1, \"span\", 3);\n ɵngcc0.ɵɵtemplate(5, MatSelect_span_5_Template, 3, 2, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵelement(7, \"div\", 6);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, MatSelect_ng_template_8_Template, 4, 14, \"ng-template\", 7);\n ɵngcc0.ɵɵlistener(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_8_listener() {\n return ctx.close();\n })(\"attach\", function MatSelect_Template_ng_template_attach_8_listener() {\n return ctx._onAttached();\n })(\"detach\", function MatSelect_Template_ng_template_detach_8_listener() {\n return ctx.close();\n });\n }\n if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵattribute(\"aria-owns\", ctx.panelOpen ? ctx.id + \"-panel\" : null);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.empty);\n ɵngcc0.ɵɵattribute(\"id\", ctx._valueId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", _r0)(\"cdkConnectedOverlayOpen\", ctx.panelOpen)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayMinWidth\", ctx._triggerRect == null ? null : ctx._triggerRect.width)(\"cdkConnectedOverlayOffsetY\", ctx._offsetY);\n }\n },\n dependencies: [ɵngcc7.NgClass, ɵngcc7.NgSwitch, ɵngcc7.NgSwitchCase, ɵngcc7.NgSwitchDefault, ɵngcc8.CdkConnectedOverlay, ɵngcc8.CdkOverlayOrigin],\n styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"],\n encapsulation: 2,\n data: {\n animation: [matSelectAnimations.transformPanelWrap, matSelectAnimations.transformPanel]\n },\n changeDetection: 0\n});\nMatSelect.propDecorators = {\n options: [{\n type: ContentChildren,\n args: [MatOption, {\n descendants: true\n }]\n }],\n optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, {\n descendants: true\n }]\n }],\n customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelect, [{\n type: Component,\n args: [{\n selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"<!--\\n Note that the select trigger element specifies `aria-owns` pointing to the listbox overlay.\\n While aria-owns is not required for the ARIA 1.2 `role=\\\"combobox\\\"` interaction pattern,\\n it fixes an issue with VoiceOver when the select appears inside of an `aria-model=\\\"true\\\"`\\n element (e.g. a dialog). Without this `aria-owns`, the `aria-modal` on a dialog prevents\\n VoiceOver from \\\"seeing\\\" the select's listbox overlay for aria-activedescendant.\\n Using `aria-owns` re-parents the select overlay so that it works again.\\n See https://github.com/angular/components/issues/20694\\n-->\\n<div cdk-overlay-origin\\n [attr.aria-owns]=\\\"panelOpen ? id + '-panel' : null\\\"\\n class=\\\"mat-select-trigger\\\"\\n (click)=\\\"toggle()\\\"\\n #origin=\\\"cdkOverlayOrigin\\\"\\n #trigger>\\n <div class=\\\"mat-select-value\\\" [ngSwitch]=\\\"empty\\\" [attr.id]=\\\"_valueId\\\">\\n <span class=\\\"mat-select-placeholder mat-select-min-line\\\" *ngSwitchCase=\\\"true\\\">{{placeholder}}</span>\\n <span class=\\\"mat-select-value-text\\\" *ngSwitchCase=\\\"false\\\" [ngSwitch]=\\\"!!customTrigger\\\">\\n <span class=\\\"mat-select-min-line\\\" *ngSwitchDefault>{{triggerValue}}</span>\\n <ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content>\\n </span>\\n </div>\\n\\n <div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div>\\n</div>\\n\\n<ng-template\\n cdk-connected-overlay\\n cdkConnectedOverlayLockPosition\\n cdkConnectedOverlayHasBackdrop\\n cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\"\\n [cdkConnectedOverlayPanelClass]=\\\"_overlayPanelClass\\\"\\n [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\"\\n [cdkConnectedOverlayOrigin]=\\\"origin\\\"\\n [cdkConnectedOverlayOpen]=\\\"panelOpen\\\"\\n [cdkConnectedOverlayPositions]=\\\"_positions\\\"\\n [cdkConnectedOverlayMinWidth]=\\\"_triggerRect?.width!\\\"\\n [cdkConnectedOverlayOffsetY]=\\\"_offsetY\\\"\\n (backdropClick)=\\\"close()\\\"\\n (attach)=\\\"_onAttached()\\\"\\n (detach)=\\\"close()\\\">\\n <div class=\\\"mat-select-panel-wrap\\\" [@transformPanelWrap]>\\n <div\\n #panel\\n role=\\\"listbox\\\"\\n tabindex=\\\"-1\\\"\\n class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\"\\n [attr.id]=\\\"id + '-panel'\\\"\\n [attr.aria-multiselectable]=\\\"multiple\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"_getPanelAriaLabelledby()\\\"\\n [ngClass]=\\\"panelClass\\\"\\n [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\"\\n (@transformPanel.done)=\\\"_panelDoneAnimatingStream.next($event.toState)\\\"\\n [style.transformOrigin]=\\\"_transformOrigin\\\"\\n [style.font-size.px]=\\\"_triggerFontSize\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\",\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n // TODO(crisbeto): the value for aria-haspopup should be `listbox`, but currently it's difficult\n // to sync into Google, because of an outdated automated a11y check which flags it as an invalid\n // value. At some point we should try to switch it back to being `listbox`.\n 'aria-haspopup': 'true',\n 'class': 'mat-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n '[class.mat-select-empty]': 'empty',\n '[class.mat-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()'\n },\n animations: [matSelectAnimations.transformPanelWrap, matSelectAnimations.transformPanel],\n providers: [{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }],\n styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"]\n }]\n }], null, {\n options: [{\n type: ContentChildren,\n args: [MatOption, {\n descendants: true\n }]\n }],\n optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, {\n descendants: true\n }]\n }],\n customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }]\n });\n})();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSelectModule {}\nMatSelectModule.ɵfac = function MatSelectModule_Factory(t) {\n return new (t || MatSelectModule)();\n};\nMatSelectModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: MatSelectModule\n});\nMatSelectModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule, MatFormFieldModule, MatOptionModule, MatCommonModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule],\n exports: [CdkScrollableModule, MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatSelectModule, {\n declarations: function () {\n return [MatSelect, MatSelectTrigger];\n },\n imports: function () {\n return [CommonModule, OverlayModule, MatOptionModule, MatCommonModule];\n },\n exports: function () {\n return [CdkScrollableModule, MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule];\n }\n });\n})();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\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, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, _MatSelectBase, matSelectAnimations };","map":{"version":3,"names":["Overlay","CdkConnectedOverlay","OverlayModule","CommonModule","InjectionToken","Directive","EventEmitter","ChangeDetectorRef","NgZone","ElementRef","Optional","Inject","Self","Attribute","ViewChild","Input","Output","Component","ViewEncapsulation","ChangeDetectionStrategy","ContentChildren","ContentChild","NgModule","mixinDisableRipple","mixinTabIndex","mixinDisabled","mixinErrorState","ErrorStateMatcher","_countGroupLabelsBeforeOption","_getOptionScrollPosition","MAT_OPTION_PARENT_COMPONENT","MatOption","MAT_OPTGROUP","MatOptionModule","MatCommonModule","MatFormField","MAT_FORM_FIELD","MatFormFieldControl","MatFormFieldModule","ViewportRuler","CdkScrollableModule","ActiveDescendantKeyManager","LiveAnnouncer","Directionality","coerceBooleanProperty","coerceNumberProperty","SelectionModel","DOWN_ARROW","UP_ARROW","LEFT_ARROW","RIGHT_ARROW","ENTER","SPACE","hasModifierKey","A","NgForm","FormGroupDirective","NgControl","Subject","defer","merge","startWith","switchMap","take","filter","map","distinctUntilChanged","takeUntil","trigger","transition","query","animateChild","state","style","animate","ɵngcc0","ɵngcc1","ɵngcc2","ɵngcc3","ɵngcc4","ɵngcc5","ɵngcc6","ɵngcc7","ɵngcc8","_c0","_c1","MatSelect_span_4_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r2","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","placeholder","MatSelect_span_5_span_1_Template","ctx_r5","triggerValue","MatSelect_span_5_ng_content_2_Template","ɵɵprojection","MatSelect_span_5_Template","ɵɵtemplate","ctx_r3","ɵɵproperty","customTrigger","MatSelect_ng_template_8_Template","_r9","ɵɵgetCurrentView","ɵɵlistener","MatSelect_ng_template_8_Template_div_animation_transformPanel_done_1_listener","$event","ɵɵrestoreView","ctx_r8","ɵɵresetView","_panelDoneAnimatingStream","next","toState","MatSelect_ng_template_8_Template_div_keydown_1_listener","ctx_r10","_handleKeydown","ctx_r4","undefined","ɵɵclassMapInterpolate1","_getPanelTheme","ɵɵstyleProp","_transformOrigin","_triggerFontSize","panelClass","multiple","ɵɵattribute","id","ariaLabel","_getPanelAriaLabelledby","_c2","_c3","matSelectAnimations","transformPanelWrap","optional","transformPanel","transform","minWidth","opacity","getMatSelectDynamicMultipleError","Error","getMatSelectNonArrayValueError","getMatSelectNonFunctionValueError","nextUniqueId","SELECT_PANEL_MAX_HEIGHT","SELECT_PANEL_PADDING_X","SELECT_PANEL_INDENT_PADDING_X","SELECT_ITEM_HEIGHT_EM","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_VIEWPORT_PADDING","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","overlay","scrollStrategies","reposition","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","provide","deps","useFactory","MatSelectChange","constructor","source","value","MatSelectBase","_elementRef","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","_MatSelectMixinBase","MAT_SELECT_TRIGGER","MatSelectTrigger","ɵfac","MatSelectTrigger_Factory","t","ɵdir","ɵɵdefineDirective","type","selectors","features","ɵɵProvidersFeature","useExisting","ngDevMode","ɵsetClassMetadata","args","selector","providers","_MatSelectBase","_viewportRuler","_changeDetectorRef","_ngZone","elementRef","_dir","_parentFormField","tabIndex","scrollStrategyFactory","_liveAnnouncer","_defaultOptions","_a","_b","_c","_panelOpen","_compareWith","o1","o2","_uid","_triggerAriaLabelledBy","_destroy","_onChange","_onTouched","_valueId","_overlayPanelClass","overlayPanelClass","_focused","controlType","_required","_multiple","_disableOptionCentering","disableOptionCentering","optionSelectionChanges","options","changes","pipe","option","onSelectionChange","onStable","openedChange","_openedStream","o","_closedStream","selectionChange","valueChange","valueAccessor","typeaheadDebounceInterval","_typeaheadDebounceInterval","_scrollStrategyFactory","_scrollStrategy","parseInt","focused","_placeholder","stateChanges","required","_selectionModel","compareWith","fn","_initializeSelection","_value","newValue","Array","isArray","_setSelectionByValue","_id","ngOnInit","subscribe","_panelDoneAnimating","panelOpen","ngAfterContentInit","_initKeyManager","changed","event","added","forEach","select","removed","deselect","_resetOptions","ngDoCheck","newAriaLabelledby","_getTriggerAriaLabelledby","element","nativeElement","setAttribute","removeAttribute","updateErrorState","ngOnChanges","_keyManager","withTypeAhead","ngOnDestroy","complete","toggle","close","open","_canOpen","withHorizontalOrientation","_highlightCorrectOption","markForCheck","_isRtl","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","disabled","selected","empty","selectedOptions","viewValue","reverse","join","_handleOpenKeydown","_handleClosedKeydown","keyCode","isArrowKey","isOpenKey","manager","isTyping","altKey","preventDefault","previouslySelectedOption","onKeydown","selectedOption","announce","activeItem","_selectViaInteraction","ctrlKey","hasDeselectedOptions","some","opt","previouslyFocusedIndex","activeItemIndex","shiftKey","_onFocus","_onBlur","_onAttached","overlayDir","positionChange","detectChanges","_positioningSettled","color","isEmpty","Promise","resolve","then","setInactiveStyles","clear","currentValue","_selectValue","_sortValues","correspondingOption","updateActiveItem","find","isSelected","error","console","warn","withVerticalOrientation","withHomeAndEnd","withAllowedModifierKeys","tabOut","focus","change","panel","_scrollOptionIntoView","changedOrDestroyed","_onSelect","isUserInput","_stateChanges","wasSelected","_propagateChanges","setActiveItem","toArray","sort","a","b","sortComparator","indexOf","fallbackValue","valueToEmit","emit","_getChangeEvent","setFirstItemActive","length","labelId","getLabelId","labelExpression","ariaLabelledby","_getAriaActiveDescendant","isOpen","setDescribedByIds","ids","_ariaDescribedby","onContainerClick","shouldLabelFloat","_MatSelectBase_Factory","ɵɵdirectiveInject","ɵɵinjectAttribute","viewQuery","_MatSelectBase_Query","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","first","inputs","errorStateMatcher","outputs","ɵɵInheritDefinitionFeature","ɵɵNgOnChangesFeature","ctorParameters","decorators","String","propDecorators","MatSelect","arguments","_scrollTop","_offsetY","_positions","originX","originY","overlayX","overlayY","_calculateOverlayScroll","selectedIndex","scrollBuffer","maxScroll","itemHeight","_getItemHeight","optionOffsetFromScrollTop","halfOptionHeight","optimalScrollPosition","Math","min","max","_triggerRect","getBoundingClientRect","getComputedStyle","fontSize","_calculateOverlayPosition","overlayRef","overlayElement","index","labelCount","optionGroups","scrollTop","_calculateOverlayOffsetX","offsetX","overlayRect","viewportSize","getViewportSize","isRtl","paddingWidth","group","leftOverflow","left","rightOverflow","right","width","round","updatePosition","_calculateOverlayOffsetY","optionHeightAdjustment","height","maxOptionsDisplayed","floor","optionOffsetFromPanelTop","firstDisplayedIndex","_getItemCount","selectedDisplayIndex","partialItemHeight","_checkOverlayWithinViewport","topSpaceAvailable","top","bottomSpaceAvailable","bottom","panelHeightTop","abs","totalPanelHeight","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","items","panelHeight","scrollContainerHeight","selectedOptionOffset","ɵMatSelect_BaseFactory","MatSelect_Factory","ɵɵgetInheritedFactory","ɵcmp","ɵɵdefineComponent","contentQueries","MatSelect_ContentQueries","dirIndex","ɵɵcontentQuery","hostAttrs","hostVars","hostBindings","MatSelect_HostBindings","MatSelect_keydown_HostBindingHandler","MatSelect_focus_HostBindingHandler","MatSelect_blur_HostBindingHandler","toString","errorState","ɵɵclassProp","disableRipple","exportAs","ngContentSelectors","decls","vars","consts","template","MatSelect_Template","ɵɵprojectionDef","MatSelect_Template_div_click_0_listener","ɵɵelement","MatSelect_Template_ng_template_backdropClick_8_listener","MatSelect_Template_ng_template_attach_8_listener","MatSelect_Template_ng_template_detach_8_listener","_r0","ɵɵreference","dependencies","NgClass","NgSwitch","NgSwitchCase","NgSwitchDefault","CdkOverlayOrigin","styles","encapsulation","data","animation","changeDetection","descendants","None","OnPush","host","animations","MatSelectModule","MatSelectModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","imports","exports","declarations","ngJitMode","ɵɵsetNgModuleScope"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@angular/material/__ivy_ngcc__/fesm2015/select.js"],"sourcesContent":["import { Overlay, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { InjectionToken, Directive, EventEmitter, ChangeDetectorRef, NgZone, ElementRef, Optional, Inject, Self, Attribute, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { mixinDisableRipple, mixinTabIndex, mixinDisabled, mixinErrorState, ErrorStateMatcher, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { MatFormField, MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport { NgForm, FormGroupDirective, NgControl } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, take, filter, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\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 */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/cdk/bidi';\nimport * as ɵngcc4 from '@angular/forms';\nimport * as ɵngcc5 from '@angular/cdk/a11y';\nimport * as ɵngcc6 from '@angular/material/form-field';\nimport * as ɵngcc7 from '@angular/common';\nimport * as ɵngcc8 from '@angular/cdk/overlay';\n\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nfunction MatSelect_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.placeholder);\n} }\nfunction MatSelect_span_5_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r5.triggerValue);\n} }\nfunction MatSelect_span_5_ng_content_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngSwitchCase\", \"true\"]);\n} }\nfunction MatSelect_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtemplate(1, MatSelect_span_5_span_1_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵtemplate(2, MatSelect_span_5_ng_content_2_Template, 1, 0, \"ng-content\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngSwitch\", !!ctx_r3.customTrigger);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n} }\nfunction MatSelect_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 13)(1, \"div\", 14, 15);\n ɵngcc0.ɵɵlistener(\"@transformPanel.done\", function MatSelect_ng_template_8_Template_div_animation_transformPanel_done_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r8._panelDoneAnimatingStream.next($event.toState)); })(\"keydown\", function MatSelect_ng_template_8_Template_div_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r10._handleKeydown($event)); });\n ɵngcc0.ɵɵprojection(3, 1);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@transformPanelWrap\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"mat-select-panel \", ctx_r4._getPanelTheme(), \"\");\n ɵngcc0.ɵɵstyleProp(\"transform-origin\", ctx_r4._transformOrigin)(\"font-size\", ctx_r4._triggerFontSize, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.panelClass)(\"@transformPanel\", ctx_r4.multiple ? \"showing-multiple\" : \"showing\");\n ɵngcc0.ɵɵattribute(\"id\", ctx_r4.id + \"-panel\")(\"aria-multiselectable\", ctx_r4.multiple)(\"aria-label\", ctx_r4.ariaLabel || null)(\"aria-labelledby\", ctx_r4._getPanelAriaLabelledby());\n} }\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\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: trigger('transformPanelWrap', [\n transition('* => void', query('@transformPanel', [animateChild()], { optional: true }))\n ]),\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })),\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })),\n transition('void => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n ])\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\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}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n/**\n * The max height of the select's overlay panel.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_VIEWPORT_PADDING = 8;\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\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 = 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/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n source, \n /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n// Boilerplate for applying mixins to MatSelect.\n/** @docs-private */\nclass MatSelectBase {\n constructor(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n}\nconst _MatSelectMixinBase = mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));\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 = new InjectionToken('MatSelectTrigger');\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nclass MatSelectTrigger {\n}\nMatSelectTrigger.ɵfac = function MatSelectTrigger_Factory(t) { return new (t || MatSelectTrigger)(); };\nMatSelectTrigger.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatSelectTrigger, selectors: [[\"mat-select-trigger\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }])] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectTrigger, [{\n type: Directive,\n args: [{\n selector: 'mat-select-trigger',\n providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }]\n }]\n }], null, null); })();\n/** Base class with all of the `MatSelect` functionality. */\nclass _MatSelectBase extends _MatSelectMixinBase {\n constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {\n var _a, _b, _c;\n super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._viewportRuler = _viewportRuler;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._parentFormField = _parentFormField;\n this.ngControl = ngControl;\n this._liveAnnouncer = _liveAnnouncer;\n this._defaultOptions = _defaultOptions;\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 `ariar-labelledby` value for the select trigger. */\n this._triggerAriaLabelledBy = null;\n /** Emits whenever the component is destroyed. */\n this._destroy = new Subject();\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 = ((_a = this._defaultOptions) === null || _a === void 0 ? void 0 : _a.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 this._required = false;\n this._multiple = false;\n this._disableOptionCentering = (_c = (_b = this._defaultOptions) === null || _b === void 0 ? void 0 : _b.disableOptionCentering) !== null && _c !== void 0 ? _c : false;\n /** Aria label of the select. */\n this.ariaLabel = '';\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._ngZone.onStable\n .pipe(take(1), 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 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 === null || _defaultOptions === void 0 ? void 0 : _defaultOptions.typeaheadDebounceInterval) != null) {\n this._typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;\n }\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 /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() { return this._placeholder; }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether the component is required. */\n get required() { return this._required; }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n /** Whether the user should be allowed to select multiple options. */\n get multiple() { return this._multiple; }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coerceBooleanProperty(value);\n }\n /** Whether to center the active option over the trigger. */\n get disableOptionCentering() { return this._disableOptionCentering; }\n set disableOptionCentering(value) {\n this._disableOptionCentering = coerceBooleanProperty(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() { return this._compareWith; }\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() { return this._value; }\n set value(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 }\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get typeaheadDebounceInterval() { return this._typeaheadDebounceInterval; }\n set typeaheadDebounceInterval(value) {\n this._typeaheadDebounceInterval = coerceNumberProperty(value);\n }\n /** Unique id of the element. */\n get id() { return this._id; }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\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\n .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n .subscribe(() => this._panelDoneAnimating(this.panelOpen));\n }\n ngAfterContentInit() {\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 // 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 }\n else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by `mixinDisabled`, 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']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\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 this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\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 }\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.value = 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 /** 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 ||\n 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 <select>\n if (!manager.isTyping() && (isOpenKey && !hasModifierKey(event)) ||\n ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n else if (!this.multiple) {\n const previouslySelectedOption = this.selected;\n manager.onKeydown(event);\n const selectedOption = this.selected;\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce(selectedOption.viewValue, 10000);\n }\n }\n }\n /** Handles keyboard events when the selected is open. */\n _handleOpenKeydown(event) {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\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 }\n else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem &&\n !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n }\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 }\n else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n 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 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 this._setSelectionByValue(this.ngControl ? this.ngControl.value : 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._selectionModel.selected.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._selectValue(currentValue));\n this._sortValues();\n }\n else {\n const correspondingOption = this._selectValue(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 }\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 _selectValue(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 }\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 /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withTypeAhead(this._typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withHomeAndEnd()\n .withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).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.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\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))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\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 }\n else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) :\n 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) :\n 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 = null;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n }\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 item instead.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n var _a;\n return !this._panelOpen && !this.disabled && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.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 var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.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 var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.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 this._ariaDescribedby = ids.join(' ');\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 return this._panelOpen || !this.empty || (this._focused && !!this._placeholder);\n }\n}\n_MatSelectBase.ɵfac = function _MatSelectBase_Factory(t) { return new (t || _MatSelectBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ErrorStateMatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgForm, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.FormGroupDirective, 8), ɵngcc0.ɵɵdirectiveInject(MAT_FORM_FIELD, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgControl, 10), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LiveAnnouncer), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_CONFIG, 8)); };\n_MatSelectBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: _MatSelectBase, viewQuery: function _MatSelectBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n ɵngcc0.ɵɵviewQuery(CdkConnectedOverlay, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overlayDir = _t.first);\n } }, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], id: \"id\", placeholder: \"placeholder\", required: \"required\", multiple: \"multiple\", disableOptionCentering: \"disableOptionCentering\", compareWith: \"compareWith\", value: \"value\", typeaheadDebounceInterval: \"typeaheadDebounceInterval\", panelClass: \"panelClass\", ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], errorStateMatcher: \"errorStateMatcher\", sortComparator: \"sortComparator\" }, outputs: { openedChange: \"openedChange\", _openedStream: \"opened\", _closedStream: \"closed\", selectionChange: \"selectionChange\", valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n_MatSelectBase.ctorParameters = () => [\n { type: ViewportRuler },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: ErrorStateMatcher },\n { type: ElementRef },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: NgForm, decorators: [{ type: Optional }] },\n { type: FormGroupDirective, decorators: [{ type: Optional }] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] },\n { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },\n { type: LiveAnnouncer },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_SELECT_CONFIG,] }] }\n];\n_MatSelectBase.propDecorators = {\n trigger: [{ type: ViewChild, args: ['trigger',] }],\n panel: [{ type: ViewChild, args: ['panel',] }],\n overlayDir: [{ type: ViewChild, args: [CdkConnectedOverlay,] }],\n panelClass: [{ type: Input }],\n placeholder: [{ type: Input }],\n required: [{ type: Input }],\n multiple: [{ type: Input }],\n disableOptionCentering: [{ type: Input }],\n compareWith: [{ type: Input }],\n value: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n errorStateMatcher: [{ type: Input }],\n typeaheadDebounceInterval: [{ type: Input }],\n sortComparator: [{ type: Input }],\n id: [{ type: Input }],\n openedChange: [{ type: Output }],\n _openedStream: [{ type: Output, args: ['opened',] }],\n _closedStream: [{ type: Output, args: ['closed',] }],\n selectionChange: [{ type: Output }],\n valueChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatSelectBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc1.ViewportRuler }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.ErrorStateMatcher }, { type: ɵngcc0.ElementRef }, { type: ɵngcc3.Directionality, decorators: [{\n type: Optional\n }] }, { type: ɵngcc4.NgForm, decorators: [{\n type: Optional\n }] }, { type: ɵngcc4.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: ɵngcc6.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }, { type: ɵngcc4.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SELECT_SCROLL_STRATEGY]\n }] }, { type: ɵngcc5.LiveAnnouncer }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SELECT_CONFIG]\n }] }]; }, { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], openedChange: [{\n type: Output\n }], _openedStream: [{\n type: Output,\n args: ['opened']\n }], _closedStream: [{\n type: Output,\n args: ['closed']\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], id: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], required: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disableOptionCentering: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], value: [{\n type: Input\n }], typeaheadDebounceInterval: [{\n type: Input\n }], trigger: [{\n type: ViewChild,\n args: ['trigger']\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }], panelClass: [{\n type: Input\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], errorStateMatcher: [{\n type: Input\n }], sortComparator: [{\n type: Input\n }] }); })();\nclass MatSelect extends _MatSelectBase {\n constructor() {\n super(...arguments);\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n this._scrollTop = 0;\n /** The cached font-size of the trigger element. */\n this._triggerFontSize = 0;\n /** The value of the select panel's transform-origin property. */\n this._transformOrigin = 'top';\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n this._offsetY = 0;\n this._positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n }\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n */\n _calculateOverlayScroll(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionOffsetFromScrollTop = itemHeight * selectedIndex;\n const halfOptionHeight = itemHeight / 2;\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n }\n ngOnInit() {\n super.ngOnInit();\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n open() {\n if (super._canOpen()) {\n super.open();\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize =\n parseInt(getComputedStyle(this.trigger.nativeElement).fontSize || '0');\n this._calculateOverlayPosition();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this._triggerFontSize && this.overlayDir.overlayRef &&\n this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this._triggerFontSize}px`;\n }\n });\n }\n }\n /** Scrolls the active option into view. */\n _scrollOptionIntoView(index) {\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition((index + labelCount) * itemHeight, itemHeight, this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n }\n _positioningSettled() {\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n }\n _panelDoneAnimating(isOpen) {\n if (this.panelOpen) {\n this._scrollTop = 0;\n }\n else {\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n super._panelDoneAnimating(isOpen);\n }\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n _calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this._viewportRuler.getViewportSize();\n const isRtl = this._isRtl();\n const paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n let offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n }\n else if (this.disableOptionCentering) {\n offsetX = SELECT_PANEL_PADDING_X;\n }\n else {\n let selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n */\n _calculateOverlayOffsetY(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n let optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this.disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n let partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n }\n else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n // The final offset is the option's offset from the top, adjusted for the height difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n }\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n */\n _checkOverlayWithinViewport(maxScroll) {\n const itemHeight = this._getItemHeight();\n const viewportSize = this._viewportRuler.getViewportSize();\n const topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n const bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n const panelHeightTop = Math.abs(this._offsetY);\n const totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n }\n else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n }\n else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n }\n /** Adjusts the overlay panel up to fit in the viewport. */\n _adjustPanelUp(panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = `50% bottom 0px`;\n }\n }\n /** Adjusts the overlay panel down to fit in the viewport. */\n _adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = `50% top 0px`;\n return;\n }\n }\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n _calculateOverlayPosition() {\n const itemHeight = this._getItemHeight();\n const items = this._getItemCount();\n const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n const maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n let selectedOptionOffset;\n if (this.empty) {\n selectedOptionOffset = 0;\n }\n else {\n selectedOptionOffset =\n Math.max(this.options.toArray().indexOf(this._selectionModel.selected[0]), 0);\n }\n selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n const scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\n }\n /** Sets the transform origin point based on the selected option. */\n _getOriginBasedOnOption() {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return `50% ${originY}px 0px`;\n }\n /** Calculates the height of the select's options. */\n _getItemHeight() {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n }\n /** Calculates the amount of items in the select. This includes options and group labels. */\n _getItemCount() {\n return this.options.length + this.optionGroups.length;\n }\n}\nMatSelect.ɵfac = /*@__PURE__*/ function () { let ɵMatSelect_BaseFactory; return function MatSelect_Factory(t) { return (ɵMatSelect_BaseFactory || (ɵMatSelect_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(MatSelect)))(t || MatSelect); }; }();\nMatSelect.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatSelect, selectors: [[\"mat-select\"]], contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.options = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n } }, hostAttrs: [\"role\", \"combobox\", \"aria-autocomplete\", \"none\", \"aria-haspopup\", \"true\", 1, \"mat-select\"], hostVars: 20, hostBindings: function MatSelect_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function MatSelect_keydown_HostBindingHandler($event) { return ctx._handleKeydown($event); })(\"focus\", function MatSelect_focus_HostBindingHandler() { return ctx._onFocus(); })(\"blur\", function MatSelect_blur_HostBindingHandler() { return ctx._onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", 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-describedby\", ctx._ariaDescribedby || null)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n ɵngcc0.ɵɵclassProp(\"mat-select-disabled\", ctx.disabled)(\"mat-select-invalid\", ctx.errorState)(\"mat-select-required\", ctx.required)(\"mat-select-empty\", ctx.empty)(\"mat-select-multiple\", ctx.multiple);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, exportAs: [\"matSelect\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls: 9, vars: 12, consts: [[\"cdk-overlay-origin\", \"\", 1, \"mat-select-trigger\", 3, \"click\"], [\"origin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [1, \"mat-select-value\", 3, \"ngSwitch\"], [\"class\", \"mat-select-placeholder mat-select-min-line\", 4, \"ngSwitchCase\"], [\"class\", \"mat-select-value-text\", 3, \"ngSwitch\", 4, \"ngSwitchCase\"], [1, \"mat-select-arrow-wrapper\"], [1, \"mat-select-arrow\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayOffsetY\", \"backdropClick\", \"attach\", \"detach\"], [1, \"mat-select-placeholder\", \"mat-select-min-line\"], [1, \"mat-select-value-text\", 3, \"ngSwitch\"], [\"class\", \"mat-select-min-line\", 4, \"ngSwitchDefault\"], [4, \"ngSwitchCase\"], [1, \"mat-select-min-line\"], [1, \"mat-select-panel-wrap\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"ngClass\", \"keydown\"], [\"panel\", \"\"]], template: function MatSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() { return ctx.toggle(); });\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, MatSelect_span_4_Template, 2, 1, \"span\", 3);\n ɵngcc0.ɵɵtemplate(5, MatSelect_span_5_Template, 3, 2, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵelement(7, \"div\", 6);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, MatSelect_ng_template_8_Template, 4, 14, \"ng-template\", 7);\n ɵngcc0.ɵɵlistener(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_8_listener() { return ctx.close(); })(\"attach\", function MatSelect_Template_ng_template_attach_8_listener() { return ctx._onAttached(); })(\"detach\", function MatSelect_Template_ng_template_detach_8_listener() { return ctx.close(); });\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵattribute(\"aria-owns\", ctx.panelOpen ? ctx.id + \"-panel\" : null);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.empty);\n ɵngcc0.ɵɵattribute(\"id\", ctx._valueId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", _r0)(\"cdkConnectedOverlayOpen\", ctx.panelOpen)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayMinWidth\", ctx._triggerRect == null ? null : ctx._triggerRect.width)(\"cdkConnectedOverlayOffsetY\", ctx._offsetY);\n } }, dependencies: [ɵngcc7.NgClass, ɵngcc7.NgSwitch, ɵngcc7.NgSwitchCase, ɵngcc7.NgSwitchDefault, ɵngcc8.CdkConnectedOverlay, ɵngcc8.CdkOverlayOrigin], styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"], encapsulation: 2, data: { animation: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ] }, changeDetection: 0 });\nMatSelect.propDecorators = {\n options: [{ type: ContentChildren, args: [MatOption, { descendants: true },] }],\n optionGroups: [{ type: ContentChildren, args: [MAT_OPTGROUP, { descendants: true },] }],\n customTrigger: [{ type: ContentChild, args: [MAT_SELECT_TRIGGER,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelect, [{\n type: Component,\n args: [{ selector: 'mat-select', exportAs: 'matSelect', template: \"<!--\\n Note that the select trigger element specifies `aria-owns` pointing to the listbox overlay.\\n While aria-owns is not required for the ARIA 1.2 `role=\\\"combobox\\\"` interaction pattern,\\n it fixes an issue with VoiceOver when the select appears inside of an `aria-model=\\\"true\\\"`\\n element (e.g. a dialog). Without this `aria-owns`, the `aria-modal` on a dialog prevents\\n VoiceOver from \\\"seeing\\\" the select's listbox overlay for aria-activedescendant.\\n Using `aria-owns` re-parents the select overlay so that it works again.\\n See https://github.com/angular/components/issues/20694\\n-->\\n<div cdk-overlay-origin\\n [attr.aria-owns]=\\\"panelOpen ? id + '-panel' : null\\\"\\n class=\\\"mat-select-trigger\\\"\\n (click)=\\\"toggle()\\\"\\n #origin=\\\"cdkOverlayOrigin\\\"\\n #trigger>\\n <div class=\\\"mat-select-value\\\" [ngSwitch]=\\\"empty\\\" [attr.id]=\\\"_valueId\\\">\\n <span class=\\\"mat-select-placeholder mat-select-min-line\\\" *ngSwitchCase=\\\"true\\\">{{placeholder}}</span>\\n <span class=\\\"mat-select-value-text\\\" *ngSwitchCase=\\\"false\\\" [ngSwitch]=\\\"!!customTrigger\\\">\\n <span class=\\\"mat-select-min-line\\\" *ngSwitchDefault>{{triggerValue}}</span>\\n <ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content>\\n </span>\\n </div>\\n\\n <div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div>\\n</div>\\n\\n<ng-template\\n cdk-connected-overlay\\n cdkConnectedOverlayLockPosition\\n cdkConnectedOverlayHasBackdrop\\n cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\"\\n [cdkConnectedOverlayPanelClass]=\\\"_overlayPanelClass\\\"\\n [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\"\\n [cdkConnectedOverlayOrigin]=\\\"origin\\\"\\n [cdkConnectedOverlayOpen]=\\\"panelOpen\\\"\\n [cdkConnectedOverlayPositions]=\\\"_positions\\\"\\n [cdkConnectedOverlayMinWidth]=\\\"_triggerRect?.width!\\\"\\n [cdkConnectedOverlayOffsetY]=\\\"_offsetY\\\"\\n (backdropClick)=\\\"close()\\\"\\n (attach)=\\\"_onAttached()\\\"\\n (detach)=\\\"close()\\\">\\n <div class=\\\"mat-select-panel-wrap\\\" [@transformPanelWrap]>\\n <div\\n #panel\\n role=\\\"listbox\\\"\\n tabindex=\\\"-1\\\"\\n class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\"\\n [attr.id]=\\\"id + '-panel'\\\"\\n [attr.aria-multiselectable]=\\\"multiple\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"_getPanelAriaLabelledby()\\\"\\n [ngClass]=\\\"panelClass\\\"\\n [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\"\\n (@transformPanel.done)=\\\"_panelDoneAnimatingStream.next($event.toState)\\\"\\n [style.transformOrigin]=\\\"_transformOrigin\\\"\\n [style.font-size.px]=\\\"_triggerFontSize\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\", inputs: ['disabled', 'disableRipple', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n // TODO(crisbeto): the value for aria-haspopup should be `listbox`, but currently it's difficult\n // to sync into Google, because of an outdated automated a11y check which flags it as an invalid\n // value. At some point we should try to switch it back to being `listbox`.\n 'aria-haspopup': 'true',\n 'class': 'mat-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n '[class.mat-select-empty]': 'empty',\n '[class.mat-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()'\n }, animations: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ], providers: [\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ], styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"] }]\n }], null, { options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSelectModule {\n}\nMatSelectModule.ɵfac = function MatSelectModule_Factory(t) { return new (t || MatSelectModule)(); };\nMatSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MatSelectModule });\nMatSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule, CdkScrollableModule,\n MatFormFieldModule,\n MatOptionModule,\n MatCommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n ],\n exports: [\n CdkScrollableModule,\n MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n MatOptionModule,\n MatCommonModule\n ],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatSelectModule, { declarations: function () { return [MatSelect, MatSelectTrigger]; }, imports: function () { return [CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule]; }, exports: function () { return [CdkScrollableModule,\n MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule,\n MatCommonModule]; } }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\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, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, _MatSelectBase, matSelectAnimations };\n\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |