blob: 48ad905a2ff7c996eb541b2475df05914ce6939e [file] [log] [blame]
{"version":3,"file":"core.es5.js","sources":["../../../src/material/core/month-constants.ts","../../../src/material/core/label/label-options.ts","../../../src/material/core/option/index.ts","../../../src/material/core/option/option.ts","../../../src/material/core/option/optgroup.ts","../../../src/material/core/selection/index.ts","../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../src/material/core/ripple/index.ts","../../../src/material/core/ripple/ripple.ts","../../../src/material/core/ripple/ripple-renderer.ts","../../../src/material/core/ripple/ripple-ref.ts","../../../src/material/core/line/line.ts","../../../src/material/core/gestures/gesture-config.ts","../../../src/material/core/error/error-options.ts","../../../src/material/core/datetime/index.ts","../../../src/material/core/datetime/native-date-formats.ts","../../../src/material/core/datetime/native-date-adapter.ts","../../../src/material/core/datetime/date-formats.ts","../../../src/material/core/datetime/date-adapter.ts","../../../src/material/core/common-behaviors/initialized.ts","../../../src/material/core/common-behaviors/error-state.ts","../../../src/material/core/common-behaviors/tabindex.ts","../../../src/material/core/common-behaviors/disable-ripple.ts","../../../src/material/core/common-behaviors/color.ts","../../../src/material/core/common-behaviors/disabled.ts","../../../src/material/core/common-behaviors/common-module.ts","../../../src/material/core/animation/animation.ts","../../../src/material/core/version.ts"],"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\n/**\n * When constructing a Date, the month is zero-based. This can be confusing, since people are\n * used to seeing them one-based. So we create these aliases to make writing the tests easier.\n * @docs-private\n * @breaking-change 8.0.0 Remove this with V8 since it was only targeted for testing.\n */\nexport const JAN = 0, FEB = 1, MAR = 2, APR = 3, MAY = 4, JUN = 5, JUL = 6, AUG = 7, SEP = 8,\n OCT = 9, NOV = 10, DEC = 11;\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/** InjectionToken that can be used to specify the global label options. */\nexport const MAT_LABEL_GLOBAL_OPTIONS =\n new InjectionToken<LabelOptions>('mat-label-global-options');\n\n/** Type for the available floatLabel values. */\nexport type FloatLabelType = 'always' | 'never' | 'auto';\n\n/** Configurable options for floating labels. */\nexport interface LabelOptions {\n /**\n * Whether the label should float `always`, `never`, or `auto` (only when necessary).\n * Default behavior is assumed to be `auto`.\n */\n float?: FloatLabelType;\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 {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n imports: [MatRippleModule, CommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\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 {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup} from './optgroup';\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: MatOption,\n /** Whether the change in the option's value was a result of a user action. */\n public isUserInput = false) { }\n}\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}\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/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n moduleId: module.id,\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',\n },\n styleUrls: ['option.css'],\n templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption implements 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 @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) private _parent: MatOptionParentComponent,\n @Optional() readonly group: MatOptgroup) {}\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(): void {\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus();\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\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 optionIndex Index of the option to be scrolled into the view.\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(optionIndex: number, optionHeight: number,\n currentScrollPosition: number, panelHeight: number): number {\n const optionOffset = optionIndex * optionHeight;\n\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","/**\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 {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '../common-behaviors/disabled';\n\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nclass MatOptgroupBase { }\nconst _MatOptgroupMixinBase: CanDisableCtor & typeof MatOptgroupBase =\n mixinDisabled(MatOptgroupBase);\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n moduleId: module.id,\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 'role': 'group',\n '[class.mat-optgroup-disabled]': 'disabled',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-labelledby]': '_labelId',\n }\n})\nexport class MatOptgroup 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","/**\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';\n\n\n@NgModule({\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 {\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 moduleId: module.id,\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 {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 {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 {RippleRef} from './ripple-ref';\nimport {RippleAnimationConfig, RippleConfig, 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 * Configuration for the animation duration of the ripples. There are two phases with different\n * durations for the ripples. The animation durations will be overwritten if the\n * `NoopAnimationsModule` is being used.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * Whether ripples should start fading out immediately after the mouse our 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 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) animationMode?: string) {\n\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n\n if (animationMode === 'NoopAnimations') {\n this._globalOptions.animation = {enterDuration: 0, exitDuration: 0};\n }\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 /**\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: {...this._globalOptions.animation, ...this.animation},\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 within the element.\n * @param x Coordinate within the element, along the X axis at which to fade-in the ripple.\n * @param y Coordinate within the element, along the Y axis at which to fade-in the ripple.\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","/**\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} from '@angular/cdk/a11y';\nimport {RippleRef, RippleState} from './ripple-ref';\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 * 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 * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 450,\n exitDuration: 400\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/**\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 {\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 /** Events to be registered on the trigger element. */\n private _triggerEvents = new Map<string, any>();\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 /**\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 elementRef: ElementRef<HTMLElement>,\n platform: Platform) {\n\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = elementRef.nativeElement;\n\n // Specify events which need to be registered on the trigger.\n this._triggerEvents\n .set('mousedown', this._onMousedown)\n .set('mouseup', this._onPointerUp)\n .set('mouseleave', this._onPointerUp)\n\n .set('touchstart', this._onTouchStart)\n .set('touchend', this._onPointerUp)\n .set('touchcancel', this._onPointerUp);\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 the color is not set, the default CSS color will be used.\n ripple.style.backgroundColor = config.color || null;\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 /** Sets up the trigger event listeners */\n setupTriggerEvents(element: HTMLElement) {\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._ngZone.runOutsideAngular(() => {\n this._triggerEvents.forEach((fn, type) => {\n element.addEventListener(type, fn, passiveEventOptions);\n });\n });\n\n this._triggerElement = element;\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) {\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 /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n if (this._triggerElement) {\n this._triggerEvents.forEach((fn, type) => {\n this._triggerElement!.removeEventListener(type, fn, passiveEventOptions);\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 {RippleConfig, RippleRenderer} from './ripple-renderer';\n\n/** Possible states for a ripple element. */\nexport enum RippleState {\n FADING_IN, VISIBLE, FADING_OUT, HIDDEN\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: RippleRenderer,\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 */\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<MatLine>, element: ElementRef<HTMLElement>) {\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, 'mat-2-line', false);\n setClass(element, 'mat-3-line', false);\n setClass(element, 'mat-multi-line', false);\n\n if (length === 2 || length === 3) {\n setClass(element, `mat-${length}-line`, true);\n } else if (length > 3) {\n setClass(element, `mat-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/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n * @deprecated Use `setLines` instead.\n * @breaking-change 8.0.0\n */\nexport class MatLineSetter {\n constructor(lines: QueryList<MatLine>, element: ElementRef<HTMLElement>) {\n setLines(lines, element);\n }\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\nimport {Injectable, InjectionToken, Inject, Optional} from '@angular/core';\nimport {HammerGestureConfig} from '@angular/platform-browser';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {\n HammerStatic,\n HammerInstance,\n Recognizer,\n RecognizerStatic,\n HammerOptions,\n} from './gesture-annotations';\n\n/**\n * Injection token that can be used to provide options to the Hammerjs instance.\n * More info at http://hammerjs.github.io/api/.\n */\nexport const MAT_HAMMER_OPTIONS = new InjectionToken<HammerOptions>('MAT_HAMMER_OPTIONS');\n\nconst ANGULAR_MATERIAL_SUPPORTED_HAMMER_GESTURES = [\n 'longpress',\n 'slide',\n 'slidestart',\n 'slideend',\n 'slideright',\n 'slideleft'\n];\n\n/**\n * Fake HammerInstance that is used when a Hammer instance is requested when HammerJS has not\n * been loaded on the page.\n */\nconst noopHammerInstance: HammerInstance = {\n on: () => {},\n off: () => {},\n};\n\n/** Adjusts configuration of our gesture library, Hammer. */\n@Injectable()\nexport class GestureConfig extends HammerGestureConfig {\n /** List of new event names to add to the gesture support list */\n events = ANGULAR_MATERIAL_SUPPORTED_HAMMER_GESTURES;\n\n constructor(\n @Optional() @Inject(MAT_HAMMER_OPTIONS) private _hammerOptions?: HammerOptions,\n @Optional() commonModule?: MatCommonModule) {\n super();\n if (commonModule) {\n commonModule._checkHammerIsAvailable();\n }\n }\n\n /**\n * Builds Hammer instance manually to add custom recognizers that match the Material Design spec.\n *\n * Our gesture names come from the Material Design gestures spec:\n * https://material.io/design/#gestures-touch-mechanics\n *\n * More information on default recognizers can be found in Hammer docs:\n * http://hammerjs.github.io/recognizer-pan/\n * http://hammerjs.github.io/recognizer-press/\n *\n * @param element Element to which to assign the new HammerJS gestures.\n * @returns Newly-created HammerJS instance.\n */\n buildHammer(element: HTMLElement): HammerInstance {\n const hammer: HammerStatic = typeof window !== 'undefined' ? (window as any).Hammer : null;\n\n if (!hammer) {\n // If HammerJS is not loaded here, return the noop HammerInstance. This is necessary to\n // ensure that omitting HammerJS completely will not cause any errors while *also* supporting\n // the lazy-loading of HammerJS via the HAMMER_LOADER token introduced in Angular 6.1.\n // Because we can't depend on HAMMER_LOADER's existance until 7.0, we have to always set\n // `this.events` to the set we support, instead of conditionally setting it to `[]` if\n // `HAMMER_LOADER` is present (and then throwing an Error here if `window.Hammer` is\n // undefined).\n // @breaking-change 8.0.0\n return noopHammerInstance;\n }\n\n const mc = new hammer(element, this._hammerOptions || undefined);\n\n // Default Hammer Recognizers.\n const pan = new hammer.Pan();\n const swipe = new hammer.Swipe();\n const press = new hammer.Press();\n\n // Notice that a HammerJS recognizer can only depend on one other recognizer once.\n // Otherwise the previous `recognizeWith` will be dropped.\n // TODO: Confirm threshold numbers with Material Design UX Team\n const slide = this._createRecognizer(pan, {event: 'slide', threshold: 0}, swipe);\n const longpress = this._createRecognizer(press, {event: 'longpress', time: 500});\n\n // Overwrite the default `pan` event to use the swipe event.\n pan.recognizeWith(swipe);\n\n // Since the slide event threshold is set to zero, the slide recognizer can fire and\n // accidentally reset the longpress recognizer. In order to make sure that the two\n // recognizers can run simultaneously but don't affect each other, we allow the slide\n // recognizer to recognize while a longpress is being processed.\n // See: https://github.com/hammerjs/hammer.js/blob/master/src/manager.js#L123-L124\n longpress.recognizeWith(slide);\n\n // Add customized gestures to Hammer manager\n mc.add([swipe, press, pan, slide, longpress]);\n\n return mc as HammerInstance;\n }\n\n /** Creates a new recognizer, without affecting the default recognizers of HammerJS */\n private _createRecognizer(base: Recognizer, options: any, ...inheritances: Recognizer[]) {\n let recognizer = new (base.constructor as RecognizerStatic)(options);\n\n inheritances.push(base);\n inheritances.forEach(item => recognizer.recognizeWith(item));\n\n return recognizer;\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 {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 {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 {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 {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 it's 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 // 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 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) {\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 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 const result = new Date(year, month, date);\n\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n // abbreviations for 19xx.\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\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 const d = new Date(Date.UTC(\n date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(),\n 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 {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any\n },\n display: {\n dateInput: 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 {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/**\n * No longer needed since MAT_DATE_LOCALE has been changed to a scoped injectable.\n * If you are importing and providing this in your code you can simply remove it.\n * @deprecated\n * @breaking-change 8.0.0\n */\nexport const MAT_DATE_LOCALE_PROVIDER = {provide: MAT_DATE_LOCALE, useExisting: LOCALE_ID};\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\n /** A stream that emits when the locale changes. */\n get localeChanges(): Observable<void> { return this._localeChanges; }\n protected _localeChanges = new Subject<void>();\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 * 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 it's `@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 {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/** @docs-private */\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) {\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\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n updateErrorState(): void;\n readonly stateChanges: Subject<void>;\n errorState: boolean;\n errorStateMatcher: ErrorStateMatcher;\n}\n\n/** @docs-private */\nexport type CanUpdateErrorStateCtor = Constructor<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 Constructor<HasErrorState>>(base: T)\n: CanUpdateErrorStateCtor & T {\n return class extends base {\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n /**\n * Stream that emits whenever the state of the input changes such that the wrapping\n * `MatFormField` needs to run change detection.\n */\n readonly stateChanges = new Subject<void>();\n\n errorStateMatcher: ErrorStateMatcher;\n\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 {Constructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n}\n\n/** @docs-private */\nexport type HasTabIndexCtor = Constructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(base: T, defaultTabIndex = 0)\n : HasTabIndexCtor & T {\n return class extends base {\n private _tabIndex: number = 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 ? value : 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 {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n /** Whether ripples are disabled. */\n disableRipple: boolean;\n}\n\n/** @docs-private */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\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 {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\n/** @docs-private */\nexport type CanColorCtor = Constructor<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 Constructor<HasElementRef>>(\n base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n return class extends base {\n private _color: ThemePalette;\n\n get color(): ThemePalette { return this._color; }\n set color(value: ThemePalette) {\n const colorPalette = value || 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","/**\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 {Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n /** Whether the component is disabled. */\n disabled: boolean;\n}\n\n/** @docs-private */\nexport type CanDisableCtor = Constructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\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 {NgModule, InjectionToken, Optional, Inject, isDevMode, Version} from '@angular/core';\nimport {HammerLoader, HAMMER_LOADER} from '@angular/platform-browser';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\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('8.1.0');\n\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<boolean>('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): boolean {\n return true;\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 /** Whether we've already checked for HammerJs availability. */\n private _hasCheckedHammer = false;\n\n /** Reference to the global `document` object. */\n private _document = typeof document === 'object' && document ? document : null;\n\n /** Reference to the global 'window' object. */\n private _window = typeof window === 'object' && window ? window : null;\n\n constructor(\n @Optional() @Inject(MATERIAL_SANITY_CHECKS) private _sanityChecksEnabled: boolean,\n @Optional() @Inject(HAMMER_LOADER) private _hammerLoader?: HammerLoader) {\n\n if (this._areChecksEnabled() && !this._hasDoneGlobalChecks) {\n this._checkDoctypeIsDefined();\n this._checkThemeIsPresent();\n this._checkCdkVersionMatch();\n this._hasDoneGlobalChecks = true;\n }\n }\n\n /** Whether any sanity checks are enabled */\n private _areChecksEnabled(): boolean {\n return this._sanityChecksEnabled && isDevMode() && !this._isTestEnv();\n }\n\n /** Whether the code is running in tests. */\n private _isTestEnv() {\n const window = this._window as any;\n return window && (window.__karma__ || window.jasmine);\n }\n\n private _checkDoctypeIsDefined(): void {\n if (this._document && !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._document || !this._document.body || 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 (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 /** Checks whether HammerJS is available. */\n _checkHammerIsAvailable(): void {\n if (this._hasCheckedHammer || !this._window) {\n return;\n }\n\n if (this._areChecksEnabled() && !(this._window as any)['Hammer'] && !this._hammerLoader) {\n console.warn(\n 'Could not find HammerJS. Certain Angular Material components may not work correctly.');\n }\n this._hasCheckedHammer = true;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @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 {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('8.1.0');\n"],"names":["tslib_1.__extends","tslib_1.__assign","ɵ0","CDK_VERSION","VERSION"],"mappings":"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"}