- Timestamp:
- 11/25/21 22:08:24 (3 years ago)
- Branches:
- master
- Children:
- 8d391a1
- Parents:
- 59329aa
- Location:
- trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js
r59329aa re29cc2e 43 43 } } 44 44 const _c2 = ["*"]; 45 const VERSION$1 = new Version('12.2.1 0');45 const VERSION$1 = new Version('12.2.13'); 46 46 47 47 /** … … 77 77 // Can be removed once the Material primary entry-point no longer 78 78 // re-exports all secondary entry-points 79 const VERSION = new Version('12.2.1 0');79 const VERSION = new Version('12.2.13'); 80 80 /** @docs-private */ 81 81 function MATERIAL_SANITY_CHECKS_FACTORY() { -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js.map
r59329aa re29cc2e 1 {"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"names":["VERSION","CDK_VERSION"],"mappings":"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","sourcesContent":["/**\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.1 0');\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/** @docs-private */\nexport class AnimationCurves {\n static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n static COMPLEX = '375ms';\n static ENTERING = '225ms';\n static EXITING = '195ms';\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\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.10');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n doctype: boolean;\n theme: boolean;\n version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n imports: [BidiModule],\n exports: [BidiModule],\n})\nexport class MatCommonModule {\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n private _hasDoneGlobalChecks = false;\n\n /** Configured sanity checks. */\n private _sanityChecks: SanityChecks;\n\n /** Used to reference correct document/window */\n protected _document: Document;\n\n constructor(\n highContrastModeDetector: HighContrastModeDetector,\n @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n @Inject(DOCUMENT) document: any) {\n this._document = document;\n\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n // Note that `_sanityChecks` is typed to `any`, because AoT\n // throws an error if we use the `SanityChecks` type directly.\n this._sanityChecks = sanityChecks;\n\n if (!this._hasDoneGlobalChecks) {\n this._checkDoctypeIsDefined();\n this._checkThemeIsPresent();\n this._checkCdkVersionMatch();\n this._hasDoneGlobalChecks = true;\n }\n }\n\n /** Gets whether a specific sanity check is enabled. */\n private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n // it. Since these checks can have performance implications and they aren't tree shakeable\n // in their current form, we can leave the `isDevMode` check in for now.\n // tslint:disable-next-line:ban\n if (!isDevMode() || _isTestEnvironment()) {\n return false;\n }\n\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n\n return !!this._sanityChecks[name];\n }\n\n private _checkDoctypeIsDefined(): void {\n if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n console.warn(\n 'Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.'\n );\n }\n }\n\n private _checkThemeIsPresent(): void {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!this._checkIsEnabled('theme') || !this._document.body ||\n typeof getComputedStyle !== 'function') {\n return;\n }\n\n const testElement = this._document.createElement('div');\n\n testElement.classList.add('mat-theme-loaded-marker');\n this._document.body.appendChild(testElement);\n\n const computedStyle = getComputedStyle(testElement);\n\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn(\n 'Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming'\n );\n }\n\n this._document.body.removeChild(testElement);\n }\n\n /** Checks whether the material version matches the cdk version */\n private _checkCdkVersionMatch(): void {\n if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n console.warn(\n 'The Angular Material version (' + VERSION.full + ') does not match ' +\n 'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n 'Please ensure the versions of these two packages exactly match.'\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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n /** Whether the component is disabled. */\n disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n return class extends base {\n private _disabled: boolean = false;\n\n get disabled() { return this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n constructor(...args: any[]) { super(...args); }\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\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n /** Theme color palette for the component. */\n color: ThemePalette;\n\n /** Default color to fall back to if no value is set. */\n defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n return class extends base {\n private _color: ThemePalette;\n defaultColor = defaultColor;\n\n get color(): ThemePalette { return this._color; }\n set color(value: ThemePalette) {\n const colorPalette = value || this.defaultColor;\n\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n\n this._color = colorPalette;\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\n\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n /** Whether ripples are disabled. */\n disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n return class extends base {\n private _disableRipple: boolean = false;\n\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n constructor(...args: any[]) { super(...args); }\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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n\n /** Tabindex to which to fall back to if no value is set. */\n defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n private _tabIndex: number = defaultTabIndex;\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n\n constructor(...args: any[]) {\n super(...args);\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\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n /** Emits whenever the component state changes. */\n readonly stateChanges: Subject<void>;\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState(): void;\n /** Whether the component is in an error state. */\n errorState: boolean;\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n _parentFormGroup: FormGroupDirective;\n _parentForm: NgForm;\n _defaultErrorStateMatcher: ErrorStateMatcher;\n ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n CanUpdateErrorStateCtor & T {\n return class extends base {\n // This class member exists as an interop with `MatFormFieldControl` which expects\n // a public `stateChanges` observable to emit whenever the form field should be updated.\n // The description is not specifically mentioning the error state, as classes using this\n // mixin can/should emit an event in other cases too.\n /** Emits whenever the component state changes. */\n readonly stateChanges = new Subject<void>();\n\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control as FormControl : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\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\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n /** Stream that emits once during the directive/component's ngOnInit. */\n initialized: Observable<void>;\n\n /**\n * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n * the directive has been initialized.\n * @docs-private\n */\n _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n HasInitializedCtor & T {\n return class extends base {\n /** Whether this directive has been marked as initialized. */\n _isInitialized = false;\n\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n _pendingSubscribers: Subscriber<void>[] | null = [];\n\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n initialized = new Observable<void>(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n } else {\n this._pendingSubscribers!.push(subscriber);\n }\n });\n\n constructor(...args: any[]) { super(...args); }\n\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized(): void {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n\n this._isInitialized = true;\n\n this._pendingSubscribers!.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber: Subscriber<void>): void {\n subscriber.next();\n subscriber.complete();\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\nexport {\n MatCommonModule,\n MATERIAL_SANITY_CHECKS,\n SanityChecks,\n GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\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\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n /** The locale to use for all dates. */\n protected locale: any;\n protected readonly _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\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\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any\n },\n display: {\n dateInput: any,\n monthLabel?: any,\n monthYearLabel: any,\n dateA11yLabel: any,\n monthYearA11yLabel: any,\n }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\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\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n *\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n * getting the string representation of a Date object from its utc representation. We're keeping\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\n * though.\n */\n useUtcForDisplay: boolean = true;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n super();\n super.setLocale(matDateLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i =>\n this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n getFirstDayOfWeek(): number {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + 1, 0));\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = {...displayFormat, timeZone: 'utc'};\n\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\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\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\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\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n imports: [PlatformModule],\n providers: [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n imports: [NativeDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\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\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\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\nimport {\n NgModule,\n Directive,\n ElementRef,\n QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[mat-line], [matLine]',\n host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n } else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n const classList = element.nativeElement.classList;\n isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n})\nexport class MatLineModule { }\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/** Possible states for a ripple element. */\nexport const enum RippleState {\n FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n enterDuration?: number;\n /** Duration in milliseconds for the exit animation (fade-out). */\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: {fadeOutRipple(ref: RippleRef): void},\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig) {\n }\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\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 */\nimport {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n /** Configuration for ripples that are launched on pointer down. */\n rippleConfig: RippleConfig;\n /** Whether ripples on pointer down should be disabled. */\n rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement: HTMLElement;\n\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null;\n\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n\n /** Set of currently active ripple references. */\n private _activeRipples = new Set<RippleRef>();\n\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null;\n\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent: number;\n\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n\n /**\n * Cached dimensions of the ripple container. Set when the first\n * ripple is shown and cleared once no more ripples are visible.\n */\n private _containerRect: ClientRect | null;\n\n constructor(private _target: RippleTarget,\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n platform: Platform) {\n\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect();\n const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const duration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${duration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical because then the `scale` would not animate properly.\n enforceStyleRecalculation(ripple);\n\n ripple.style.transform = 'scale(1)';\n\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config);\n\n rippleRef.state = RippleState.FADING_IN;\n\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.add(rippleRef);\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n // Wait for the ripple element to be completely faded in.\n // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n this._runTimeoutOutsideZone(() => {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n rippleRef.state = RippleState.VISIBLE;\n\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }, duration);\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n const wasActive = this._activeRipples.delete(rippleRef);\n\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n // For ripples that are not active anymore, don't re-run the fade-out animation.\n if (!wasActive) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n // Once the ripple faded out, the ripple can be safely removed from the DOM.\n this._runTimeoutOutsideZone(() => {\n rippleRef.state = RippleState.HIDDEN;\n rippleEl.parentNode!.removeChild(rippleEl);\n }, animationConfig.exitDuration);\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._activeRipples.forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._activeRipples.forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!element || element === this._triggerElement) {\n return;\n }\n\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n\n this._triggerElement = element;\n this._registerEvents(pointerDownEvents);\n }\n\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n this._registerEvents(pointerUpEvents);\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches;\n\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n // Fade-out all ripples that are visible and not persistent.\n this._activeRipples.forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible = ripple.state === RippleState.VISIBLE ||\n ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n }\n\n /** Registers event listeners for a given list of events. */\n private _registerEvents(eventTypes: string[]) {\n this._ngZone.runOutsideAngular(() => {\n eventTypes.forEach((type) => {\n this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n });\n });\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n if (this._triggerElement) {\n pointerDownEvents.forEach((type) => {\n this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n });\n\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach((type) => {\n this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n });\n }\n }\n }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\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\nimport {Platform} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n /**\n * Whether ripples should be disabled. Ripples can be still launched manually by using\n * the `launch()` method. Therefore focus indicators will still show up.\n */\n disabled?: boolean;\n\n /**\n * Default configuration for the animation duration of the ripples. There are two phases with\n * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * Whether ripples should start fading out immediately after the mouse or touch is released. By\n * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n */\n terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded'\n }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n /** Custom color for all ripples. */\n @Input('matRippleColor') color: string;\n\n /** Whether the ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean;\n\n /**\n * Whether the ripple always originates from the center of the host element's bounds, rather\n * than originating from the location of the click event.\n */\n @Input('matRippleCentered') centered: boolean;\n\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n @Input('matRippleRadius') radius: number = 0;\n\n /**\n * Configuration for the ripple animation. Allows modifying the enter and exit animation\n * duration of the ripples. The animation durations will be overwritten if the\n * `NoopAnimationsModule` is being used.\n */\n @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n @Input('matRippleDisabled')\n get disabled() { return this._disabled; }\n set disabled(value: boolean) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n private _disabled: boolean = false;\n\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n @Input('matRippleTrigger')\n get trigger() { return this._trigger || this._elementRef.nativeElement; }\n set trigger(trigger: HTMLElement) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n private _trigger: HTMLElement;\n\n /** Renderer for the ripple DOM manipulations. */\n private _rippleRenderer: RippleRenderer;\n\n /** Options that are set globally for all ripples. */\n private _globalOptions: RippleGlobalOptions;\n\n /** Whether ripple directive is initialized and the input bindings are set. */\n private _isInitialized: boolean = false;\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n ...this.animation\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled(): boolean {\n return this.disabled || !!this._globalOptions.disabled;\n }\n\n /** Sets up the trigger event listeners if ripples are enabled. */\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n\n /**\n * Launches a manual ripple using the specified ripple configuration.\n * @param config Configuration for the manual ripple.\n */\n launch(config: RippleConfig): RippleRef;\n\n /**\n * Launches a manual ripple at the specified coordinates relative to the viewport.\n * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param config Optional ripple configuration for the manual ripple.\n */\n launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\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\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n imports: [MatCommonModule, PlatformModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n})\nexport class MatRippleModule {}\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\nimport {\n Component,\n ViewEncapsulation,\n Input,\n ChangeDetectionStrategy,\n Inject,\n Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styleUrls: ['pseudo-checkbox.css'],\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n})\nexport class MatPseudoCheckbox {\n /** Display state of the checkbox. */\n @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n /** Whether the checkbox is disabled. */\n @Input() disabled: boolean = false;\n\n constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\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\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatPseudoCheckbox],\n declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n disableRipple?: boolean;\n multiple?: boolean;\n inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\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\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Input,\n ViewEncapsulation,\n Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n /** Label for the option group. */\n @Input() label: string;\n\n /** Unique id for the underlying label. */\n _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n /** Whether the group is in inert a11y mode. */\n _inert: boolean;\n\n constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n super();\n this._inert = parent?.inertGroups ?? false;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n templateUrl: 'optgroup.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled'],\n styleUrls: ['optgroup.css'],\n host: {\n 'class': 'mat-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n '[class.mat-optgroup-disabled]': 'disabled',\n },\n providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n public source: _MatOptionBase,\n /** Whether the change in the option's value was a result of a user action. */\n public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n private _selected = false;\n private _active = false;\n private _disabled = false;\n private _mostRecentViewValue = '';\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() { return this._parent && this._parent.multiple; }\n\n /** Whether or not the option is currently selected. */\n get selected(): boolean { return this._selected; }\n\n /** The form value of the option. */\n @Input() value: any;\n\n /** The unique ID of the option. */\n @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n /** Whether the option is disabled. */\n @Input()\n get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n /** Whether ripples for the option are disabled. */\n get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _parent: MatOptionParentComponent,\n readonly group: _MatOptgroupBase) {}\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue(): string {\n // TODO(kara): Add input property alternative for node envs.\n return (this._getHostElement().textContent || '').trim();\n }\n\n /** Selects the option. */\n select(): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** Deselects the option. */\n deselect(): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** Sets focus onto this option. */\n focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n /**\n * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n * attributes adds a significant amount of noise to screen-reader users without providing useful\n * information.\n */\n _getAriaSelected(): boolean|null {\n return this.selected || (this.multiple ? false : null);\n }\n\n /** Returns the correct tabindex for the option depending on disabled state. */\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Gets the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this._mostRecentViewValue) {\n this._mostRecentViewValue = viewValue;\n this._stateChanges.next();\n }\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n\n /** Emits the selection change event. */\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-selected]': 'selected',\n '[class.mat-option-multiple]': 'multiple',\n '[class.mat-active]': 'active',\n '[id]': 'id',\n '[attr.aria-selected]': '_getAriaSelected()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[class.mat-option-disabled]': 'disabled',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-option mat-focus-indicator',\n },\n styleUrls: ['option.css'],\n templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n constructor(\n element: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n super(element, changeDetectorRef, parent, group);\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n optionGroups: QueryList<MatOptgroup>): number {\n\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n currentScrollPosition: number, panelHeight: number): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\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\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"]}1 {"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"names":["VERSION","CDK_VERSION"],"mappings":"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","sourcesContent":["/**\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.13');\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/** @docs-private */\nexport class AnimationCurves {\n static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n static COMPLEX = '375ms';\n static ENTERING = '225ms';\n static EXITING = '195ms';\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\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.13');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n doctype: boolean;\n theme: boolean;\n version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n imports: [BidiModule],\n exports: [BidiModule],\n})\nexport class MatCommonModule {\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n private _hasDoneGlobalChecks = false;\n\n /** Configured sanity checks. */\n private _sanityChecks: SanityChecks;\n\n /** Used to reference correct document/window */\n protected _document: Document;\n\n constructor(\n highContrastModeDetector: HighContrastModeDetector,\n @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n @Inject(DOCUMENT) document: any) {\n this._document = document;\n\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n // Note that `_sanityChecks` is typed to `any`, because AoT\n // throws an error if we use the `SanityChecks` type directly.\n this._sanityChecks = sanityChecks;\n\n if (!this._hasDoneGlobalChecks) {\n this._checkDoctypeIsDefined();\n this._checkThemeIsPresent();\n this._checkCdkVersionMatch();\n this._hasDoneGlobalChecks = true;\n }\n }\n\n /** Gets whether a specific sanity check is enabled. */\n private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n // it. Since these checks can have performance implications and they aren't tree shakeable\n // in their current form, we can leave the `isDevMode` check in for now.\n // tslint:disable-next-line:ban\n if (!isDevMode() || _isTestEnvironment()) {\n return false;\n }\n\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n\n return !!this._sanityChecks[name];\n }\n\n private _checkDoctypeIsDefined(): void {\n if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n console.warn(\n 'Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.'\n );\n }\n }\n\n private _checkThemeIsPresent(): void {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!this._checkIsEnabled('theme') || !this._document.body ||\n typeof getComputedStyle !== 'function') {\n return;\n }\n\n const testElement = this._document.createElement('div');\n\n testElement.classList.add('mat-theme-loaded-marker');\n this._document.body.appendChild(testElement);\n\n const computedStyle = getComputedStyle(testElement);\n\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn(\n 'Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming'\n );\n }\n\n this._document.body.removeChild(testElement);\n }\n\n /** Checks whether the material version matches the cdk version */\n private _checkCdkVersionMatch(): void {\n if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n console.warn(\n 'The Angular Material version (' + VERSION.full + ') does not match ' +\n 'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n 'Please ensure the versions of these two packages exactly match.'\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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n /** Whether the component is disabled. */\n disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n return class extends base {\n private _disabled: boolean = false;\n\n get disabled() { return this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n constructor(...args: any[]) { super(...args); }\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\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n /** Theme color palette for the component. */\n color: ThemePalette;\n\n /** Default color to fall back to if no value is set. */\n defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n return class extends base {\n private _color: ThemePalette;\n defaultColor = defaultColor;\n\n get color(): ThemePalette { return this._color; }\n set color(value: ThemePalette) {\n const colorPalette = value || this.defaultColor;\n\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n\n this._color = colorPalette;\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\n\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n /** Whether ripples are disabled. */\n disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n return class extends base {\n private _disableRipple: boolean = false;\n\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n constructor(...args: any[]) { super(...args); }\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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n\n /** Tabindex to which to fall back to if no value is set. */\n defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n private _tabIndex: number = defaultTabIndex;\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n\n constructor(...args: any[]) {\n super(...args);\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\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n /** Emits whenever the component state changes. */\n readonly stateChanges: Subject<void>;\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState(): void;\n /** Whether the component is in an error state. */\n errorState: boolean;\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n _parentFormGroup: FormGroupDirective;\n _parentForm: NgForm;\n _defaultErrorStateMatcher: ErrorStateMatcher;\n ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n CanUpdateErrorStateCtor & T {\n return class extends base {\n // This class member exists as an interop with `MatFormFieldControl` which expects\n // a public `stateChanges` observable to emit whenever the form field should be updated.\n // The description is not specifically mentioning the error state, as classes using this\n // mixin can/should emit an event in other cases too.\n /** Emits whenever the component state changes. */\n readonly stateChanges = new Subject<void>();\n\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control as FormControl : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\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\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n /** Stream that emits once during the directive/component's ngOnInit. */\n initialized: Observable<void>;\n\n /**\n * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n * the directive has been initialized.\n * @docs-private\n */\n _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n HasInitializedCtor & T {\n return class extends base {\n /** Whether this directive has been marked as initialized. */\n _isInitialized = false;\n\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n _pendingSubscribers: Subscriber<void>[] | null = [];\n\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n initialized = new Observable<void>(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n } else {\n this._pendingSubscribers!.push(subscriber);\n }\n });\n\n constructor(...args: any[]) { super(...args); }\n\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized(): void {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n\n this._isInitialized = true;\n\n this._pendingSubscribers!.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber: Subscriber<void>): void {\n subscriber.next();\n subscriber.complete();\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\nexport {\n MatCommonModule,\n MATERIAL_SANITY_CHECKS,\n SanityChecks,\n GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\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\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n /** The locale to use for all dates. */\n protected locale: any;\n protected readonly _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\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\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any\n },\n display: {\n dateInput: any,\n monthLabel?: any,\n monthYearLabel: any,\n dateA11yLabel: any,\n monthYearA11yLabel: any,\n }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\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\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n *\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n * getting the string representation of a Date object from its utc representation. We're keeping\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\n * though.\n */\n useUtcForDisplay: boolean = true;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n super();\n super.setLocale(matDateLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i =>\n this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n getFirstDayOfWeek(): number {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + 1, 0));\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = {...displayFormat, timeZone: 'utc'};\n\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\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\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\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\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n imports: [PlatformModule],\n providers: [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n imports: [NativeDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\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\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\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\nimport {\n NgModule,\n Directive,\n ElementRef,\n QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[mat-line], [matLine]',\n host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n } else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n const classList = element.nativeElement.classList;\n isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n})\nexport class MatLineModule { }\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/** Possible states for a ripple element. */\nexport const enum RippleState {\n FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n enterDuration?: number;\n /** Duration in milliseconds for the exit animation (fade-out). */\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: {fadeOutRipple(ref: RippleRef): void},\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig) {\n }\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\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 */\nimport {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n /** Configuration for ripples that are launched on pointer down. */\n rippleConfig: RippleConfig;\n /** Whether ripples on pointer down should be disabled. */\n rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement: HTMLElement;\n\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null;\n\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n\n /** Set of currently active ripple references. */\n private _activeRipples = new Set<RippleRef>();\n\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null;\n\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent: number;\n\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n\n /**\n * Cached dimensions of the ripple container. Set when the first\n * ripple is shown and cleared once no more ripples are visible.\n */\n private _containerRect: ClientRect | null;\n\n constructor(private _target: RippleTarget,\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n platform: Platform) {\n\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect();\n const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const duration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${duration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical because then the `scale` would not animate properly.\n enforceStyleRecalculation(ripple);\n\n ripple.style.transform = 'scale(1)';\n\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config);\n\n rippleRef.state = RippleState.FADING_IN;\n\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.add(rippleRef);\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n // Wait for the ripple element to be completely faded in.\n // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n this._runTimeoutOutsideZone(() => {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n rippleRef.state = RippleState.VISIBLE;\n\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }, duration);\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n const wasActive = this._activeRipples.delete(rippleRef);\n\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n // For ripples that are not active anymore, don't re-run the fade-out animation.\n if (!wasActive) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n // Once the ripple faded out, the ripple can be safely removed from the DOM.\n this._runTimeoutOutsideZone(() => {\n rippleRef.state = RippleState.HIDDEN;\n rippleEl.parentNode!.removeChild(rippleEl);\n }, animationConfig.exitDuration);\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._activeRipples.forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._activeRipples.forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!element || element === this._triggerElement) {\n return;\n }\n\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n\n this._triggerElement = element;\n this._registerEvents(pointerDownEvents);\n }\n\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n this._registerEvents(pointerUpEvents);\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches;\n\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n // Fade-out all ripples that are visible and not persistent.\n this._activeRipples.forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible = ripple.state === RippleState.VISIBLE ||\n ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n }\n\n /** Registers event listeners for a given list of events. */\n private _registerEvents(eventTypes: string[]) {\n this._ngZone.runOutsideAngular(() => {\n eventTypes.forEach((type) => {\n this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n });\n });\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n if (this._triggerElement) {\n pointerDownEvents.forEach((type) => {\n this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n });\n\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach((type) => {\n this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n });\n }\n }\n }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\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\nimport {Platform} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n /**\n * Whether ripples should be disabled. Ripples can be still launched manually by using\n * the `launch()` method. Therefore focus indicators will still show up.\n */\n disabled?: boolean;\n\n /**\n * Default configuration for the animation duration of the ripples. There are two phases with\n * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * Whether ripples should start fading out immediately after the mouse or touch is released. By\n * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n */\n terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded'\n }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n /** Custom color for all ripples. */\n @Input('matRippleColor') color: string;\n\n /** Whether the ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean;\n\n /**\n * Whether the ripple always originates from the center of the host element's bounds, rather\n * than originating from the location of the click event.\n */\n @Input('matRippleCentered') centered: boolean;\n\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n @Input('matRippleRadius') radius: number = 0;\n\n /**\n * Configuration for the ripple animation. Allows modifying the enter and exit animation\n * duration of the ripples. The animation durations will be overwritten if the\n * `NoopAnimationsModule` is being used.\n */\n @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n @Input('matRippleDisabled')\n get disabled() { return this._disabled; }\n set disabled(value: boolean) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n private _disabled: boolean = false;\n\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n @Input('matRippleTrigger')\n get trigger() { return this._trigger || this._elementRef.nativeElement; }\n set trigger(trigger: HTMLElement) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n private _trigger: HTMLElement;\n\n /** Renderer for the ripple DOM manipulations. */\n private _rippleRenderer: RippleRenderer;\n\n /** Options that are set globally for all ripples. */\n private _globalOptions: RippleGlobalOptions;\n\n /** Whether ripple directive is initialized and the input bindings are set. */\n private _isInitialized: boolean = false;\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n ...this.animation\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled(): boolean {\n return this.disabled || !!this._globalOptions.disabled;\n }\n\n /** Sets up the trigger event listeners if ripples are enabled. */\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n\n /**\n * Launches a manual ripple using the specified ripple configuration.\n * @param config Configuration for the manual ripple.\n */\n launch(config: RippleConfig): RippleRef;\n\n /**\n * Launches a manual ripple at the specified coordinates relative to the viewport.\n * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param config Optional ripple configuration for the manual ripple.\n */\n launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\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\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n imports: [MatCommonModule, PlatformModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n})\nexport class MatRippleModule {}\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\nimport {\n Component,\n ViewEncapsulation,\n Input,\n ChangeDetectionStrategy,\n Inject,\n Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styleUrls: ['pseudo-checkbox.css'],\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n})\nexport class MatPseudoCheckbox {\n /** Display state of the checkbox. */\n @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n /** Whether the checkbox is disabled. */\n @Input() disabled: boolean = false;\n\n constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\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\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatPseudoCheckbox],\n declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n disableRipple?: boolean;\n multiple?: boolean;\n inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\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\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Input,\n ViewEncapsulation,\n Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n /** Label for the option group. */\n @Input() label: string;\n\n /** Unique id for the underlying label. */\n _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n /** Whether the group is in inert a11y mode. */\n _inert: boolean;\n\n constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n super();\n this._inert = parent?.inertGroups ?? false;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n templateUrl: 'optgroup.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled'],\n styleUrls: ['optgroup.css'],\n host: {\n 'class': 'mat-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n '[class.mat-optgroup-disabled]': 'disabled',\n },\n providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n public source: _MatOptionBase,\n /** Whether the change in the option's value was a result of a user action. */\n public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n private _selected = false;\n private _active = false;\n private _disabled = false;\n private _mostRecentViewValue = '';\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() { return this._parent && this._parent.multiple; }\n\n /** Whether or not the option is currently selected. */\n get selected(): boolean { return this._selected; }\n\n /** The form value of the option. */\n @Input() value: any;\n\n /** The unique ID of the option. */\n @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n /** Whether the option is disabled. */\n @Input()\n get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n /** Whether ripples for the option are disabled. */\n get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _parent: MatOptionParentComponent,\n readonly group: _MatOptgroupBase) {}\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue(): string {\n // TODO(kara): Add input property alternative for node envs.\n return (this._getHostElement().textContent || '').trim();\n }\n\n /** Selects the option. */\n select(): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** Deselects the option. */\n deselect(): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** Sets focus onto this option. */\n focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n /**\n * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n * attributes adds a significant amount of noise to screen-reader users without providing useful\n * information.\n */\n _getAriaSelected(): boolean|null {\n return this.selected || (this.multiple ? false : null);\n }\n\n /** Returns the correct tabindex for the option depending on disabled state. */\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Gets the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this._mostRecentViewValue) {\n this._mostRecentViewValue = viewValue;\n this._stateChanges.next();\n }\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n\n /** Emits the selection change event. */\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-selected]': 'selected',\n '[class.mat-option-multiple]': 'multiple',\n '[class.mat-active]': 'active',\n '[id]': 'id',\n '[attr.aria-selected]': '_getAriaSelected()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[class.mat-option-disabled]': 'disabled',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-option mat-focus-indicator',\n },\n styleUrls: ['option.css'],\n templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n constructor(\n element: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n super(element, changeDetectorRef, parent, group);\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n optionGroups: QueryList<MatOptgroup>): number {\n\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n currentScrollPosition: number, panelHeight: number): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\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\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"]} -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js.map
r59329aa re29cc2e 1 {"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"names":["observableOf"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA;AACA;;;;;;;;AACA,MAAa,eAAe;AAAG,IAA/B;AAAgB;AAGK,QAWnB,SAAI,GAAgB,QAAQ,CAAC;AAC/B;AAEK,QAAH,eAAU,GAAuB,EAAE,CAAC;AACtC;AAEK,QAAH,gBAAW,GAAa,IAAI,CAAC;AAC/B;AAEK,QAAH,kBAAa,GAAuB,EAAE,CAAC;AACzC;AAEK,QAAH,iBAAY,GAAa,KAAK,CAAC;AACjC;AAEK,QAAH,UAAK,GAAY,EAAE,CAAC;AACtB;AAEK,QAAH,WAAM,GAAY,EAAE,CAAC;AACvB;AAEuB,QAMrB,aAAQ,GAAqB,MAAM,CAAC;AACtC;AAC4D,QAO1D,SAAI,GAAc,IAAI,CAAC;AACzB;AAEO,QAGL,oBAAe,GAAmB,IAAI,CAAC;AACzC;AAEK,QAAH,mBAAc,GAAmB,IAAI,CAAC;AACxC;AAEK,QAAH,cAAS,GAAmB,IAAI,CAAC;AACnC;AAEK,QAAH,cAAS,GAAa,IAAI,CAAC;AAC7B;AAEK;AACM;AAEA;AAAY,QAArB,iBAAY,GAAa,IAAI,CAAC;AAChC;AACW;AAID;AACO;AAAwC;AAAY,QAGnE,sBAAiB,GAAa,IAAI,CAAC;AACrC;AACiF,KAIhF;AACD;AAAE;ACzHF;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA,MAAa,mBAAmB,GAE5B;AACJ;AACE,IAAA,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE;AAC9C;AACI;AACI;AACI,QAAR,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC,CAAC;AACrE,QAAI,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;AAC9C,QAAI,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,kCAAkC,EAC/D,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAChD,QAAI,UAAU,CAAC,sBAAsB,EAC7B,OAAO,CAAC,qCAAqC,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAC5E,KAAG,CAAC;AACJ;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AAoCA;AACA;AACA;AACA;AACA;AACA,SAAgB,yCAAyC;AACzD,IAAE,MAAM,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvF,CAAC;AAED;AACA;AACA;AACA;AACA,MACsB,uBAAwB,SAAQ,gBAAgB;AACtE,IA2BE,YACY,WAAuB,EACvB,iBAAmC,EACnC,kBAAqC,EACjB,SAAc;AAC/C;AACA,IAAU,OAAwB,EACvB,aAA4B;AACxC,QACI,KAAK,EAAE,CAAC;AACZ,QATc,gBAAW,GAAX,WAAW,CAAY;AAAC,QACxB,sBAAiB,GAAjB,iBAAiB,CAAkB;AAAC,QACpC,uBAAkB,GAAlB,kBAAkB,CAAmB;AAAC,QAGzC,YAAO,GAAP,OAAO,CAAiB;AAAC,QACxB,kBAAa,GAAb,aAAa,CAAe;AAAC;AAGJ,QA5BnC,2BAAsB,GAAG,IAAI,YAAY,EAAwB,CAAC;AACpE;AAEK,QAAK,yCAAoC,GAAuB,IAAI,CAAC;AAC1E;AAEK;AACM;AACM;AAEA;AAAY,QAA3B,0BAAqB,GAAqB,IAAI,CAAC;AACjD;AACW;AAA0D;AAG/D;AACQ;AAGI;AAAY,QAyDnB,oBAAe,GAAG,CAAC,MAAiB;AAC/C,YAAI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,gBAAM,yCAAyC,EAAE,CAAC;AAClD,aAAK;AACL,YACI,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACtD,SAAG,CAAA;AACH,QAvDI,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;AAC1D,QAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,KAAG;AACH;AAE2B,IAGzB,8BAA8B;AAChC,QAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B;AACI;AACI,QAAJ,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAC5C;AACI;AACI,QAAJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,qBAAqB,CAAI,MAA0B;AAAI,QACrD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,YAAM,yCAAyC,EAAE,CAAC;AAClD,SAAK;AACL,QACI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,oBAAoB,CAAI,MAAyB;AAAI,QACnD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,YAAM,yCAAyC,EAAE,CAAC;AAClD,SAAK;AACL,QACI,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAG;AACH;AAGM,IAaJ,eAAe;AACjB,QAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAChC,YAAM,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;AAC/F,YACM,IAAI,cAAc,EAAE;AAC1B,gBAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/C,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC,IAAW,UAAU;AACtB;AACI;AACI;AACI,QAAR,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAChC,YAAM,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC;AACrD,SAAK;AAAC,aAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACvC;AACM;AACM;AACM;AACM;AACM,YAAxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,MAAM,eAAe,GAAG,IAAI,CAAC,oCAAoC,CAAC;AACtE;AAEG,QAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,eAAe;AACpD,YAAQ,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE;AACrD,YAAM,MAAM,aAAa,GAAG,iCAAiC,EAAE,CAAC;AAChE,YAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACrD;AAEK;AACM;AACM;AACM,YAAjB,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,aAAa,KAAK,OAAO;AAC9F,gBAAU,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC3C,gBAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,oBAAU,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACnF,oBAAU,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC5C,iBAAS;AAAC,qBAAK;AACf,oBAAU,eAAe,CAAC,KAAK,EAAE,CAAC;AAClC,iBAAS;AACT,aAAO;AACP,SAAK;AACL,QACI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,YAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAChC,SAAK;AACL,KAAG;AACH;AAEC,IAAS,eAAe;AACzB,QAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpF,KAAG;AACH;AAEC,IAAS,gCAAgC;AAC1C,QAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,YAAM,IAAI,CAAC,oCAAoC,GAAG,iCAAiC,EAAE,CAAC;AACtF,SAAK;AACL,KAAG;AACH;AAEC,IAAS,qBAAqB;AAC/B;AACI,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAK;AACL,KAAG;AACH;AAEC,IAAS,cAAc;AACxB,QAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,QAAI,MAAM,aAAa,GAAG,iCAAiC,EAAE,CAAC;AAC9D,QAAI,OAAO,OAAO,KAAK,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxE,KAAG;AACH;mDAnLC,SAAS;;;;;;0DACR;AAAC;AAAiD,YA/BlD,UAAU;AACV,YAjB4C,gBAAgB;AAAI,YAYhE,iBAAiB;AACjB,4CAkEG,QAAQ,YAAI,MAAM,SAAC,QAAQ;AAAS,YAtDjC,eAAe;AAAI,YAzBnB,YAAY;AAAG;AAAG;AAA2C,4BAmDlE,SAAS,SAAC,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;AAAM;;;;;;;;;;;oBAAE;AAgLpD;AACA;AACA;AACA;AACA;AACA,MAuBa,kBAAmB,SAAQ,uBAAuB;AAC/D,IAxBA;AACG;AAA6B;AAE9B,QAsBA,WAAM,GAA8B,OAAO,CAAC;AAC9C,KA6BC;AACD;AAA0E,IA5BxE,gBAAgB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAiB;AACvD,QAAI,IAAI,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;AACrE,SAAK;AAAC,aAAK,IAAI,OAAO,KAAK,MAAM,EAAE;AACnC,YAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;AACrE,SAAK;AACL,KAAG;AACH;AAEC,IAAC,iBAAiB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAiB;AACxD,QAAI,IAAI,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AACtE,SAAK;AAAC,aAAK,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE;AACzD,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AACtE,SAAK;AACL,KAAG;AACH;AAEC,IAAC,mBAAmB;AAAK,QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;AAEG;AACI,QAAH,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;AAC3C,KAAG;AACH;8CAvDC,SAAS,SAAC,kBACT,QAAQ,EAAE,sBAAsB,kBAChC,yDAAoC,kBAEpC,aAAa,EAAE,iBAAiB,CAAC,IAAI;uIAGrC,eAAe,EAAE,uBAAuB,CAAC,OAAO,kBAChD,UAAU,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,kBACjD,IAAI,EAAE,sBACJ,OAAO;AAAE,sBAAsB,sBAC/B,UAAU,EAAE,IAAI,sBAChB,YAAY,EAAE,MAAM,sBACpB,MAAM,EAAE,KAAK,sBACb,aAAa,EAAE,cAAc,sBAC7B,wBAAwB,EAAE,4CAA4C,sBACtE,mBAAmB,EAAE,mBAAmB;eACxC;oBAAyB,EAAE;SAAiC,sBAC5D,oBAAoB,EAAE,QAAQ,sBAC9B,0BAA0B,EAAE,2BAA2B,sBACvD,yBAAyB,EAAE,0BAA0B;aACtD;;;mqBACF;;;;;;;;;;;;;;;;;;;;;;;;;;0BACI;AAAC;ACxQN;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AAEA;AACA,IAAI,QAAQ,GAAG,CAAC,CAAC;AAKjB;AACA;AACA;AACA,MAAa,YAAY;AAAG,IAyB1B,YACU,WAAuB,EACxB,kBAA2C;AACrD;AACA,IAAY,KAAa,cAAc,QAAQ,EAAE,EAAE;AACpD,QAJY,gBAAW,GAAX,WAAW,CAAY;AAAC,QACzB,uBAAkB,GAAlB,kBAAkB,CAAyB;AAAC,QAE1C,OAAE,GAAF,EAAE,CAAqC;AAAC;AAGpC,QA3Bf,iBAAY,GAAwB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC;AACnF;AAEK,QAAc,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AACtD;AAEK,QAAc,iBAAY,GAAG,IAAI,OAAO,EAAiB,CAAC;AAC/D;AAEK,QAAc,kBAAa,GAAG,IAAI,OAAO,EAAiB,CAAC;AAChE;AAC2C,QAOjC,WAAM,gBAAuB;AACvC;AAE+B,QAM3B,kBAAkB,CAAC,GAAG,GAAG,EAAE,CAAC;AAChC;AAEG,QAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAC5C,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,EACzC,IAAI,CAAC,CAAC,CAAC,CACR;AACL,aAAK,SAAS,CAAC;AACf,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,YAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAK,CAAC,CAAC;AACP;AAEG,QAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAC5C,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,EACzC,IAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS,CAAC;AAChB,YAAM,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/C,YAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChC,SAAK,CAAC,CAAC;AACP,QACI,WAAW,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;AACxC,YAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACpC,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnC,YAAM,IAAI,CAAC,iBAAiB,GAAG,IAAK,CAAC;AACrC,YAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACjC,SAAK,CAAC,CAAC;AACP,QACI,WAAW,CAAC,aAAa,EAAE;AAC/B,aAAO,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAQ,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACxF,SAAO,CAAC,CAAC;AACT,aAAO,SAAS,CAAC,KAAK;AACtB,YAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;AAC/B,YAAQ,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,SAAO,CAAC,CAAC;AACT,QACI,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC1C,YAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7B,gBAAQ,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAClD,aAAO;AAAC,iBAAK;AACb,gBAAQ,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,aAAO;AACP,SAAK,CAAC,CAAC;AACP,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,KAAK,CAAC,YAAgB;AAAI,QACxB,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;AAChC;AAEG,QAAC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CACjD,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,EAC1C,IAAI,CAAC,CAAC,CAAC,CACR;AACL,aAAK,SAAS,CAAC,KAAK;AACpB,YAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C,YAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACpC,YAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACxC;AAEK;AACM;AACM;AACM;AACM,YAAvB,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EACnE,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;AACjC,SAAK,CAAC,CAAC;AACP,QACI,IAAI,CAAC,MAAM,mBAA0B;AACzC,QAAI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAClD,KAAG;AACH;AAEC;AACE;AACE,IAAH,WAAW;AAAK,QACd,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,KAAG;AACH;AAEC;AACE;AACE,IAAH,WAAW;AAAK,QACd,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,KAAG;AACH;AAEC;AACE;AACE,IAAH,YAAY;AAAK,QACf,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,KAAG;AACH;AAEC;AACE;AACE,IAAH,aAAa;AAAK,QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE,IAAH,aAAa;AAAK,QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,cAAc,CAAC,QAAyB;AAAI,QAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/C,QACI,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,YAAM,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpF,SAAK;AAAC,aAAK;AACX,YAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AACpC,SAAK;AACL,QACI,IAAI,QAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvD,YAAM,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnF,SAAK;AAAC,aAAK;AACX,YAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAClC,SAAK;AACL,QACI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACtC,QACI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAP,UAAU,CAAC,QAAgB,EAAE,EAAE,SAAiB,EAAE;AAAI,QACpD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;AACjD,QAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACtC,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,aAAa,CAAC,OAA0B;AAAI,QAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,gBAAgB,CAAC,OAA0B;AAAI,QAC7C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,QAAQ;AAAK,QACX,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAG,kBAAkB;AAC5B,QAAI,IAAI,CAAC,MAAM,kBAAyB;AACxC,QAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,KAAG;AACH;AAEC,IAAS,oBAAoB;AAAK,QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,gBAA0C,CAAC;AACnF,KAAG;AACH,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAAgB,eAAe,CAAI,GAAoB,EAAE,eAA4B,EAAE,MAAU;AACjG;AACE;AACE,IAAF,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAC5C,QAAI,GAAG,CAAC,kBAAkB,CAAC,qBAAqB,GAAG,eAAe,CAAC;AACnE,KAAG;AACH,IAAE,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3B;AACA;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AAiCA;AACA,MAAa,eAAe,GAAG,IAAI,cAAc,CAAM,eAAe,EAAE;AAExE;AACA,MAAa,0BAA0B,GACnC,IAAI,cAAc,CAAkB,4BAA4B,EAAE;AAEtE;AACA,MAAa,0BAA0B,GACnC,IAAI,cAAc,CAAuB,4BAA4B,EAAE;AAE3E;AACA,SAAgB,kCAAkC,CAAC,OAAgB;AAAI,IACrE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;AACA,SAAgB,2CAA2C,CAAC,OAAgB;AAC3E,IACC,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;AACA,MAAa,mCAAmC,GAAG;AACnD,IAAE,OAAO,EAAE,0BAA0B;AACrC,IAAE,IAAI,EAAE,CAAC,OAAO,CAAC;AACjB,IAAE,UAAU,EAAE,2CAA2C;AACzD,EAAE;AAEF;AACA;AACA;AACA;AACA,MACsB,cAAc;AAAG,IA+BrC,YACY,QAAiB,EACjB,SAAmB,EACnB,eAA0C,EAC1C,aAA0C,EAC1C,iBAAmC,EAC3C,cAAmB,EACX,qBAA8C,EAC9C,oBAA6B,EAC7B,gBAAqC;AACnD,QATc,aAAQ,GAAR,QAAQ,CAAS;AAAC,QAClB,cAAS,GAAT,SAAS,CAAU;AAAC,QACpB,oBAAe,GAAf,eAAe,CAA2B;AAAC,QAC3C,kBAAa,GAAb,aAAa,CAA6B;AAAC,QAC3C,sBAAiB,GAAjB,iBAAiB,CAAkB;AAAC,QAEpC,0BAAqB,GAArB,qBAAqB,CAAyB;AAAC,QAC/C,yBAAoB,GAApB,oBAAoB,CAAS;AAAC,QAC9B,qBAAgB,GAAhB,gBAAgB,CAAqB;AAAC,QAvC1C,4BAAuB,GAAwB,EAAE,CAAC;AAC5D,QAAmB,+BAA0B,GAAG,IAAI,OAAO,EAAQ,CAAC;AACpE,QAAmB,4BAAuB,GAAG,IAAI,OAAO,EAAqB,CAAC;AAC9E,QAAU,wBAAmB,GAAG,IAAI,GAAG,EAAwB,CAAC;AAChE;AAEiC;AAAY;AAEtB;AAGtB;AAAY,QAeF,mBAAc,GAAqB,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM;AACjF,YAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,YAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAoB,CAAC;AAC/E,QAWI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C,KAAG;AACH;AAE+C,IArC7C,IAAI,WAAW;AAAK,QAClB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9F,KAAG;AACH;AAEC,IAAC,IAAI,WAAW;AAAK,QAClB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9F,KAAG;AACH,IACE,kBAAkB;AAAK,QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AACtC,QAAI,OAAO,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC;AAClF,KAAG;AACH,IA4CE,IAAI,CAAsB,sBAAyD,EACzD,MAA2B;AAAI,QACvD,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,eAAe,EAAE,CAAC,CAAC;AACzF,QACI,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAClD,aAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACvD,YAAM,MAAM,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,iDAAiD,CAAC,CAAC;AACjG,SAAK;AACL,QACI,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACnD,QAAI,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5E,QAAI,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAO,sBAAsB,EACtB,eAAe,EACf,UAAU,EACV,MAAM,CAAC,CAAC;AAC9D;AAEG,QAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAClC,YAAM,IAAI,CAAC,4CAA4C,EAAE,CAAC;AAC1D,SAAK;AACL,QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,QAAI,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,QAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC;AAEG,QAAC,eAAe,CAAC,8BAA8B,EAAE,CAAC;AACrD,QACI,OAAO,SAAS,CAAC;AACrB,KAAG;AACH;AAEC;AACE;AACE,IAAH,QAAQ;AAAK,QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,aAAa,CAAC,EAAU;AAAI,QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,KAAG;AACH,IACE,WAAW;AACb;AACI;AACI,QAAJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACrD,QAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;AAC/C,QAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAC,cAAc,CAAC,MAAuB;AAAI,QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzD,QAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAC,iBAAiB,CAAC,YAA6B;AAAI,QACzD,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;AACpC,YAAM,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;AACzD,YAAM,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3E,YAAM,UAAU,EAAE,YAAY,CAAC,UAAU;AACzC,YAAM,WAAW,EAAE,YAAY,CAAC,WAAW;AAC3C,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ;AACrC,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ;AACrC,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,mBAAmB,EAAE,YAAY,CAAC,iBAAiB;AACzD,SAAK,CAAC,CAAC;AACP,QACI,IAAI,YAAY,CAAC,aAAa,EAAE;AACpC,YAAM,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;AACvD,SAAK;AACL,QACI,OAAO,KAAK,CAAC;AACjB,KAAG;AACH;AAEC;AACE;AACE;AACE;AAEJ;AAAQ,IAAD,sBAAsB,CAAC,OAAmB,EAAE,MAAuB;AAAI,QAC7E,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/F,QAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AACrC,YAAM,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS;AAC5C,YAAM,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;AAC/D,SAAK,CAAC,CAAC;AACP,QACI,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,oBAAoB,EACjE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC5E,QAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAI,eAAe,CAAC,CAAC;AAC5D,QACI,OAAO,YAAY,CAAC,QAAQ,CAAC;AACjC,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AACE;AAEJ;AAAQ,IAAP,oBAAoB,CACxB,sBAAyD,EACzD,eAAkB,EAClB,UAAsB,EACtB,MAAuB;AAAI;AAEwC;AACvD,QACd,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7F,QACI,IAAI,sBAAsB,YAAY,WAAW,EAAE;AACvD,YAAM,eAAe,CAAC,oBAAoB,CAClC,IAAI,cAAc,CAAI,sBAAsB,EAAE,IAAK,EAC5C,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;AACrD,SAAK;AAAC,aAAK;AACX,YAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAI,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACnF,YAAM,MAAM,UAAU,GAAG,eAAe,CAAC,qBAAqB,CACpD,IAAI,eAAe,CAAC,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1F,YAAM,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC;AACxD,SAAK;AACL,QACI,SAAS;AACb,aAAO,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC9C,aAAO,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,QACI,OAAO,SAAS,CAAC;AACrB,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AAEJ;AAAQ,IAAL,eAAe,CACnB,MAAuB,EACvB,SAA0B,EAC1B,eAAkB;AAAI,QAExB,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/F;AAEG;AACI;AACI;AACI,QAAX,MAAM,SAAS,GAAqB;AACxC,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC;AACrE,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAC;AAC7D,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAC;AAChE,SAAK,CAAC;AACN,QACI,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,YAAY;AAC1C,YAAQ,CAAC,YAAY,CAAC,GAAG,CAAwB,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/F,YAAM,SAAS,CAAC,IAAI,CAAC;AACrB,gBAAQ,OAAO,EAAE,cAAc;AAC/B,gBAAQ,QAAQ,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAEA,EAAY,EAAE,EAAC;AACnE,aAAO,CAAC,CAAC;AACT,SAAK;AACL,QACI,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AAChF,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAG,iBAAiB,CAAC,SAA4B;AACxD,QAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtD,QACI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,YAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC;AAEK;AACM,YAAL,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACpC,gBAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,OAAO;AAChE,oBAAU,IAAI,aAAa,EAAE;AAC7B,wBAAY,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/D,qBAAW;AAAC,yBAAK;AACjB,wBAAY,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACnD,qBAAW;AACX,iBAAS,CAAC,CAAC;AACX,gBACQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACzC,gBAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC;AACzC,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE,IAAK,4CAA4C;AACtD,QAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;AAC1E;AAEG,QAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACxC,YAAM,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/D,YACM,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAQ,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,gBACQ,IAAI,OAAO,KAAK,gBAAgB;AACxC,oBAAU,OAAO,CAAC,QAAQ,KAAK,QAAQ;AACvC,oBAAU,OAAO,CAAC,QAAQ,KAAK,OAAO;AACtC,oBAAU,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AAC9C,oBACU,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AACrF,oBAAU,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,iBAAS;AACT,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC,IAAS,aAAa,CAAC,OAA4B;AACpD,QAAI,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3B,QACI,OAAO,CAAC,EAAE,EAAE;AAChB;AACM;AACM;AACM;AACM,YAAlB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACzB,SAAK;AACL,KAAG;AACH;0CAzTC,SAAS;uFACR;AAAC;AAAwC,YA/DzC,OAAO;AACP,YAaA,QAAQ;AACR;AAEA;AACa,YAhBb,gBAAgB;AAChB;AACW,YAgBX,IAAI;AACJ,YADA,IAAI;AACJ,YARA,cAAc;AACf;;;oRAAE;AA4WH;AACA;AACA;AACA,MACa,SAAU,SAAQ,cAAkC;AACjE,IAAE,YACI,OAAgB,EAChB,QAAkB;AACvB;AAAQ;AAC8C;AAC3B;AACzB,IACe,QAAkB,EACkB,cAA+B,EAC3C,cAAmB,EAC/B,YAAuB,EAC/C,gBAAkC;AACxC,QAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EACnF,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC3D,KAAG;AACH;qCAjBC,UAAU;yGACT;AAAC;AAAmC,YA9XpC,OAAO;AACP,YAaA,QAAQ;AACR,YARM,QAAQ,uBA+XT,QAAQ;AAAO,YA9Wd,eAAe,uBA+WhB,QAAQ,YAAI,MAAM,SAAC,0BAA0B;AAAS,4CACtD,MAAM,SAAC,0BAA0B;AAAS,YACL,SAAS,uBAA9C,QAAQ,YAAI,QAAQ;AAAO,YAvYhC,gBAAgB;AACjB;;;;;;;;;;;;;;;;;qEAAE;AA6YH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CACzB,MAAwB,EAAE,cAAgC;AAAI,IAChE,uCAAW,cAAc,GAAK,MAAM,EAAE;AACxC;AACA;ACpaA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AACA,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB;AACA;AACA;AACA,MASa,cAAc;AAAG,IAY5B;AACF;AACO;AACmC;AACgB;AAC5B;AACvB;AAC+E;AACnC,IAC5B,SAA4B,EACvC,WAAoC,EACpC,OAAkB;AAAI,QAFX,cAAS,GAAT,SAAS,CAAmB;AAAC,QACxC,gBAAW,GAAX,WAAW,CAAyB;AAAC,QACrC,YAAO,GAAP,OAAO,CAAW;AAAC;AAIN,QAtBd,SAAI,GAAkC,QAAQ,CAAC;AAC1D,KAiBkC;AAClC,IACE,QAAQ;AACV,QAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB;AACM;AACM;AACM;AACM;AACM,YAAxB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;AACrF,SAAK;AACL,KAAG;AACH,IACE,WAAW,CAAC,OAAsB;AACpC,QAAI,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACzF,QACI,IAAI,aAAa,EAAE;AACvB,YAAM,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;AACrD,SAAK;AACL,KAAG;AACH,IACE,cAAc,CAAC,KAAiB;AAClC;AACI;AACI;AACI;AACI,QAAZ,eAAe,CAAC,IAAI,CAAC,SAAS,EAC1B,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9F,KAAG;AACH;0CA7DC,SAAS,SAAC,kBACT,QAAQ,EAAE,sCAAsC,kBAChD,QAAQ,EAAE,gBAAgB,kBAC1B,IAAI,EAAE,sBACJ;IAAS,EAAE,wBAAwB,sBACnC,mBAAmB,EAAE,mBAAmB,sBACxC,aAAa,EAAE,MAAM,mBACtB,cACF;;;;gQACI;AAAC;AAAwC,YAjBrB,YAAY,uBAsChC,QAAQ;AAAO,YAzClB,UAAU;AACV,YACM,SAAS;AAAG;AAAG;AACF,wBAmBlB,KAAK,SAAC,YAAY;AAAO,mBAGzB,KAAK;AAAK,2BAGV,KAAK,SAAC,kBAAkB;AAAO,8BAE/B,KAAK,SAAC,gBAAgB;AAAM;;;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AA4CjC;AACA;AACA;AACA,MAQa,cAAc;AAAG,IAI5B;AACF;AAAuF;AACrC,IACxB,UAA6B,EACzC,WAAoC,EACpC,OAAkB;AAAI,QAFV,eAAU,GAAV,UAAU,CAAmB;AAAC,QAC1C,gBAAW,GAAX,WAAW,CAAyB;AAAC,QACrC,YAAO,GAAP,OAAO,CAAW;AAAC;AAIc,QAXpC,OAAE,GAAW,oBAAoB,gBAAgB,EAAE,EAAE,CAAC;AACjE,KAMoC;AACpC,IACE,QAAQ;AACV,QAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAM,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;AACtF,SAAK;AACL,QACI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,YAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;AAC7B,gBAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC7D,gBACQ,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AACrD,oBAAU,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9C,iBAAS;AACT,aAAO,CAAC,CAAC;AACT,SAAK;AACL,KAAG;AACH;0CAlCC,SAAS,SAAC,kBACT,QAAQ,EAAE,sCAAsC,kBAChD,QAAQ,EAAE,gBAAgB,kBAC1B,IAAI,EAAE,sBACJ;EAAO,EAAE,kBAAkB,sBAC3B,MAAM,EAAE,IAAI,mBACb,eACF;;+DACI;AAAC;AAAwC,YAlFrB,YAAY,uBAyF9B,QAAQ;AAAO,YA5FpB,UAAU;AACV,YACM,SAAS;AAAG;AAAG;AACF,iBAoFlB,KAAK;AAAI;;;;;;;;;;;;;;;oBAAE;AA2Bd;AACA;AACA;AACA,MAIa,gBAAgB;AAAG;4CAJ/B,SAAS,SAAC,kBACT,QAAQ,EAAE;gDAA8D,kBACxE,IAAI,EAAE,EAAC,OAAO,EAAE,oBAAoB,EAAC,cACtC;;;;;;;0BACI;AAGL;AACA;AACA;AACA;AACA,MAIa,gBAAgB;AAAG;4CAJ/B,SAAS,SAAC,kBACT,QAAQ,EAAE;gDAA8D,kBACxE,IAAI,EAAE,EAAC,OAAO,EAAE,oBAAoB,EAAC,cACtC;;;;;;;0BACI;AAGL;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,OAAgC,EAAE,WAAgC;AAC5F,IAAE,IAAI,MAAM,GAAuB,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;AACvE,IACE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACvE,QAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAClC,KAAG;AACH,IACE,OAAO,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9E;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MA0Ca,eAAe;AAAG;2CA3B9B,QAAQ,SAAC,kBACR,OAAO,EAAE;QACP,aAAa,sBACb,YAAY,sBACZ;GAAe,mBAChB,kBACD,OAAO,EAAE,sBACP;aAAkB;gBAClB,cAAc;OACd;EAAc,sBACd;aAAgB;SAChB,gBAAgB;kBAChB;CAAe,mBAChB,kBACD,YAAY,EAAE,sBACZ,kBAAkB;GAClB,cAAc;eACd;YAAc;OACd,gBAAgB;UAChB,gBAAgB;WACjB,kBACD;CAAS,EAAE;MACT,SAAS;UACT;KAAmC,mBACpC;MACD,eAAe,EAAE,CAAC;MAAkB,CAAC,eACtC;;;;;;;;;;;;;;;;;;;;iLACI;AAAC;ACjDN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACyb","sourcesContent":["/**\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\nimport {ViewContainerRef, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether the dialog should focus the first focusable element on open. */\n autoFocus?: boolean = true;\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}))),\n transition('* => void, * => exit',\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\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\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n protected _document: Document;\n\n /** The portal outlet inside of this container into which the dialog content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private _focusTrap: FocusTrap;\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n _closeInteractionType: FocusOrigin|null = null;\n\n /** ID of the element that should be considered as the dialog's label. */\n _ariaLabelledBy: string | null;\n\n /** ID for the container DOM element. */\n _id: string;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _focusTrapFactory: FocusTrapFactory,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(DOCUMENT) _document: any,\n /** The dialog configuration. */\n public _config: MatDialogConfig,\n private _focusMonitor?: FocusMonitor) {\n\n super();\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n\n /** Starts the dialog exit animation. */\n abstract _startExitAnimation(): void;\n\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._setupFocusTrap();\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n this._capturePreviouslyFocusedElement();\n // Move focus onto the dialog immediately in order to prevent the user\n // from accidentally opening multiple dialogs at the same time.\n this._focusDialogContainer();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n if (focusContainer) {\n this._elementRef.nativeElement.focus();\n }\n }\n }\n\n /** Moves the focus inside the focus trap. */\n protected _trapFocus() {\n // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n if (this._config.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else if (!this._containsFocus()) {\n // Otherwise ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Restores focus to the element that was focused before the dialog opened. */\n protected _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n } else {\n previousElement.focus();\n }\n }\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Sets up the focus trap. */\n private _setupFocusTrap() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n /** Captures the element that was focused before the dialog was opened. */\n private _capturePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n\n /** Focuses the dialog container. */\n private _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Returns whether focus is inside the dialog. */\n private _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matDialogAnimations.dialogContainer],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)',\n },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._trapFocus();\n this._animationStateChanged.next({state: 'opened', totalTime});\n } else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({state: 'closed', totalTime});\n }\n }\n\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._animationStateChanged.next({state: 'opening', totalTime});\n } else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({state: 'closing', totalTime});\n }\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._state = 'exit';\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\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\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has finished closing. */\n private readonly _afterClosed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: any;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n constructor(\n private _overlayRef: OverlayRef,\n public _containerInstance: _MatDialogContainerBase,\n /** Id of the dialog. */\n readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n // Pass the id along to the container.\n _containerInstance._id = id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'opened'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closed'),\n take(1)\n ).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\n this._overlayRef.dispose();\n });\n\n _overlayRef.keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n } else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closing'),\n take(1)\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n event.totalTime + 100);\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._overlayRef.updateSize({width, height});\n this._overlayRef.updatePosition();\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._overlayRef.dispose();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private _getPositionStrategy(): GlobalPositionStrategy {\n return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n Directive,\n Inject,\n Injectable,\n InjectFlags,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n StaticProvider,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _ariaHiddenElements = new Map<Element, string|null>();\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n this._getAfterAllClosed() :\n this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n private _defaultOptions: MatDialogConfig|undefined,\n private _parentDialog: _MatDialogBase<C>|undefined,\n private _overlayContainer: OverlayContainer,\n scrollStrategy: any,\n private _dialogRefConstructor: Type<MatDialogRef<any>>,\n private _dialogContainerType: Type<C>,\n private _dialogDataToken: InjectionToken<any>) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n if (config.id && this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config);\n\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n private _createOverlay(config: MatDialogConfig): OverlayRef {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatDialogConfig, useValue: config}]\n });\n\n const containerPortal = new ComponentPortal(this._dialogContainerType,\n config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach<C>(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n private _attachDialogContent<T, R>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: C,\n overlayRef: OverlayRef,\n config: MatDialogConfig): MatDialogRef<T, R> {\n\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null!,\n <any>{$implicit: config.data, dialogRef}));\n } else {\n const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n private _createInjector<T>(\n config: MatDialogConfig,\n dialogRef: MatDialogRef<T>,\n dialogContainer: C): Injector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers: StaticProvider[] = [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: config.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef}\n ];\n\n if (config.direction && (!userInjector ||\n !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: {value: config.direction, change: observableOf()}\n });\n }\n\n return Injector.create({parent: userInjector || this._injector, providers});\n }\n\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n /** Closes all of the dialogs in an array. */\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() parentDialog: MatDialog,\n overlayContainer: OverlayContainer) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n return {...defaultOptions, ...config};\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\nimport {\n Directive,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n\n /**\n * Reference to the containing dialog.\n * @deprecated `dialogRef` property to become private.\n * @breaking-change 13.0.0\n */\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit {\n /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\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\nexport * from './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}1 {"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"names":["observableOf"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA;AACA;;;;;;;;AACA,MAAa,eAAe;AAAG,IAA/B;AAAgB;AAGK,QAWnB,SAAI,GAAgB,QAAQ,CAAC;AAC/B;AAEK,QAAH,eAAU,GAAuB,EAAE,CAAC;AACtC;AAEK,QAAH,gBAAW,GAAa,IAAI,CAAC;AAC/B;AAEK,QAAH,kBAAa,GAAuB,EAAE,CAAC;AACzC;AAEK,QAAH,iBAAY,GAAa,KAAK,CAAC;AACjC;AAEK,QAAH,UAAK,GAAY,EAAE,CAAC;AACtB;AAEK,QAAH,WAAM,GAAY,EAAE,CAAC;AACvB;AAEuB,QAMrB,aAAQ,GAAqB,MAAM,CAAC;AACtC;AAC4D,QAO1D,SAAI,GAAc,IAAI,CAAC;AACzB;AAEO,QAGL,oBAAe,GAAmB,IAAI,CAAC;AACzC;AAEK,QAAH,mBAAc,GAAmB,IAAI,CAAC;AACxC;AAEK,QAAH,cAAS,GAAmB,IAAI,CAAC;AACnC;AAEK,QAAH,cAAS,GAAa,IAAI,CAAC;AAC7B;AAEK;AACM;AAEA;AAAY,QAArB,iBAAY,GAAa,IAAI,CAAC;AAChC;AACW;AAID;AACO;AAAwC;AAAY,QAGnE,sBAAiB,GAAa,IAAI,CAAC;AACrC;AACiF,KAIhF;AACD;AAAE;ACzHF;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA,MAAa,mBAAmB,GAE5B;AACJ;AACE,IAAA,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE;AAC9C;AACI;AACI;AACI,QAAR,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC,CAAC;AACrE,QAAI,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;AAC9C,QAAI,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,kCAAkC,EAC/D,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAChD,QAAI,UAAU,CAAC,sBAAsB,EAC7B,OAAO,CAAC,qCAAqC,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAC5E,KAAG,CAAC;AACJ;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AAoCA;AACA;AACA;AACA;AACA;AACA,SAAgB,yCAAyC;AACzD,IAAE,MAAM,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvF,CAAC;AAED;AACA;AACA;AACA;AACA,MACsB,uBAAwB,SAAQ,gBAAgB;AACtE,IA2BE,YACY,WAAuB,EACvB,iBAAmC,EACnC,kBAAqC,EACjB,SAAc;AAC/C;AACA,IAAU,OAAwB,EACvB,aAA4B;AACxC,QACI,KAAK,EAAE,CAAC;AACZ,QATc,gBAAW,GAAX,WAAW,CAAY;AAAC,QACxB,sBAAiB,GAAjB,iBAAiB,CAAkB;AAAC,QACpC,uBAAkB,GAAlB,kBAAkB,CAAmB;AAAC,QAGzC,YAAO,GAAP,OAAO,CAAiB;AAAC,QACxB,kBAAa,GAAb,aAAa,CAAe;AAAC;AAGJ,QA5BnC,2BAAsB,GAAG,IAAI,YAAY,EAAwB,CAAC;AACpE;AAEK,QAAK,yCAAoC,GAAuB,IAAI,CAAC;AAC1E;AAEK;AACM;AACM;AAEA;AAAY,QAA3B,0BAAqB,GAAqB,IAAI,CAAC;AACjD;AACW;AAA0D;AAG/D;AACQ;AAGI;AAAY,QAyDnB,oBAAe,GAAG,CAAC,MAAiB;AAC/C,YAAI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,gBAAM,yCAAyC,EAAE,CAAC;AAClD,aAAK;AACL,YACI,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACtD,SAAG,CAAA;AACH,QAvDI,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;AAC1D,QAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,KAAG;AACH;AAE2B,IAGzB,8BAA8B;AAChC,QAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B;AACI;AACI,QAAJ,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAC5C;AACI;AACI,QAAJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,qBAAqB,CAAI,MAA0B;AAAI,QACrD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,YAAM,yCAAyC,EAAE,CAAC;AAClD,SAAK;AACL,QACI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,oBAAoB,CAAI,MAAyB;AAAI,QACnD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7F,YAAM,yCAAyC,EAAE,CAAC;AAClD,SAAK;AACL,QACI,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAG;AACH;AAGM,IAaJ,eAAe;AACjB,QAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAChC,YAAM,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;AAC/F,YACM,IAAI,cAAc,EAAE;AAC1B,gBAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/C,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC,IAAW,UAAU;AACtB;AACI;AACI;AACI,QAAR,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAChC,YAAM,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC;AACrD,SAAK;AAAC,aAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACvC;AACM;AACM;AACM;AACM;AACM,YAAxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,MAAM,eAAe,GAAG,IAAI,CAAC,oCAAoC,CAAC;AACtE;AAEG,QAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,eAAe;AACpD,YAAQ,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE;AACrD,YAAM,MAAM,aAAa,GAAG,iCAAiC,EAAE,CAAC;AAChE,YAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACrD;AAEK;AACM;AACM;AACM,YAAjB,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,aAAa,KAAK,OAAO;AAC9F,gBAAU,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC3C,gBAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,oBAAU,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACnF,oBAAU,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC5C,iBAAS;AAAC,qBAAK;AACf,oBAAU,eAAe,CAAC,KAAK,EAAE,CAAC;AAClC,iBAAS;AACT,aAAO;AACP,SAAK;AACL,QACI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,YAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAChC,SAAK;AACL,KAAG;AACH;AAEC,IAAS,eAAe;AACzB,QAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpF,KAAG;AACH;AAEC,IAAS,gCAAgC;AAC1C,QAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,YAAM,IAAI,CAAC,oCAAoC,GAAG,iCAAiC,EAAE,CAAC;AACtF,SAAK;AACL,KAAG;AACH;AAEC,IAAS,qBAAqB;AAC/B;AACI,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAK;AACL,KAAG;AACH;AAEC,IAAS,cAAc;AACxB,QAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,QAAI,MAAM,aAAa,GAAG,iCAAiC,EAAE,CAAC;AAC9D,QAAI,OAAO,OAAO,KAAK,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxE,KAAG;AACH;mDAnLC,SAAS;;;;;;0DACR;AAAC;AAAiD,YA/BlD,UAAU;AACV,YAjB4C,gBAAgB;AAAI,YAYhE,iBAAiB;AACjB,4CAkEG,QAAQ,YAAI,MAAM,SAAC,QAAQ;AAAS,YAtDjC,eAAe;AAAI,YAzBnB,YAAY;AAAG;AAAG;AAA2C,4BAmDlE,SAAS,SAAC,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;AAAM;;;;;;;;;;;oBAAE;AAgLpD;AACA;AACA;AACA;AACA;AACA,MAuBa,kBAAmB,SAAQ,uBAAuB;AAC/D,IAxBA;AACG;AAA6B;AAE9B,QAsBA,WAAM,GAA8B,OAAO,CAAC;AAC9C,KA6BC;AACD;AAA0E,IA5BxE,gBAAgB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAiB;AACvD,QAAI,IAAI,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;AACrE,SAAK;AAAC,aAAK,IAAI,OAAO,KAAK,MAAM,EAAE;AACnC,YAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;AACrE,SAAK;AACL,KAAG;AACH;AAEC,IAAC,iBAAiB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAiB;AACxD,QAAI,IAAI,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AACtE,SAAK;AAAC,aAAK,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE;AACzD,YAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AACtE,SAAK;AACL,KAAG;AACH;AAEC,IAAC,mBAAmB;AAAK,QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;AAEG;AACI,QAAH,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;AAC3C,KAAG;AACH;8CAvDC,SAAS,SAAC,kBACT,QAAQ,EAAE,sBAAsB,kBAChC,yDAAoC,kBAEpC,aAAa,EAAE,iBAAiB,CAAC,IAAI;uIAGrC,eAAe,EAAE,uBAAuB,CAAC,OAAO,kBAChD,UAAU,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,kBACjD,IAAI,EAAE,sBACJ,OAAO;AAAE,sBAAsB,sBAC/B,UAAU,EAAE,IAAI,sBAChB,YAAY,EAAE,MAAM,sBACpB,MAAM,EAAE,KAAK,sBACb,aAAa,EAAE,cAAc,sBAC7B,wBAAwB,EAAE,4CAA4C,sBACtE,mBAAmB,EAAE,mBAAmB;eACxC;oBAAyB,EAAE;SAAiC,sBAC5D,oBAAoB,EAAE,QAAQ,sBAC9B,0BAA0B,EAAE,2BAA2B,sBACvD,yBAAyB,EAAE,0BAA0B;aACtD;;;mqBACF;;;;;;;;;;;;;;;;;;;;;;;;;;0BACI;AAAC;ACxQN;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AAEA;AACA,IAAI,QAAQ,GAAG,CAAC,CAAC;AAKjB;AACA;AACA;AACA,MAAa,YAAY;AAAG,IAyB1B,YACU,WAAuB,EACxB,kBAA2C;AACrD;AACA,IAAY,KAAa,cAAc,QAAQ,EAAE,EAAE;AACpD,QAJY,gBAAW,GAAX,WAAW,CAAY;AAAC,QACzB,uBAAkB,GAAlB,kBAAkB,CAAyB;AAAC,QAE1C,OAAE,GAAF,EAAE,CAAqC;AAAC;AAGpC,QA3Bf,iBAAY,GAAwB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC;AACnF;AAEK,QAAc,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AACtD;AAEK,QAAc,iBAAY,GAAG,IAAI,OAAO,EAAiB,CAAC;AAC/D;AAEK,QAAc,kBAAa,GAAG,IAAI,OAAO,EAAiB,CAAC;AAChE;AAC2C,QAOjC,WAAM,gBAAuB;AACvC;AAE+B,QAM3B,kBAAkB,CAAC,GAAG,GAAG,EAAE,CAAC;AAChC;AAEG,QAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAC5C,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,EACzC,IAAI,CAAC,CAAC,CAAC,CACR;AACL,aAAK,SAAS,CAAC;AACf,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,YAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAK,CAAC,CAAC;AACP;AAEG,QAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAC5C,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,EACzC,IAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS,CAAC;AAChB,YAAM,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/C,YAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChC,SAAK,CAAC,CAAC;AACP,QACI,WAAW,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;AACxC,YAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACpC,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnC,YAAM,IAAI,CAAC,iBAAiB,GAAG,IAAK,CAAC;AACrC,YAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACjC,SAAK,CAAC,CAAC;AACP,QACI,WAAW,CAAC,aAAa,EAAE;AAC/B,aAAO,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAQ,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACxF,SAAO,CAAC,CAAC;AACT,aAAO,SAAS,CAAC,KAAK;AACtB,YAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;AAC/B,YAAQ,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,SAAO,CAAC,CAAC;AACT,QACI,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC1C,YAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7B,gBAAQ,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAClD,aAAO;AAAC,iBAAK;AACb,gBAAQ,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,aAAO;AACP,SAAK,CAAC,CAAC;AACP,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,KAAK,CAAC,YAAgB;AAAI,QACxB,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;AAChC;AAEG,QAAC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CACjD,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,EAC1C,IAAI,CAAC,CAAC,CAAC,CACR;AACL,aAAK,SAAS,CAAC,KAAK;AACpB,YAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C,YAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACpC,YAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACxC;AAEK;AACM;AACM;AACM;AACM,YAAvB,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EACnE,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;AACjC,SAAK,CAAC,CAAC;AACP,QACI,IAAI,CAAC,MAAM,mBAA0B;AACzC,QAAI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAClD,KAAG;AACH;AAEC;AACE;AACE,IAAH,WAAW;AAAK,QACd,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,KAAG;AACH;AAEC;AACE;AACE,IAAH,WAAW;AAAK,QACd,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,KAAG;AACH;AAEC;AACE;AACE,IAAH,YAAY;AAAK,QACf,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,KAAG;AACH;AAEC;AACE;AACE,IAAH,aAAa;AAAK,QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE,IAAH,aAAa;AAAK,QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,cAAc,CAAC,QAAyB;AAAI,QAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/C,QACI,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,YAAM,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpF,SAAK;AAAC,aAAK;AACX,YAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AACpC,SAAK;AACL,QACI,IAAI,QAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvD,YAAM,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnF,SAAK;AAAC,aAAK;AACX,YAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAClC,SAAK;AACL,QACI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACtC,QACI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAP,UAAU,CAAC,QAAgB,EAAE,EAAE,SAAiB,EAAE;AAAI,QACpD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;AACjD,QAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACtC,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,aAAa,CAAC,OAA0B;AAAI,QAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,gBAAgB,CAAC,OAA0B;AAAI,QAC7C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAI,OAAO,IAAI,CAAC;AAChB,KAAG;AACH;AAEC,IAAC,QAAQ;AAAK,QACX,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAG,kBAAkB;AAC5B,QAAI,IAAI,CAAC,MAAM,kBAAyB;AACxC,QAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,KAAG;AACH;AAEC,IAAS,oBAAoB;AAAK,QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,gBAA0C,CAAC;AACnF,KAAG;AACH,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAAgB,eAAe,CAAI,GAAoB,EAAE,eAA4B,EAAE,MAAU;AACjG;AACE;AACE,IAAF,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAC5C,QAAI,GAAG,CAAC,kBAAkB,CAAC,qBAAqB,GAAG,eAAe,CAAC;AACnE,KAAG;AACH,IAAE,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3B;AACA;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AAiCA;AACA,MAAa,eAAe,GAAG,IAAI,cAAc,CAAM,eAAe,EAAE;AAExE;AACA,MAAa,0BAA0B,GACnC,IAAI,cAAc,CAAkB,4BAA4B,EAAE;AAEtE;AACA,MAAa,0BAA0B,GACnC,IAAI,cAAc,CAAuB,4BAA4B,EAAE;AAE3E;AACA,SAAgB,kCAAkC,CAAC,OAAgB;AAAI,IACrE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;AACA,SAAgB,2CAA2C,CAAC,OAAgB;AAC3E,IACC,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;AACA,MAAa,mCAAmC,GAAG;AACnD,IAAE,OAAO,EAAE,0BAA0B;AACrC,IAAE,IAAI,EAAE,CAAC,OAAO,CAAC;AACjB,IAAE,UAAU,EAAE,2CAA2C;AACzD,EAAE;AAEF;AACA;AACA;AACA;AACA,MACsB,cAAc;AAAG,IA+BrC,YACY,QAAiB,EACjB,SAAmB,EACnB,eAA0C,EAC1C,aAA0C,EAC1C,iBAAmC,EAC3C,cAAmB,EACX,qBAA8C,EAC9C,oBAA6B,EAC7B,gBAAqC;AACnD,QATc,aAAQ,GAAR,QAAQ,CAAS;AAAC,QAClB,cAAS,GAAT,SAAS,CAAU;AAAC,QACpB,oBAAe,GAAf,eAAe,CAA2B;AAAC,QAC3C,kBAAa,GAAb,aAAa,CAA6B;AAAC,QAC3C,sBAAiB,GAAjB,iBAAiB,CAAkB;AAAC,QAEpC,0BAAqB,GAArB,qBAAqB,CAAyB;AAAC,QAC/C,yBAAoB,GAApB,oBAAoB,CAAS;AAAC,QAC9B,qBAAgB,GAAhB,gBAAgB,CAAqB;AAAC,QAvC1C,4BAAuB,GAAwB,EAAE,CAAC;AAC5D,QAAmB,+BAA0B,GAAG,IAAI,OAAO,EAAQ,CAAC;AACpE,QAAmB,4BAAuB,GAAG,IAAI,OAAO,EAAqB,CAAC;AAC9E,QAAU,wBAAmB,GAAG,IAAI,GAAG,EAAwB,CAAC;AAChE;AAEiC;AAAY;AAEtB;AAGtB;AAAY,QAeF,mBAAc,GAAqB,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM;AACjF,YAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,YAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAoB,CAAC;AAC/E,QAWI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C,KAAG;AACH;AAE+C,IArC7C,IAAI,WAAW;AAAK,QAClB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9F,KAAG;AACH;AAEC,IAAC,IAAI,WAAW;AAAK,QAClB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9F,KAAG;AACH,IACE,kBAAkB;AAAK,QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AACtC,QAAI,OAAO,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC;AAClF,KAAG;AACH,IA4CE,IAAI,CAAsB,sBAAyD,EACzD,MAA2B;AAAI,QACvD,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,eAAe,EAAE,CAAC,CAAC;AACzF,QACI,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAClD,aAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACvD,YAAM,MAAM,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,iDAAiD,CAAC,CAAC;AACjG,SAAK;AACL,QACI,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACnD,QAAI,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5E,QAAI,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAO,sBAAsB,EACtB,eAAe,EACf,UAAU,EACV,MAAM,CAAC,CAAC;AAC9D;AAEG,QAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAClC,YAAM,IAAI,CAAC,4CAA4C,EAAE,CAAC;AAC1D,SAAK;AACL,QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,QAAI,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,QAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC;AAEG,QAAC,eAAe,CAAC,8BAA8B,EAAE,CAAC;AACrD,QACI,OAAO,SAAS,CAAC;AACrB,KAAG;AACH;AAEC;AACE;AACE,IAAH,QAAQ;AAAK,QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,aAAa,CAAC,EAAU;AAAI,QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,KAAG;AACH,IACE,WAAW;AACb;AACI;AACI,QAAJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACrD,QAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;AAC/C,QAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;AAC5C,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAC,cAAc,CAAC,MAAuB;AAAI,QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzD,QAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,KAAG;AACH;AAEC;AACE;AACE;AAEJ;AAAQ,IAAC,iBAAiB,CAAC,YAA6B;AAAI,QACzD,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;AACpC,YAAM,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;AACzD,YAAM,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3E,YAAM,UAAU,EAAE,YAAY,CAAC,UAAU;AACzC,YAAM,WAAW,EAAE,YAAY,CAAC,WAAW;AAC3C,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ;AACrC,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ;AACrC,YAAM,SAAS,EAAE,YAAY,CAAC,SAAS;AACvC,YAAM,mBAAmB,EAAE,YAAY,CAAC,iBAAiB;AACzD,SAAK,CAAC,CAAC;AACP,QACI,IAAI,YAAY,CAAC,aAAa,EAAE;AACpC,YAAM,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;AACvD,SAAK;AACL,QACI,OAAO,KAAK,CAAC;AACjB,KAAG;AACH;AAEC;AACE;AACE;AACE;AAEJ;AAAQ,IAAD,sBAAsB,CAAC,OAAmB,EAAE,MAAuB;AAAI,QAC7E,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/F,QAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AACrC,YAAM,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS;AAC5C,YAAM,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;AAC/D,SAAK,CAAC,CAAC;AACP,QACI,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,oBAAoB,EACjE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC5E,QAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAI,eAAe,CAAC,CAAC;AAC5D,QACI,OAAO,YAAY,CAAC,QAAQ,CAAC;AACjC,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AACE;AAEJ;AAAQ,IAAP,oBAAoB,CACxB,sBAAyD,EACzD,eAAkB,EAClB,UAAsB,EACtB,MAAuB;AAAI;AAEwC;AACvD,QACd,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7F,QACI,IAAI,sBAAsB,YAAY,WAAW,EAAE;AACvD,YAAM,eAAe,CAAC,oBAAoB,CAClC,IAAI,cAAc,CAAI,sBAAsB,EAAE,IAAK,EAC5C,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;AACrD,SAAK;AAAC,aAAK;AACX,YAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAI,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACnF,YAAM,MAAM,UAAU,GAAG,eAAe,CAAC,qBAAqB,CACpD,IAAI,eAAe,CAAC,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1F,YAAM,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC;AACxD,SAAK;AACL,QACI,SAAS;AACb,aAAO,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC9C,aAAO,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,QACI,OAAO,SAAS,CAAC;AACrB,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AAEJ;AAAQ,IAAL,eAAe,CACnB,MAAuB,EACvB,SAA0B,EAC1B,eAAkB;AAAI,QAExB,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/F;AAEG;AACI;AACI;AACI,QAAX,MAAM,SAAS,GAAqB;AACxC,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC;AACrE,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAC;AAC7D,YAAM,EAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAC;AAChE,SAAK,CAAC;AACN,QACI,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,YAAY;AAC1C,YAAQ,CAAC,YAAY,CAAC,GAAG,CAAwB,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/F,YAAM,SAAS,CAAC,IAAI,CAAC;AACrB,gBAAQ,OAAO,EAAE,cAAc;AAC/B,gBAAQ,QAAQ,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAEA,EAAY,EAAE,EAAC;AACnE,aAAO,CAAC,CAAC;AACT,SAAK;AACL,QACI,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;AAChF,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAG,iBAAiB,CAAC,SAA4B;AACxD,QAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtD,QACI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,YAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC;AAEK;AACM,YAAL,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACpC,gBAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,OAAO;AAChE,oBAAU,IAAI,aAAa,EAAE;AAC7B,wBAAY,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/D,qBAAW;AAAC,yBAAK;AACjB,wBAAY,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACnD,qBAAW;AACX,iBAAS,CAAC,CAAC;AACX,gBACQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACzC,gBAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC;AACzC,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE,IAAK,4CAA4C;AACtD,QAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;AAC1E;AAEG,QAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACxC,YAAM,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/D,YACM,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAQ,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,gBACQ,IAAI,OAAO,KAAK,gBAAgB;AACxC,oBAAU,OAAO,CAAC,QAAQ,KAAK,QAAQ;AACvC,oBAAU,OAAO,CAAC,QAAQ,KAAK,OAAO;AACtC,oBAAU,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AAC9C,oBACU,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AACrF,oBAAU,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,iBAAS;AACT,aAAO;AACP,SAAK;AACL,KAAG;AACH;AAEC,IAAS,aAAa,CAAC,OAA4B;AACpD,QAAI,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3B,QACI,OAAO,CAAC,EAAE,EAAE;AAChB;AACM;AACM;AACM;AACM,YAAlB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACzB,SAAK;AACL,KAAG;AACH;0CAzTC,SAAS;uFACR;AAAC;AAAwC,YA/DzC,OAAO;AACP,YAaA,QAAQ;AACR;AAEA;AACa,YAhBb,gBAAgB;AAChB;AACW,YAgBX,IAAI;AACJ,YADA,IAAI;AACJ,YARA,cAAc;AACf;;;oRAAE;AA4WH;AACA;AACA;AACA,MACa,SAAU,SAAQ,cAAkC;AACjE,IAAE,YACI,OAAgB,EAChB,QAAkB;AACvB;AAAQ;AAC8C;AAC3B;AACzB,IACe,QAAkB,EACkB,cAA+B,EAC3C,cAAmB,EAC/B,YAAuB,EAC/C,gBAAkC;AACxC,QAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EACnF,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC3D,KAAG;AACH;qCAjBC,UAAU;yGACT;AAAC;AAAmC,YA9XpC,OAAO;AACP,YAaA,QAAQ;AACR,YARM,QAAQ,uBA+XT,QAAQ;AAAO,YA9Wd,eAAe,uBA+WhB,QAAQ,YAAI,MAAM,SAAC,0BAA0B;AAAS,4CACtD,MAAM,SAAC,0BAA0B;AAAS,YACL,SAAS,uBAA9C,QAAQ,YAAI,QAAQ;AAAO,YAvYhC,gBAAgB;AACjB;;;;;;;;;;;;;;;;;qEAAE;AA6YH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CACzB,MAAwB,EAAE,cAAgC;AAAI,IAChE,uCAAW,cAAc,GAAK,MAAM,EAAE;AACxC;AACA;ACpaA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AACA,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB;AACA;AACA;AACA,MASa,cAAc;AAAG,IAY5B;AACF;AACO;AACmC;AACgB;AAC5B;AACvB;AAC+E;AACnC,IAC5B,SAA4B,EACvC,WAAoC,EACpC,OAAkB;AAAI,QAFX,cAAS,GAAT,SAAS,CAAmB;AAAC,QACxC,gBAAW,GAAX,WAAW,CAAyB;AAAC,QACrC,YAAO,GAAP,OAAO,CAAW;AAAC;AAIN,QAtBd,SAAI,GAAkC,QAAQ,CAAC;AAC1D,KAiBkC;AAClC,IACE,QAAQ;AACV,QAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB;AACM;AACM;AACM;AACM;AACM,YAAxB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;AACrF,SAAK;AACL,KAAG;AACH,IACE,WAAW,CAAC,OAAsB;AACpC,QAAI,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACzF,QACI,IAAI,aAAa,EAAE;AACvB,YAAM,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;AACrD,SAAK;AACL,KAAG;AACH,IACE,cAAc,CAAC,KAAiB;AAClC;AACI;AACI;AACI;AACI,QAAZ,eAAe,CAAC,IAAI,CAAC,SAAS,EAC1B,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9F,KAAG;AACH;0CA7DC,SAAS,SAAC,kBACT,QAAQ,EAAE,sCAAsC,kBAChD,QAAQ,EAAE,gBAAgB,kBAC1B,IAAI,EAAE,sBACJ;IAAS,EAAE,wBAAwB,sBACnC,mBAAmB,EAAE,mBAAmB,sBACxC,aAAa,EAAE,MAAM,mBACtB,cACF;;;;gQACI;AAAC;AAAwC,YAjBrB,YAAY,uBAsChC,QAAQ;AAAO,YAzClB,UAAU;AACV,YACM,SAAS;AAAG;AAAG;AACF,wBAmBlB,KAAK,SAAC,YAAY;AAAO,mBAGzB,KAAK;AAAK,2BAGV,KAAK,SAAC,kBAAkB;AAAO,8BAE/B,KAAK,SAAC,gBAAgB;AAAM;;;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AA4CjC;AACA;AACA;AACA,MAQa,cAAc;AAAG,IAI5B;AACF;AAAuF;AACrC,IACxB,UAA6B,EACzC,WAAoC,EACpC,OAAkB;AAAI,QAFV,eAAU,GAAV,UAAU,CAAmB;AAAC,QAC1C,gBAAW,GAAX,WAAW,CAAyB;AAAC,QACrC,YAAO,GAAP,OAAO,CAAW;AAAC;AAIc,QAXpC,OAAE,GAAW,oBAAoB,gBAAgB,EAAE,EAAE,CAAC;AACjE,KAMoC;AACpC,IACE,QAAQ;AACV,QAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAM,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;AACtF,SAAK;AACL,QACI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,YAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;AAC7B,gBAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC7D,gBACQ,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AACrD,oBAAU,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9C,iBAAS;AACT,aAAO,CAAC,CAAC;AACT,SAAK;AACL,KAAG;AACH;0CAlCC,SAAS,SAAC,kBACT,QAAQ,EAAE,sCAAsC,kBAChD,QAAQ,EAAE,gBAAgB,kBAC1B,IAAI,EAAE,sBACJ;EAAO,EAAE,kBAAkB,sBAC3B,MAAM,EAAE,IAAI,mBACb,eACF;;+DACI;AAAC;AAAwC,YAlFrB,YAAY,uBAyF9B,QAAQ;AAAO,YA5FpB,UAAU;AACV,YACM,SAAS;AAAG;AAAG;AACF,iBAoFlB,KAAK;AAAI;;;;;;;;;;;;;;;oBAAE;AA2Bd;AACA;AACA;AACA,MAIa,gBAAgB;AAAG;4CAJ/B,SAAS,SAAC,kBACT,QAAQ,EAAE;gDAA8D,kBACxE,IAAI,EAAE,EAAC,OAAO,EAAE,oBAAoB,EAAC,cACtC;;;;;;;0BACI;AAGL;AACA;AACA;AACA;AACA,MAIa,gBAAgB;AAAG;4CAJ/B,SAAS,SAAC,kBACT,QAAQ,EAAE;gDAA8D,kBACxE,IAAI,EAAE,EAAC,OAAO,EAAE,oBAAoB,EAAC,cACtC;;;;;;;0BACI;AAGL;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,OAAgC,EAAE,WAAgC;AAC5F,IAAE,IAAI,MAAM,GAAuB,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;AACvE,IACE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACvE,QAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAClC,KAAG;AACH,IACE,OAAO,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9E;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MA0Ca,eAAe;AAAG;2CA3B9B,QAAQ,SAAC,kBACR,OAAO,EAAE;QACP,aAAa,sBACb,YAAY,sBACZ;GAAe,mBAChB,kBACD,OAAO,EAAE,sBACP;aAAkB;gBAClB,cAAc;OACd;EAAc,sBACd;aAAgB;SAChB,gBAAgB;kBAChB;CAAe,mBAChB,kBACD,YAAY,EAAE,sBACZ,kBAAkB;GAClB,cAAc;eACd;YAAc;OACd,gBAAgB;UAChB,gBAAgB;WACjB,kBACD;CAAS,EAAE;MACT,SAAS;UACT;KAAmC,mBACpC;MACD,eAAe,EAAE,CAAC;MAAkB,CAAC,eACtC;;;;;;;;;;;;;;;;;;;;iLACI;AAAC;ACjDN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACyb","sourcesContent":["/**\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\nimport {ViewContainerRef, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether the dialog should focus the first focusable element on open. */\n autoFocus?: boolean = true;\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}))),\n transition('* => void, * => exit',\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\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\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n protected _document: Document;\n\n /** The portal outlet inside of this container into which the dialog content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private _focusTrap: FocusTrap;\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n _closeInteractionType: FocusOrigin|null = null;\n\n /** ID of the element that should be considered as the dialog's label. */\n _ariaLabelledBy: string | null;\n\n /** ID for the container DOM element. */\n _id: string;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _focusTrapFactory: FocusTrapFactory,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(DOCUMENT) _document: any,\n /** The dialog configuration. */\n public _config: MatDialogConfig,\n private _focusMonitor?: FocusMonitor) {\n\n super();\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n\n /** Starts the dialog exit animation. */\n abstract _startExitAnimation(): void;\n\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._setupFocusTrap();\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n this._capturePreviouslyFocusedElement();\n // Move focus onto the dialog immediately in order to prevent the user\n // from accidentally opening multiple dialogs at the same time.\n this._focusDialogContainer();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n if (focusContainer) {\n this._elementRef.nativeElement.focus();\n }\n }\n }\n\n /** Moves the focus inside the focus trap. */\n protected _trapFocus() {\n // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n if (this._config.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else if (!this._containsFocus()) {\n // Otherwise ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Restores focus to the element that was focused before the dialog opened. */\n protected _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n } else {\n previousElement.focus();\n }\n }\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Sets up the focus trap. */\n private _setupFocusTrap() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n /** Captures the element that was focused before the dialog was opened. */\n private _capturePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n\n /** Focuses the dialog container. */\n private _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Returns whether focus is inside the dialog. */\n private _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matDialogAnimations.dialogContainer],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)',\n },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._trapFocus();\n this._animationStateChanged.next({state: 'opened', totalTime});\n } else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({state: 'closed', totalTime});\n }\n }\n\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._animationStateChanged.next({state: 'opening', totalTime});\n } else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({state: 'closing', totalTime});\n }\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._state = 'exit';\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\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\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has finished closing. */\n private readonly _afterClosed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n constructor(\n private _overlayRef: OverlayRef,\n public _containerInstance: _MatDialogContainerBase,\n /** Id of the dialog. */\n readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n // Pass the id along to the container.\n _containerInstance._id = id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'opened'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closed'),\n take(1)\n ).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\n this._overlayRef.dispose();\n });\n\n _overlayRef.keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n } else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closing'),\n take(1)\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n event.totalTime + 100);\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._overlayRef.updateSize({width, height});\n this._overlayRef.updatePosition();\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._overlayRef.dispose();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private _getPositionStrategy(): GlobalPositionStrategy {\n return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n Directive,\n Inject,\n Injectable,\n InjectFlags,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n StaticProvider,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _ariaHiddenElements = new Map<Element, string|null>();\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n this._getAfterAllClosed() :\n this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n private _defaultOptions: MatDialogConfig|undefined,\n private _parentDialog: _MatDialogBase<C>|undefined,\n private _overlayContainer: OverlayContainer,\n scrollStrategy: any,\n private _dialogRefConstructor: Type<MatDialogRef<any>>,\n private _dialogContainerType: Type<C>,\n private _dialogDataToken: InjectionToken<any>) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n if (config.id && this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config);\n\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n private _createOverlay(config: MatDialogConfig): OverlayRef {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatDialogConfig, useValue: config}]\n });\n\n const containerPortal = new ComponentPortal(this._dialogContainerType,\n config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach<C>(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n private _attachDialogContent<T, R>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: C,\n overlayRef: OverlayRef,\n config: MatDialogConfig): MatDialogRef<T, R> {\n\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null!,\n <any>{$implicit: config.data, dialogRef}));\n } else {\n const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n private _createInjector<T>(\n config: MatDialogConfig,\n dialogRef: MatDialogRef<T>,\n dialogContainer: C): Injector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers: StaticProvider[] = [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: config.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef}\n ];\n\n if (config.direction && (!userInjector ||\n !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: {value: config.direction, change: observableOf()}\n });\n }\n\n return Injector.create({parent: userInjector || this._injector, providers});\n }\n\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n /** Closes all of the dialogs in an array. */\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() parentDialog: MatDialog,\n overlayContainer: OverlayContainer) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n return {...defaultOptions, ...config};\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\nimport {\n Directive,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n\n /**\n * Reference to the containing dialog.\n * @deprecated `dialogRef` property to become private.\n * @breaking-change 13.0.0\n */\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit {\n /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\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\nexport * from './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]} -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/icon.js
r59329aa re29cc2e 915 915 ɵngcc0.ɵɵprojectionDef(); 916 916 ɵngcc0.ɵɵprojection(0); 917 } }, styles: [".mat-icon{ background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"], encapsulation: 2, changeDetection: 0 });917 } }, styles: [".mat-icon{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"], encapsulation: 2, changeDetection: 0 }); 918 918 MatIcon.ctorParameters = () => [ 919 919 { type: ElementRef }, … … 947 947 encapsulation: ViewEncapsulation.None, 948 948 changeDetection: ChangeDetectionStrategy.OnPush, 949 styles: [".mat-icon{ background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"]949 styles: [".mat-icon{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"] 950 950 }] 951 951 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: MatIconRegistry }, { type: String, decorators: [{ -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/icon.js.map
r59329aa re29cc2e 1 {"version":3,"file":"icon.js","sources":["../../../../../../src/material/icon/icon-registry.ts","../../../../../../src/material/icon/icon.ts","../../../../../../src/material/icon/icon-module.ts","../../../../../../src/material/icon/public-api.ts","../../../../../../src/material/icon/index.ts"],"names":["observableOf","observableThrow"],"mappings":"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","sourcesContent":["/**\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\nimport {DOCUMENT} from '@angular/common';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n InjectionToken,\n Optional,\n SecurityContext,\n SkipSelf,\n OnDestroy,\n} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeHtml} from '@angular/platform-browser';\nimport {forkJoin, Observable, of as observableOf, throwError as observableThrow} from 'rxjs';\nimport {catchError, finalize, map, share, tap} from 'rxjs/operators';\n\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * @docs-private\n */\nexport function getMatIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n\n\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including @angular/common/http.\n * @docs-private\n */\nexport function getMatIconNoHttpProviderError(): Error {\n return Error('Could not find HttpClient provider for use with Angular Material icons. ' +\n 'Please include the HttpClientModule from @angular/common/http in your ' +\n 'app imports.');\n}\n\n\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeUrlError(url: SafeResourceUrl): Error {\n return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`);\n}\n\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error {\n return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`);\n}\n\n/** Options that can be used to configure how an icon or the icons in an icon set are presented. */\nexport interface IconOptions {\n /** View box to set on the icon. */\n viewBox?: string;\n\n /** Whether or not to fetch the icon or icon set using HTTP credentials. */\n withCredentials?: boolean;\n}\n\n/**\n * Function that will be invoked by the icon registry when trying to resolve the\n * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.\n */\nexport type IconResolver = (name: string, namespace: string) =>\n (SafeResourceUrl | SafeResourceUrlWithIconOptions | null);\n\n/** Object that specifies a URL from which to fetch an icon and the options to use for it. */\nexport interface SafeResourceUrlWithIconOptions {\n url: SafeResourceUrl;\n options: IconOptions;\n}\n\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n svgElement: SVGElement | null;\n\n constructor(\n public url: SafeResourceUrl,\n public svgText: string | null,\n public options?: IconOptions) {}\n}\n\n/** Icon configuration whose content has already been loaded. */\ntype LoadedSvgIconConfig = SvgIconConfig & {svgText: string};\n\n/**\n * Service to register and display icons used by the `<mat-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatIconRegistry implements OnDestroy {\n private _document: Document;\n\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n private _svgIconConfigs = new Map<string, SvgIconConfig>();\n\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\n\n /** Cache for icons loaded by direct URLs. */\n private _cachedIconsByUrl = new Map<string, SVGElement>();\n\n /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n private _inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Map from font identifiers to their CSS class names. Used for icon fonts. */\n private _fontCssClassesByAlias = new Map<string, string>();\n\n /** Registered icon resolver functions. */\n private _resolvers: IconResolver[] = [];\n\n /**\n * The CSS class to apply when an `<mat-icon>` component has no icon name, url, or font specified.\n * The default 'material-icons' value assumes that the material icon font has been loaded as\n * described at http://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n private _defaultFontSetClass = 'material-icons';\n\n constructor(\n @Optional() private _httpClient: HttpClient,\n private _sanitizer: DomSanitizer,\n @Optional() @Inject(DOCUMENT) document: any,\n private readonly _errorHandler: ErrorHandler) {\n this._document = document;\n }\n\n /**\n * Registers an icon by URL in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconInNamespace('', iconName, url, options);\n }\n\n /**\n * Registers an icon using an HTML string in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal, options);\n }\n\n /**\n * Registers an icon by URL in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIconInNamespace(namespace: string, iconName: string, url: SafeResourceUrl,\n options?: IconOptions): this {\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon resolver function with the registry. The function will be invoked with the\n * name and namespace of an icon when the registry tries to resolve the URL from which to fetch\n * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,\n * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers\n * will be invoked in the order in which they have been registered.\n * @param resolver Resolver function to be registered.\n */\n addSvgIconResolver(resolver: IconResolver): this {\n this._resolvers.push(resolver);\n return this;\n }\n\n /**\n * Registers an icon using an HTML string in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SafeHtml,\n options?: IconOptions): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n // TODO: add an ngDevMode check\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n return this._addSvgIconConfig(namespace, iconName,\n new SvgIconConfig('', cleanLiteral, options));\n }\n\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconSetInNamespace('', url, options);\n }\n\n /**\n * Registers an icon set using an HTML string in the default namespace.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconSetLiteralInNamespace('', literal, options);\n }\n\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param url\n */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon set using an HTML string in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml,\n options?: IconOptions): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig('', cleanLiteral, options));\n }\n\n /**\n * Defines an alias for a CSS class name to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the `<mat-icon>` element.\n *\n * @param alias Alias for the font.\n * @param className Class name override to be used instead of the alias.\n */\n registerFontClassAlias(alias: string, className: string = alias): this {\n this._fontCssClassesByAlias.set(alias, className);\n return this;\n }\n\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n */\n classNameForFontAlias(alias: string): string {\n return this._fontCssClassesByAlias.get(alias) || alias;\n }\n\n /**\n * Sets the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n *\n * @param className\n */\n setDefaultFontSetClass(className: string): this {\n this._defaultFontSetClass = className;\n return this;\n }\n\n /**\n * Returns the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n getDefaultFontSetClass(): string {\n return this._defaultFontSetClass;\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param safeUrl URL from which to fetch the SVG icon.\n */\n getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable<SVGElement> {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n const cachedIcon = this._cachedIconsByUrl.get(url);\n\n if (cachedIcon) {\n return observableOf(cloneSvg(cachedIcon));\n }\n\n return this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl, null)).pipe(\n tap(svg => this._cachedIconsByUrl.set(url!, svg)),\n map(svg => cloneSvg(svg)),\n );\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param name Name of the icon to be retrieved.\n * @param namespace Namespace in which to look for the icon.\n */\n getNamedSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n const key = iconKey(namespace, name);\n let config = this._svgIconConfigs.get(key);\n\n // Return (copy of) cached icon if possible.\n if (config) {\n return this._getSvgFromConfig(config);\n }\n\n // Otherwise try to resolve the config from one of the resolver functions.\n config = this._getIconConfigFromResolvers(namespace, name);\n\n if (config) {\n this._svgIconConfigs.set(key, config);\n return this._getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this._iconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return observableThrow(getMatIconNameNotFoundError(key));\n }\n\n ngOnDestroy() {\n this._resolvers = [];\n this._svgIconConfigs.clear();\n this._iconSetConfigs.clear();\n this._cachedIconsByUrl.clear();\n }\n\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n */\n private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgText) {\n // We already have the SVG element for this icon, return a copy.\n return observableOf(cloneSvg(this._svgElementFromConfig(config as LoadedSvgIconConfig)));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(map(svg => cloneSvg(svg)));\n }\n }\n\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n */\n private _getSvgFromIconSetConfigs(name: string, iconSetConfigs: SvgIconConfig[]):\n Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return observableOf(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<string | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgText)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse) => {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n return observableOf(null);\n })\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(map(() => {\n const foundIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n // TODO: add an ngDevMode check\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n\n return foundIcon;\n }));\n }\n\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractIconWithNameFromAnySet(iconName: string, iconSetConfigs: SvgIconConfig[]):\n SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n\n // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\n // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\n // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\n // some of the parsing.\n if (config.svgText && config.svgText.indexOf(iconName) > -1) {\n const svg = this._svgElementFromConfig(config as LoadedSvgIconConfig);\n const foundIcon = this._extractSvgIconFromSet(svg, iconName, config.options);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n private _loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this._fetchIcon(config).pipe(\n tap(svgText => config.svgText = svgText),\n map(() => this._svgElementFromConfig(config as LoadedSvgIconConfig))\n );\n }\n\n /**\n * Loads the content of the icon set URL specified in the\n * SvgIconConfig and attaches it to the config.\n */\n private _loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<string | null> {\n if (config.svgText) {\n return observableOf(null);\n }\n\n return this._fetchIcon(config).pipe(tap(svgText => config.svgText = svgText));\n }\n\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractSvgIconFromSet(iconSet: SVGElement, iconName: string,\n options?: IconOptions): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(iconElement as SVGElement, options);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconElement), options);\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this._svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this._setSvgAttributes(svg, options);\n }\n\n /**\n * Creates a DOM element from the given SVG string.\n */\n private _svgElementFromString(str: string): SVGElement {\n const div = this._document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n\n // TODO: add an ngDevMode check\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n /**\n * Converts an element into an SVG node by cloning all of its children.\n */\n private _toSvgElement(element: Element): SVGElement {\n const svg = this._svgElementFromString('<svg></svg>');\n const attributes = element.attributes;\n\n // Copy over all the attributes from the `symbol` to the new SVG, except the id.\n for (let i = 0; i < attributes.length; i++) {\n const {name, value} = attributes[i];\n\n if (name !== 'id') {\n svg.setAttribute(name, value);\n }\n }\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n */\n private _setSvgAttributes(svg: SVGElement, options?: IconOptions): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n\n if (options && options.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n return svg;\n }\n\n /**\n * Returns an Observable which produces the string contents of the given icon. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n private _fetchIcon(iconConfig: SvgIconConfig): Observable<string> {\n const {url: safeUrl, options} = iconConfig;\n const withCredentials = options?.withCredentials ?? false;\n\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\n // TODO: add an ngDevMode check\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n // TODO: add an ngDevMode check\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this._inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n }\n\n const req = this._httpClient.get(url, {responseType: 'text', withCredentials}).pipe(\n finalize(() => this._inProgressUrlFetches.delete(url)),\n share(),\n );\n\n this._inProgressUrlFetches.set(url, req);\n return req;\n }\n\n /**\n * Registers an icon config by name in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param iconName Name under which to register the config.\n * @param config Config to be registered.\n */\n private _addSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this._svgIconConfigs.set(iconKey(namespace, iconName), config);\n return this;\n }\n\n /**\n * Registers an icon set config in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param config Config to be registered.\n */\n private _addSvgIconSetConfig(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this._iconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n /** Parses a config's text into an SVG element. */\n private _svgElementFromConfig(config: LoadedSvgIconConfig): SVGElement {\n if (!config.svgElement) {\n const svg = this._svgElementFromString(config.svgText);\n this._setSvgAttributes(svg, config.options);\n config.svgElement = svg;\n }\n\n return config.svgElement;\n }\n\n /** Tries to create an icon config through the registered resolver functions. */\n private _getIconConfigFromResolvers(namespace: string, name: string): SvgIconConfig | undefined {\n for (let i = 0; i < this._resolvers.length; i++) {\n const result = this._resolvers[i](name, namespace);\n\n if (result) {\n return isSafeUrlWithOptions(result) ?\n new SvgIconConfig(result.url, null, result.options) :\n new SvgIconConfig(result, null);\n }\n }\n\n return undefined;\n }\n}\n\n/** @docs-private */\nexport function ICON_REGISTRY_PROVIDER_FACTORY(\n parentRegistry: MatIconRegistry,\n httpClient: HttpClient,\n sanitizer: DomSanitizer,\n errorHandler: ErrorHandler,\n document?: any) {\n return parentRegistry || new MatIconRegistry(httpClient, sanitizer, document, errorHandler);\n}\n\n/** @docs-private */\nexport const ICON_REGISTRY_PROVIDER = {\n // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one.\n provide: MatIconRegistry,\n deps: [\n [new Optional(), new SkipSelf(), MatIconRegistry],\n [new Optional(), HttpClient],\n DomSanitizer,\n ErrorHandler,\n [new Optional(), DOCUMENT as InjectionToken<any>],\n ],\n useFactory: ICON_REGISTRY_PROVIDER_FACTORY,\n};\n\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n}\n\nfunction isSafeUrlWithOptions(value: any): value is SafeResourceUrlWithIconOptions {\n return !!(value.url && value.options);\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewChecked,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n\n// Boilerplate for applying mixins to MatIcon.\n/** @docs-private */\nconst _MatIconBase = mixinColor(class {\n constructor(public _elementRef: ElementRef) {}\n});\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: MAT_ICON_LOCATION_FACTORY\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** @docs-private */\nexport function MAT_ICON_LOCATION_FACTORY(): MatIconLocation {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => _location ? (_location.pathname + _location.search) : ''\n };\n}\n\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke'\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the content of the `<mat-icon>`\n * component. By default the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fortawesome.github.io/Font-Awesome/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrls: ['icon.css'],\n inputs: ['color'],\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon extends _MatIconBase implements OnInit, AfterViewChecked, CanColor, OnDestroy {\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input()\n get inline(): boolean {\n return this._inline;\n }\n set inline(inline: boolean) {\n this._inline = coerceBooleanProperty(inline);\n }\n private _inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string { return this._svgIcon; }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string { return this._fontSet; }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string { return this._fontIcon; }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon: string;\n\n private _previousFontSetClass: string;\n private _previousFontIconClass: string;\n\n _svgName: string | null;\n _svgNamespace: string | null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string, value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(\n elementRef: ElementRef<HTMLElement>, private _iconRegistry: MatIconRegistry,\n @Attribute('aria-hidden') ariaHidden: string,\n @Inject(MAT_ICON_LOCATION) private _location: MatIconLocation,\n private readonly _errorHandler: ErrorHandler) {\n super(elementRef);\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1: return ['', parts[0]]; // Use default namespace.\n case 2: return <[string, string]>parts;\n default: throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/\n // Do this before inserting the element into the DOM, in order to avoid a style recalculation.\n const styleTags = svg.querySelectorAll('style') as NodeListOf<HTMLStyleElement>;\n\n for (let i = 0; i < styleTags.length; i++) {\n styleTags[i].textContent += ' ';\n }\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n layoutElement.removeChild(child);\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClass = this.fontSet ?\n this._iconRegistry.classNameForFontAlias(this.fontSet) :\n this._iconRegistry.getDefaultFontSetClass();\n\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n elem.classList.remove(this._previousFontSetClass);\n }\n if (fontSetClass) {\n elem.classList.add(fontSetClass);\n }\n this._previousFontSetClass = fontSetClass;\n }\n\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map();\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string|undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry.getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(svg => this._setSvgElement(svg), (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n });\n }\n }\n\n static ngAcceptInputType_inline: BooleanInput;\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\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatIcon} from './icon';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n})\nexport class MatIconModule {}\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\nexport * from './icon-module';\nexport * from './icon';\nexport * from './icon-registry';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}1 {"version":3,"file":"icon.js","sources":["../../../../../../src/material/icon/icon-registry.ts","../../../../../../src/material/icon/icon.ts","../../../../../../src/material/icon/icon-module.ts","../../../../../../src/material/icon/public-api.ts","../../../../../../src/material/icon/index.ts"],"names":["observableOf","observableThrow"],"mappings":"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","sourcesContent":["/**\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\nimport {DOCUMENT} from '@angular/common';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n InjectionToken,\n Optional,\n SecurityContext,\n SkipSelf,\n OnDestroy,\n} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeHtml} from '@angular/platform-browser';\nimport {forkJoin, Observable, of as observableOf, throwError as observableThrow} from 'rxjs';\nimport {catchError, finalize, map, share, tap} from 'rxjs/operators';\n\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * @docs-private\n */\nexport function getMatIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n\n\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including @angular/common/http.\n * @docs-private\n */\nexport function getMatIconNoHttpProviderError(): Error {\n return Error('Could not find HttpClient provider for use with Angular Material icons. ' +\n 'Please include the HttpClientModule from @angular/common/http in your ' +\n 'app imports.');\n}\n\n\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeUrlError(url: SafeResourceUrl): Error {\n return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`);\n}\n\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error {\n return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`);\n}\n\n/** Options that can be used to configure how an icon or the icons in an icon set are presented. */\nexport interface IconOptions {\n /** View box to set on the icon. */\n viewBox?: string;\n\n /** Whether or not to fetch the icon or icon set using HTTP credentials. */\n withCredentials?: boolean;\n}\n\n/**\n * Function that will be invoked by the icon registry when trying to resolve the\n * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.\n */\nexport type IconResolver = (name: string, namespace: string) =>\n (SafeResourceUrl | SafeResourceUrlWithIconOptions | null);\n\n/** Object that specifies a URL from which to fetch an icon and the options to use for it. */\nexport interface SafeResourceUrlWithIconOptions {\n url: SafeResourceUrl;\n options: IconOptions;\n}\n\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n svgElement: SVGElement | null;\n\n constructor(\n public url: SafeResourceUrl,\n public svgText: string | null,\n public options?: IconOptions) {}\n}\n\n/** Icon configuration whose content has already been loaded. */\ntype LoadedSvgIconConfig = SvgIconConfig & {svgText: string};\n\n/**\n * Service to register and display icons used by the `<mat-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatIconRegistry implements OnDestroy {\n private _document: Document;\n\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n private _svgIconConfigs = new Map<string, SvgIconConfig>();\n\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\n\n /** Cache for icons loaded by direct URLs. */\n private _cachedIconsByUrl = new Map<string, SVGElement>();\n\n /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n private _inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Map from font identifiers to their CSS class names. Used for icon fonts. */\n private _fontCssClassesByAlias = new Map<string, string>();\n\n /** Registered icon resolver functions. */\n private _resolvers: IconResolver[] = [];\n\n /**\n * The CSS class to apply when an `<mat-icon>` component has no icon name, url, or font specified.\n * The default 'material-icons' value assumes that the material icon font has been loaded as\n * described at http://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n private _defaultFontSetClass = 'material-icons';\n\n constructor(\n @Optional() private _httpClient: HttpClient,\n private _sanitizer: DomSanitizer,\n @Optional() @Inject(DOCUMENT) document: any,\n private readonly _errorHandler: ErrorHandler) {\n this._document = document;\n }\n\n /**\n * Registers an icon by URL in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconInNamespace('', iconName, url, options);\n }\n\n /**\n * Registers an icon using an HTML string in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal, options);\n }\n\n /**\n * Registers an icon by URL in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIconInNamespace(namespace: string, iconName: string, url: SafeResourceUrl,\n options?: IconOptions): this {\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon resolver function with the registry. The function will be invoked with the\n * name and namespace of an icon when the registry tries to resolve the URL from which to fetch\n * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,\n * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers\n * will be invoked in the order in which they have been registered.\n * @param resolver Resolver function to be registered.\n */\n addSvgIconResolver(resolver: IconResolver): this {\n this._resolvers.push(resolver);\n return this;\n }\n\n /**\n * Registers an icon using an HTML string in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SafeHtml,\n options?: IconOptions): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n // TODO: add an ngDevMode check\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n return this._addSvgIconConfig(namespace, iconName,\n new SvgIconConfig('', cleanLiteral, options));\n }\n\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconSetInNamespace('', url, options);\n }\n\n /**\n * Registers an icon set using an HTML string in the default namespace.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconSetLiteralInNamespace('', literal, options);\n }\n\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param url\n */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon set using an HTML string in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml,\n options?: IconOptions): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig('', cleanLiteral, options));\n }\n\n /**\n * Defines an alias for a CSS class name to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the `<mat-icon>` element.\n *\n * @param alias Alias for the font.\n * @param className Class name override to be used instead of the alias.\n */\n registerFontClassAlias(alias: string, className: string = alias): this {\n this._fontCssClassesByAlias.set(alias, className);\n return this;\n }\n\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n */\n classNameForFontAlias(alias: string): string {\n return this._fontCssClassesByAlias.get(alias) || alias;\n }\n\n /**\n * Sets the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n *\n * @param className\n */\n setDefaultFontSetClass(className: string): this {\n this._defaultFontSetClass = className;\n return this;\n }\n\n /**\n * Returns the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n getDefaultFontSetClass(): string {\n return this._defaultFontSetClass;\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param safeUrl URL from which to fetch the SVG icon.\n */\n getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable<SVGElement> {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n const cachedIcon = this._cachedIconsByUrl.get(url);\n\n if (cachedIcon) {\n return observableOf(cloneSvg(cachedIcon));\n }\n\n return this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl, null)).pipe(\n tap(svg => this._cachedIconsByUrl.set(url!, svg)),\n map(svg => cloneSvg(svg)),\n );\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param name Name of the icon to be retrieved.\n * @param namespace Namespace in which to look for the icon.\n */\n getNamedSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n const key = iconKey(namespace, name);\n let config = this._svgIconConfigs.get(key);\n\n // Return (copy of) cached icon if possible.\n if (config) {\n return this._getSvgFromConfig(config);\n }\n\n // Otherwise try to resolve the config from one of the resolver functions.\n config = this._getIconConfigFromResolvers(namespace, name);\n\n if (config) {\n this._svgIconConfigs.set(key, config);\n return this._getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this._iconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return observableThrow(getMatIconNameNotFoundError(key));\n }\n\n ngOnDestroy() {\n this._resolvers = [];\n this._svgIconConfigs.clear();\n this._iconSetConfigs.clear();\n this._cachedIconsByUrl.clear();\n }\n\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n */\n private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgText) {\n // We already have the SVG element for this icon, return a copy.\n return observableOf(cloneSvg(this._svgElementFromConfig(config as LoadedSvgIconConfig)));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(map(svg => cloneSvg(svg)));\n }\n }\n\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n */\n private _getSvgFromIconSetConfigs(name: string, iconSetConfigs: SvgIconConfig[]):\n Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return observableOf(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<string | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgText)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse) => {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n return observableOf(null);\n })\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(map(() => {\n const foundIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n // TODO: add an ngDevMode check\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n\n return foundIcon;\n }));\n }\n\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractIconWithNameFromAnySet(iconName: string, iconSetConfigs: SvgIconConfig[]):\n SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n\n // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\n // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\n // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\n // some of the parsing.\n if (config.svgText && config.svgText.indexOf(iconName) > -1) {\n const svg = this._svgElementFromConfig(config as LoadedSvgIconConfig);\n const foundIcon = this._extractSvgIconFromSet(svg, iconName, config.options);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n private _loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this._fetchIcon(config).pipe(\n tap(svgText => config.svgText = svgText),\n map(() => this._svgElementFromConfig(config as LoadedSvgIconConfig))\n );\n }\n\n /**\n * Loads the content of the icon set URL specified in the\n * SvgIconConfig and attaches it to the config.\n */\n private _loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<string | null> {\n if (config.svgText) {\n return observableOf(null);\n }\n\n return this._fetchIcon(config).pipe(tap(svgText => config.svgText = svgText));\n }\n\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractSvgIconFromSet(iconSet: SVGElement, iconName: string,\n options?: IconOptions): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(iconElement as SVGElement, options);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconElement), options);\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this._svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this._setSvgAttributes(svg, options);\n }\n\n /**\n * Creates a DOM element from the given SVG string.\n */\n private _svgElementFromString(str: string): SVGElement {\n const div = this._document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n\n // TODO: add an ngDevMode check\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n /**\n * Converts an element into an SVG node by cloning all of its children.\n */\n private _toSvgElement(element: Element): SVGElement {\n const svg = this._svgElementFromString('<svg></svg>');\n const attributes = element.attributes;\n\n // Copy over all the attributes from the `symbol` to the new SVG, except the id.\n for (let i = 0; i < attributes.length; i++) {\n const {name, value} = attributes[i];\n\n if (name !== 'id') {\n svg.setAttribute(name, value);\n }\n }\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n */\n private _setSvgAttributes(svg: SVGElement, options?: IconOptions): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n\n if (options && options.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n return svg;\n }\n\n /**\n * Returns an Observable which produces the string contents of the given icon. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n private _fetchIcon(iconConfig: SvgIconConfig): Observable<string> {\n const {url: safeUrl, options} = iconConfig;\n const withCredentials = options?.withCredentials ?? false;\n\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\n // TODO: add an ngDevMode check\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n // TODO: add an ngDevMode check\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this._inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n }\n\n const req = this._httpClient.get(url, {responseType: 'text', withCredentials}).pipe(\n finalize(() => this._inProgressUrlFetches.delete(url)),\n share(),\n );\n\n this._inProgressUrlFetches.set(url, req);\n return req;\n }\n\n /**\n * Registers an icon config by name in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param iconName Name under which to register the config.\n * @param config Config to be registered.\n */\n private _addSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this._svgIconConfigs.set(iconKey(namespace, iconName), config);\n return this;\n }\n\n /**\n * Registers an icon set config in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param config Config to be registered.\n */\n private _addSvgIconSetConfig(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this._iconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n /** Parses a config's text into an SVG element. */\n private _svgElementFromConfig(config: LoadedSvgIconConfig): SVGElement {\n if (!config.svgElement) {\n const svg = this._svgElementFromString(config.svgText);\n this._setSvgAttributes(svg, config.options);\n config.svgElement = svg;\n }\n\n return config.svgElement;\n }\n\n /** Tries to create an icon config through the registered resolver functions. */\n private _getIconConfigFromResolvers(namespace: string, name: string): SvgIconConfig | undefined {\n for (let i = 0; i < this._resolvers.length; i++) {\n const result = this._resolvers[i](name, namespace);\n\n if (result) {\n return isSafeUrlWithOptions(result) ?\n new SvgIconConfig(result.url, null, result.options) :\n new SvgIconConfig(result, null);\n }\n }\n\n return undefined;\n }\n}\n\n/** @docs-private */\nexport function ICON_REGISTRY_PROVIDER_FACTORY(\n parentRegistry: MatIconRegistry,\n httpClient: HttpClient,\n sanitizer: DomSanitizer,\n errorHandler: ErrorHandler,\n document?: any) {\n return parentRegistry || new MatIconRegistry(httpClient, sanitizer, document, errorHandler);\n}\n\n/** @docs-private */\nexport const ICON_REGISTRY_PROVIDER = {\n // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one.\n provide: MatIconRegistry,\n deps: [\n [new Optional(), new SkipSelf(), MatIconRegistry],\n [new Optional(), HttpClient],\n DomSanitizer,\n ErrorHandler,\n [new Optional(), DOCUMENT as InjectionToken<any>],\n ],\n useFactory: ICON_REGISTRY_PROVIDER_FACTORY,\n};\n\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n}\n\nfunction isSafeUrlWithOptions(value: any): value is SafeResourceUrlWithIconOptions {\n return !!(value.url && value.options);\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewChecked,\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n\n// Boilerplate for applying mixins to MatIcon.\n/** @docs-private */\nconst _MatIconBase = mixinColor(class {\n constructor(public _elementRef: ElementRef) {}\n});\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: MAT_ICON_LOCATION_FACTORY\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** @docs-private */\nexport function MAT_ICON_LOCATION_FACTORY(): MatIconLocation {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => _location ? (_location.pathname + _location.search) : ''\n };\n}\n\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke'\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the content of the `<mat-icon>`\n * component. By default the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fortawesome.github.io/Font-Awesome/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrls: ['icon.css'],\n inputs: ['color'],\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon extends _MatIconBase implements OnInit, AfterViewChecked, CanColor, OnDestroy {\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input()\n get inline(): boolean {\n return this._inline;\n }\n set inline(inline: boolean) {\n this._inline = coerceBooleanProperty(inline);\n }\n private _inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string { return this._svgIcon; }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string { return this._fontSet; }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string { return this._fontIcon; }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon: string;\n\n private _previousFontSetClass: string;\n private _previousFontIconClass: string;\n\n _svgName: string | null;\n _svgNamespace: string | null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string, value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(\n elementRef: ElementRef<HTMLElement>, private _iconRegistry: MatIconRegistry,\n @Attribute('aria-hidden') ariaHidden: string,\n @Inject(MAT_ICON_LOCATION) private _location: MatIconLocation,\n private readonly _errorHandler: ErrorHandler) {\n super(elementRef);\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1: return ['', parts[0]]; // Use default namespace.\n case 2: return <[string, string]>parts;\n default: throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/\n // Do this before inserting the element into the DOM, in order to avoid a style recalculation.\n const styleTags = svg.querySelectorAll('style') as NodeListOf<HTMLStyleElement>;\n\n for (let i = 0; i < styleTags.length; i++) {\n styleTags[i].textContent += ' ';\n }\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n layoutElement.removeChild(child);\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClass = this.fontSet ?\n this._iconRegistry.classNameForFontAlias(this.fontSet) :\n this._iconRegistry.getDefaultFontSetClass();\n\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n elem.classList.remove(this._previousFontSetClass);\n }\n if (fontSetClass) {\n elem.classList.add(fontSetClass);\n }\n this._previousFontSetClass = fontSetClass;\n }\n\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map();\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string|undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry.getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(svg => this._setSvgElement(svg), (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n });\n }\n }\n\n static ngAcceptInputType_inline: BooleanInput;\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\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatIcon} from './icon';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n})\nexport class MatIconModule {}\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\nexport * from './icon-module';\nexport * from './icon';\nexport * from './icon-registry';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]} -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/input.js
r59329aa re29cc2e 424 424 } 425 425 } 426 /** Whether the form control is a native select that is displayed inline. */ 427 _isInlineSelect() { 428 const element = this._elementRef.nativeElement; 429 return this._isNativeSelect && (element.multiple || element.size > 1); 430 } 426 431 } 427 432 MatInput.ɵfac = function MatInput_Factory(t) { return new (t || MatInput)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.NgControl, 10), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.NgForm, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.FormGroupDirective, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.ErrorStateMatcher), ɵngcc0.ɵɵdirectiveInject(MAT_INPUT_VALUE_ACCESSOR, 10), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.AutofillMonitor), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_FORM_FIELD, 8)); }; 428 MatInput.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatInput, selectors: [["input", "matInput", ""], ["textarea", "matInput", ""], ["select", "matNativeControl", ""], ["input", "matNativeControl", ""], ["textarea", "matNativeControl", ""]], hostAttrs: [1, "mat-input-element", "mat-form-field-autofill-control"], hostVars: 9, hostBindings: function MatInput_HostBindings(rf, ctx) { if (rf & 1) {433 MatInput.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatInput, selectors: [["input", "matInput", ""], ["textarea", "matInput", ""], ["select", "matNativeControl", ""], ["input", "matNativeControl", ""], ["textarea", "matNativeControl", ""]], hostAttrs: [1, "mat-input-element", "mat-form-field-autofill-control"], hostVars: 11, hostBindings: function MatInput_HostBindings(rf, ctx) { if (rf & 1) { 429 434 ɵngcc0.ɵɵlistener("focus", function MatInput_focus_HostBindingHandler() { return ctx._focusChanged(true); })("blur", function MatInput_blur_HostBindingHandler() { return ctx._focusChanged(false); })("input", function MatInput_input_HostBindingHandler() { return ctx._onInput(); }); 430 435 } if (rf & 2) { 431 436 ɵngcc0.ɵɵhostProperty("disabled", ctx.disabled)("required", ctx.required); 432 437 ɵngcc0.ɵɵattribute("id", ctx.id)("data-placeholder", ctx.placeholder)("readonly", ctx.readonly && !ctx._isNativeSelect || null)("aria-invalid", ctx.empty && ctx.required ? null : ctx.errorState)("aria-required", ctx.required); 433 ɵngcc0.ɵɵclassProp("mat-input-server", ctx._isServer) ;438 ɵngcc0.ɵɵclassProp("mat-input-server", ctx._isServer)("mat-native-select-inline", ctx._isInlineSelect()); 434 439 } }, inputs: { id: "id", disabled: "disabled", required: "required", type: "type", value: "value", readonly: "readonly", placeholder: "placeholder", errorStateMatcher: "errorStateMatcher", userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"] }, exportAs: ["matInput"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MatFormFieldControl, useExisting: MatInput }]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] }); 435 440 MatInput.ctorParameters = () => [ … … 480 485 '[required]': 'required', 481 486 '[attr.readonly]': 'readonly && !_isNativeSelect || null', 487 '[class.mat-native-select-inline]': '_isInlineSelect()', 482 488 // Only mark the input as invalid for assistive technology if it has a value since the 483 489 // state usually overlaps with `aria-required` when the input is empty and can be redundant. -
trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/input.js.map
r59329aa re29cc2e 1 {"version":3,"file":"input.js","sources":["../../../../../../src/material/input/autosize.ts","../../../../../../src/material/input/input-errors.ts","../../../../../../src/material/input/input-value-accessor.ts","../../../../../../src/material/input/input.ts","../../../../../../src/material/input/input-module.ts","../../../../../../src/material/input/public-api.ts","../../../../../../src/material/input/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;;;;;;;AACA,MAWa,mBAAoB,SAAQ,mBAAmB;AAC5D,IAAE,IACI,kBAAkB,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3D,IAAE,IAAI,kBAAkB,CAAC,KAAa,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACjE,IACE,IACI,kBAAkB,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3D,IAAE,IAAI,kBAAkB,CAAC,KAAa,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACjE,IACE,IACI,WAAW,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AACrD,IAAE,IAAI,WAAW,CAAC,KAAc,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AAC3D,IACE,IACI,mBAAmB,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC7D,IAAE,IAAI,mBAAmB,CAAC,KAAc,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACnE;+CA3BC,SAAS,SAAC,kBACT,QAAQ,EAAE,uDAAuD,kBACjE,QAAQ,EAAE,qBAAqB,kBAC/B,MAAM,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,kBACpD,IAAI,EAAE;IACJ,OAAO,EAAE,oCAAoC,qPAG7C,MAAM,EAAE,GAAG,mBACZ,eACF,4QACI;AAAC;AAAuC,iCAC1C,KAAK;AACN,iCAGC,KAAK;AACN,0BAGC,KAAK,SAAC,cAAc;AAClB,kCAGF,KAAK;AACP;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AAAC;ACzCJ;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,SAAgB,+BAA+B,CAAC,IAAY;AAAI,IAC9D,OAAO,KAAK,CAAC,eAAe,IAAI,gCAAgC,CAAC,CAAC;AACpE;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,MAAa,wBAAwB,GACjC,IAAI,cAAc,CAAe,0BAA0B;AAC/D;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AA+BA;AACA,MAAM,uBAAuB,GAAG;AAChC,IAAE,QAAQ;AACV,IAAE,UAAU;AACZ,IAAE,MAAM;AACR,IAAE,QAAQ;AACV,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,QAAQ;AACV,CAAC,CAAC;AAEF,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;AACA;AACA,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,IAAE,YAAmB,yBAA4C,EAC5C,WAAmB,EACnB,gBAAoC;AACxD;AAAyB,IACL,SAAoB;AAAI,QAJxB,8BAAyB,GAAzB,yBAAyB,CAAmB;AAAC,QAC7C,gBAAW,GAAX,WAAW,CAAQ;AAAC,QACpB,qBAAgB,GAAhB,gBAAgB,CAAoB;AAAC,QAErC,cAAS,GAAT,SAAS,CAAW;AAAC,KAAG;AAC7C,CAAC,CAAC,CAAC;AAEH;AACA,MA 2Ba,QAAS,SAAQ,aAAa;AAAG,IA+I5C,YACc,WAAmF,EACnF,SAAmB,EACT,SAAoB,EAC5B,WAAmB,EACnB,gBAAoC,EAChD,yBAA4C,EACU,kBAAuB,EACrE,gBAAiC,EACzC,MAAc;AACnB;AAAmF;AACM,IACxC,UAAyB;AAC3E,QACI,KAAK,CAAC,yBAAyB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC/E,QAdgB,gBAAW,GAAX,WAAW,CAAwE;AAAC,QACpF,cAAS,GAAT,SAAS,CAAU;AAAC,QAMtB,qBAAgB,GAAhB,gBAAgB,CAAiB;AAAC,QAIE,eAAU,GAAV,UAAU,CAAe;AAAC,QAzJhE,SAAI,GAAG,aAAa,YAAY,EAAE,EAAE,CAAC;AACjD;AAAY;AACgB;AACpB;AAAY,QAkBlB,YAAO,GAAY,KAAK,CAAC;AAC3B;AAEK;AACM;AAEA;AAAY,QAAH,iBAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACtE;AAEK;AACM;AAEA;AAAY,QAArB,gBAAW,GAAW,WAAW,CAAC;AACpC;AAEK;AACM;AAEA;AAEX,QAFE,eAAU,GAAG,KAAK,CAAC;AACrB,QAsBY,cAAS,GAAG,KAAK,CAAC;AAC9B,QAuBY,cAAS,GAAG,KAAK,CAAC;AAC9B,QAeY,UAAK,GAAG,MAAM,CAAC;AAC3B,QA2BU,cAAS,GAAG,KAAK,CAAC;AAC5B,QACY,0BAAqB,GAAG;AACpC,YAAI,MAAM;AACV,YAAI,UAAU;AACd,YAAI,gBAAgB;AACpB,YAAI,OAAO;AACX,YAAI,MAAM;AACV,YAAI,MAAM;AACV,SAAG,CAAC,MAAM,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAiBI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,QAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACpD;AAEG;AACI,QAAH,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,IAAI,OAAO,CAAC;AAC7D,QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3C;AAEG,QAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACtB;AAEG;AACI;AACI,QAAP,IAAI,SAAS,CAAC,GAAG,EAAE;AACvB,YAAM,MAAM,CAAC,iBAAiB,CAAC;AAC/B,gBAAQ,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY;AACzE,oBAAU,MAAM,EAAE,GAAG,KAAK,CAAC,MAA0B,CAAC;AACtD;AAES;AACU;AACU;AACU;AACU;AACU,oBAAjD,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE;AAC7E;AACY;AACY;AACY;AAE5B,wBADI,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,wBAAY,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,qBAAW;AACX,iBAAS,CAAC,CAAC;AACX,aAAO,CAAC,CAAC;AACT,SAAK;AACL,QACI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAC/C,QAAI,IAAI,CAAC,eAAe,GAAG,QAAQ,KAAK,QAAQ,CAAC;AACjD,QAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,KAAK,UAAU,CAAC;AAC/C,QAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;AACvC,QACI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAM,IAAI,CAAC,WAAW,GAAI,OAA6B,CAAC,QAAQ,GAAG,4BAA4B;AAC/F,gBAAmE,mBAAmB,CAAC;AACvF,SAAK;AACL,KAAG;AACH;AACO;AAEP;AAAqB;AAAQ,IAnK3B,IACI,QAAQ;AAAK,QACf,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC5D,YAAM,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACrC,SAAK;AACL,QAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,KAAG;AACH,IAAE,IAAI,QAAQ,CAAC,KAAc;AAC7B,QAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAClD;AAEG;AACI,QAAH,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,YAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAAQ;AAGa;AAAqB;AACzC,IAEC,IACI,EAAE,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;AACvC,IAAE,IAAI,EAAE,CAAC,KAAa,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1D;AAAQ;AAGmB;AAAqB;AACzC,IAQL,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,IAAE,IAAI,QAAQ,CAAC,KAAc,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;AACjF;AAEM,IACJ,IACI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,IAAE,IAAI,IAAI,CAAC,KAAa;AACxB,QAAI,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC;AACjC,QAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB;AAEG;AACI;AACI,QAAP,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvE,YAAO,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7E,SAAK;AACL,KAAG;AACH;AAAQ;AAEsB;AAAqB;AAAQ,IAazD,IACI,KAAK,KAAa,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAChE,IAAE,IAAI,KAAK,CAAC,KAAa;AACzB,QAAI,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC,IAAC,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,IAAE,IAAI,QAAQ,CAAC,KAAc,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;AACjF,IA4EE,eAAe;AACjB,QAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAClC,YAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,KAAK;AACnF,gBAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;AAC7C,gBAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACjC,aAAO,CAAC,CAAC;AACT,SAAK;AACL,KAAG;AACH,IACE,WAAW;AACb,QAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAG;AACH,IACE,WAAW;AACb,QAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACjC,QACI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAClC,YAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC3E,SAAK;AACL,KAAG;AACH,IACE,SAAS;AACX,QAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB;AACM;AACM;AACM,YAAZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,SAAK;AACL;AAEG;AACI;AACI,QAAP,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC;AAEG;AACI,QAAH,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,KAAG;AACH;AAEC,IAAC,KAAK,CAAC,OAAsB;AAAI,QAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AACgB,IAEzB,aAAa,CAAC,SAAkB;AAClC,QAAI,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;AACpC,YAAM,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC/B,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE,IACP,QAAQ;AACV;AACI;AACI;AACI;AACI;AACI;AACI;AAGD,KAFpB;AACH;AAEC,IAAS,sBAAsB;AAChC;AAAoB;AACI;AACI;AACI;AACI,QAAhC,MAAM,WAAW,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,uBAAuB,kDAAI,IAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/F,QAAI,IAAI,WAAW,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACrD,YAAM,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;AAC9C,YAAM,WAAW;AACjB,gBAAU,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACpG,SAAK;AACL,KAAG;AACH;AAEC,IAAW,sBAAsB;AAClC,QAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1D,QACI,IAAI,IAAI,CAAC,oBAAoB,KAAK,QAAQ,EAAE;AAChD,YAAM,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;AAC3C,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,IAAI,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,aAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACvD,YAAM,MAAM,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,KAAG;AACH;AAEC,IAAW,WAAW;AACvB;AACI,QAAA,IAAI,QAAQ,GAAI,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,QAAQ,CAAC;AACjF,QAAI,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACzC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,IAAI,KAAK;AAAK,QACZ,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAChG,YAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACzB,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,IAAI,gBAAgB;AAAK,QACvB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B;AACM;AACM;AACM,YAAZ,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC;AAChF,YAAM,MAAM,WAAW,GAAkC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF;AAEK;AACM,YAAL,OAAO,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;AAClE,gBAAa,CAAC,EAAE,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACtF,SAAK;AAAC,aAAK;AACX,YAAM,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,iBAAiB,CAAC,GAAa;AACjC,QAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACpB,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,SAAK;AAAC,aAAK;AACX,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACzE,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,gBAAgB;AAClB;AACI;AACI;AACI,QAAR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,YAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,SAAK;AACL,KAAG;AACH;oCA1ZC,SAAS,SAAC,kBACT,QAAQ,EAAE,0HAC8C,kBACxD,QAAQ,EAAE,UAAU,kBACpB,IAAI,EAAE,yLAIJ,OAAO,EAAE,mDAAmD,sBAC5D;CAA0B,EAAE,WAAW,sOAGvC,WAAW,EAAE,IAAI;0NAIjB,yBAAyB,EAAE,aAAa,sBACxC;EAAY,EAAE,UAAU;gBACxB,YAAY,EAAE,UAAU,sBACxB,iBAAiB,EAAE;oCAAsC;2CAGzD;CAAqB,EAAE,yCAAyC,sBAChE,sBAAsB,EAAE,UAAU,mBACnC,kBACD,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAC,eACnE,qOACI;AAAC;AAAkC,YA3EtC,UAAU;AACV,YAP8B,QAAQ;AAAI,YAgBhB,SAAS,uBAmN9B,QAAQ,YAAI,IAAI;AAAO,YAnNS,MAAM,uBAoNtC,QAAQ;AAAO,YApNd,kBAAkB,uBAqNnB,QAAQ;AAAO,YAlNpB,iBAAiB;AACjB,4CAmNK,QAAQ,YAAI,IAAI,YAAI,MAAM,SAAC,wBAAwB;AAAS,YAtO3D,eAAe;AAAI,YASzB,MAAM;AACN,YAW2B,YAAY,uBAsNlC,QAAQ,YAAI,MAAM,SAAC,cAAc;AAAQ;AAAG;AACnD,uBA7GG,KAAK;AACN,iBAsBC,KAAK;AACN,0BAQC,KAAK;AAAK,uBAMV,KAAK;AACN,mBAKC,KAAK;AACN,gCAeC,KAAK;AAAK,kCAMV,KAAK,SAAC,kBAAkB;AAAO,oBAM/B,KAAK;AACN,uBASC,KAAK;AACN,4BAgIC,YAAY,SAAC,OAAO,EAAE,CAAC,MAAM,CAAC,cAC9B,YAAY,SAAC,MAAM,EAAE,CAAC,OAAO,CAAC;AAC5B,uBAaF,YAAY,SAAC,OAAO;AACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AAAC;AC5WP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAyBa,cAAc;AAAG;0CAjB7B,QAAQ,SAAC,kBACR,YAAY,EAAE,CAAC;EAAQ,EAAE,mBAAmB,CAAC,kBAC7C,OAAO,EAAE,sBACP;CAAe,sBACf,kBAAkB,sBAClB,eAAe,mBAChB;SACD,OAAO,EAAE;WACP,eAAe;;;;gCAGf;CAAkB,sBAClB,QAAQ;qBACR,mBAAmB,mBACpB,kBACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;YAC/B;;;;;;;;;;;;;;;;;;;;;;;;uEACI;AAAC;AChCN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACuF","sourcesContent":["/**\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\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',\n exportAs: 'matTextareaAutosize',\n inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],\n host: {\n 'class': 'cdk-textarea-autosize mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class MatTextareaAutosize extends CdkTextareaAutosize {\n @Input()\n get matAutosizeMinRows(): number { return this.minRows; }\n set matAutosizeMinRows(value: number) { this.minRows = value; }\n\n @Input()\n get matAutosizeMaxRows(): number { return this.maxRows; }\n set matAutosizeMaxRows(value: number) { this.maxRows = value; }\n\n @Input('mat-autosize')\n get matAutosize(): boolean { return this.enabled; }\n set matAutosize(value: boolean) { this.enabled = value; }\n\n @Input()\n get matTextareaAutosize(): boolean { return this.enabled; }\n set matTextareaAutosize(value: boolean) { this.enabled = value; }\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/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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\nimport {InjectionToken} from '@angular/core';\n\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR =\n new InjectionToken<{value: any}>('MAT_INPUT_VALUE_ACCESSOR');\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '@angular/material/form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n});\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, AfterViewInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n private _previousPlaceholder: string | null;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n protected _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string { return this._type; }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string { return this._inputValueAccessor.value; }\n set value(value: string) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\n private _readonly = false;\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n protected _platform: Platform,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n private _autofillMonitor: AutofillMonitor,\n ngZone: NgZone,\n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form-field for determining whether the placeholder has been promoted.\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField) {\n\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n /** Callback for the cases where the focused state of the input changes. */\n // tslint:disable:no-host-decorator-in-concrete\n @HostListener('focus', ['true'])\n @HostListener('blur', ['false'])\n // tslint:enable:no-host-decorator-in-concrete\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('input')\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const placeholder = this._formField?._hideControlPlaceholder?.() ? null : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder ?\n element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&\n !this.autofilled;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return this.focused || selectElement.multiple || !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);\n } else {\n return this.focused || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n // Accept `any` to avoid conflicts with other directives on `<input>` that may\n // accept different types.\n static ngAcceptInputType_value: any;\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\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatCommonModule} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n TextFieldModule,\n MatFormFieldModule,\n MatCommonModule,\n ],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatInputModule {}\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\nexport * from './autosize';\nexport * from './input';\nexport * from './input-errors';\nexport * from './input-module';\nexport * from './input-value-accessor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}1 {"version":3,"file":"input.js","sources":["../../../../../../src/material/input/autosize.ts","../../../../../../src/material/input/input-errors.ts","../../../../../../src/material/input/input-value-accessor.ts","../../../../../../src/material/input/input.ts","../../../../../../src/material/input/input-module.ts","../../../../../../src/material/input/public-api.ts","../../../../../../src/material/input/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;;;;;;;AACA,MAWa,mBAAoB,SAAQ,mBAAmB;AAC5D,IAAE,IACI,kBAAkB,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3D,IAAE,IAAI,kBAAkB,CAAC,KAAa,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACjE,IACE,IACI,kBAAkB,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3D,IAAE,IAAI,kBAAkB,CAAC,KAAa,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACjE,IACE,IACI,WAAW,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AACrD,IAAE,IAAI,WAAW,CAAC,KAAc,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AAC3D,IACE,IACI,mBAAmB,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC7D,IAAE,IAAI,mBAAmB,CAAC,KAAc,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACnE;+CA3BC,SAAS,SAAC,kBACT,QAAQ,EAAE,uDAAuD,kBACjE,QAAQ,EAAE,qBAAqB,kBAC/B,MAAM,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,kBACpD,IAAI,EAAE;IACJ,OAAO,EAAE,oCAAoC,qPAG7C,MAAM,EAAE,GAAG,mBACZ,eACF,4QACI;AAAC;AAAuC,iCAC1C,KAAK;AACN,iCAGC,KAAK;AACN,0BAGC,KAAK,SAAC,cAAc;AAClB,kCAGF,KAAK;AACP;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AAAC;ACzCJ;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,SAAgB,+BAA+B,CAAC,IAAY;AAAI,IAC9D,OAAO,KAAK,CAAC,eAAe,IAAI,gCAAgC,CAAC,CAAC;AACpE;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,MAAa,wBAAwB,GACjC,IAAI,cAAc,CAAe,0BAA0B;AAC/D;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AA+BA;AACA,MAAM,uBAAuB,GAAG;AAChC,IAAE,QAAQ;AACV,IAAE,UAAU;AACZ,IAAE,MAAM;AACR,IAAE,QAAQ;AACV,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,OAAO;AACT,IAAE,QAAQ;AACV,CAAC,CAAC;AAEF,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;AACA;AACA,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,IAAE,YAAmB,yBAA4C,EAC5C,WAAmB,EACnB,gBAAoC;AACxD;AAAyB,IACL,SAAoB;AAAI,QAJxB,8BAAyB,GAAzB,yBAAyB,CAAmB;AAAC,QAC7C,gBAAW,GAAX,WAAW,CAAQ;AAAC,QACpB,qBAAgB,GAAhB,gBAAgB,CAAoB;AAAC,QAErC,cAAS,GAAT,SAAS,CAAW;AAAC,KAAG;AAC7C,CAAC,CAAC,CAAC;AAEH;AACA,MA4Ba,QAAS,SAAQ,aAAa;AAAG,IA+I5C,YACc,WAAmF,EACnF,SAAmB,EACT,SAAoB,EAC5B,WAAmB,EACnB,gBAAoC,EAChD,yBAA4C,EACU,kBAAuB,EACrE,gBAAiC,EACzC,MAAc;AACnB;AAAmF;AACM,IACxC,UAAyB;AAC3E,QACI,KAAK,CAAC,yBAAyB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC/E,QAdgB,gBAAW,GAAX,WAAW,CAAwE;AAAC,QACpF,cAAS,GAAT,SAAS,CAAU;AAAC,QAMtB,qBAAgB,GAAhB,gBAAgB,CAAiB;AAAC,QAIE,eAAU,GAAV,UAAU,CAAe;AAAC,QAzJhE,SAAI,GAAG,aAAa,YAAY,EAAE,EAAE,CAAC;AACjD;AAAY;AACgB;AACpB;AAAY,QAkBlB,YAAO,GAAY,KAAK,CAAC;AAC3B;AAEK;AACM;AAEA;AAAY,QAAH,iBAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACtE;AAEK;AACM;AAEA;AAAY,QAArB,gBAAW,GAAW,WAAW,CAAC;AACpC;AAEK;AACM;AAEA;AAEX,QAFE,eAAU,GAAG,KAAK,CAAC;AACrB,QAsBY,cAAS,GAAG,KAAK,CAAC;AAC9B,QAuBY,cAAS,GAAG,KAAK,CAAC;AAC9B,QAeY,UAAK,GAAG,MAAM,CAAC;AAC3B,QA2BU,cAAS,GAAG,KAAK,CAAC;AAC5B,QACY,0BAAqB,GAAG;AACpC,YAAI,MAAM;AACV,YAAI,UAAU;AACd,YAAI,gBAAgB;AACpB,YAAI,OAAO;AACX,YAAI,MAAM;AACV,YAAI,MAAM;AACV,SAAG,CAAC,MAAM,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAiBI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,QAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACpD;AAEG;AACI,QAAH,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,IAAI,OAAO,CAAC;AAC7D,QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3C;AAEG,QAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACtB;AAEG;AACI;AACI,QAAP,IAAI,SAAS,CAAC,GAAG,EAAE;AACvB,YAAM,MAAM,CAAC,iBAAiB,CAAC;AAC/B,gBAAQ,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY;AACzE,oBAAU,MAAM,EAAE,GAAG,KAAK,CAAC,MAA0B,CAAC;AACtD;AAES;AACU;AACU;AACU;AACU;AACU,oBAAjD,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE;AAC7E;AACY;AACY;AACY;AAE5B,wBADI,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,wBAAY,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,qBAAW;AACX,iBAAS,CAAC,CAAC;AACX,aAAO,CAAC,CAAC;AACT,SAAK;AACL,QACI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAC/C,QAAI,IAAI,CAAC,eAAe,GAAG,QAAQ,KAAK,QAAQ,CAAC;AACjD,QAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,KAAK,UAAU,CAAC;AAC/C,QAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;AACvC,QACI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAM,IAAI,CAAC,WAAW,GAAI,OAA6B,CAAC,QAAQ,GAAG,4BAA4B;AAC/F,gBAAmE,mBAAmB,CAAC;AACvF,SAAK;AACL,KAAG;AACH;AACO;AAEP;AAAqB;AAAQ,IAnK3B,IACI,QAAQ;AAAK,QACf,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC5D,YAAM,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACrC,SAAK;AACL,QAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,KAAG;AACH,IAAE,IAAI,QAAQ,CAAC,KAAc;AAC7B,QAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAClD;AAEG;AACI,QAAH,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,YAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAAQ;AAGa;AAAqB;AACzC,IAEC,IACI,EAAE,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;AACvC,IAAE,IAAI,EAAE,CAAC,KAAa,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1D;AAAQ;AAGmB;AAAqB;AACzC,IAQL,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,IAAE,IAAI,QAAQ,CAAC,KAAc,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;AACjF;AAEM,IACJ,IACI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,IAAE,IAAI,IAAI,CAAC,KAAa;AACxB,QAAI,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC;AACjC,QAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB;AAEG;AACI;AACI,QAAP,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvE,YAAO,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7E,SAAK;AACL,KAAG;AACH;AAAQ;AAEsB;AAAqB;AAAQ,IAazD,IACI,KAAK,KAAa,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAChE,IAAE,IAAI,KAAK,CAAC,KAAa;AACzB,QAAI,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC,IAAC,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,IAAE,IAAI,QAAQ,CAAC,KAAc,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;AACjF,IA4EE,eAAe;AACjB,QAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAClC,YAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,KAAK;AACnF,gBAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;AAC7C,gBAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACjC,aAAO,CAAC,CAAC;AACT,SAAK;AACL,KAAG;AACH,IACE,WAAW;AACb,QAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAG;AACH,IACE,WAAW;AACb,QAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACjC,QACI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAClC,YAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC3E,SAAK;AACL,KAAG;AACH,IACE,SAAS;AACX,QAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB;AACM;AACM;AACM,YAAZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,SAAK;AACL;AAEG;AACI;AACI,QAAP,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC;AAEG;AACI,QAAH,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,KAAG;AACH;AAEC,IAAC,KAAK,CAAC,OAAsB;AAAI,QAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE;AACE;AACgB,IAEzB,aAAa,CAAC,SAAkB;AAClC,QAAI,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;AACpC,YAAM,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC/B,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE;AACE,IACP,QAAQ;AACV;AACI;AACI;AACI;AACI;AACI;AACI;AAGD,KAFpB;AACH;AAEC,IAAS,sBAAsB;AAChC;AAAoB;AACI;AACI;AACI;AACI,QAAhC,MAAM,WAAW,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,uBAAuB,kDAAI,IAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/F,QAAI,IAAI,WAAW,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACrD,YAAM,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;AAC9C,YAAM,WAAW;AACjB,gBAAU,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACpG,SAAK;AACL,KAAG;AACH;AAEC,IAAW,sBAAsB;AAClC,QAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1D,QACI,IAAI,IAAI,CAAC,oBAAoB,KAAK,QAAQ,EAAE;AAChD,YAAM,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;AAC3C,YAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,IAAI,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,aAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACvD,YAAM,MAAM,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,SAAK;AACL,KAAG;AACH;AAEC,IAAW,aAAa;AACzB,QAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,KAAG;AACH;AAEC,IAAW,WAAW;AACvB;AACI,QAAA,IAAI,QAAQ,GAAI,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,QAAQ,CAAC;AACjF,QAAI,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACzC,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,IAAI,KAAK;AAAK,QACZ,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAChG,YAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACzB,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,IAAI,gBAAgB;AAAK,QACvB,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B;AACM;AACM;AACM,YAAZ,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC;AAChF,YAAM,MAAM,WAAW,GAAkC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF;AAEK;AACM,YAAL,OAAO,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;AAClE,gBAAa,CAAC,EAAE,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACtF,SAAK;AAAC,aAAK;AACX,YAAM,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,iBAAiB,CAAC,GAAa;AACjC,QAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACpB,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,SAAK;AAAC,aAAK;AACX,YAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACzE,SAAK;AACL,KAAG;AACH;AAEC;AACE;AACE;AACE,IAAL,gBAAgB;AAClB;AACI;AACI;AACI,QAAR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,YAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,SAAK;AACL,KAAG;AACH;AAEC,IAAC,eAAe;AAAK,QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC;AACxE,QAAI,OAAO,IAAI,CAAC,eAAe,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC1E,KAAG;AACH;oCAjaC,SAAS,SAAC,kBACT,QAAQ,EAAE,0HAC8C,kBACxD,QAAQ,EAAE,UAAU,kBACpB,IAAI,EAAE,yLAIJ,OAAO,EAAE,mDAAmD,sBAC5D;CAA0B,EAAE,WAAW,sOAGvC,WAAW,EAAE,IAAI;yNAIjB,yBAAyB,EAAE,aAAa,sBACxC;CAAY,EAAE,UAAU;eACxB,YAAY,EAAE,UAAU,sBACxB,iBAAiB,EAAE;mCAAsC,sBACzD,kCAAkC,EAAE,mBAAmB;;KAGvD,qBAAqB,EAAE,yCAAyC,sBAChE,sBAAsB,EAAE,UAAU,mBACnC,kBACD,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAC,eACnE,4MACI;AAAC;AAAkC,YA5EtC,UAAU;AACV,YAP8B,QAAQ;AAAI,YAgBhB,SAAS,uBAoN9B,QAAQ,YAAI,IAAI;AAAO,YApNS,MAAM,uBAqNtC,QAAQ;AAAO,YArNd,kBAAkB,uBAsNnB,QAAQ;AAAO,YAnNpB,iBAAiB;AACjB,4CAoNK,QAAQ,YAAI,IAAI,YAAI,MAAM,SAAC,wBAAwB;AAAS,YAvO3D,eAAe;AAAI,YASzB,MAAM;AACN,YAW2B,YAAY,uBAuNlC,QAAQ,YAAI,MAAM,SAAC,cAAc;AAAQ;AAAG;AACnD,uBA7GG,KAAK;AACN,iBAsBC,KAAK;AACN,0BAQC,KAAK;AAAK,uBAMV,KAAK;AACN,mBAKC,KAAK;AACN,gCAeC,KAAK;AAAK,kCAMV,KAAK,SAAC,kBAAkB;AAAO,oBAM/B,KAAK;AACN,uBASC,KAAK;AACN,4BAgIC,YAAY,SAAC,OAAO,EAAE,CAAC,MAAM,CAAC,cAC9B,YAAY,SAAC,MAAM,EAAE,CAAC,OAAO,CAAC;AAC5B,uBAaF,YAAY,SAAC,OAAO;AACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAE;AAAC;AC7WP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAyBa,cAAc;AAAG;0CAjB7B,QAAQ,SAAC,kBACR,YAAY,EAAE,CAAC;EAAQ,EAAE,mBAAmB,CAAC,kBAC7C,OAAO,EAAE,sBACP;CAAe,sBACf,kBAAkB,sBAClB,eAAe,mBAChB;SACD,OAAO,EAAE;WACP,eAAe;;;;gCAGf;CAAkB,sBAClB,QAAQ;qBACR,mBAAmB,mBACpB,kBACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;YAC/B;;;;;;;;;;;;;;;;;;;;;;;;uEACI;AAAC;AChCN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACuF","sourcesContent":["/**\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\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',\n exportAs: 'matTextareaAutosize',\n inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],\n host: {\n 'class': 'cdk-textarea-autosize mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class MatTextareaAutosize extends CdkTextareaAutosize {\n @Input()\n get matAutosizeMinRows(): number { return this.minRows; }\n set matAutosizeMinRows(value: number) { this.minRows = value; }\n\n @Input()\n get matAutosizeMaxRows(): number { return this.maxRows; }\n set matAutosizeMaxRows(value: number) { this.maxRows = value; }\n\n @Input('mat-autosize')\n get matAutosize(): boolean { return this.enabled; }\n set matAutosize(value: boolean) { this.enabled = value; }\n\n @Input()\n get matTextareaAutosize(): boolean { return this.enabled; }\n set matTextareaAutosize(value: boolean) { this.enabled = value; }\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/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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\nimport {InjectionToken} from '@angular/core';\n\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR =\n new InjectionToken<{value: any}>('MAT_INPUT_VALUE_ACCESSOR');\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '@angular/material/form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n});\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[class.mat-native-select-inline]': '_isInlineSelect()',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, AfterViewInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n private _previousPlaceholder: string | null;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n protected _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string { return this._type; }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string { return this._inputValueAccessor.value; }\n set value(value: string) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\n private _readonly = false;\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n protected _platform: Platform,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n private _autofillMonitor: AutofillMonitor,\n ngZone: NgZone,\n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form-field for determining whether the placeholder has been promoted.\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField) {\n\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n /** Callback for the cases where the focused state of the input changes. */\n // tslint:disable:no-host-decorator-in-concrete\n @HostListener('focus', ['true'])\n @HostListener('blur', ['false'])\n // tslint:enable:no-host-decorator-in-concrete\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('input')\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const placeholder = this._formField?._hideControlPlaceholder?.() ? null : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder ?\n element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&\n !this.autofilled;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return this.focused || selectElement.multiple || !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);\n } else {\n return this.focused || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n // Accept `any` to avoid conflicts with other directives on `<input>` that may\n // accept different types.\n static ngAcceptInputType_value: any;\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\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatCommonModule} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n TextFieldModule,\n MatFormFieldModule,\n MatCommonModule,\n ],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatInputModule {}\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\nexport * from './autosize';\nexport * from './input';\nexport * from './input-errors';\nexport * from './input-module';\nexport * from './input-value-accessor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
Note:
See TracChangeset
for help on using the changeset viewer.