UNPKG

1.65 MBSource Map (JSON)View Raw
1{"version":3,"file":"material.umd.js","sources":["../../src/material/tree/data-source/nested-data-source.ts","../../src/material/tree/data-source/flat-data-source.ts","../../src/material/tree/tree-module.ts","../../src/material/tree/toggle.ts","../../src/material/tree/tree.ts","../../src/material/tree/outlet.ts","../../src/material/tree/padding.ts","../../src/material/tree/node.ts","../../src/material/toolbar/toolbar-module.ts","../../src/material/toolbar/toolbar.ts","../../src/material/tabs/tabs-module.ts","../../src/material/tabs/tab-nav-bar/tab-nav-bar.ts","../../src/material/tabs/tab-header.ts","../../src/material/tabs/paginated-tab-header.ts","../../src/material/tabs/tab-label-wrapper.ts","../../src/material/tabs/tab-group.ts","../../src/material/tabs/tab-body.ts","../../src/material/tabs/tabs-animations.ts","../../src/material/tabs/tab.ts","../../src/material/tabs/tab-label.ts","../../src/material/tabs/tab-content.ts","../../src/material/tabs/ink-bar.ts","../../src/material/table/table-data-source.ts","../../src/material/table/table-module.ts","../../src/material/table/text-column.ts","../../src/material/table/row.ts","../../src/material/table/cell.ts","../../src/material/table/table.ts","../../src/material/stepper/stepper-module.ts","../../src/material/stepper/stepper-button.ts","../../src/material/stepper/stepper.ts","../../src/material/stepper/stepper-icon.ts","../../src/material/stepper/stepper-animations.ts","../../src/material/stepper/step-header.ts","../../src/material/stepper/stepper-intl.ts","../../src/material/stepper/step-label.ts","../../src/material/sort/sort-module.ts","../../src/material/sort/sort-header.ts","../../src/material/sort/sort-header-intl.ts","../../src/material/sort/sort-animations.ts","../../src/material/sort/sort.ts","../../src/material/sort/sort-errors.ts","../../src/material/snack-bar/snack-bar.ts","../../src/material/snack-bar/snack-bar-module.ts","../../src/material/snack-bar/snack-bar-container.ts","../../src/material/snack-bar/snack-bar-animations.ts","../../src/material/snack-bar/simple-snack-bar.ts","../../src/material/snack-bar/snack-bar-config.ts","../../src/material/snack-bar/snack-bar-ref.ts","../../src/material/slider/slider-module.ts","../../src/material/slider/slider.ts","../../src/material/slide-toggle/slide-toggle-module.ts","../../src/material/slide-toggle/slide-toggle-required-validator.ts","../../src/material/slide-toggle/slide-toggle.ts","../../src/material/slide-toggle/slide-toggle-config.ts","../../src/material/sidenav/sidenav-module.ts","../../src/material/sidenav/sidenav.ts","../../src/material/sidenav/drawer.ts","../../src/material/sidenav/drawer-animations.ts","../../src/material/radio/radio-module.ts","../../src/material/radio/radio.ts","../../src/material/progress-spinner/progress-spinner-module.ts","../../src/material/progress-spinner/progress-spinner.ts","../../src/material/progress-bar/progress-bar-module.ts","../../src/material/progress-bar/progress-bar.ts","../../src/material/paginator/paginator-module.ts","../../src/material/paginator/paginator.ts","../../src/material/paginator/paginator-intl.ts","../../src/material/tooltip/tooltip-module.ts","../../src/material/tooltip/tooltip.ts","../../src/material/tooltip/tooltip-animations.ts","../../src/material/select/select-module.ts","../../src/material/select/select.ts","../../src/material/select/select-errors.ts","../../src/material/select/select-animations.ts","../../src/material/menu/menu-module.ts","../../src/material/menu/menu-trigger.ts","../../src/material/menu/menu.ts","../../src/material/menu/menu-item.ts","../../src/material/menu/menu-panel.ts","../../src/material/menu/menu-errors.ts","../../src/material/menu/menu-content.ts","../../src/material/menu/menu-animations.ts","../../src/material/list/list-module.ts","../../src/material/list/selection-list.ts","../../src/material/list/list.ts","../../src/material/icon/icon-module.ts","../../src/material/icon/icon.ts","../../src/material/icon/icon-registry.ts","../../src/material/grid-list/grid-list-module.ts","../../src/material/grid-list/grid-list.ts","../../src/material/grid-list/tile-styler.ts","../../src/material/grid-list/tile-coordinator.ts","../../src/material/grid-list/grid-tile.ts","../../src/material/grid-list/grid-list-base.ts","../../src/material/expansion/expansion-module.ts","../../src/material/expansion/accordion.ts","../../src/material/expansion/expansion-panel-header.ts","../../src/material/expansion/expansion-panel.ts","../../src/material/expansion/expansion-panel-content.ts","../../src/material/expansion/expansion-animations.ts","../../src/material/expansion/accordion-base.ts","../../src/material/divider/divider-module.ts","../../src/material/divider/divider.ts","../../src/material/datepicker/datepicker-module.ts","../../src/material/datepicker/datepicker-toggle.ts","../../src/material/datepicker/datepicker-input.ts","../../src/material/datepicker/datepicker.ts","../../src/material/datepicker/datepicker-animations.ts","../../src/material/datepicker/calendar.ts","../../src/material/datepicker/year-view.ts","../../src/material/datepicker/multi-year-view.ts","../../src/material/datepicker/month-view.ts","../../src/material/datepicker/calendar-body.ts","../../src/material/datepicker/datepicker-intl.ts","../../src/material/datepicker/datepicker-errors.ts","../../src/material/input/input-module.ts","../../src/material/input/input.ts","../../src/material/input/input-value-accessor.ts","../../src/material/input/input-errors.ts","../../src/material/input/autosize.ts","../../src/material/dialog/dialog-module.ts","../../src/material/dialog/dialog-content-directives.ts","../../src/material/dialog/dialog.ts","../../src/material/dialog/dialog-ref.ts","../../src/material/dialog/dialog-container.ts","../../src/material/dialog/dialog-animations.ts","../../src/material/dialog/dialog-config.ts","../../src/material/chips/chips-module.ts","../../src/material/chips/chip-input.ts","../../src/material/chips/chip-list.ts","../../src/material/chips/chip-default-options.ts","../../src/material/chips/chip.ts","../../src/material/checkbox/checkbox-module.ts","../../src/material/checkbox/checkbox-required-validator.ts","../../src/material/checkbox/checkbox.ts","../../src/material/checkbox/checkbox-config.ts","../../src/material/card/card-module.ts","../../src/material/card/card.ts","../../src/material/button-toggle/button-toggle-module.ts","../../src/material/button-toggle/button-toggle.ts","../../src/material/button/button-module.ts","../../src/material/button/button.ts","../../src/material/bottom-sheet/bottom-sheet.ts","../../src/material/bottom-sheet/bottom-sheet-ref.ts","../../src/material/bottom-sheet/bottom-sheet-module.ts","../../src/material/bottom-sheet/bottom-sheet-container.ts","../../src/material/bottom-sheet/bottom-sheet-animations.ts","../../src/material/bottom-sheet/bottom-sheet-config.ts","../../src/material/badge/badge-module.ts","../../src/material/badge/badge.ts","../../src/material/autocomplete/autocomplete-module.ts","../../src/material/autocomplete/autocomplete-trigger.ts","../../src/material/autocomplete/autocomplete-origin.ts","../../src/material/autocomplete/autocomplete.ts","../../src/material/form-field/form-field-module.ts","../../src/material/form-field/form-field.ts","../../src/material/form-field/suffix.ts","../../src/material/form-field/prefix.ts","../../src/material/form-field/placeholder.ts","../../src/material/form-field/label.ts","../../src/material/form-field/hint.ts","../../src/material/form-field/form-field-errors.ts","../../src/material/form-field/form-field-control.ts","../../src/material/form-field/form-field-animations.ts","../../src/material/form-field/error.ts","../../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","../../node_modules/tslib/tslib.es6.js"],"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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n _data = new BehaviorSubject<T[]>([]);\n\n /**\n * Data for the nested tree\n */\n get data() { return this._data.value; }\n set data(value: T[]) { this._data.next(value); }\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...[collectionViewer.viewChange, this._data])\n .pipe(map(() => {\n return this.data;\n }));\n }\n\n disconnect() {\n // no op\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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F> {\n\n constructor(public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) =>\n Observable<T[]> | T[] | undefined | null) {}\n\n _flattenNode(node: T, level: number,\n resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number,\n resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F> extends DataSource<F> {\n _flattenedData = new BehaviorSubject<F[]>([]);\n\n _expandedData = new BehaviorSubject<F[]>([]);\n\n _data: BehaviorSubject<T[]>;\n get data() { return this._data.value; }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n\n constructor(private _treeControl: FlatTreeControl<F>,\n private _treeFlattener: MatTreeFlattener<T, F>,\n initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n const changes = [\n collectionViewer.viewChange,\n this._treeControl.expansionModel.onChange,\n this._flattenedData\n ];\n return merge(...changes).pipe(map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n\n disconnect() {\n // no op\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';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet\n];\n\n@NgModule({\n imports: [CdkTreeModule, CommonModule, MatCommonModule],\n exports: MAT_TREE_DIRECTIVES,\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\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 {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}]\n})\nexport class MatTreeNodeToggle<T> extends CdkTreeNodeToggle<T> {\n @Input('matTreeNodeToggleRecursive') recursive: boolean = false;\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 {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}]\n})\nexport class MatTree<T> extends CdkTree<T> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) _nodeOutlet: MatTreeNodeOutlet;\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 {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {\n Directive,\n Inject,\n Optional,\n ViewContainerRef,\n} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [{\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet\n }]\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: 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 */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}]\n})\nexport class MatTreeNodePadding<T> extends CdkTreeNodePadding<T> {\n\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding') level: number;\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent') indent: number;\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 CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst _MatTreeNodeMixinBase: HasTabIndexCtor & CanDisableCtor & typeof CdkTreeNode =\n mixinTabIndex(mixinDisabled(CdkTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['disabled', 'tabIndex'],\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n '[attr.role]': 'role',\n 'class': 'mat-tree-node'\n },\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}]\n})\nexport class MatTreeNode<T> extends _MatTreeNodeMixinBase<T>\n implements CanDisable, HasTabIndex {\n @Input() role: 'treeitem' | 'group' = 'treeitem';\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [\n 'when: matTreeNodeDefWhen'\n ],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}]\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.role]': 'role',\n 'class': 'mat-nested-tree-node',\n },\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode}\n ]\n})\nexport class MatNestedTreeNode<T> extends CdkNestedTreeNode<T> implements AfterContentInit,\n OnDestroy {\n @Input('matNestedTreeNode') node: T;\n\n /** Whether the node is disabled. */\n @Input()\n get disabled() { return this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n private _disabled = false;\n\n /** Tabindex for the node. */\n @Input()\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 : 0;\n }\n private _tabIndex: number;\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n protected _differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree, _differs);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #23091 is fixed\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\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 {MatCommonModule} from '@angular/material/core';\nimport {MatToolbar, MatToolbarRow} from './toolbar';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n})\nexport class MatToolbarModule {}\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 {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Inject,\n isDevMode,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanColor, CanColorCtor, mixinColor} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatToolbar.\n/** @docs-private */\nclass MatToolbarBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatToolbarMixinBase: CanColorCtor & typeof MatToolbarBase = mixinColor(MatToolbarBase);\n\n@Directive({\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: {'class': 'mat-toolbar-row'},\n})\nexport class MatToolbarRow {}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-toolbar',\n exportAs: 'matToolbar',\n templateUrl: 'toolbar.html',\n styleUrls: ['toolbar.css'],\n inputs: ['color'],\n host: {\n 'class': 'mat-toolbar',\n '[class.mat-toolbar-multiple-rows]': '_toolbarRows.length > 0',\n '[class.mat-toolbar-single-row]': '_toolbarRows.length === 0',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatToolbar extends _MatToolbarMixinBase implements CanColor, AfterViewInit {\n private _document: Document;\n\n /** Reference to all toolbar row elements that have been projected. */\n @ContentChildren(MatToolbarRow) _toolbarRows: QueryList<MatToolbarRow>;\n\n constructor(\n elementRef: ElementRef,\n private _platform: Platform,\n @Inject(DOCUMENT) document?: any) {\n super(elementRef);\n\n // TODO: make the document a required param when doing breaking changes.\n this._document = document;\n }\n\n ngAfterViewInit() {\n if (!isDevMode() || !this._platform.isBrowser) {\n return;\n }\n\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n private _checkToolbarMixedModes() {\n if (!this._toolbarRows.length) {\n return;\n }\n\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a <mat-toolbar-row> element.\n const isCombinedUsage = Array.from<HTMLElement>(this._elementRef.nativeElement.childNodes)\n .filter(node => !(node.classList && node.classList.contains('mat-toolbar-row')))\n .filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8))\n .some(node => !!(node.textContent && node.textContent.trim()));\n\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n}\n\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nexport function throwToolbarMixedModesError() {\n throw Error('MatToolbar: Attempting to combine different toolbar modes. ' +\n 'Either specify multiple `<mat-toolbar-row>` elements explicitly or just place content ' +\n 'inside of a `<mat-toolbar>` for a single row.');\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 {ObserversModule} from '@angular/cdk/observers';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatInkBar} from './ink-bar';\nimport {MatTab} from './tab';\nimport {MatTabBody, MatTabBodyPortal} from './tab-body';\nimport {MatTabContent} from './tab-content';\nimport {MatTabGroup} from './tab-group';\nimport {MatTabHeader} from './tab-header';\nimport {MatTabLabel} from './tab-label';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {MatTabLink, MatTabNav} from './tab-nav-bar/tab-nav-bar';\nimport {A11yModule} from '@angular/cdk/a11y';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n MatTabContent,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent,\n ],\n})\nexport class MatTabsModule {}\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 {Directionality} from '@angular/cdk/bidi';\nimport {Platform} from '@angular/cdk/platform';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n HasTabIndex, HasTabIndexCtor,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex, RippleConfig,\n RippleGlobalOptions,\n RippleRenderer,\n RippleTarget,\n ThemePalette,\n} from '@angular/material/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {FocusMonitor, FocusableOption} from '@angular/cdk/a11y';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {MatInkBar} from '../ink-bar';\nimport {MatPaginatedTabHeader, MatPaginatedTabHeaderItem} from '../paginated-tab-header';\nimport {startWith, takeUntil} from 'rxjs/operators';\n\n/** Base class with all of the `MatTabNav` functionality. */\n// tslint:disable-next-line:class-name\nexport abstract class _MatTabNavBase extends MatPaginatedTabHeader implements AfterContentChecked,\n AfterContentInit, OnDestroy {\n\n /** Query list of all tab links of the tab navigation. */\n abstract _items: QueryList<MatPaginatedTabHeaderItem & {active: boolean}>;\n\n /** Background color of the tab nav. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n /** Theme color of the nav bar. */\n @Input() color: ThemePalette = 'primary';\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n /**\n * @deprecated @breaking-change 9.0.0 `platform` parameter to become required.\n */\n @Optional() platform?: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected() {\n // noop\n }\n\n ngAfterContentInit() {\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n\n super.ngAfterContentInit();\n }\n\n /**\n * Notifies the component that the active link has been changed.\n * @breaking-change 8.0.0 `element` parameter to be removed.\n */\n updateActiveLink(_element?: ElementRef) {\n if (!this._items) {\n return;\n }\n\n const items = this._items.toArray();\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n return;\n }\n }\n\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n}\n\n\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\n@Component({\n moduleId: module.id,\n selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color'],\n templateUrl: 'tab-nav-bar.html',\n styleUrls: ['tab-nav-bar.css'],\n host: {\n 'class': 'mat-tab-nav-bar mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n '[class.mat-primary]': 'color !== \"warn\" && color !== \"accent\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTabNav extends _MatTabNavBase {\n @ContentChildren(forwardRef(() => MatTabLink), {descendants: true}) _items: QueryList<MatTabLink>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator', {static: false}) _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator', {static: false}) _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n /**\n * @deprecated @breaking-change 9.0.0 `platform` parameter to become required.\n */\n @Optional() platform?: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode);\n }\n}\n\n// Boilerplate for applying mixins to MatTabLink.\nclass MatTabLinkMixinBase {}\nconst _MatTabLinkMixinBase:\n HasTabIndexCtor & CanDisableRippleCtor & CanDisableCtor & typeof MatTabLinkMixinBase =\n mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTabLinkMixinBase)));\n\n/** Base class with all of the `MatTabLink` functionality. */\n// tslint:disable-next-line:class-name\nexport class _MatTabLinkBase extends _MatTabLinkMixinBase implements OnDestroy, CanDisable,\n CanDisableRipple, HasTabIndex, RippleTarget, FocusableOption {\n\n /** Whether the tab link is active or not. */\n protected _isActive: boolean = false;\n\n /** Whether the link is active. */\n @Input()\n get active(): boolean { return this._isActive; }\n set active(value: boolean) {\n if (value !== this._isActive) {\n this._isActive = value;\n this._tabNavBar.updateActiveLink(this.elementRef);\n }\n }\n\n /**\n * Ripple configuration for ripples that are launched on pointer down. The ripple config\n * is set to the global ripple options since we don't have any configurable options for\n * the tab link ripples.\n * @docs-private\n */\n rippleConfig: RippleConfig & RippleGlobalOptions;\n\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled(): boolean {\n return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||\n !!this.rippleConfig.disabled;\n }\n\n constructor(\n private _tabNavBar: _MatTabNavBase, public elementRef: ElementRef,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, private _focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super();\n\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = {enterDuration: 0, exitDuration: 0};\n }\n\n _focusMonitor.monitor(elementRef);\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n}\n\n\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\n@Directive({\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link',\n '[attr.aria-current]': 'active ? \"page\" : null',\n '[attr.aria-disabled]': 'disabled',\n '[attr.tabIndex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n }\n})\nexport class MatTabLink extends _MatTabLinkBase implements OnDestroy {\n /** Reference to the RippleRenderer for the tab-link. */\n private _tabLinkRipple: RippleRenderer;\n\n constructor(\n tabNavBar: MatTabNav, elementRef: ElementRef, ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(tabNavBar, elementRef, globalRippleOptions, tabIndex, focusMonitor, animationMode);\n this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tabLinkRipple._removeTriggerEvents();\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 {Directionality} from '@angular/cdk/bidi';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n AfterViewInit,\n Input,\n Inject,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatInkBar} from './ink-bar';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {Platform} from '@angular/cdk/platform';\nimport {MatPaginatedTabHeader} from './paginated-tab-header';\n\n/** Base class with all of the `MatTabHeader` functionality. */\n// tslint:disable-next-line:class-name\nexport abstract class _MatTabHeaderBase extends MatPaginatedTabHeader implements\n AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected(event: KeyboardEvent) {\n event.preventDefault();\n }\n}\n\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tab-header',\n templateUrl: 'tab-header.html',\n styleUrls: ['tab-header.css'],\n inputs: ['selectedIndex'],\n outputs: ['selectFocusedIndex', 'indexFocused'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n})\nexport class MatTabHeader extends _MatTabHeaderBase {\n @ContentChildren(MatTabLabelWrapper) _items: QueryList<MatTabLabelWrapper>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator', {static: false}) _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator', {static: false}) _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\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 ChangeDetectorRef,\n ElementRef,\n NgZone,\n Optional,\n QueryList,\n EventEmitter,\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {FocusKeyManager, FocusableOption} from '@angular/cdk/a11y';\nimport {END, ENTER, HOME, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, of as observableOf, Subject, timer, fromEvent} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\n\n\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions =\n normalizePassiveListenerOptions({passive: true}) as EventListenerOptions;\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n\n/** Item inside a paginated tab header. */\nexport type MatPaginatedTabHeaderItem = FocusableOption & {elementRef: ElementRef};\n\n/**\n * Base class for a tab header that supported pagination.\n */\nexport abstract class MatPaginatedTabHeader implements AfterContentChecked, AfterContentInit,\n AfterViewInit, OnDestroy {\n abstract _items: QueryList<MatPaginatedTabHeaderItem>;\n abstract _inkBar: {hide: () => void, alignToElement: (element: HTMLElement) => void};\n abstract _tabListContainer: ElementRef<HTMLElement>;\n abstract _tabList: ElementRef<HTMLElement>;\n abstract _nextPaginator: ElementRef<HTMLElement>;\n abstract _previousPaginator: ElementRef<HTMLElement>;\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistance = 0;\n\n /** Whether the header should scroll to the selected index after the view has been checked. */\n private _selectedIndexChanged = false;\n\n /** Emits when the component is destroyed. */\n protected readonly _destroyed = new Subject<void>();\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n private _tabLabelCount: number;\n\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n private _scrollDistanceChanged: boolean;\n\n /** Used to manage focus between the tabs. */\n private _keyManager: FocusKeyManager<MatPaginatedTabHeaderItem>;\n\n /** Cached text content of the header. */\n private _currentTextContent: string;\n\n /** Stream that will stop the automated scrolling. */\n private _stopScrolling = new Subject<void>();\n\n /** The index of the active tab. */\n get selectedIndex(): number { return this._selectedIndex; }\n set selectedIndex(value: number) {\n value = coerceNumberProperty(value);\n\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n\n if (this._keyManager) {\n this._keyManager.updateActiveItemIndex(value);\n }\n }\n }\n private _selectedIndex: number = 0;\n\n /** Event emitted when the option is selected. */\n readonly selectFocusedIndex: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when a label is focused. */\n readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality,\n private _ngZone: NgZone,\n /**\n * @deprecated @breaking-change 9.0.0 `_platform` and `_animationMode`\n * parameters to become required.\n */\n private _platform?: Platform,\n public _animationMode?: string) {\n\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n\n /** Called when the user has selected an item via the keyboard. */\n protected abstract _itemSelected(event: KeyboardEvent): void;\n\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : observableOf(null);\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n\n this._keyManager = new FocusKeyManager<MatPaginatedTabHeaderItem>(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withWrap();\n\n this._keyManager.updateActiveItem(0);\n\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();\n\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes).pipe(takeUntil(this._destroyed)).subscribe(() => {\n realign();\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n\n ngAfterContentChecked(): void {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n\n /** Handles keyboard events on the header. */\n _handleKeydown(event: KeyboardEvent) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n\n switch (event.keyCode) {\n case HOME:\n this._keyManager.setFirstItemActive();\n event.preventDefault();\n break;\n case END:\n this._keyManager.setLastItemActive();\n event.preventDefault();\n break;\n case ENTER:\n case SPACE:\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number {\n return this._keyManager ? this._keyManager.activeItemIndex! : 0;\n }\n\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value: number) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n\n this._keyManager.setActiveItem(value);\n }\n\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index: number): boolean {\n if (!this._items) { return true; }\n\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex: number) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n } else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n\n /** The layout direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n const scrollDistance = this.scrollDistance;\n const platform = this._platform;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n // @breaking-change 9.0.0 Remove null check for `platform` after it can no longer be undefined.\n if (platform && (platform.TRIDENT || platform.EDGE)) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance(): number { return this._scrollDistance; }\n set scrollDistance(value: number) {\n this._scrollTo(value);\n }\n\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction: ScrollDirection) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;\n\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction: ScrollDirection) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex: number) {\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n\n if (!selectedLabel) { return; }\n\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const {offsetLeft, offsetWidth} = selectedLabel.elementRef.nativeElement;\n\n let labelBeforePos: number, labelAfterPos: number;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n } else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n const isEnabled =\n this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._showPaginationControls = isEnabled;\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance(): number {\n const lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n }\n\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab(): void {\n const selectedItem = this._items && this._items.length ?\n this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n } else {\n this._inkBar.hide();\n }\n }\n\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction: ScrollDirection) {\n // Avoid overlapping timers.\n this._stopInterval();\n\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const {maxScrollDistance, distance} = this._scrollHeader(direction);\n\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n private _scrollTo(position: number) {\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n\n return {maxScrollDistance, distance: this._scrollDistance};\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 {Directive, ElementRef} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nclass MatTabLabelWrapperBase {}\nconst _MatTabLabelWrapperMixinBase: CanDisableCtor & typeof MatTabLabelWrapperBase =\n mixinDisabled(MatTabLabelWrapperBase);\n\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\n@Directive({\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n }\n})\nexport class MatTabLabelWrapper extends _MatTabLabelWrapperMixinBase implements CanDisable {\n constructor(public elementRef: ElementRef) {\n super();\n }\n\n /** Sets focus on the wrapper element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n getOffsetLeft(): number {\n return this.elementRef.nativeElement.offsetLeft;\n }\n\n getOffsetWidth(): number {\n return this.elementRef.nativeElement.offsetWidth;\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, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n Optional,\n Inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n CanColor,\n CanColorCtor,\n CanDisableRipple,\n CanDisableRippleCtor,\n mixinColor,\n mixinDisableRipple,\n ThemePalette,\n} from '@angular/material/core';\nimport {merge, Subscription} from 'rxjs';\nimport {MatTab} from './tab';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n\n/** A simple change event emitted on focus or selection changes. */\nexport class MatTabChangeEvent {\n /** Index of the currently-selected tab. */\n index: number;\n /** Reference to the currently-selected tab. */\n tab: MatTab;\n}\n\n/** Possible positions for the tab header. */\nexport type MatTabHeaderPosition = 'above' | 'below';\n\n/** Object that can be used to configure the default options for the tabs module. */\nexport interface MatTabsConfig {\n /** Duration for the tab animation. Must be a valid CSS value (e.g. 600ms). */\n animationDuration?: string;\n}\n\n/** Injection token that can be used to provide the default options the tabs module. */\nexport const MAT_TABS_CONFIG = new InjectionToken<MatTabsConfig>('MAT_TABS_CONFIG');\n\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nclass MatTabGroupMixinBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatTabGroupMixinBase: CanColorCtor & CanDisableRippleCtor & typeof MatTabGroupMixinBase =\n mixinColor(mixinDisableRipple(MatTabGroupMixinBase), 'primary');\n\ninterface MatTabGroupBaseHeader {\n _alignInkBarToSelectedTab: () => void;\n focusIndex: number;\n}\n\n/** Base class with all of the `MatTabGroupBase` functionality. */\n// tslint:disable-next-line:class-name\nexport abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements AfterContentInit,\n AfterContentChecked, OnDestroy, CanColor, CanDisableRipple {\n abstract _tabs: QueryList<MatTab>;\n abstract _tabBodyWrapper: ElementRef;\n abstract _tabHeader: MatTabGroupBaseHeader;\n\n /** The tab index that should be selected after the content has been checked. */\n private _indexToSelect: number | null = 0;\n\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n private _tabBodyWrapperHeight: number = 0;\n\n /** Subscription to tabs being added/removed. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the tab labels. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n /** Whether the tab group should grow to the size of the active tab. */\n @Input()\n get dynamicHeight(): boolean { return this._dynamicHeight; }\n set dynamicHeight(value: boolean) { this._dynamicHeight = coerceBooleanProperty(value); }\n private _dynamicHeight: boolean = false;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number | null { return this._selectedIndex; }\n set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n private _selectedIndex: number | null = null;\n\n /** Position of the tab header. */\n @Input() headerPosition: MatTabHeaderPosition = 'above';\n\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n @Input()\n get animationDuration(): string { return this._animationDuration; }\n set animationDuration(value: string) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n private _animationDuration: string;\n\n /** Background color of the tab group. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const nativeElement: HTMLElement = this._elementRef.nativeElement;\n\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when focus has changed within a tab group. */\n @Output() readonly focusChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>();\n\n /** Event emitted when the body animation has completed */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab selection has changed. */\n @Output() readonly selectedTabChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>(true);\n\n private _groupId: number;\n\n constructor(elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n this._groupId = nextId++;\n this.animationDuration = defaultConfig && defaultConfig.animationDuration ?\n defaultConfig.animationDuration : '500ms';\n }\n\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n }\n\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);\n\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n }\n });\n }\n\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab: MatTab, index: number) => {\n tab.position = index - indexToSelect;\n\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit() {\n this._subscribeToTabLabels();\n\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n\n this._subscribeToTabLabels();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n\n _focusChanged(index: number) {\n this.focusChange.emit(this._createChangeEvent(index));\n }\n\n private _createChangeEvent(index: number): MatTabChangeEvent {\n const event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n private _clampTabIndex(index: number | null): number {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i: number): string {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n\n /** Returns a unique id for each tab content element */\n _getTabContentId(i: number): string {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight: number): void {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) { return; }\n\n const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\n\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight(): void {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: MatTab, tabHeader: MatTabGroupBaseHeader, index: number) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab: MatTab, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n}\n\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n templateUrl: 'tab-group.html',\n styleUrls: ['tab-group.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color', 'disableRipple'],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n})\nexport class MatTabGroup extends _MatTabGroupBase {\n @ContentChildren(MatTab) _tabs: QueryList<MatTab>;\n @ViewChild('tabBodyWrapper', {static: false}) _tabBodyWrapper: ElementRef;\n @ViewChild('tabHeader', {static: false}) _tabHeader: MatTabGroupBaseHeader;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\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 Component,\n ChangeDetectorRef,\n Input,\n Inject,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n ElementRef,\n Directive,\n Optional,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ComponentFactoryResolver,\n ViewContainerRef,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {TemplatePortal, CdkPortalOutlet, PortalHostDirective} from '@angular/cdk/portal';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {Subscription, Subject} from 'rxjs';\nimport {matTabsAnimations} from './tabs-animations';\nimport {startWith, distinctUntilChanged} from 'rxjs/operators';\n\n/**\n * These position states are used internally as animation states for the tab body. Setting the\n * position state to left, right, or center will transition the tab body from its current\n * position to its respective state. If there is not current position (void, in the case of a new\n * tab body), then there will be no transition animation to its state.\n *\n * In the case of a new tab body that should immediately be centered with an animating transition,\n * then left-origin-center or right-origin-center can be used, which will use left or right as its\n * psuedo-prior state.\n */\nexport type MatTabBodyPositionState =\n 'left' | 'center' | 'right' | 'left-origin-center' | 'right-origin-center';\n\n/**\n * The origin state is an internally used state that is set on a new tab body indicating if it\n * began to the left or right of the prior selected index. For example, if the selected index was\n * set to 1, and a new tab is created and selected at index 2, then the tab body would have an\n * origin of right because its index was greater than the prior selected index.\n */\nexport type MatTabBodyOriginState = 'left' | 'right';\n\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\n@Directive({\n selector: '[matTabBodyHost]'\n})\nexport class MatTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy {\n /** Subscription to events for when the tab body begins centering. */\n private _centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n private _leavingSub = Subscription.EMPTY;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n @Inject(forwardRef(() => MatTabBody)) private _host: MatTabBody) {\n super(componentFactoryResolver, viewContainerRef);\n }\n\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit(): void {\n super.ngOnInit();\n\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering: boolean) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n this.detach();\n });\n }\n\n /** Clean up centering subscription. */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\n\n/** Base class with all of the `MatTabBody` functionality. */\n// tslint:disable-next-line:class-name\nexport abstract class _MatTabBodyBase implements OnInit, OnDestroy {\n /** Current position of the tab-body in the tab-group. Zero means that the tab is visible. */\n private _positionIndex: number;\n\n /** Subscription to the directionality change observable. */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** Tab body position state. Used by the animation trigger for the current state. */\n _position: MatTabBodyPositionState;\n\n /** Emits when an animation on the tab is complete. */\n _translateTabComplete = new Subject<AnimationEvent>();\n\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n @Output() readonly _onCentering: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _afterLeavingCenter: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the tab completes its animation towards the center. */\n @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\n\n /** The portal host inside of this container into which the tab body content will be loaded. */\n abstract _portalHost: PortalHostDirective;\n\n /** The tab body content to display. */\n @Input('content') _content: TemplatePortal;\n\n /** Position that will be used when the tab is immediately becoming visible after creation. */\n @Input() origin: number;\n\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n @Input() animationDuration: string = '500ms';\n\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n @Input()\n set position(position: number) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir: Direction) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin();\n }\n }\n\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n\n _onTranslateTabStarted(event: AnimationEvent): void {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n\n /** The text direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position: MatTabBodyPositionState|string): boolean {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n }\n\n /** Computes the position state that will be used for the tab-body animation trigger. */\n private _computePositionAnimationState(dir: Direction = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n } else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n } else {\n this._position = 'center';\n }\n }\n\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n private _computePositionFromOrigin(): MatTabBodyPositionState {\n const dir = this._getLayoutDirection();\n\n if ((dir == 'ltr' && this.origin <= 0) || (dir == 'rtl' && this.origin > 0)) {\n return 'left-origin-center';\n }\n\n return 'right-origin-center';\n }\n}\n\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tab-body',\n templateUrl: 'tab-body.html',\n styleUrls: ['tab-body.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [matTabsAnimations.translateTab],\n host: {\n 'class': 'mat-tab-body',\n }\n})\nexport class MatTabBody extends _MatTabBodyBase {\n @ViewChild(PortalHostDirective, {static: false}) _portalHost: PortalHostDirective;\n\n constructor(elementRef: ElementRef<HTMLElement>,\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nexport const matTabsAnimations: {\n readonly translateTab: AnimationTriggerMetadata;\n} = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({transform: 'none'})),\n\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({transform: 'translate3d(-100%, 0, 0)', minHeight: '1px'})),\n state('right', style({transform: 'translate3d(100%, 0, 0)', minHeight: '1px'})),\n\n transition('* => left, * => right, left => center, right => center',\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({transform: 'translate3d(-100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({transform: 'translate3d(100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\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 {TemplatePortal} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {MatTabContent} from './tab-content';\nimport {MatTabLabel} from './tab-label';\n\n\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nclass MatTabBase {}\nconst _MatTabMixinBase: CanDisableCtor & typeof MatTabBase =\n mixinDisabled(MatTabBase);\n\n@Component({\n moduleId: module.id,\n selector: 'mat-tab',\n templateUrl: 'tab.html',\n inputs: ['disabled'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matTab',\n})\nexport class MatTab extends _MatTabMixinBase implements OnInit, CanDisable, OnChanges, OnDestroy {\n /** Content for the tab label given by `<ng-template mat-tab-label>`. */\n @ContentChild(MatTabLabel, {static: false}) templateLabel: MatTabLabel;\n\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n @ContentChild(MatTabContent, {read: TemplateRef, static: true})\n _explicitContent: TemplateRef<any>;\n\n /** Template inside the MatTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef, {static: true}) _implicitContent: TemplateRef<any>;\n\n /** Plain text label for the tab, used when there is no template label. */\n @Input('label') textLabel: string = '';\n\n /** Aria label for the tab. */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** Portal that will be the hosted content of the tab */\n private _contentPortal: TemplatePortal | null = null;\n\n /** @docs-private */\n get content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /** Emits whenever the internal state of the tab changes. */\n readonly _stateChanges = new Subject<void>();\n\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n position: number | null = null;\n\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n origin: number | null = null;\n\n /**\n * Whether the tab is currently active.\n */\n isActive = false;\n\n constructor(private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n\n ngOnDestroy(): void {\n this._stateChanges.complete();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(\n this._explicitContent || this._implicitContent, this._viewContainerRef);\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 {Directive} from '@angular/core';\nimport {CdkPortal} from '@angular/cdk/portal';\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n selector: '[mat-tab-label], [matTabLabel]',\n})\nexport class MatTabLabel extends CdkPortal {}\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 {Directive, TemplateRef} from '@angular/core';\n\n/** Decorates the `ng-template` tags and reads out the template from it. */\n@Directive({selector: '[matTabContent]'})\nexport class MatTabContent {\n constructor(public template: TemplateRef<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 {Directive, ElementRef, Inject, InjectionToken, NgZone, Optional} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Interface for a a MatInkBar positioner method, defining the positioning and width of the ink\n * bar in a set of tabs.\n */\n// tslint:disable-next-line class-name Using leading underscore to denote internal interface.\nexport interface _MatInkBarPositioner {\n (element: HTMLElement): { left: string, width: string };\n}\n\n/** Injection token for the MatInkBar's Positioner. */\nexport const _MAT_INK_BAR_POSITIONER =\n new InjectionToken<_MatInkBarPositioner>('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY\n });\n\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nexport function _MAT_INK_BAR_POSITIONER_FACTORY(): _MatInkBarPositioner {\n const method = (element: HTMLElement) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n\n return method;\n}\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\n@Directive({\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n})\nexport class MatInkBar {\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n @Inject(_MAT_INK_BAR_POSITIONER) private _inkBarPositioner: _MatInkBarPositioner,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element: HTMLElement) {\n this.show();\n\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this._setStyles(element));\n });\n } else {\n this._setStyles(element);\n }\n }\n\n /** Shows the ink bar. */\n show(): void {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** Hides the ink bar. */\n hide(): void {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n /**\n * Sets the proper styles to the ink bar element.\n * @param element\n */\n private _setStyles(element: HTMLElement) {\n const positions = this._inkBarPositioner(element);\n const inkBar: HTMLElement = this._elementRef.nativeElement;\n\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\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 {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort|void> :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent|void> :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest(dataStream, this._filter)\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest(filteredData, sortChange)\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest(orderedData, pageChange)\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\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 {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {MatTextColumn} from './text-column';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [\n CdkTableModule,\n CommonModule,\n MatCommonModule,\n ],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\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 {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {\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 CDK_ROW_TEMPLATE,\n CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {\n}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {\n}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow {\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow {\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 {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n /** Whether this column should be sticky positioned at the start of the row */\n @Input() sticky: boolean;\n\n /** Whether this column should be sticky positioned on the end of the row */\n @Input() stickyEnd: boolean;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\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 {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n providers: [{provide: CdkTable, useExisting: MatTable}],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\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 {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {ErrorStateMatcher, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperNext extends CdkStepperNext {\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {\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 CdkStep,\n CdkStepper,\n StepContentPositionState,\n STEPPER_GLOBAL_OPTIONS,\n StepperOptions\n} from '@angular/cdk/stepper';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n TemplateRef,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil, distinctUntilChanged} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [{provide: ErrorStateMatcher, useExisting: MatStep}],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher {\n /** Content for step label given by `<ng-template matStepLabel>`. */\n @ContentChild(MatStepLabel, {static: false}) stepLabel: MatStepLabel;\n\n /** @breaking-change 8.0.0 remove the `?` after `stepperOptions` */\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n super(stepper, stepperOptions);\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n\n@Directive({selector: '[matStepper]', providers: [{provide: CdkStepper, useExisting: MatStepper}]})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) _stepHeader: QueryList<MatStepHeader>;\n\n /** Steps that the stepper holds. */\n @ContentChildren(MatStep) _steps: QueryList<MatStep>;\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon) _icons: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean;\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>} = {};\n\n /** Stream of animation `done` events when the body expands/collapses. */\n _animationDone = new Subject<AnimationEvent>();\n\n ngAfterContentInit() {\n this._icons.forEach(({name, templateRef}) => this._iconOverrides[name] = templateRef);\n\n // Mark the component for change detection whenever the content children query changes\n this._steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());\n\n this._animationDone.pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed)\n ).subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-horizontal-stepper',\n exportAs: 'matHorizontalStepper',\n templateUrl: 'stepper-horizontal.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-horizontal',\n '[class.mat-stepper-label-position-end]': 'labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]': 'labelPosition == \"bottom\"',\n 'aria-orientation': 'horizontal',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.horizontalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatHorizontalStepper},\n {provide: CdkStepper, useExisting: MatHorizontalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatHorizontalStepper extends MatStepper {\n /** Whether the label should display in bottom or end position. */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-vertical-stepper',\n exportAs: 'matVerticalStepper',\n templateUrl: 'stepper-vertical.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-vertical',\n 'aria-orientation': 'vertical',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.verticalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatVerticalStepper},\n {provide: CdkStepper, useExisting: MatVerticalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatVerticalStepper extends MatStepper {\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n // @breaking-change 8.0.0 `elementRef` and `_document` parameters to become required.\n elementRef?: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document?: any) {\n super(dir, changeDetectorRef, elementRef, _document);\n this._orientation = 'vertical';\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 {Directive, Input, TemplateRef} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name: StepState;\n\n constructor(public templateRef: TemplateRef<MatStepperIconContext>) {}\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 the Material steppers.\n * @docs-private\n */\nexport const matStepperAnimations: {\n readonly horizontalStepTransition: AnimationTriggerMetadata;\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('stepTransition', [\n state('previous', style({transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden'})),\n state('current', style({transform: 'none', visibility: 'visible'})),\n state('next', style({transform: 'translate3d(100%, 0, 0)', visibility: 'hidden'})),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ]),\n\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({height: '0px', visibility: 'hidden'})),\n state('next', style({height: '0px', visibility: 'hidden'})),\n state('current', style({height: '*', visibility: 'visible'})),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrls: ['step-header.css'],\n host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader extends CdkStepHeader implements OnDestroy {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: StepState;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean;\n\n /** Whether the given step label is active. */\n @Input() active: boolean;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef) {\n super(_elementRef);\n _focusMonitor.monitor(_elementRef, true);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus() {\n this._focusMonitor.focusVia(this._elementRef, 'program');\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext(): MatStepperIconContext {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\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, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n}\n\n\n/** @docs-private */\nexport function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) {\n return parentIntl || new MatStepperIntl();\n}\n\n/** @docs-private */\nexport const MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\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 {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\nimport {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\n\n\n@NgModule({\n imports: [CommonModule],\n exports: [MatSort, MatSortHeader],\n declarations: [MatSort, MatSortHeader],\n providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class MatSortModule {}\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation,\n Inject,\n} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '@angular/material/core';\nimport {merge, Subscription} from 'rxjs';\nimport {MatSort, MatSortable} from './sort';\nimport {matSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {MatSortHeaderIntl} from './sort-header-intl';\n\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nclass MatSortHeaderBase {}\nconst _MatSortHeaderMixinBase: CanDisableCtor & typeof MatSortHeaderBase =\n mixinDisabled(MatSortHeaderBase);\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n fromState?: ArrowViewState;\n toState: ArrowViewState;\n}\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface MatSortHeaderColumnDef {\n name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n moduleId: module.id,\n selector: '[mat-sort-header]',\n exportAs: 'matSortHeader',\n templateUrl: 'sort-header.html',\n styleUrls: ['sort-header.css'],\n host: {\n '(click)': '_handleClick()',\n '(mouseenter)': '_setIndicatorHintVisible(true)',\n '(mouseleave)': '_setIndicatorHintVisible(false)',\n '[attr.aria-sort]': '_getAriaSortAttribute()',\n '[class.mat-sort-header-disabled]': '_isDisabled()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled'],\n animations: [\n matSortAnimations.indicator,\n matSortAnimations.leftPointer,\n matSortAnimations.rightPointer,\n matSortAnimations.arrowOpacity,\n matSortAnimations.arrowPosition,\n matSortAnimations.allowChildren,\n ]\n})\nexport class MatSortHeader extends _MatSortHeaderMixinBase\n implements CanDisable, MatSortable, OnDestroy, OnInit {\n private _rerenderSubscription: Subscription;\n\n /**\n * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n * provide an affordance that the header is sortable by showing on focus and hover.\n */\n _showIndicatorHint: boolean = false;\n\n /**\n * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n * position through the animation. If animations are currently disabled, the fromState is removed\n * so that there is no animation displayed.\n */\n _viewState: ArrowViewStateTransition;\n\n /** The direction the arrow should be facing according to the current state. */\n _arrowDirection: SortDirection = '';\n\n /**\n * Whether the view state animation should show the transition between the `from` and `to` states.\n */\n _disableViewStateAnimation = false;\n\n /**\n * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n * the column's name.\n */\n @Input('mat-sort-header') id: string;\n\n /** Sets the position of the arrow that displays when sorted. */\n @Input() arrowPosition: 'before' | 'after' = 'after';\n\n /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n @Input() start: 'asc' | 'desc';\n\n /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n @Input()\n get disableClear(): boolean { return this._disableClear; }\n set disableClear(v) { this._disableClear = coerceBooleanProperty(v); }\n private _disableClear: boolean;\n\n constructor(public _intl: MatSortHeaderIntl,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() public _sort: MatSort,\n @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n public _columnDef: MatSortHeaderColumnDef) {\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n // and we want to avoid having the sort header depending on the CDK table because\n // of this single reference.\n super();\n\n if (!_sort) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n\n this._rerenderSubscription = merge(_sort.sortChange, _sort._stateChanges, _intl.changes)\n .subscribe(() => {\n if (this._isSorted()) {\n this._updateArrowDirection();\n }\n\n // If this header was recently active and now no longer sorted, animate away the arrow.\n if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n this._disableViewStateAnimation = false;\n this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n }\n\n changeDetectorRef.markForCheck();\n });\n }\n\n ngOnInit() {\n if (!this.id && this._columnDef) {\n this.id = this._columnDef.name;\n }\n\n // Initialize the direction of the arrow and set the view state to be immediately that state.\n this._updateArrowDirection();\n this._setAnimationTransitionState(\n {toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n this._sort.register(this);\n }\n\n ngOnDestroy() {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n\n /**\n * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n * user showing what the active sort will become. If set to false, the arrow will fade away.\n */\n _setIndicatorHintVisible(visible: boolean) {\n // No-op if the sort header is disabled - should not make the hint visible.\n if (this._isDisabled() && visible) { return; }\n\n this._showIndicatorHint = visible;\n\n if (!this._isSorted()) {\n this._updateArrowDirection();\n if (this._showIndicatorHint) {\n this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n } else {\n this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n }\n }\n }\n\n /**\n * Sets the animation transition view state for the arrow's position and opacity. If the\n * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n * no animation appears.\n */\n _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n this._viewState = viewState;\n\n // If the animation for arrow position state (opacity/translation) should be disabled,\n // remove the fromState so that it jumps right to the toState.\n if (this._disableViewStateAnimation) {\n this._viewState = {toState: viewState.toState};\n }\n }\n\n /** Triggers the sort on this sort header and removes the indicator hint. */\n _handleClick() {\n if (this._isDisabled()) { return; }\n\n this._sort.sort(this);\n\n // Do not show the animation if the header was already shown in the right position.\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n this._disableViewStateAnimation = true;\n }\n\n // If the arrow is now sorted, animate the arrow into place. Otherwise, animate it away into\n // the direction it is facing.\n const viewState: ArrowViewStateTransition = this._isSorted() ?\n {fromState: this._arrowDirection, toState: 'active'} :\n {fromState: 'active', toState: this._arrowDirection};\n this._setAnimationTransitionState(viewState);\n\n this._showIndicatorHint = false;\n }\n\n /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n _isSorted() {\n return this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n }\n\n /** Returns the animation state for the arrow direction (indicator and pointers). */\n _getArrowDirectionState() {\n return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n }\n\n /** Returns the arrow position state (opacity, translation). */\n _getArrowViewState() {\n const fromState = this._viewState.fromState;\n return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n }\n\n /**\n * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n * active sorted direction. The reason this is updated through a function is because the direction\n * should only be changed at specific times - when deactivated but the hint is displayed and when\n * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n * preserving its direction, even though the next sort direction is actually different and should\n * only be changed once the arrow displays again (hint or activation).\n */\n _updateArrowDirection() {\n this._arrowDirection = this._isSorted() ?\n this._sort.direction :\n (this.start || this._sort.start);\n }\n\n _isDisabled() {\n return this._sort.disabled || this.disabled;\n }\n\n /**\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n * says that the aria-sort property should only be present on one header at a time, so removing\n * ensures this is true.\n */\n _getAriaSortAttribute() {\n if (!this._isSorted()) { return null; }\n\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n }\n\n /** Whether the arrow inside the sort header should be rendered. */\n _renderArrow() {\n return !this._isDisabled() || this._isSorted();\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, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** ARIA label for the sorting button. */\n sortButtonLabel = (id: string) => {\n return `Change sorting for ${id}`;\n }\n}\n/** @docs-private */\nexport function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) {\n return parentIntl || new MatSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const MAT_SORT_HEADER_INTL_PROVIDER = {\n // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n provide: MatSortHeaderIntl,\n deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n keyframes,\n AnimationTriggerMetadata, query, animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n AnimationCurves.STANDARD_CURVE;\n\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nexport const matSortAnimations: {\n readonly indicator: AnimationTriggerMetadata;\n readonly leftPointer: AnimationTriggerMetadata;\n readonly rightPointer: AnimationTriggerMetadata;\n readonly arrowOpacity: AnimationTriggerMetadata;\n readonly arrowPosition: AnimationTriggerMetadata;\n readonly allowChildren: AnimationTriggerMetadata;\n} = {\n /** Animation that moves the sort indicator. */\n indicator: trigger('indicator', [\n state('active-asc, asc', style({transform: 'translateY(0px)'})),\n // 10px is the height of the sort indicator, minus the width of the pointers\n state('active-desc, desc', style({transform: 'translateY(10px)'})),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n\n /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n leftPointer: trigger('leftPointer', [\n state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n\n /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n rightPointer: trigger('rightPointer', [\n state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n\n /** Animation that controls the arrow opacity. */\n arrowOpacity: trigger('arrowOpacity', [\n state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n state('desc-to-hint, asc-to-hint, hint', style({opacity: .54})),\n state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n style({opacity: 0})),\n // Transition between all states except for immediate transitions\n transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n\n /**\n * Animation for the translation of the arrow as a whole. States are separated into two\n * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n * peek, and active. The other states define a specific animation (source-to-destination)\n * and are determined as a function of their prev user-perceived state and what the next state\n * should be.\n */\n arrowPosition: trigger('arrowPosition', [\n // Hidden Above => Hint Center\n transition('* => desc-to-hint, * => desc-to-active',\n animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(-25%)'}),\n style({transform: 'translateY(0)'})\n ]))),\n // Hint Center => Hidden Below\n transition('* => hint-to-desc, * => active-to-desc',\n animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(0)'}),\n style({transform: 'translateY(25%)'})\n ]))),\n // Hidden Below => Hint Center\n transition('* => asc-to-hint, * => asc-to-active',\n animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(25%)'}),\n style({transform: 'translateY(0)'})\n ]))),\n // Hint Center => Hidden Above\n transition('* => hint-to-asc, * => active-to-asc',\n animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(0)'}),\n style({transform: 'translateY(-25%)'})\n ]))),\n state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n style({transform: 'translateY(0)'})),\n state('hint-to-desc, active-to-desc, desc',\n style({transform: 'translateY(-25%)'})),\n state('hint-to-asc, active-to-asc, asc',\n style({transform: 'translateY(25%)'})),\n ]),\n\n /** Necessary trigger that calls animate on children animations. */\n allowChildren: trigger('allowChildren', [\n transition('* <=> *', [\n query('@*', animateChild(), {optional: true})\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 {\n Directive,\n EventEmitter,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableCtor,\n HasInitialized,\n HasInitializedCtor,\n mixinDisabled,\n mixinInitialized,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError,\n getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n /** The id of the column being sorted. */\n id: string;\n\n /** Starting sort direction. */\n start: 'asc' | 'desc';\n\n /** Whether to disable clearing the sorting state. */\n disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n /** The id of the column being sorted. */\n active: string;\n\n /** The sort direction. */\n direction: SortDirection;\n}\n\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nclass MatSortBase {}\nconst _MatSortMixinBase: HasInitializedCtor & CanDisableCtor & typeof MatSortBase =\n mixinInitialized(mixinDisabled(MatSortBase));\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n selector: '[matSort]',\n exportAs: 'matSort',\n inputs: ['disabled: matSortDisabled']\n})\nexport class MatSort extends _MatSortMixinBase\n implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit {\n /** Collection of all registered sortables that this directive manages. */\n sortables = new Map<string, MatSortable>();\n\n /** Used to notify any child components listening to state changes. */\n readonly _stateChanges = new Subject<void>();\n\n /** The id of the most recently sorted MatSortable. */\n @Input('matSortActive') active: string;\n\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the MatSortable's sort start.\n */\n @Input('matSortStart') start: 'asc' | 'desc' = 'asc';\n\n /** The sort direction of the currently active MatSortable. */\n @Input('matSortDirection')\n get direction(): SortDirection { return this._direction; }\n set direction(direction: SortDirection) {\n if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n private _direction: SortDirection = '';\n\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overriden by the MatSortable's disable clear input.\n */\n @Input('matSortDisableClear')\n get disableClear(): boolean { return this._disableClear; }\n set disableClear(v: boolean) { this._disableClear = coerceBooleanProperty(v); }\n private _disableClear: boolean;\n\n /** Event emitted when the user changes either the active sort or sort direction. */\n @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n */\n register(sortable: MatSortable): void {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n this.sortables.set(sortable.id, sortable);\n }\n\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n */\n deregister(sortable: MatSortable): void {\n this.sortables.delete(sortable.id);\n }\n\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable: MatSortable): void {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n } else {\n this.direction = this.getNextSortDirection(sortable);\n }\n\n this.sortChange.emit({active: this.active, direction: this.direction});\n }\n\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n getNextSortDirection(sortable: MatSortable): SortDirection {\n if (!sortable) { return ''; }\n\n // Get the sort direction cycle with the potential sortable overrides.\n const disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n // Get and return the next direction in the cycle\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) { nextDirectionIndex = 0; }\n return sortDirectionCycle[nextDirectionIndex];\n }\n\n ngOnInit() {\n this._markInitialized();\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc',\n disableClear: boolean): SortDirection[] {\n let sortOrder: SortDirection[] = ['asc', 'desc'];\n if (start == 'desc') { sortOrder.reverse(); }\n if (!disableClear) { sortOrder.push(''); }\n\n return sortOrder;\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 getSortDuplicateSortableIdError(id: string): Error {\n return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\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 {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n OnDestroy,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _live: LiveAnnouncer,\n private _injector: Injector,\n private _breakpointObserver: BreakpointObserver,\n @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\n\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\n\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message: string, action: string = '', config?: MatSnackBarConfig):\n MatSnackBarRef<SimpleSnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {message, action};\n\n if (!_config.announcementMessage) {\n _config.announcementMessage = message;\n }\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(overlayRef: OverlayRef,\n config: MatSnackBarConfig): MatSnackBarContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatSnackBarConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatSnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(\n takeUntil(overlayRef.detachments())\n ).subscribe(state => {\n const classList = overlayRef.overlayElement.classList;\n const className = 'mat-snack-bar-handset';\n state.matches ? classList.add(className) : classList.remove(className);\n });\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n }\n\n if (config.announcementMessage) {\n this._live.announce(config.announcementMessage, config.politeness);\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = (\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(\n config: MatSnackBarConfig,\n snackBarRef: MatSnackBarRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return new PortalInjector(userInjector || this._injector, new WeakMap<any, any>([\n [MatSnackBarRef, snackBarRef],\n [MAT_SNACK_BAR_DATA, config.data]\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 {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\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 {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrls: ['snack-bar-container.css'],\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n '[attr.role]': '_role',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<any> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<any> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** ARIA role for the snack bar container. */\n _role: 'alert' | 'status' | null;\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n /** The snack bar configuration. */\n public snackBarConfig: MatSnackBarConfig) {\n\n super();\n\n // Based on the ARIA spec, `alert` and `status` roles have an\n // implicit `assertive` and `polite` politeness respectively.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._role = 'alert';\n } else if (snackBarConfig.politeness === 'off') {\n this._role = null;\n } else {\n this._role = 'status';\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event: AnimationEvent) {\n const {fromState, toState} = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\n\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit() {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n private _applySnackBarClasses() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n readonly snackBarState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Component, ViewEncapsulation, Inject, ChangeDetectionStrategy} from '@angular/core';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\n\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n moduleId: module.id,\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrls: ['simple-snack-bar.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n})\nexport class SimpleSnackBar {\n /** Data that was injected into the snack bar. */\n data: {message: string, action: string};\n\n constructor(\n public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n @Inject(MAT_SNACK_BAR_DATA) data: any) {\n this.data = data;\n }\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\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 {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /** The view container to place the overlay for the snack bar into. */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\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 {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: MatSnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n private _durationTimeoutId: number;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(containerInstance: MatSnackBarContainer,\n private _overlayRef: OverlayRef) {\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(() => this.dismiss());\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n }\n\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n this._durationTimeoutId = setTimeout(() => this.dismiss(), duration);\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction.asObservable();\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {GestureConfig, MatCommonModule} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\nimport {MatSlider} from './slider';\n\n\n@NgModule({\n imports: [CommonModule, MatCommonModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n providers: [{provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}]\n})\nexport class MatSliderModule {}\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n DOWN_ARROW,\n END,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor,\n CanColorCtor,\n CanDisable,\n CanDisableCtor,\n HammerInput,\n HasTabIndex,\n HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {Subscription} from 'rxjs';\n\n/**\n * Visually, a 30px separation between tick marks looks best. This is very subjective but it is\n * the default separation we chose.\n */\nconst MIN_AUTO_TICK_SEPARATION = 30;\n\n/** The thumb gap size for a disabled slider. */\nconst DISABLED_THUMB_GAP = 7;\n\n/** The thumb gap size for a non-active slider at its minimum value. */\nconst MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n\n/** The thumb gap size for an active slider at its minimum value. */\nconst MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n * @docs-private\n */\nexport const MAT_SLIDER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlider),\n multi: true\n};\n\n/** A simple change event emitted by the MatSlider component. */\nexport class MatSliderChange {\n /** The MatSlider that changed. */\n source: MatSlider;\n\n /** The new value of the source slider. */\n value: number | null;\n}\n\n\n// Boilerplate for applying mixins to MatSlider.\n/** @docs-private */\nclass MatSliderBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatSliderMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableCtor &\n typeof MatSliderBase =\n mixinTabIndex(mixinColor(mixinDisabled(MatSliderBase), 'accent'));\n\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `<input type=\"range\">` element.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-slider',\n exportAs: 'matSlider',\n providers: [MAT_SLIDER_VALUE_ACCESSOR],\n host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(mousedown)': '_onMousedown($event)',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n '(slide)': '_onSlide($event)',\n '(slideend)': '_onSlideEnd()',\n '(slidestart)': '_onSlideStart($event)',\n // On Safari starting to slide temporarily triggers text selection mode which\n // show the wrong cursor. We prevent it by stopping the `selectstart` event.\n '(selectstart)': '$event.preventDefault()',\n 'class': 'mat-slider',\n 'role': 'slider',\n '[tabIndex]': 'tabIndex',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-slider-disabled]': 'disabled',\n '[class.mat-slider-has-ticks]': 'tickInterval',\n '[class.mat-slider-horizontal]': '!vertical',\n '[class.mat-slider-axis-inverted]': '_invertAxis',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if mouse coordinates need to be inverted.\n '[class.mat-slider-invert-mouse-coords]': '_shouldInvertMouseCoords()',\n '[class.mat-slider-sliding]': '_isSliding',\n '[class.mat-slider-thumb-label-showing]': 'thumbLabel',\n '[class.mat-slider-vertical]': 'vertical',\n '[class.mat-slider-min-value]': '_isMinValue',\n '[class.mat-slider-hide-last-tick]': 'disabled || _isMinValue && _thumbGap && _invertAxis',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n templateUrl: 'slider.html',\n styleUrls: ['slider.css'],\n inputs: ['disabled', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlider extends _MatSliderMixinBase\n implements ControlValueAccessor, OnDestroy, CanDisable, CanColor, OnInit, HasTabIndex {\n /** Whether the slider is inverted. */\n @Input()\n get invert(): boolean { return this._invert; }\n set invert(value: boolean) {\n this._invert = coerceBooleanProperty(value);\n }\n private _invert = false;\n\n /** The maximum value that the slider can have. */\n @Input()\n get max(): number { return this._max; }\n set max(v: number) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n private _max: number = 100;\n\n /** The minimum value that the slider can have. */\n @Input()\n get min(): number { return this._min; }\n set min(v: number) {\n this._min = coerceNumberProperty(v, this._min);\n\n // If the value wasn't explicitly set by the user, set it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n this._percent = this._calculatePercentage(this._value);\n\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n private _min: number = 0;\n\n /** The values at which the thumb will snap. */\n @Input()\n get step(): number { return this._step; }\n set step(v: number) {\n this._step = coerceNumberProperty(v, this._step);\n\n if (this._step % 1 !== 0) {\n this._roundToDecimal = this._step.toString().split('.').pop()!.length;\n }\n\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n }\n private _step: number = 1;\n\n /** Whether or not to show the thumb label. */\n @Input()\n get thumbLabel(): boolean { return this._thumbLabel; }\n set thumbLabel(value: boolean) { this._thumbLabel = coerceBooleanProperty(value); }\n private _thumbLabel: boolean = false;\n\n /**\n * How often to show ticks. Relative to the step so that a tick always appears on a step.\n * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values).\n */\n @Input()\n get tickInterval() { return this._tickInterval; }\n set tickInterval(value: 'auto' | number) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n } else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, this._tickInterval as number);\n } else {\n this._tickInterval = 0;\n }\n }\n private _tickInterval: 'auto' | number = 0;\n\n /** Value of the slider. */\n @Input()\n get value(): number | null {\n // If the value needs to be read and it is still uninitialized, initialize it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n return this._value;\n }\n set value(v: number | null) {\n if (v !== this._value) {\n let value = coerceNumberProperty(v);\n\n // While incrementing by a decimal we can end up with values like 33.300000000000004.\n // Truncate it to ensure that it matches the label and to make it easier to work with.\n if (this._roundToDecimal) {\n value = parseFloat(value.toFixed(this._roundToDecimal));\n }\n\n this._value = value;\n this._percent = this._calculatePercentage(this._value);\n\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n }\n private _value: number | null = null;\n\n /**\n * Function that will be used to format the value before it is displayed\n * in the thumb label. Can be used to format very large number in order\n * for them to fit into the slider thumb.\n */\n @Input() displayWith: (value: number) => string | number;\n\n /** Whether the slider is vertical. */\n @Input()\n get vertical(): boolean { return this._vertical; }\n set vertical(value: boolean) {\n this._vertical = coerceBooleanProperty(value);\n }\n private _vertical = false;\n\n /** Event emitted when the slider value has changed. */\n @Output() readonly change: EventEmitter<MatSliderChange> = new EventEmitter<MatSliderChange>();\n\n /** Event emitted when the slider thumb moves. */\n @Output() readonly input: EventEmitter<MatSliderChange> = new EventEmitter<MatSliderChange>();\n\n /**\n * Emits when the raw value of the slider changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<number | null> = new EventEmitter<number | null>();\n\n /** The value to be used for display purposes. */\n get displayValue(): string | number {\n if (this.displayWith) {\n // Value is never null but since setters and getters cannot have\n // different types, the value getter is also typed to return null.\n return this.displayWith(this.value!);\n }\n\n // Note that this could be improved further by rounding something like 0.999 to 1 or\n // 0.899 to 0.9, however it is very performance sensitive, because it gets called on\n // every change detection cycle.\n if (this._roundToDecimal && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundToDecimal);\n }\n\n return this.value || 0;\n }\n\n /** set focus to the host element */\n focus(options?: FocusOptions) {\n this._focusHostElement(options);\n }\n\n /** blur the host element */\n blur() {\n this._blurHostElement();\n }\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n onTouched: () => any = () => {};\n\n /** The percentage of the slider that coincides with the value. */\n get percent(): number { return this._clamp(this._percent); }\n private _percent: number = 0;\n\n /**\n * Whether or not the thumb is sliding.\n * Used to determine if there should be a transition for the thumb and fill track.\n */\n _isSliding: boolean = false;\n\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n */\n _isActive: boolean = false;\n\n /**\n * Whether the axis of the slider is inverted.\n * (i.e. whether moving the thumb in the positive x or y direction decreases the slider's value).\n */\n get _invertAxis() {\n // Standard non-inverted mode for a vertical slider should be dragging the thumb from bottom to\n // top. However from a y-axis standpoint this is inverted.\n return this.vertical ? !this.invert : this.invert;\n }\n\n\n /** Whether the slider is at its minimum value. */\n get _isMinValue() {\n return this.percent === 0;\n }\n\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n */\n get _thumbGap() {\n if (this.disabled) {\n return DISABLED_THUMB_GAP;\n }\n if (this._isMinValue && !this.thumbLabel) {\n return this._isActive ? MIN_VALUE_ACTIVE_THUMB_GAP : MIN_VALUE_NONACTIVE_THUMB_GAP;\n }\n return 0;\n }\n\n /** CSS styles for the track background element. */\n get _trackBackgroundStyles(): { [key: string]: string } {\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${1 - this.percent}, 1` : `${1 - this.percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '-' : '';\n\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._thumbGap}px) scale3d(${scale})`\n };\n }\n\n /** CSS styles for the track fill element. */\n get _trackFillStyles(): { [key: string]: string } {\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${this.percent}, 1` : `${this.percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '' : '-';\n\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._thumbGap}px) scale3d(${scale})`\n };\n }\n\n /** CSS styles for the ticks container element. */\n get _ticksContainerStyles(): { [key: string]: string } {\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the ticks container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '' : '-';\n let offset = this._tickIntervalPercent / 2 * 100;\n return {\n 'transform': `translate${axis}(${sign}${offset}%)`\n };\n }\n\n /** CSS styles for the ticks element. */\n get _ticksStyles(): { [key: string]: string } {\n let tickSize = this._tickIntervalPercent * 100;\n let backgroundSize = this.vertical ? `2px ${tickSize}%` : `${tickSize}% 2px`;\n let axis = this.vertical ? 'Y' : 'X';\n // Depending on the direction we pushed the ticks container, push the ticks the opposite\n // direction to re-center them but clip off the end edge. In RTL languages we need to flip the\n // ticks 180 degrees so we're really cutting off the end edge abd not the start.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '-' : '';\n let rotate = !this.vertical && this._getDirection() == 'rtl' ? ' rotate(180deg)' : '';\n let styles: { [key: string]: string } = {\n 'backgroundSize': backgroundSize,\n // Without translateZ ticks sometimes jitter as the slider moves on Chrome & Firefox.\n 'transform': `translateZ(0) translate${axis}(${sign}${tickSize / 2}%)${rotate}`\n };\n\n if (this._isMinValue && this._thumbGap) {\n let side = this.vertical ?\n (this._invertAxis ? 'Bottom' : 'Top') :\n (this._invertAxis ? 'Right' : 'Left');\n styles[`padding${side}`] = `${this._thumbGap}px`;\n }\n\n return styles;\n }\n\n get _thumbContainerStyles(): { [key: string]: string } {\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the thumb container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let invertOffset =\n (this._getDirection() == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n let offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': `translate${axis}(-${offset}%)`\n };\n }\n\n /** The size of a tick interval as a percentage of the size of the track. */\n private _tickIntervalPercent: number = 0;\n\n /** The dimensions of the slider. */\n private _sliderDimensions: ClientRect | null = null;\n\n private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** Decimal places to round to, based on the step amount. */\n private _roundToDecimal: number;\n\n /** Subscription to the Directionality change EventEmitter. */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** The value of the slider when the slide start event fires. */\n private _valueOnSlideStart: number | null;\n\n /** Reference to the inner slider wrapper element. */\n @ViewChild('sliderWrapper', {static: false}) private _sliderWrapper: ElementRef;\n\n /**\n * Whether mouse events should be converted to a slider position by calculating their distance\n * from the right or bottom edge of the slider as opposed to the top or left.\n */\n _shouldInvertMouseCoords() {\n return (this._getDirection() == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n }\n\n /** The language direction for this slider element. */\n private _getDirection() {\n return (this._dir && this._dir.value == 'rtl') ? 'rtl' : 'ltr';\n }\n\n constructor(elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _dir: Directionality,\n @Attribute('tabindex') tabIndex: string,\n // @breaking-change 8.0.0 `_animationMode` parameter to be made required.\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngOnInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe((origin: FocusOrigin) => {\n this._isActive = !!origin && origin !== 'keyboard';\n this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._dirChangeSubscription.unsubscribe();\n }\n\n _onMouseenter() {\n if (this.disabled) {\n return;\n }\n\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n\n _onMousedown(event: MouseEvent) {\n // Don't do anything if the slider is disabled or the\n // user is using anything other than the main mouse button.\n if (this.disabled || event.button !== 0) {\n return;\n }\n\n const oldValue = this.value;\n this._isSliding = false;\n this._focusHostElement();\n this._updateValueFromPosition({x: event.clientX, y: event.clientY});\n\n // Emit a change and input event if the value changed.\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n }\n\n _onSlide(event: HammerInput) {\n if (this.disabled) {\n return;\n }\n\n // The slide start event sometimes fails to fire on iOS, so if we're not already in the sliding\n // state, call the slide start handler manually.\n if (!this._isSliding) {\n this._onSlideStart(null);\n }\n\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n\n let oldValue = this.value;\n this._updateValueFromPosition({x: event.center.x, y: event.center.y});\n\n // Native range elements always emit `input` events when the value changed while sliding.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n }\n\n _onSlideStart(event: HammerInput | null) {\n if (this.disabled || this._isSliding) {\n return;\n }\n\n // Simulate mouseenter in case this is a mobile device.\n this._onMouseenter();\n\n this._isSliding = true;\n this._focusHostElement();\n this._valueOnSlideStart = this.value;\n\n if (event) {\n this._updateValueFromPosition({x: event.center.x, y: event.center.y});\n event.preventDefault();\n }\n }\n\n _onSlideEnd() {\n this._isSliding = false;\n\n if (this._valueOnSlideStart != this.value && !this.disabled) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = null;\n }\n\n _onFocus() {\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n\n _onBlur() {\n this.onTouched();\n }\n\n _onKeydown(event: KeyboardEvent) {\n if (this.disabled || hasModifierKey(event)) {\n return;\n }\n\n const oldValue = this.value;\n\n switch (event.keyCode) {\n case PAGE_UP:\n this._increment(10);\n break;\n case PAGE_DOWN:\n this._increment(-10);\n break;\n case END:\n this.value = this.max;\n break;\n case HOME:\n this.value = this.min;\n break;\n case LEFT_ARROW:\n // NOTE: For a sighted user it would make more sense that when they press an arrow key on an\n // inverted slider the thumb moves in that direction. However for a blind user, nothing\n // about the slider indicates that it is inverted. They will expect left to be decrement,\n // regardless of how it appears on the screen. For speakers ofRTL languages, they probably\n // expect left to mean increment. Therefore we flip the meaning of the side arrow keys for\n // RTL. For inverted sliders we prefer a good a11y experience to having it \"look right\" for\n // sighted users, therefore we do not swap the meaning.\n this._increment(this._getDirection() == 'rtl' ? 1 : -1);\n break;\n case UP_ARROW:\n this._increment(1);\n break;\n case RIGHT_ARROW:\n // See comment on LEFT_ARROW about the conditions under which we flip the meaning.\n this._increment(this._getDirection() == 'rtl' ? -1 : 1);\n break;\n case DOWN_ARROW:\n this._increment(-1);\n break;\n default:\n // Return if the key is not one that we explicitly handle to avoid calling preventDefault on\n // it.\n return;\n }\n\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n\n this._isSliding = true;\n event.preventDefault();\n }\n\n _onKeyup() {\n this._isSliding = false;\n }\n\n /** Increments the slider by the given number of steps (negative number decrements). */\n private _increment(numSteps: number) {\n this.value = this._clamp((this.value || 0) + this.step * numSteps, this.min, this.max);\n }\n\n /** Calculate the new value from the new physical location. The value will always be snapped. */\n private _updateValueFromPosition(pos: {x: number, y: number}) {\n if (!this._sliderDimensions) {\n return;\n }\n\n let offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n let size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let posComponent = this.vertical ? pos.y : pos.x;\n\n // The exact value is calculated from the event and used to find the closest snap value.\n let percent = this._clamp((posComponent - offset) / size);\n\n if (this._shouldInvertMouseCoords()) {\n percent = 1 - percent;\n }\n\n // Since the steps may not divide cleanly into the max value, if the user\n // slid to 0 or 100 percent, we jump to the min/max value. This approach\n // is slightly more intuitive than using `Math.ceil` below, because it\n // follows the user's pointer closer.\n if (percent === 0) {\n this.value = this.min;\n } else if (percent === 1) {\n this.value = this.max;\n } else {\n const exactValue = this._calculateValue(percent);\n\n // This calculation finds the closest step by finding the closest\n // whole number divisible by the step relative to the min.\n const closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\n }\n }\n\n /** Emits a change event if the current value is different from the last emitted value. */\n private _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.value);\n this.valueChange.emit(this.value);\n this.change.emit(this._createChangeEvent());\n }\n\n /** Emits an input event when the current value is different from the last emitted value. */\n private _emitInputEvent() {\n this.input.emit(this._createChangeEvent());\n }\n\n /** Updates the amount of space between ticks as a percentage of the width of the slider. */\n private _updateTickIntervalPercent() {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n\n if (this.tickInterval == 'auto') {\n let trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let pixelsPerStep = trackSize * this.step / (this.max - this.min);\n let stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n let pixelsPerTick = stepsPerTick * this.step;\n this._tickIntervalPercent = pixelsPerTick / trackSize;\n } else {\n this._tickIntervalPercent = this.tickInterval * this.step / (this.max - this.min);\n }\n }\n\n /** Creates a slider change object from the specified value. */\n private _createChangeEvent(value = this.value): MatSliderChange {\n let event = new MatSliderChange();\n\n event.source = this;\n event.value = value;\n\n return event;\n }\n\n /** Calculates the percentage of the slider that a value is. */\n private _calculatePercentage(value: number | null) {\n return ((value || 0) - this.min) / (this.max - this.min);\n }\n\n /** Calculates the value a percentage of the slider corresponds to. */\n private _calculateValue(percentage: number) {\n return this.min + percentage * (this.max - this.min);\n }\n\n /** Return a number between two numbers. */\n private _clamp(value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(value, max));\n }\n\n /**\n * Get the bounding client rect of the slider track element.\n * The track is used rather than the native element to ignore the extra space that the thumb can\n * take up.\n */\n private _getSliderDimensions() {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\n }\n\n /**\n * Focuses the native element.\n * Currently only used to allow a blur event to fire but will be used with keyboard input later.\n */\n private _focusHostElement(options?: FocusOptions) {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Blurs the native element. */\n private _blurHostElement() {\n this._elementRef.nativeElement.blur();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Registers a callback to be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the component is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param isDisabled\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\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 {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {GestureConfig, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\nimport {MatSlideToggle} from './slide-toggle';\nimport {MatSlideToggleRequiredValidator} from './slide-toggle-required-validator';\n\n/** This module is used by both original and MDC-based slide-toggle implementations. */\n@NgModule({\n exports: [MatSlideToggleRequiredValidator],\n declarations: [MatSlideToggleRequiredValidator],\n})\n// tslint:disable-next-line:class-name\nexport class _MatSlideToggleRequiredValidatorModule {\n}\n\n@NgModule({\n imports: [\n _MatSlideToggleRequiredValidatorModule,\n MatRippleModule,\n MatCommonModule,\n ObserversModule,\n ],\n exports: [\n _MatSlideToggleRequiredValidatorModule,\n MatSlideToggle,\n MatCommonModule\n ],\n declarations: [MatSlideToggle],\n providers: [\n {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}\n ],\n})\nexport class MatSlideToggleModule {}\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 forwardRef,\n Provider,\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS,\n} from '@angular/forms';\n\nexport const MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatSlideToggleRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Material slide-toggle components with the required attribute in a\n * template-driven form. The default validator for required form controls asserts\n * that the control value is not undefined but that is not appropriate for a slide-toggle\n * where the value is always defined.\n *\n * Required slide-toggle form controls are valid when checked.\n */\n@Directive({\n selector: `mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,\n providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],\n})\nexport class MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {}\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation,\n NgZone,\n Optional,\n Inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor, CanColorCtor,\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n HammerInput,\n HasTabIndex, HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n MatSlideToggleDefaultOptions\n} from './slide-toggle-config';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport const MAT_SLIDE_TOGGLE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n};\n\n/** Change event object emitted by a MatSlideToggle. */\nexport class MatSlideToggleChange {\n constructor(\n /** The source MatSlideToggle of the event. */\n public source: MatSlideToggle,\n /** The new `checked` value of the MatSlideToggle. */\n public checked: boolean) { }\n}\n\n// Boilerplate for applying mixins to MatSlideToggle.\n/** @docs-private */\nclass MatSlideToggleBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatSlideToggleMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableRippleCtor &\n CanDisableCtor &\n typeof MatSlideToggleBase =\n mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n\n/** Represents a slidable \"switch\" toggle that can be moved between on and off. */\n@Component({\n moduleId: module.id,\n selector: 'mat-slide-toggle',\n exportAs: 'matSlideToggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n // Needs to be `-1` so it can still receive programmatic focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '(focus)': '_inputElement.nativeElement.focus()',\n },\n templateUrl: 'slide-toggle.html',\n styleUrls: ['slide-toggle.css'],\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestroy, AfterContentInit,\n ControlValueAccessor,\n CanDisable, CanColor,\n HasTabIndex,\n CanDisableRipple {\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n\n private _uniqueId: string = `mat-slide-toggle-${++nextUniqueId}`;\n private _required: boolean = false;\n private _checked: boolean = false;\n\n /** Whether the thumb is currently being dragged. */\n private _dragging = false;\n\n /** Previous checked state before drag started. */\n private _previousChecked: boolean;\n\n /** Width of the thumb bar of the slide-toggle. */\n private _thumbBarWidth: number;\n\n /** Percentage of the thumb while dragging. Percentage as fraction of 100. */\n private _dragPercentage: number;\n\n /** Reference to the thumb HTMLElement. */\n @ViewChild('thumbContainer', {static: false}) _thumbEl: ElementRef;\n\n /** Reference to the thumb bar HTMLElement. */\n @ViewChild('toggleBar', {static: false}) _thumbBarEl: ElementRef;\n\n /** Name value will be applied to the input element if present. */\n @Input() name: string | null = null;\n\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Used to set the aria-label attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Whether the slide-toggle is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value) { this._required = coerceBooleanProperty(value); }\n\n /** Whether the slide-toggle element is checked or not. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n /** An event will be dispatched each time the slide-toggle changes its value. */\n @Output() readonly change: EventEmitter<MatSlideToggleChange> =\n new EventEmitter<MatSlideToggleChange>();\n\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed. The event does not fire when the user drags to change\n * the slide toggle value.\n */\n @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An event will be dispatched each time the slide-toggle is dragged.\n * This event is always emitted when the user drags the slide toggle to make a change greater\n * than 50%. It does not mean the slide toggle's value is changed. The event is not emitted when\n * the user toggles the slide toggle to change its value.\n */\n @Output() readonly dragChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n /** Reference to the underlying input element. */\n @ViewChild('input', {static: false}) _inputElement: ElementRef<HTMLInputElement>;\n\n constructor(elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string,\n private _ngZone: NgZone,\n @Inject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS)\n public defaults: MatSlideToggleDefaultOptions,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string,\n @Optional() private _dir?: Directionality) {\n super(elementRef);\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngAfterContentInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n // error. See https://github.com/angular/angular/issues/17793. To work around this,\n // we defer telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => this._onTouched());\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Method being called whenever the underlying input emits a change event. */\n _onChangeEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the component's `change` output.\n event.stopPropagation();\n\n if (!this._dragging) {\n this.toggleChange.emit();\n }\n // Releasing the pointer over the `<label>` element while dragging triggers another\n // click event on the `<label>` element. This means that the checked state of the underlying\n // input changed unintentionally and needs to be changed back. Or when the slide toggle's config\n // disabled toggle change event by setting `disableToggleValue: true`, the slide toggle's value\n // does not change, and the checked state of the underlying input needs to be changed back.\n if (this._dragging || this.defaults.disableToggleValue) {\n this._inputElement.nativeElement.checked = this.checked;\n return;\n }\n\n // Sync the value from the underlying input element with the component instance.\n this.checked = this._inputElement.nativeElement.checked;\n\n // Emit our custom change event only if the underlying input emitted one. This ensures that\n // there is no change event, when the checked state changes programmatically.\n this._emitChangeEvent();\n }\n\n /** Method being called whenever the slide-toggle has been clicked. */\n _onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the slide-toggle. */\n focus(options?: FocusOptions): void {\n this._focusMonitor.focusVia(this._inputElement, 'keyboard', options);\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n private _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n\n /** Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100. */\n private _getDragPercentage(distance: number) {\n let percentage = (distance / this._thumbBarWidth) * 100;\n\n // When the toggle was initially checked, then we have to start the drag at the end.\n if (this._previousChecked) {\n percentage += 100;\n }\n\n return Math.max(0, Math.min(percentage, 100));\n }\n\n _onDragStart() {\n if (!this.disabled && !this._dragging) {\n const thumbEl = this._thumbEl.nativeElement;\n this._thumbBarWidth = this._thumbBarEl.nativeElement.clientWidth - thumbEl.clientWidth;\n thumbEl.classList.add('mat-dragging');\n\n this._previousChecked = this.checked;\n this._dragging = true;\n }\n }\n\n _onDrag(event: HammerInput) {\n if (this._dragging) {\n const direction = this._dir && this._dir.value === 'rtl' ? -1 : 1;\n this._dragPercentage = this._getDragPercentage(event.deltaX * direction);\n // Calculate the moved distance based on the thumb bar width.\n const dragX = (this._dragPercentage / 100) * this._thumbBarWidth * direction;\n this._thumbEl.nativeElement.style.transform = `translate3d(${dragX}px, 0, 0)`;\n }\n }\n\n _onDragEnd() {\n if (this._dragging) {\n const newCheckedValue = this._dragPercentage > 50;\n\n if (newCheckedValue !== this.checked) {\n this.dragChange.emit();\n if (!this.defaults.disableDragValue) {\n this.checked = newCheckedValue;\n this._emitChangeEvent();\n }\n }\n\n // The drag should be stopped outside of the current event handler, otherwise the\n // click event will be fired before it and will revert the drag change.\n this._ngZone.runOutsideAngular(() => setTimeout(() => {\n if (this._dragging) {\n this._dragging = false;\n this._thumbEl.nativeElement.classList.remove('mat-dragging');\n\n // Reset the transform because the component will take care\n // of the thumb position after drag.\n this._thumbEl.nativeElement.style.transform = '';\n }\n }));\n }\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n // slide-toggle component will be only marked for check, but no actual change detection runs\n // automatically. Instead of going back into the zone in order to trigger a change detection\n // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n // we only trigger an explicit change detection for the slide-toggle view and its children.\n this._changeDetectorRef.detectChanges();\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 {InjectionToken} from '@angular/core';\n\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n /** Whether toggle action triggers value changes in slide toggle. */\n disableToggleValue?: boolean;\n /** Whether drag action triggers value changes in slide toggle. */\n disableDragValue?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS =\n new InjectionToken<MatSlideToggleDefaultOptions>('mat-slide-toggle-default-options', {\n providedIn: 'root',\n factory: () => ({disableToggleValue: false, disableDragValue: false})\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 {PlatformModule} from '@angular/cdk/platform';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n ScrollingModule,\n PlatformModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n Inject,\n Input,\n ViewEncapsulation,\n QueryList,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean { return this._fixedInViewport; }\n set fixedInViewport(value) { this._fixedInViewport = coerceBooleanProperty(value); }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number { return this._fixedTopGap; }\n set fixedTopGap(value) { this._fixedTopGap = coerceNumberProperty(value); }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number { return this._fixedBottomGap; }\n set fixedBottomGap(value) { this._fixedBottomGap = coerceNumberProperty(value); }\n private _fixedBottomGap = 0;\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav) _drawers: QueryList<MatSidenav>;\n @ContentChild(MatSidenavContent, {static: false}) _content: MatSidenavContent;\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 {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n HostListener,\n HostBinding,\n} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n startWith,\n take,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE =\n new InjectionToken<boolean>('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean {\n return false;\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) public _container: MatDrawerContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy {\n private _focusTrap: FocusTrap;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n private _enableAnimations = false;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' { return this._position; }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): 'over' | 'push' | 'side' { return this._mode; }\n set mode(value: 'over' | 'push' | 'side') {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n private _mode: 'over' | 'push' | 'side' = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean { return this._disableClose; }\n set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }\n private _disableClose: boolean = false;\n\n /** Whether the drawer should focus the first focusable element automatically when opened. */\n @Input()\n get autoFocus(): boolean { return this._autoFocus; }\n set autoFocus(value: boolean) { this._autoFocus = coerceBooleanProperty(value); }\n private _autoFocus: boolean = true;\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null;\n\n /** Emits whenever the drawer has started animating. */\n _animationStarted = new Subject<AnimationEvent>();\n\n /** Emits whenever the drawer is done animating. */\n _animationEnd = new Subject<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\n // @HostBinding is used in the class as it is expected to be extended. Since @Component decorator\n // metadata is not inherited by child classes, instead the host binding data is defined in a way\n // that can be inherited.\n // tslint:disable:no-host-decorator-in-concrete\n @HostBinding('@transform')\n _animationState: 'open-instant' | 'open' | 'void' = 'void';\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n get openedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n get closedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState === 'void'),\n map(() => {})\n );\n }\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject<void>();\n\n get _isFocusTrapEnabled(): boolean {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n return this.opened && this.mode !== 'side';\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n private _focusTrapFactory: FocusTrapFactory,\n private _focusMonitor: FocusMonitor,\n private _platform: Platform,\n private _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private _doc: any) {\n\n this.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n }\n\n if (this._isFocusTrapEnabled && this._focusTrap) {\n this._trapFocus();\n }\n } else {\n this._restoreFocus();\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n (fromEvent(this._elementRef.nativeElement, 'keydown') as Observable<KeyboardEvent>).pipe(\n filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }),\n takeUntil(this._destroyed)\n ).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe((event: AnimationEvent) => {\n const {fromState, toState} = event;\n\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n\n /** Traps focus inside the drawer. */\n private _trapFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n // still works. We need to check that `focus` is a function due to Universal.\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n */\n private _restoreFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n const activeEl = this._doc && this._doc.activeElement;\n\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n } else {\n this._elementRef.nativeElement.blur();\n }\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n this._openedVia = null;\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { this.toggle(coerceBooleanProperty(value)); }\n private _opened: boolean = false;\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia: FocusOrigin = 'program'):\n Promise<MatDrawerToggleResult> {\n\n this._opened = isOpen;\n\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n this._openedVia = openedVia;\n } else {\n this._animationState = 'void';\n this._restoreFocus();\n }\n\n this._updateFocusTrapState();\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n }\n\n /** Updates the enabled state of the focus trap. */\n private _updateFocusTrapState() {\n if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\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('@transform.start', ['$event'])\n _animationStartListener(event: AnimationEvent) {\n this._animationStarted.next(event);\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('@transform.done', ['$event'])\n _animationDoneListener(event: AnimationEvent) {\n this._animationEnd.next(event);\n }\n}\n\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n @ContentChildren(MatDrawer) _drawers: QueryList<MatDrawer>;\n @ContentChild(MatDrawerContent, {static: false}) _content: MatDrawerContent;\n @ViewChild(MatDrawerContent, {static: false}) _userContent: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null { return this._start; }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null { return this._end; }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean { return this._autosize; }\n set autosize(value: boolean) { this._autosize = coerceBooleanProperty(value); }\n private _autosize: boolean;\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n set hasBackdrop(value: any) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null;\n private _end: MatDrawer | null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null;\n private _right: MatDrawer | null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number|null, right: number|null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler.change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n\n this._autosize = defaultAutosize;\n }\n\n ngAfterContentInit() {\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this._doCheckSubject.pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)\n ).subscribe(() => this.updateContentMargins());\n }\n\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n } else if (this._left.mode == 'push') {\n const width = this._left._width;\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n } else if (this._right.mode == 'push') {\n const width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(\n filter((event: AnimationEvent) => event.fromState !== event.toState),\n takeUntil(this._drawers.changes),\n )\n .subscribe((event: AnimationEvent) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() =>\n this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawer();\n }\n\n _closeModalDrawer() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n }\n\n private _canHaveBackdrop(drawer: MatDrawer): boolean {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void',\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatRadioButton, MatRadioGroup} from './radio';\n\n\n@NgModule({\n imports: [CommonModule, MatRippleModule, MatCommonModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n declarations: [MatRadioGroup, MatRadioButton],\n})\nexport class MatRadioModule {}\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanDisableRipple,\n CanDisableRippleCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinDisableRipple,\n mixinTabIndex,\n ThemePalette,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nexport interface MatRadioDefaultOptions {\n color: ThemePalette;\n}\n\nexport const MAT_RADIO_DEFAULT_OPTIONS =\n new InjectionToken<MatRadioDefaultOptions>('mat-radio-default-options', {\n providedIn: 'root',\n factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY\n});\n\nexport function MAT_RADIO_DEFAULT_OPTIONS_FACTORY(): MatRadioDefaultOptions {\n return {\n color: 'accent'\n };\n}\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nexport const MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true\n};\n\n/** Change event object emitted by MatRadio and MatRadioGroup. */\nexport class MatRadioChange {\n constructor(\n /** The MatRadioButton that emits the change event. */\n public source: MatRadioButton,\n /** The value of the MatRadioButton. */\n public value: any) {}\n}\n\n/**\n * A group of radio buttons. May contain one or more `<mat-radio-button>` elements.\n */\n@Directive({\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group',\n },\n})\nexport class MatRadioGroup implements AfterContentInit, ControlValueAccessor {\n /** Selected value for the radio group. */\n private _value: any = null;\n\n /** The HTML name attribute applied to radio buttons in this group. */\n private _name: string = `mat-radio-group-${nextUniqueId++}`;\n\n /** The currently selected radio button. Should match value. */\n private _selected: MatRadioButton | null = null;\n\n /** Whether the `value` has been set to its initial value. */\n private _isInitialized: boolean = false;\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n private _labelPosition: 'before' | 'after' = 'after';\n\n /** Whether the radio group is disabled. */\n private _disabled: boolean = false;\n\n /** Whether the radio group is required. */\n private _required: boolean = false;\n\n /** The method to be called in order to update ngModel */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** Child radio buttons. */\n @ContentChildren(forwardRef(() => MatRadioButton), { descendants: true })\n _radios: QueryList<MatRadioButton>;\n\n /** Theme color for all of the radio buttons in the group. */\n @Input() color: ThemePalette;\n\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n @Input()\n get name(): string { return this._name; }\n set name(value: string) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n @Input()\n get value(): any { return this._value; }\n set value(newValue: any) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n @Input()\n get selected() { return this._selected; }\n set selected(selected: MatRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n\n /** Whether the radio group is disabled */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n\n /** Whether the radio group is required */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n\n constructor(private _changeDetector: ChangeDetectorRef) { }\n\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n }\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private _updateRadioButtonNames(): void {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n\n /** Updates the `selected` radio button from the internal _value state. */\n private _updateSelectedRadioFromValue(): void {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(): void {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected!, this._value));\n }\n }\n\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\n\n// Boilerplate for applying mixins to MatRadioButton.\n/** @docs-private */\nclass MatRadioButtonBase {\n // Since the disabled property is manually defined for the MatRadioButton and isn't set up in\n // the mixin base class. To be able to use the tabindex mixin, a disabled property must be\n // defined to properly work.\n disabled: boolean;\n\n constructor(public _elementRef: ElementRef) {}\n}\n// As per Material design specifications the selection control radio should use the accent color\n// palette by default. https://material.io/guidelines/components/selection-controls.html\nconst _MatRadioButtonMixinBase:\n CanDisableRippleCtor & HasTabIndexCtor & typeof MatRadioButtonBase =\n mixinDisableRipple(mixinTabIndex(MatRadioButtonBase));\n\n/**\n * A Material design radio-button. Typically placed inside of `<mat-radio-group>` elements.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-radio-button',\n templateUrl: 'radio.html',\n styleUrls: ['radio.css'],\n inputs: ['disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRadioButton',\n host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n // Needs to be -1 so the `focus` event still fires.\n '[attr.tabindex]': '-1',\n '[attr.id]': 'id',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatRadioButton extends _MatRadioButtonMixinBase\n implements OnInit, AfterViewInit, OnDestroy, CanDisableRipple, HasTabIndex {\n\n private _uniqueId: string = `mat-radio-${++nextUniqueId}`;\n\n /** The unique ID for the radio button. */\n @Input() id: string = this._uniqueId;\n\n /** Analog to HTML 'name' attribute used to group radios for unique selection. */\n @Input() name: string;\n\n /** Used to set the 'aria-label' attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string;\n\n /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\n @Input('aria-describedby') ariaDescribedby: string;\n\n /** Whether this radio button is checked. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this._checked !== newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n\n if (newCheckedState) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n\n /** The value of this radio button. */\n @Input()\n get value(): any { return this._value; }\n set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n private _labelPosition: 'before' | 'after';\n\n /** Whether the radio button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n const newDisabledState = coerceBooleanProperty(value);\n if (this._disabled !== newDisabledState) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n }\n }\n\n /** Whether the radio button is required. */\n @Input()\n get required(): boolean {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n /** Theme color of the radio button. */\n @Input()\n get color(): ThemePalette {\n return this._color ||\n (this.radioGroup && this.radioGroup.color) ||\n this._providerOverride && this._providerOverride.color || 'accent';\n }\n set color(newValue: ThemePalette) { this._color = newValue; }\n private _color: ThemePalette;\n\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** The parent radio group. May or may not be present. */\n radioGroup: MatRadioGroup;\n\n /** ID of the native input element inside `<mat-radio-button>` */\n get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n /** Whether this radio is checked. */\n private _checked: boolean = false;\n\n /** Whether this radio is disabled. */\n private _disabled: boolean;\n\n /** Whether this radio is required. */\n private _required: boolean;\n\n /** Value assigned to this radio. */\n private _value: any = null;\n\n /** Unregister function for _radioDispatcher */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n /** The native `<input type=radio>` element */\n @ViewChild('input', {static: false}) _inputElement: ElementRef<HTMLInputElement>;\n\n constructor(@Optional() radioGroup: MatRadioGroup,\n elementRef: ElementRef,\n private _changeDetector: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _radioDispatcher: UniqueSelectionDispatcher,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string,\n @Optional() @Inject(MAT_RADIO_DEFAULT_OPTIONS)\n private _providerOverride?: MatRadioDefaultOptions) {\n super(elementRef);\n\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n\n this._removeUniqueSelectionListener =\n _radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n /** Focuses the radio button. */\n focus(options?: FocusOptions): void {\n this._focusMonitor.focusVia(this._inputElement, 'keyboard', options);\n }\n\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n }\n\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n\n /** Dispatch change event with current value. */\n private _emitChangeEvent(): void {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n _onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n\n /**\n * Triggered when the radio button received a click or the input recognized any change.\n * Clicking on a label element, will trigger a change event on the associated input.\n */\n _onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatProgressSpinner, MatSpinner} from './progress-spinner';\n\n\n@NgModule({\n imports: [MatCommonModule, CommonModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ],\n})\nclass MatProgressSpinnerModule {}\n\nexport {MatProgressSpinnerModule};\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 {Platform} from '@angular/cdk/platform';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n Optional,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport {CanColor, CanColorCtor, mixinColor} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/** Possible mode for a progress spinner. */\nexport type ProgressSpinnerMode = 'determinate' | 'indeterminate';\n\n/**\n * Base reference size of the spinner.\n * @docs-private\n */\nconst BASE_SIZE = 100;\n\n/**\n * Base reference stroke width of the spinner.\n * @docs-private\n */\nconst BASE_STROKE_WIDTH = 10;\n\n// Boilerplate for applying mixins to MatProgressSpinner.\n/** @docs-private */\nclass MatProgressSpinnerBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatProgressSpinnerMixinBase: CanColorCtor & typeof MatProgressSpinnerBase =\n mixinColor(MatProgressSpinnerBase, 'primary');\n\n/** Default `mat-progress-spinner` options that can be overridden. */\nexport interface MatProgressSpinnerDefaultOptions {\n /** Diameter of the spinner. */\n diameter?: number;\n /** Width of the spinner's stroke. */\n strokeWidth?: number;\n /**\n * Whether the animations should be force to be enabled, ignoring if the current environment is\n * using NoopAnimationsModule.\n */\n _forceAnimations?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nexport const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS =\n new InjectionToken<MatProgressSpinnerDefaultOptions>('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY(): MatProgressSpinnerDefaultOptions {\n return {diameter: BASE_SIZE};\n}\n\n// .0001 percentage difference is necessary in order to avoid unwanted animation frames\n// for example because the animation duration is 4 seconds, .1% accounts to 4ms\n// which are enough to see the flicker described in\n// https://github.com/angular/components/issues/8984\nconst INDETERMINATE_ANIMATION_TEMPLATE = `\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\n 0% { stroke-dashoffset: START_VALUE; transform: rotate(0); }\n 12.5% { stroke-dashoffset: END_VALUE; transform: rotate(0); }\n 12.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n 25% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n\n 25.0001% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\n 37.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n 50% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n\n 50.0001% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\n 62.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n 75% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n\n 75.0001% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\n 87.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n 100% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n }\n`;\n\n/**\n * `<mat-progress-spinner>` component.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-progress-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-progress-spinner',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode',\n },\n inputs: ['color'],\n templateUrl: 'progress-spinner.html',\n styleUrls: ['progress-spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatProgressSpinner extends _MatProgressSpinnerMixinBase implements OnInit, CanColor {\n private _diameter = BASE_SIZE;\n private _value = 0;\n private _strokeWidth: number;\n private _fallbackAnimation = false;\n\n /**\n * Element to which we should add the generated style tags for the indeterminate animation.\n * For most elements this is the document, but for the ones in the Shadow DOM we need to\n * use the shadow root.\n */\n private _styleRoot: Node;\n\n /**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).\n * We need to keep track of which elements the diameters were attached to, because for\n * elements in the Shadow DOM the style tags are attached to the shadow root, rather\n * than the document head.\n */\n private static _diameters = new WeakMap<Node, Set<number>>();\n\n /** Whether the _mat-animation-noopable class should be applied, disabling animations. */\n _noopAnimations: boolean;\n\n /** The diameter of the progress spinner (will set width and height of svg). */\n @Input()\n get diameter(): number { return this._diameter; }\n set diameter(size: number) {\n this._diameter = coerceNumberProperty(size);\n\n // If this is set before `ngOnInit`, the style root may not have been resolved yet.\n if (!this._fallbackAnimation && this._styleRoot) {\n this._attachStyleNode();\n }\n }\n\n /** Stroke width of the progress spinner. */\n @Input()\n get strokeWidth(): number {\n return this._strokeWidth || this.diameter / 10;\n }\n set strokeWidth(value: number) {\n this._strokeWidth = coerceNumberProperty(value);\n }\n\n /** Mode of the progress circle */\n @Input() mode: ProgressSpinnerMode = 'determinate';\n\n /** Value of the progress circle. */\n @Input()\n get value(): number {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(newValue: number) {\n this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n }\n\n constructor(public _elementRef: ElementRef<HTMLElement>,\n platform: Platform,\n @Optional() @Inject(DOCUMENT) private _document: any,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode: string,\n @Inject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)\n defaults?: MatProgressSpinnerDefaultOptions) {\n\n super(_elementRef);\n\n const trackedDiameters = MatProgressSpinner._diameters;\n\n // The base size is already inserted via the component's structural styles. We still\n // need to track it so we don't end up adding the same styles again.\n if (!trackedDiameters.has(_document.head)) {\n trackedDiameters.set(_document.head, new Set<number>([BASE_SIZE]));\n }\n\n this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n this._noopAnimations = animationMode === 'NoopAnimations' &&\n (!!defaults && !defaults._forceAnimations);\n\n if (defaults) {\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n\n ngOnInit() {\n const element = this._elementRef.nativeElement;\n\n // Note that we need to look up the root node in ngOnInit, rather than the constructor, because\n // Angular seems to create the element outside the shadow root and then moves it inside, if the\n // node is inside an `ngIf` and a ShadowDom-encapsulated component.\n this._styleRoot = _getShadowRoot(element, this._document) || this._document.head;\n this._attachStyleNode();\n\n // On IE and Edge, we can't animate the `stroke-dashoffset`\n // reliably so we fall back to a non-spec animation.\n const animationClass =\n `mat-progress-spinner-indeterminate${this._fallbackAnimation ? '-fallback' : ''}-animation`;\n\n element.classList.add(animationClass);\n }\n\n /** The radius of the spinner, adjusted for stroke width. */\n get _circleRadius() {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n\n /** The view box of the spinner's svg element. */\n get _viewBox() {\n const viewBox = this._circleRadius * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n\n /** The stroke circumference of the svg circle. */\n get _strokeCircumference(): number {\n return 2 * Math.PI * this._circleRadius;\n }\n\n /** The dash offset of the svg circle. */\n get _strokeDashOffset() {\n if (this.mode === 'determinate') {\n return this._strokeCircumference * (100 - this._value) / 100;\n }\n\n // In fallback mode set the circle to 80% and rotate it with CSS.\n if (this._fallbackAnimation && this.mode === 'indeterminate') {\n return this._strokeCircumference * 0.2;\n }\n\n return null;\n }\n\n /** Stroke width of the circle in percent. */\n get _circleStrokeWidth() {\n return this.strokeWidth / this.diameter * 100;\n }\n\n /** Dynamically generates a style tag containing the correct animation for this diameter. */\n private _attachStyleNode(): void {\n const styleRoot = this._styleRoot;\n const currentDiameter = this._diameter;\n const diameters = MatProgressSpinner._diameters;\n let diametersForElement = diameters.get(styleRoot);\n\n if (!diametersForElement || !diametersForElement.has(currentDiameter)) {\n const styleTag: HTMLStyleElement = this._document.createElement('style');\n styleTag.setAttribute('mat-spinner-animation', currentDiameter + '');\n styleTag.textContent = this._getAnimationText();\n styleRoot.appendChild(styleTag);\n\n if (!diametersForElement) {\n diametersForElement = new Set<number>();\n diameters.set(styleRoot, diametersForElement);\n }\n\n diametersForElement.add(currentDiameter);\n }\n }\n\n /** Generates animation styles adjusted for the spinner's diameter. */\n private _getAnimationText(): string {\n return INDETERMINATE_ANIMATION_TEMPLATE\n // Animation should begin at 5% and end at 80%\n .replace(/START_VALUE/g, `${0.95 * this._strokeCircumference}`)\n .replace(/END_VALUE/g, `${0.2 * this._strokeCircumference}`)\n .replace(/DIAMETER/g, `${this.diameter}`);\n }\n}\n\n\n/**\n * `<mat-spinner>` component.\n *\n * This is a component definition to be used as a convenience reference to create an\n * indeterminate `<mat-progress-spinner>` instance.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-spinner',\n host: {\n 'role': 'progressbar',\n 'mode': 'indeterminate',\n 'class': 'mat-spinner mat-progress-spinner',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n },\n inputs: ['color'],\n templateUrl: 'progress-spinner.html',\n styleUrls: ['progress-spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSpinner extends MatProgressSpinner {\n constructor(elementRef: ElementRef<HTMLElement>, platform: Platform,\n @Optional() @Inject(DOCUMENT) document: any,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode: string,\n @Inject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)\n defaults?: MatProgressSpinnerDefaultOptions) {\n super(elementRef, platform, document, animationMode, defaults);\n this.mode = 'indeterminate';\n }\n}\n\n\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nexport function _getShadowRoot(element: HTMLElement, _document: Document): Node | null {\n // TODO(crisbeto): see whether we should move this into the CDK\n // feature detection utilities once #15616 gets merged in.\n if (typeof window !== 'undefined') {\n const head = _document.head;\n\n // Check whether the browser supports Shadow DOM.\n if (head && ((head as any).createShadowRoot || head.attachShadow)) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n if (rootNode instanceof (window as any).ShadowRoot) {\n return rootNode;\n }\n }\n }\n\n return 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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatProgressBar} from './progress-bar';\n\n\n@NgModule({\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar],\n})\nexport class MatProgressBarModule {}\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 Component,\n ChangeDetectionStrategy,\n ElementRef,\n Inject,\n Input,\n Output,\n EventEmitter,\n Optional,\n NgZone,\n ViewEncapsulation,\n AfterViewInit,\n ViewChild,\n OnDestroy,\n InjectionToken,\n inject,\n} from '@angular/core';\nimport {fromEvent, Subscription, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {CanColor, CanColorCtor, mixinColor} from '@angular/material/core';\nimport {DOCUMENT} from '@angular/common';\n\n// TODO(josephperrott): Benchpress tests.\n// TODO(josephperrott): Add ARIA attributes for progress bar \"for\".\n\n/** Last animation end data. */\nexport interface ProgressAnimationEnd {\n value: number;\n}\n\n// Boilerplate for applying mixins to MatProgressBar.\n/** @docs-private */\nclass MatProgressBarBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\nconst _MatProgressBarMixinBase: CanColorCtor & typeof MatProgressBarBase =\n mixinColor(MatProgressBarBase, 'primary');\n\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_PROGRESS_BAR_LOCATION = new InjectionToken<MatProgressBarLocation>(\n 'mat-progress-bar-location',\n {providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY}\n);\n\n/**\n * Stubbed out location for `MatProgressBar`.\n * @docs-private\n */\nexport interface MatProgressBarLocation {\n getPathname: () => string;\n}\n\n/** @docs-private */\nexport function MAT_PROGRESS_BAR_LOCATION_FACTORY(): MatProgressBarLocation {\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/** Counter used to generate unique IDs for progress bars. */\nlet progressbarId = 0;\n\n/**\n * `<mat-progress-bar>` component.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': '(mode === \"indeterminate\" || mode === \"query\") ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-progress-bar',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n },\n inputs: ['color'],\n templateUrl: 'progress-bar.html',\n styleUrls: ['progress-bar.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatProgressBar extends _MatProgressBarMixinBase implements CanColor,\n AfterViewInit, OnDestroy {\n constructor(public _elementRef: ElementRef, private _ngZone: NgZone,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string,\n /**\n * @deprecated `location` parameter to be made required.\n * @breaking-change 8.0.0\n */\n @Optional() @Inject(MAT_PROGRESS_BAR_LOCATION) location?: MatProgressBarLocation) {\n super(_elementRef);\n\n // We need to prefix the SVG reference with the current path, otherwise they won't work\n // in Safari if the page has a `<base>` tag. Note that we need quotes inside the `url()`,\n\n // because named route URLs can contain parentheses (see #12338). Also we don't use since\n // we can't tell the difference between whether\n // the consumer is using the hash location strategy or not, because `Location` normalizes\n // both `/#/foo/bar` and `/foo/bar` to the same thing.\n const path = location ? location.getPathname().split('#')[0] : '';\n this._rectangleFillValue = `url('${path}#${this.progressbarId}')`;\n this._isNoopAnimation = _animationMode === 'NoopAnimations';\n }\n\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n _isNoopAnimation = false;\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input()\n get value(): number { return this._value; }\n set value(v: number) {\n this._value = clamp(v || 0);\n\n // When noop animation is set to true, trigger animationEnd directly.\n if (this._isNoopAnimation) {\n this._emitAnimationEnd();\n }\n }\n private _value: number = 0;\n\n /** Buffer value of the progress bar. Defaults to zero. */\n @Input()\n get bufferValue(): number { return this._bufferValue; }\n set bufferValue(v: number) { this._bufferValue = clamp(v || 0); }\n private _bufferValue: number = 0;\n\n @ViewChild('primaryValueBar', {static: false}) _primaryValueBar: ElementRef;\n\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n @Output() animationEnd = new EventEmitter<ProgressAnimationEnd>();\n\n /** Reference to animation end subscription to be unsubscribed on destroy. */\n private _animationEndSubscription: Subscription = Subscription.EMPTY;\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input() mode: 'determinate' | 'indeterminate' | 'buffer' | 'query' = 'determinate';\n\n /** ID of the progress bar. */\n progressbarId = `mat-progress-bar-${progressbarId++}`;\n\n /** Attribute to be used for the `fill` attribute on the internal `rect` element. */\n _rectangleFillValue: string;\n\n /** Gets the current transform value for the progress bar's primary indicator. */\n _primaryTransform() {\n const scale = this.value / 100;\n return {transform: `scaleX(${scale})`};\n }\n\n /**\n * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n */\n _bufferTransform() {\n if (this.mode === 'buffer') {\n const scale = this.bufferValue / 100;\n return {transform: `scaleX(${scale})`};\n }\n return undefined;\n }\n\n ngAfterViewInit() {\n if (!this._isNoopAnimation) {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular((() => {\n const element = this._primaryValueBar.nativeElement;\n\n this._animationEndSubscription =\n (fromEvent(element, 'transitionend') as Observable<TransitionEvent>)\n .pipe(filter(((e: TransitionEvent) => e.target === element)))\n .subscribe(() => this._ngZone.run(() => this._emitAnimationEnd()));\n }));\n }\n }\n\n ngOnDestroy() {\n this._animationEndSubscription.unsubscribe();\n }\n\n /** Emit an animationEnd event if in determinate or buffer mode. */\n private _emitAnimationEnd(): void {\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this.animationEnd.next({value: this.value});\n }\n }\n}\n\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatPaginator} from './paginator';\nimport {MAT_PAGINATOR_INTL_PROVIDER} from './paginator-intl';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatSelectModule,\n MatTooltipModule,\n ],\n exports: [MatPaginator],\n declarations: [MatPaginator],\n providers: [MAT_PAGINATOR_INTL_PROVIDER],\n})\nexport class MatPaginatorModule {}\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, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatPaginatorIntl} from './paginator-intl';\nimport {\n HasInitialized,\n HasInitializedCtor,\n mixinInitialized,\n ThemePalette,\n mixinDisabled,\n CanDisableCtor,\n CanDisable,\n} from '@angular/material/core';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n /** The current page index. */\n pageIndex: number;\n\n /**\n * Index of the page that was selected previously.\n * @breaking-change 8.0.0 To be made into a required property.\n */\n previousPageIndex?: number;\n\n /** The current page size */\n pageSize: number;\n\n /** The current total number of items being paged */\n length: number;\n}\n\n// Boilerplate for applying mixins to MatPaginator.\n/** @docs-private */\nclass MatPaginatorBase {}\nconst _MatPaginatorBase: CanDisableCtor & HasInitializedCtor & typeof MatPaginatorBase =\n mixinDisabled(mixinInitialized(MatPaginatorBase));\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-paginator',\n exportAs: 'matPaginator',\n templateUrl: 'paginator.html',\n styleUrls: ['paginator.css'],\n inputs: ['disabled'],\n host: {\n 'class': 'mat-paginator',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatPaginator extends _MatPaginatorBase implements OnInit, OnDestroy, CanDisable,\n HasInitialized {\n private _initialized: boolean;\n private _intlChanges: Subscription;\n\n /** Theme color to be used for the underlying form controls. */\n @Input() color: ThemePalette;\n\n /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n @Input()\n get pageIndex(): number { return this._pageIndex; }\n set pageIndex(value: number) {\n this._pageIndex = Math.max(coerceNumberProperty(value), 0);\n this._changeDetectorRef.markForCheck();\n }\n private _pageIndex = 0;\n\n /** The length of the total number of items that are being paginated. Defaulted to 0. */\n @Input()\n get length(): number { return this._length; }\n set length(value: number) {\n this._length = coerceNumberProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n private _length = 0;\n\n /** Number of items to display on a page. By default set to 50. */\n @Input()\n get pageSize(): number { return this._pageSize; }\n set pageSize(value: number) {\n this._pageSize = Math.max(coerceNumberProperty(value), 0);\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSize: number;\n\n /** The set of provided page size options to display to the user. */\n @Input()\n get pageSizeOptions(): number[] { return this._pageSizeOptions; }\n set pageSizeOptions(value: number[]) {\n this._pageSizeOptions = (value || []).map(p => coerceNumberProperty(p));\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions: number[] = [];\n\n /** Whether to hide the page size selection UI from the user. */\n @Input()\n get hidePageSize(): boolean { return this._hidePageSize; }\n set hidePageSize(value: boolean) {\n this._hidePageSize = coerceBooleanProperty(value);\n }\n private _hidePageSize = false;\n\n\n /** Whether to show the first/last buttons UI to the user. */\n @Input()\n get showFirstLastButtons(): boolean { return this._showFirstLastButtons; }\n set showFirstLastButtons(value: boolean) {\n this._showFirstLastButtons = coerceBooleanProperty(value);\n }\n private _showFirstLastButtons = false;\n\n /** Event emitted when the paginator changes the page size or page index. */\n @Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n /** Displayed set of page size options. Will be sorted and include current page size. */\n _displayedPageSizeOptions: number[];\n\n constructor(public _intl: MatPaginatorIntl,\n private _changeDetectorRef: ChangeDetectorRef) {\n super();\n this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n ngOnInit() {\n this._initialized = true;\n this._updateDisplayedPageSizeOptions();\n this._markInitialized();\n }\n\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n }\n\n /** Advances to the next page if it exists. */\n nextPage(): void {\n if (!this.hasNextPage()) { return; }\n\n const previousPageIndex = this.pageIndex;\n this.pageIndex++;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Move back to the previous page if it exists. */\n previousPage(): void {\n if (!this.hasPreviousPage()) { return; }\n\n const previousPageIndex = this.pageIndex;\n this.pageIndex--;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Move to the first page if not already there. */\n firstPage(): void {\n // hasPreviousPage being false implies at the start\n if (!this.hasPreviousPage()) { return; }\n\n const previousPageIndex = this.pageIndex;\n this.pageIndex = 0;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Move to the last page if not already there. */\n lastPage(): void {\n // hasNextPage being false implies at the end\n if (!this.hasNextPage()) { return; }\n\n const previousPageIndex = this.pageIndex;\n this.pageIndex = this.getNumberOfPages() - 1;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Whether there is a previous page. */\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n /** Whether there is a next page. */\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n /** Calculate the number of pages */\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n\n /**\n * Changes the page size so that the first item displayed on the page will still be\n * displayed using the new page size.\n *\n * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n * switching so that the page size is 5 will set the third page as the current page so\n * that the 10th item will still be displayed.\n */\n _changePageSize(pageSize: number) {\n // Current page needs to be updated to reflect the new page size. Navigate to the page\n // containing the previous page's first item.\n const startIndex = this.pageIndex * this.pageSize;\n const previousPageIndex = this.pageIndex;\n\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions() {\n if (!this._initialized) { return; }\n\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.pageSize) {\n this._pageSize = this.pageSizeOptions.length != 0 ?\n this.pageSizeOptions[0] :\n DEFAULT_PAGE_SIZE;\n }\n\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitPageEvent(previousPageIndex: number) {\n this.page.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length\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, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable({providedIn: 'root'})\nexport class MatPaginatorIntl {\n /**\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\n * changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Items per page:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Next page';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Previous page';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'First page';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Last page';\n\n /** A label for the range of items within the current page and the length of the whole list. */\n getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length == 0 || pageSize == 0) { return `0 of ${length}`; }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n\n return `${startIndex + 1} – ${endIndex} of ${length}`;\n }\n}\n\n/** @docs-private */\nexport function MAT_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: MatPaginatorIntl) {\n return parentIntl || new MatPaginatorIntl();\n}\n\n/** @docs-private */\nexport const MAT_PAGINATOR_INTL_PROVIDER = {\n // If there is already an MatPaginatorIntl available, use that. Otherwise, provide a new one.\n provide: MatPaginatorIntl,\n deps: [[new Optional(), new SkipSelf(), MatPaginatorIntl]],\n useFactory: MAT_PAGINATOR_INTL_PROVIDER_FACTORY\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 {A11yModule} from '@angular/cdk/a11y';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {GestureConfig, MatCommonModule} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\nimport {\n MatTooltip,\n TooltipComponent,\n MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './tooltip';\n\n@NgModule({\n imports: [\n A11yModule,\n CommonModule,\n OverlayModule,\n MatCommonModule,\n ],\n exports: [MatTooltip, TooltipComponent, MatCommonModule],\n declarations: [MatTooltip, TooltipComponent],\n entryComponents: [TooltipComponent],\n providers: [\n MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig},\n ]\n})\nexport class MatTooltipModule {}\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 {AnimationEvent} from '@angular/animations';\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {\n FlexibleConnectedPositionStrategy,\n HorizontalConnectionPos,\n OriginConnectionPosition,\n Overlay,\n OverlayConnectionPosition,\n OverlayRef,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {Platform} from '@angular/cdk/platform';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {HAMMER_LOADER, HammerLoader} from '@angular/platform-browser';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {matTooltipAnimations} from './tooltip-animations';\n\n\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/** CSS class that will be attached to the overlay panel. */\nexport const TOOLTIP_PANEL_CLASS = 'mat-tooltip-panel';\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nexport function getMatTooltipInvalidPositionError(position: string) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({scrollThrottle: SCROLL_THROTTLE_MS});\n}\n\n/** @docs-private */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n showDelay: number;\n hideDelay: number;\n touchendHideDelay: number;\n position?: TooltipPosition;\n}\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MAT_TOOLTIP_DEFAULT_OPTIONS =\n new InjectionToken<MatTooltipDefaultOptions>('mat-tooltip-default-options', {\n providedIn: 'root',\n factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY\n });\n\n/** @docs-private */\nexport function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions {\n return {\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n };\n}\n\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\n@Directive({\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n '(longpress)': 'show()',\n '(keydown)': '_handleKeydown($event)',\n '(touchend)': '_handleTouchend()',\n },\n})\nexport class MatTooltip implements OnDestroy, OnInit {\n _overlayRef: OverlayRef | null;\n _tooltipInstance: TooltipComponent | null;\n\n private _portal: ComponentPortal<TooltipComponent>;\n private _position: TooltipPosition = 'below';\n private _disabled: boolean = false;\n private _tooltipClass: string|string[]|Set<string>|{[key: string]: any};\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Allows the user to define the position of the tooltip relative to the parent element */\n @Input('matTooltipPosition')\n get position(): TooltipPosition { return this._position; }\n set position(value: TooltipPosition) {\n if (value !== this._position) {\n this._position = value;\n\n if (this._overlayRef) {\n this._updatePosition();\n\n if (this._tooltipInstance) {\n this._tooltipInstance!.show(0);\n }\n\n this._overlayRef.updatePosition();\n }\n }\n }\n\n /** Disables the display of the tooltip. */\n @Input('matTooltipDisabled')\n get disabled(): boolean { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n // If tooltip is disabled, hide immediately.\n if (this._disabled) {\n this.hide(0);\n }\n }\n\n /** The default delay in ms before showing the tooltip after show is called */\n @Input('matTooltipShowDelay') showDelay = this._defaultOptions.showDelay;\n\n /** The default delay in ms before hiding the tooltip after hide is called */\n @Input('matTooltipHideDelay') hideDelay = this._defaultOptions.hideDelay;\n\n private _message = '';\n\n /** The message to be displayed in the tooltip */\n @Input('matTooltip')\n get message() { return this._message; }\n set message(value: string) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message);\n\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n this._message = value != null ? `${value}`.trim() : '';\n\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n } else {\n this._updateTooltipMessage();\n this._ngZone.runOutsideAngular(() => {\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n Promise.resolve().then(() => {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message);\n });\n });\n }\n }\n\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n @Input('matTooltipClass')\n get tooltipClass() { return this._tooltipClass; }\n set tooltipClass(value: string|string[]|Set<string>|{[key: string]: any}) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n\n private _manualListeners = new Map<string, EventListenerOrEventListenerObject>();\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n constructor(\n private _overlay: Overlay,\n private _elementRef: ElementRef<HTMLElement>,\n private _scrollDispatcher: ScrollDispatcher,\n private _viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n platform: Platform,\n private _ariaDescriber: AriaDescriber,\n private _focusMonitor: FocusMonitor,\n @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS)\n private _defaultOptions: MatTooltipDefaultOptions,\n @Optional() @Inject(HAMMER_LOADER) hammerLoader?: HammerLoader) {\n\n this._scrollStrategy = scrollStrategy;\n const element: HTMLElement = _elementRef.nativeElement;\n const hasGestures = typeof window === 'undefined' || (window as any).Hammer || hammerLoader;\n\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (!platform.IOS && !platform.ANDROID) {\n this._manualListeners\n .set('mouseenter', () => this.show())\n .set('mouseleave', () => this.hide());\n } else if (!hasGestures) {\n // If Hammerjs isn't loaded, fall back to showing on `touchstart`, otherwise\n // there's no way for the user to trigger the tooltip on a touch device.\n this._manualListeners.set('touchstart', () => this.show());\n }\n\n this._manualListeners.forEach((listener, event) => element.addEventListener(event, listener));\n\n _focusMonitor.monitor(_elementRef).pipe(takeUntil(this._destroyed)).subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n _ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n _ngZone.run(() => this.show());\n }\n });\n\n if (_defaultOptions && _defaultOptions.position) {\n this.position = _defaultOptions.position;\n }\n }\n\n /**\n * Setup styling-specific things\n */\n ngOnInit() {\n const element = this._elementRef.nativeElement;\n const elementStyle = element.style as CSSStyleDeclaration & {webkitUserDrag: string};\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n // When we bind a gesture event on an element (in this case `longpress`), HammerJS\n // will add some inline styles by default, including `user-select: none`. This is\n // problematic on iOS and in Safari, because it will prevent users from typing in inputs.\n // Since `user-select: none` is not needed for the `longpress` event and can cause unexpected\n // behavior for text fields, we always clear the `user-select` to avoid such issues.\n elementStyle.webkitUserSelect = elementStyle.userSelect = elementStyle.msUserSelect = '';\n }\n\n // Hammer applies `-webkit-user-drag: none` on all elements by default,\n // which breaks the native drag&drop. If the consumer explicitly made\n // the element draggable, clear the `-webkit-user-drag`.\n if (element.draggable && elementStyle.webkitUserDrag === 'none') {\n elementStyle.webkitUserDrag = '';\n }\n }\n\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n\n // Clean up the event listeners set in the constructor\n this._manualListeners.forEach((listener, event) => {\n this._elementRef.nativeElement.removeEventListener(event, listener);\n });\n this._manualListeners.clear();\n\n this._destroyed.next();\n this._destroyed.complete();\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.message);\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay: number = this.showDelay): void {\n if (this.disabled || !this.message || (this._isTooltipVisible() &&\n !this._tooltipInstance!._showTimeoutId && !this._tooltipInstance!._hideTimeoutId)) {\n return;\n }\n\n const overlayRef = this._createOverlay();\n\n this._detach();\n this._portal = this._portal || new ComponentPortal(TooltipComponent, this._viewContainerRef);\n this._tooltipInstance = overlayRef.attach(this._portal).instance;\n this._tooltipInstance.afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n this._tooltipInstance!.show(delay);\n }\n\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay: number = this.hideDelay): void {\n if (this._tooltipInstance) {\n this._tooltipInstance.hide(delay);\n }\n }\n\n /** Shows/hides the tooltip */\n toggle(): void {\n this._isTooltipVisible() ? this.hide() : this.show();\n }\n\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible(): boolean {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n\n /** Handles the keydown events on the host element. */\n _handleKeydown(e: KeyboardEvent) {\n if (this._isTooltipVisible() && e.keyCode === ESCAPE && !hasModifierKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n this.hide(0);\n }\n }\n\n /** Handles the touchend events on the host element. */\n _handleTouchend() {\n this.hide(this._defaultOptions.touchendHideDelay);\n }\n\n /** Create the overlay config and position strategy */\n private _createOverlay(): OverlayRef {\n if (this._overlayRef) {\n return this._overlayRef;\n }\n\n const scrollableAncestors =\n this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay.position()\n .flexibleConnectedTo(this._elementRef)\n .withTransformOriginOn('.mat-tooltip')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withScrollableContainers(scrollableAncestors);\n\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n\n this._overlayRef = this._overlay.create({\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: TOOLTIP_PANEL_CLASS,\n scrollStrategy: this._scrollStrategy()\n });\n\n this._updatePosition();\n\n this._overlayRef.detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n\n return this._overlayRef;\n }\n\n /** Detaches the currently-attached tooltip. */\n private _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n\n this._tooltipInstance = null;\n }\n\n /** Updates the position of the current tooltip. */\n private _updatePosition() {\n const position =\n this._overlayRef!.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n\n position.withPositions([\n {...origin.main, ...overlay.main},\n {...origin.fallback, ...overlay.fallback}\n ]);\n }\n\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin(): {main: OriginConnectionPosition, fallback: OriginConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition: OriginConnectionPosition;\n\n if (position == 'above' || position == 'below') {\n originPosition = {originX: 'center', originY: position == 'above' ? 'top' : 'bottom'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n originPosition = {originX: 'start', originY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n originPosition = {originX: 'end', originY: 'center'};\n } else {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(originPosition.originX, originPosition.originY);\n\n return {\n main: originPosition,\n fallback: {originX: x, originY: y}\n };\n }\n\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition(): {main: OverlayConnectionPosition, fallback: OverlayConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition: OverlayConnectionPosition;\n\n if (position == 'above') {\n overlayPosition = {overlayX: 'center', overlayY: 'bottom'};\n } else if (position == 'below') {\n overlayPosition = {overlayX: 'center', overlayY: 'top'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n overlayPosition = {overlayX: 'end', overlayY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n overlayPosition = {overlayX: 'start', overlayY: 'center'};\n } else {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);\n\n return {\n main: overlayPosition,\n fallback: {overlayX: x, overlayY: y}\n };\n }\n\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n private _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(\n take(1),\n takeUntil(this._destroyed)\n ).subscribe(() => {\n if (this._tooltipInstance) {\n this._overlayRef!.updatePosition();\n }\n });\n }\n }\n\n /** Updates the tooltip class */\n private _setTooltipClass(tooltipClass: string|string[]|Set<string>|{[key: string]: any}) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n\n /** Inverts an overlay position. */\n private _invertPosition(x: HorizontalConnectionPos, y: VerticalConnectionPos) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n } else if (y === 'bottom') {\n y = 'top';\n }\n } else {\n if (x === 'end') {\n x = 'start';\n } else if (x === 'start') {\n x = 'end';\n }\n }\n\n return {x, y};\n }\n}\n\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tooltip-component',\n templateUrl: 'tooltip.html',\n styleUrls: ['tooltip.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [matTooltipAnimations.tooltipState],\n host: {\n // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n // won't be rendered if the animations are disabled or there is no web animations polyfill.\n '[style.zoom]': '_visibility === \"visible\" ? 1 : null',\n '(body:click)': 'this._handleBodyInteraction()',\n 'aria-hidden': 'true',\n }\n})\nexport class TooltipComponent implements OnDestroy {\n /** Message to display in the tooltip */\n message: string;\n\n /** Classes to be added to the tooltip. Supports the same syntax as `ngClass`. */\n tooltipClass: string|string[]|Set<string>|{[key: string]: any};\n\n /** The timeout ID of any current timer set to show the tooltip */\n _showTimeoutId: number | null;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n _hideTimeoutId: number | null;\n\n /** Property watched by the animation framework to show or hide the tooltip */\n _visibility: TooltipVisibility = 'initial';\n\n /** Whether interactions on the page should close the tooltip */\n private _closeOnInteraction: boolean = false;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n private readonly _onHide: Subject<any> = new Subject();\n\n /** Stream that emits whether the user has a handset-sized display. */\n _isHandset: Observable<BreakpointState> = this._breakpointObserver.observe(Breakpoints.Handset);\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _breakpointObserver: BreakpointObserver) {}\n\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay: number): void {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\n this._hideTimeoutId = null;\n }\n\n // Body interactions should cancel the tooltip if there is a delay in showing.\n this._closeOnInteraction = true;\n this._showTimeoutId = setTimeout(() => {\n this._visibility = 'visible';\n this._showTimeoutId = null;\n\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this._markForCheck();\n }, delay);\n }\n\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay: number): void {\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId);\n this._showTimeoutId = null;\n }\n\n this._hideTimeoutId = setTimeout(() => {\n this._visibility = 'hidden';\n this._hideTimeoutId = null;\n\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this._markForCheck();\n }, delay);\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this._onHide.asObservable();\n }\n\n /** Whether the tooltip is being displayed. */\n isVisible(): boolean {\n return this._visibility === 'visible';\n }\n\n ngOnDestroy() {\n this._onHide.complete();\n }\n\n _animationStart() {\n this._closeOnInteraction = false;\n }\n\n _animationDone(event: AnimationEvent): void {\n const toState = event.toState as TooltipVisibility;\n\n if (toState === 'hidden' && !this.isVisible()) {\n this._onHide.next();\n }\n\n if (toState === 'visible' || toState === 'hidden') {\n this._closeOnInteraction = true;\n }\n }\n\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction(): void {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck(): void {\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 */\nimport {\n animate,\n AnimationTriggerMetadata,\n keyframes,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nexport const matTooltipAnimations: {\n readonly tooltipState: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n state('initial, void, hidden', style({opacity: 0, transform: 'scale(0)'})),\n state('visible', style({transform: 'scale(1)'})),\n transition('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({opacity: 0, transform: 'scale(0)', offset: 0}),\n style({opacity: 0.5, transform: 'scale(0.99)', offset: 0.5}),\n style({opacity: 1, transform: 'scale(1)', offset: 1})\n ]))),\n transition('* => hidden', animate('100ms cubic-bezier(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 {OverlayModule} from '@angular/cdk/overlay';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatOptionModule} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelect, MatSelectTrigger} from './select';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n ],\n exports: [MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class MatSelectModule {}\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 {ActiveDescendantKeyManager, LiveAnnouncer} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n A,\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {CdkConnectedOverlay, Overlay, ScrollStrategy} from '@angular/cdk/overlay';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n CanDisable,\n CanDisableCtor,\n CanDisableRipple,\n CanDisableRippleCtor,\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n HasTabIndex,\n HasTabIndexCtor,\n MAT_OPTION_PARENT_COMPONENT,\n MatOptgroup,\n MatOption,\n MatOptionSelectionChange,\n mixinDisabled,\n mixinDisableRipple,\n mixinErrorState,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {MatFormField, MatFormFieldControl} from '@angular/material/form-field';\nimport {defer, merge, Observable, Subject} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs/operators';\nimport {matSelectAnimations} from './select-animations';\nimport {\n getMatSelectDynamicMultipleError,\n getMatSelectNonArrayValueError,\n getMatSelectNonFunctionValueError,\n} from './select-errors';\n\n\nlet nextUniqueId = 0;\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n\n/** The max height of the select's overlay panel */\nexport const SELECT_PANEL_MAX_HEIGHT = 256;\n\n/** The panel's padding on the x-axis */\nexport const SELECT_PANEL_PADDING_X = 16;\n\n/** The panel's x axis padding if it is indented (e.g. there is an option group). */\nexport const SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n\n/** The height of the select items in `em` units. */\nexport const SELECT_ITEM_HEIGHT_EM = 3;\n\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n */\nexport const SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\n\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nexport const SELECT_PANEL_VIEWPORT_PADDING = 8;\n\n/** Injection token that determines the scroll handling while a select is open. */\nexport const MAT_SELECT_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-select-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/** Change event object that is emitted when the select value has changed. */\nexport class MatSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n public source: MatSelect,\n /** Current value of the select that emitted the event. */\n public value: any) { }\n}\n\n// Boilerplate for applying mixins to MatSelect.\n/** @docs-private */\nclass MatSelectBase {\n constructor(public _elementRef: ElementRef,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl) {}\n}\nconst _MatSelectMixinBase:\n CanDisableCtor &\n HasTabIndexCtor &\n CanDisableRippleCtor &\n CanUpdateErrorStateCtor &\n typeof MatSelectBase =\n mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));\n\n\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\n@Directive({\n selector: 'mat-select-trigger'\n})\nexport class MatSelectTrigger {}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-select',\n exportAs: 'matSelect',\n templateUrl: 'select.html',\n styleUrls: ['select.css'],\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-label]': '_getAriaLabel()',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-owns]': 'panelOpen ? _optionIds : null',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n '[class.mat-select-empty]': 'empty',\n 'class': 'mat-select',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n animations: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ],\n providers: [\n {provide: MatFormFieldControl, useExisting: MatSelect},\n {provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect}\n ],\n})\nexport class MatSelect extends _MatSelectMixinBase implements AfterContentInit, OnChanges,\n OnDestroy, OnInit, DoCheck, ControlValueAccessor, CanDisable, HasTabIndex,\n MatFormFieldControl<any>, CanUpdateErrorState, CanDisableRipple {\n private _scrollStrategyFactory: () => ScrollStrategy;\n\n /** Whether or not the overlay panel is open. */\n private _panelOpen = false;\n\n /** Whether filling out the select is required in the form. */\n private _required: boolean = false;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private _scrollTop = 0;\n\n /** The placeholder displayed in the trigger of the select. */\n private _placeholder: string;\n\n /** Whether the component is in multiple selection mode. */\n private _multiple: boolean = false;\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n /** Unique id for this input. */\n private _uid = `mat-select-${nextUniqueId++}`;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy = new Subject<void>();\n\n /** The last measured value for the trigger's client bounding rect. */\n _triggerRect: ClientRect;\n\n /** The aria-describedby attribute on the select for improved a11y. */\n _ariaDescribedby: string;\n\n /** The cached font-size of the trigger element. */\n _triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n _selectionModel: SelectionModel<MatOption>;\n\n /** Manages keyboard events for options in the panel. */\n _keyManager: ActiveDescendantKeyManager<MatOption>;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n\n /** The IDs of child options to be passed to the aria-owns attribute. */\n _optionIds: string = '';\n\n /** The value of the select panel's transform-origin property. */\n _transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n _panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n _scrollStrategy: ScrollStrategy;\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n _offsetY = 0;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n _positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n\n /** Whether the component is disabling centering of the active option over the trigger. */\n private _disableOptionCentering: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n /**\n * @deprecated Setter to be removed as this property is intended to be readonly.\n * @breaking-change 8.0.0\n */\n set focused(value: boolean) {\n this._focused = value;\n }\n private _focused = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mat-select';\n\n /** Trigger that opens the select. */\n @ViewChild('trigger', {static: false}) trigger: ElementRef;\n\n /** Panel containing the select options. */\n @ViewChild('panel', {static: false}) panel: ElementRef;\n\n /** Overlay pane containing the options. */\n @ViewChild(CdkConnectedOverlay, {static: false}) overlayDir: CdkConnectedOverlay;\n\n /** All of the defined select options. */\n @ContentChildren(MatOption, { descendants: true }) options: QueryList<MatOption>;\n\n /** All of the defined groups of options. */\n @ContentChildren(MatOptgroup) optionGroups: QueryList<MatOptgroup>;\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string|string[]|Set<string>|{[key: string]: any};\n\n /** User-supplied override of the trigger element. */\n @ContentChild(MatSelectTrigger, {static: false}) customTrigger: MatSelectTrigger;\n\n /** Placeholder to be shown if no value has been selected. */\n @Input()\n get placeholder(): string { return this._placeholder; }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n /** Whether the component is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n /** Whether the user should be allowed to select multiple options. */\n @Input()\n get multiple(): boolean { return this._multiple; }\n set multiple(value: boolean) {\n if (this._selectionModel) {\n throw getMatSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n /** Whether to center the active option over the trigger. */\n @Input()\n get disableOptionCentering(): boolean { return this._disableOptionCentering; }\n set disableOptionCentering(value: boolean) {\n this._disableOptionCentering = coerceBooleanProperty(value);\n }\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() { return this._compareWith; }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n\n /** Value of the select control. */\n @Input()\n get value(): any { return this._value; }\n set value(newValue: any) {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n }\n private _value: any;\n\n /** Aria label of the select. If not specified, the placeholder will be used as label. */\n @Input('aria-label') ariaLabel: string = '';\n\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n @Input() typeaheadDebounceInterval: number;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: MatOption, b: MatOption, options: MatOption[]) => number;\n\n /** Unique id of the element. */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<MatOptionSelectionChange> = defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() => merge(...options.map(option => option.onSelectionChange)))\n );\n }\n\n return this._ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n }) as Observable<MatOptionSelectionChange>;\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly _openedStream: Observable<void> =\n this.openedChange.pipe(filter(o => o), map(() => {}));\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly _closedStream: Observable<void> =\n this.openedChange.pipe(filter(o => !o), map(() => {}));\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange: EventEmitter<MatSelectChange> =\n new EventEmitter<MatSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private _viewportRuler: ViewportRuler,\n private _changeDetectorRef: ChangeDetectorRef,\n private _ngZone: NgZone,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n elementRef: ElementRef,\n @Optional() private _dir: Directionality,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() private _parentFormField: MatFormField,\n @Self() @Optional() public ngControl: NgControl,\n @Attribute('tabindex') tabIndex: string,\n @Inject(MAT_SELECT_SCROLL_STRATEGY) scrollStrategyFactory: any,\n /**\n * @deprecated _liveAnnouncer to be turned into a required parameter.\n * @breaking-change 8.0.0\n */\n private _liveAnnouncer?: LiveAnnouncer) {\n super(elementRef, _defaultErrorStateMatcher, _parentForm,\n _parentFormGroup, ngControl);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n this._scrollStrategyFactory = scrollStrategyFactory;\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = parseInt(tabIndex) || 0;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatOption>(this.multiple);\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this._scrollTop = 0;\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n });\n\n this._viewportRuler.change()\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n if (this._panelOpen) {\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n this._initKeyManager();\n\n this._selectionModel.onChange.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n }\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n }\n\n /** Toggles the overlay panel open or closed. */\n toggle(): void {\n this.panelOpen ? this.close() : this.open();\n }\n\n /** Opens the overlay panel. */\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\n return;\n }\n\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement).fontSize || '0');\n\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._calculateOverlayPosition();\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n if (this._triggerFontSize && this.overlayDir.overlayRef &&\n this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this._triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.options) {\n this._setSelectionByValue(value);\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /** Whether or not the overlay panel is open. */\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n /** The currently selected option. */\n get selected(): MatOption | MatOption[] {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n\n /** The value displayed in the trigger. */\n get triggerValue(): string {\n if (this.empty) {\n return '';\n }\n\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n\n return this._selectionModel.selected[0].viewValue;\n }\n\n /** Whether the element is in RTL mode. */\n _isRtl(): boolean {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n\n /** Handles all keydown events on the select. */\n _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n\n /** Handles keyboard events while the select is closed. */\n private _handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if ((isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.multiple) {\n const previouslySelectedOption = this.selected;\n\n if (keyCode === HOME || keyCode === END) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n } else {\n manager.onKeydown(event);\n }\n\n const selectedOption = this.selected;\n\n // Since the value has changed, we need to announce it ourselves.\n // @breaking-change 8.0.0 remove null check for _liveAnnouncer.\n if (this._liveAnnouncer && selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce((selectedOption as MatOption).viewValue, 10000);\n }\n }\n }\n\n /** Handles keyboard events when the selected is open. */\n private _handleOpenKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const manager = this._keyManager;\n\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n } else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n } else if ((keyCode === ENTER || keyCode === SPACE) && manager.activeItem &&\n !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n\n manager.onKeydown(event);\n\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n _onAttached(): void {\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n });\n }\n\n /** Returns the theme to be used on the panel. */\n _getPanelTheme(): string {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n\n /** Whether the select has a value. */\n get empty(): boolean {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n\n private _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n this.stateChanges.next();\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getMatSelectNonArrayValueError();\n }\n\n this._selectionModel.clear();\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this._sortValues();\n } else {\n this._selectionModel.clear();\n const correspondingOption = this._selectValue(value);\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.setActiveItem(correspondingOption);\n }\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: any): MatOption | undefined {\n const correspondingOption = this.options.find((option: MatOption) => {\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n } catch (error) {\n if (isDevMode()) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n private _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options)\n .withTypeAhead(this.typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withAllowedModifierKeys(['shiftKey']);\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n });\n\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n /** Drops current option subscriptions and IDs and resets from scratch. */\n private _resetOptions(): void {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n\n this._setOptionIds();\n }\n\n /** Invoked when an option is clicked. */\n private _onSelect(option: MatOption, isUserInput: boolean): void {\n const wasSelected = this._selectionModel.isSelected(option);\n\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n this._propagateChanges(option.value);\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) :\n this._selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n\n if (this.multiple) {\n this._sortValues();\n\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n\n this.stateChanges.next();\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this._selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n\n if (this.multiple) {\n valueToEmit = (this.selected as MatOption[]).map(option => option.value);\n } else {\n valueToEmit = this.selected ? (this.selected as MatOption).value : fallbackValue;\n }\n\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(new MatSelectChange(this, valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n\n /** Records option IDs to pass to the aria-owns property. */\n private _setOptionIds() {\n this._optionIds = this.options.map(option => option.id).join(' ');\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n\n /** Scrolls the active option into view. */\n private _scrollActiveOptionIntoView(): void {\n const activeOptionIndex = this._keyManager.activeItemIndex || 0;\n const labelCount = _countGroupLabelsBeforeOption(activeOptionIndex, this.options,\n this.optionGroups);\n\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition(\n activeOptionIndex + labelCount,\n this._getItemHeight(),\n this.panel.nativeElement.scrollTop,\n SELECT_PANEL_MAX_HEIGHT\n );\n }\n\n /** Focuses the select element. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Gets the index of the provided option in the option list. */\n private _getOptionIndex(option: MatOption): number | undefined {\n return this.options.reduce((result: number | undefined, current: MatOption, index: number) => {\n return result === undefined ? (option === current ? index : undefined) : result;\n }, undefined);\n }\n\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n private _calculateOverlayPosition(): void {\n const itemHeight = this._getItemHeight();\n const items = this._getItemCount();\n const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const scrollContainerHeight = items * itemHeight;\n\n // The farthest the panel can be scrolled before it hits the bottom\n const maxScroll = scrollContainerHeight - panelHeight;\n\n // If no value is selected we open the popup to the first item.\n let selectedOptionOffset =\n this.empty ? 0 : this._getOptionIndex(this._selectionModel.selected[0])!;\n\n selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options,\n this.optionGroups);\n\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n const scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n\n this._checkOverlayWithinViewport(maxScroll);\n }\n\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n */\n _calculateOverlayScroll(selectedIndex: number, scrollBuffer: number,\n maxScroll: number): number {\n const itemHeight = this._getItemHeight();\n const optionOffsetFromScrollTop = itemHeight * selectedIndex;\n const halfOptionHeight = itemHeight / 2;\n\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n }\n\n /** Returns the aria-label of the select component. */\n _getAriaLabel(): string | null {\n // If an ariaLabelledby value has been set by the consumer, the select should not overwrite the\n // `aria-labelledby` value by setting the ariaLabel to the placeholder.\n return this.ariaLabelledby ? null : this.ariaLabel || this.placeholder;\n }\n\n /** Returns the aria-labelledby of the select component. */\n _getAriaLabelledby(): string | null {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n\n // Note: we use `_getAriaLabel` here, because we want to check whether there's a\n // computed label. `this.ariaLabel` is only the user-specified label.\n if (!this._parentFormField || !this._parentFormField._hasFloatingLabel() ||\n this._getAriaLabel()) {\n return null;\n }\n\n return this._parentFormField._labelId || null;\n }\n\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant(): string | null {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n\n return null;\n }\n\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n private _calculateOverlayOffsetX(): void {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this._viewportRuler.getViewportSize();\n const isRtl = this._isRtl();\n const paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n let offsetX: number;\n\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n } else {\n let selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n */\n private _calculateOverlayOffsetY(selectedIndex: number, scrollBuffer: number,\n maxScroll: number): number {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n let optionOffsetFromPanelTop: number;\n\n // Disable offset if requested by user by returning 0 as value to offset\n if (this._disableOptionCentering) {\n return 0;\n }\n\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n } else if (this._scrollTop === maxScroll) {\n const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n let partialItemHeight =\n itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n } else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n\n // The final offset is the option's offset from the top, adjusted for the height difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n }\n\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n */\n private _checkOverlayWithinViewport(maxScroll: number): void {\n const itemHeight = this._getItemHeight();\n const viewportSize = this._viewportRuler.getViewportSize();\n\n const topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n const bottomSpaceAvailable =\n viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n\n const panelHeightTop = Math.abs(this._offsetY);\n const totalPanelHeight =\n Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n } else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n } else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n }\n\n /** Adjusts the overlay panel up to fit in the viewport. */\n private _adjustPanelUp(panelHeightBottom: number, bottomSpaceAvailable: number) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = `50% bottom 0px`;\n }\n }\n\n /** Adjusts the overlay panel down to fit in the viewport. */\n private _adjustPanelDown(panelHeightTop: number, topSpaceAvailable: number,\n maxScroll: number) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = `50% top 0px`;\n return;\n }\n }\n\n /** Sets the transform origin point based on the selected option. */\n private _getOriginBasedOnOption(): string {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return `50% ${originY}px 0px`;\n }\n\n /** Calculates the amount of items in the select. This includes options and group labels. */\n private _getItemCount(): number {\n return this.options.length + this.optionGroups.length;\n }\n\n /** Calculates the height of the select's options. */\n private _getItemHeight(): number {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return this._panelOpen || !this.empty;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nexport function getMatSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nexport function getMatSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getMatSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\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 animate,\n animateChild,\n AnimationTriggerMetadata,\n query,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\nexport const matSelectAnimations: {\n readonly transformPanelWrap: AnimationTriggerMetadata;\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInContent: AnimationTriggerMetadata;\n} = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: trigger('transformPanelWrap', [\n transition('* => void', query('@transformPanel', [animateChild()],\n {optional: true}))\n ]),\n\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })),\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)', // 32px = 2 * 16px padding\n transform: 'scaleY(1)'\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)', // 64px = 48px padding on the left + 16px padding on the right\n transform: 'scaleY(1)'\n })),\n transition('void => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void', animate('100ms 25ms linear', style({opacity: 0})))\n ]),\n\n /**\n * This animation fades in the background color and text content of the\n * select's options. It is time delayed to occur 100ms after the overlay\n * panel has transformed in.\n * @deprecated Not used anymore. To be removed.\n * @breaking-change 8.0.0\n */\n fadeInContent: trigger('fadeInContent', [\n state('showing', style({opacity: 1})),\n transition('void => showing', [\n style({opacity: 0}),\n animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const transformPanel = matSelectAnimations.transformPanel;\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const fadeInContent = matSelectAnimations.fadeInContent;\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatMenuContent} from './menu-content';\nimport {_MatMenu} from './menu';\nimport {MatMenuItem} from './menu-item';\nimport {\n MatMenuTrigger,\n MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './menu-trigger';\n\n/**\n * Used by both the current `MatMenuModule` and the MDC `MatMenuModule`\n * to declare the menu-related directives.\n */\n@NgModule({\n exports: [MatMenuTrigger, MatMenuContent, MatCommonModule],\n declarations: [MatMenuTrigger, MatMenuContent],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\n// tslint:disable-next-line:class-name\nexport class _MatMenuDirectivesModule {}\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule,\n ],\n exports: [_MatMenu, MatMenuItem, _MatMenuDirectivesModule],\n declarations: [_MatMenu, MatMenuItem],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class MatMenuModule {}\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 {FocusMonitor, FocusOrigin, isFakeMousedownFromScreenReader} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n HorizontalConnectionPos,\n Overlay,\n OverlayConfig,\n OverlayRef,\n VerticalConnectionPos,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport {normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {asapScheduler, merge, of as observableOf, Subscription} from 'rxjs';\nimport {delay, filter, take, takeUntil} from 'rxjs/operators';\nimport {MatMenu} from './menu';\nimport {throwMatMenuMissingError} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const MAT_MENU_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-menu-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default top padding of the menu panel. */\nexport const MENU_PANEL_TOP_PADDING = 8;\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});\n\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n\n/**\n * This directive is intended to be used in conjunction with an mat-menu tag. It is\n * responsible for toggling the display of the provided menu instance.\n */\n@Directive({\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)',\n },\n exportAs: 'matMenuTrigger'\n})\nexport class MatMenuTrigger implements AfterContentInit, OnDestroy {\n private _portal: TemplatePortal;\n private _overlayRef: OverlayRef | null = null;\n private _menuOpen: boolean = false;\n private _closingActionsSubscription = Subscription.EMPTY;\n private _hoverSubscription = Subscription.EMPTY;\n private _menuCloseSubscription = Subscription.EMPTY;\n private _scrollStrategy: () => ScrollStrategy;\n\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n private _handleTouchStart = () => this._openedBy = 'touch';\n\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n _openedBy: 'mouse' | 'touch' | null = null;\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @Input('mat-menu-trigger-for')\n get _deprecatedMatMenuTriggerFor(): MatMenuPanel { return this.menu; }\n set _deprecatedMatMenuTriggerFor(v: MatMenuPanel) {\n this.menu = v;\n }\n\n /** References the menu instance that the trigger is associated with. */\n @Input('matMenuTriggerFor')\n get menu() { return this._menu; }\n set menu(menu: MatMenuPanel) {\n if (menu === this._menu) {\n return;\n }\n\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n\n if (menu) {\n this._menuCloseSubscription = menu.close.asObservable().subscribe(reason => {\n this._destroyMenu();\n\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMenu) {\n this._parentMenu.closed.emit(reason);\n }\n });\n }\n }\n private _menu: MatMenuPanel;\n\n /** Data to be passed along to any lazily-rendered content. */\n @Input('matMenuTriggerData') menuData: any;\n\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n @Input('matMenuTriggerRestoreFocus') restoreFocus: boolean = true;\n\n /** Event emitted when the associated menu is opened. */\n @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuOpen: EventEmitter<void> = this.menuOpened;\n\n /** Event emitted when the associated menu is closed. */\n @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuClose: EventEmitter<void> = this.menuClosed;\n\n constructor(private _overlay: Overlay,\n private _element: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_MENU_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _parentMenu: MatMenu,\n @Optional() @Self() private _menuItemInstance: MatMenuItem,\n @Optional() private _dir: Directionality,\n // TODO(crisbeto): make the _focusMonitor required when doing breaking changes.\n // @breaking-change 8.0.0\n private _focusMonitor?: FocusMonitor) {\n\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions);\n\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n\n this._scrollStrategy = scrollStrategy;\n }\n\n ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions);\n\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n\n /** Whether the menu is open. */\n get menuOpen(): boolean {\n return this._menuOpen;\n }\n\n /** The text direction of the containing app. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu(): boolean {\n return !!(this._menuItemInstance && this._parentMenu);\n }\n\n /** Toggles the menu between the open and closed states. */\n toggleMenu(): void {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n\n /** Opens the menu. */\n openMenu(): void {\n if (this._menuOpen) {\n return;\n }\n\n this._checkMenu();\n\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n\n this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n overlayConfig.hasBackdrop = this.menu.hasBackdrop == null ? !this.triggersSubmenu() :\n this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n\n if (this.menu instanceof MatMenu) {\n this.menu._startAnimation();\n }\n }\n\n /** Closes the menu. */\n closeMenu(): void {\n this.menu.close.emit();\n }\n\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n\n /** Closes the menu and does the necessary cleanup. */\n private _destroyMenu() {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n\n const menu = this.menu;\n\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n\n if (menu instanceof MatMenu) {\n menu._resetAnimation();\n\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(\n filter(event => event.toState === 'void'),\n take(1),\n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached)\n )\n .subscribe({\n next: () => menu.lazyContent!.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false)\n });\n } else {\n this._setIsMenuOpen(false);\n }\n } else {\n this._setIsMenuOpen(false);\n\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n\n this._restoreFocus();\n }\n\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n private _initMenu(): void {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this._setIsMenuOpen(true);\n this.menu.focusFirstItem(this._openedBy || 'program');\n }\n\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n private _setMenuElevation(): void {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n\n this.menu.setElevation(depth);\n }\n }\n\n /** Restores focus to the element that was focused before the menu was open. */\n private _restoreFocus() {\n // We should reset focus if the user is navigating using a keyboard or\n // if we have a top-level trigger which might cause focus to be lost\n // when clicking on the backdrop.\n if (this.restoreFocus) {\n if (!this._openedBy) {\n // Note that the focus style will show up both for `program` and\n // `keyboard` so we don't have to specify which one it is.\n this.focus();\n } else if (!this.triggersSubmenu()) {\n this.focus(this._openedBy);\n }\n }\n\n this._openedBy = null;\n }\n\n // set state rather than toggle to support triggers sharing a menu\n private _setIsMenuOpen(isOpen: boolean): void {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n }\n\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n private _checkMenu() {\n if (!this.menu) {\n throwMatMenuMissingError();\n }\n }\n\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy);\n this._overlayRef = this._overlay.create(config);\n\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n\n return this._overlayRef;\n }\n\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\n });\n }\n\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX: MenuPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n this.menu.setPositionClasses!(posX, posY);\n });\n }\n }\n\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n let [originX, originFallbackX]: HorizontalConnectionPos[] =\n this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n let [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n } else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n\n positionStrategy.withPositions([\n {originX, originY, overlayX, overlayY, offsetY},\n {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY},\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }\n ]);\n }\n\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n private _menuClosingActions() {\n const backdrop = this._overlayRef!.backdropClick();\n const detachments = this._overlayRef!.detachments();\n const parentClose = this._parentMenu ? this._parentMenu.closed : observableOf();\n const hover = this._parentMenu ? this._parentMenu._hovered().pipe(\n filter(active => active !== this._menuItemInstance),\n filter(() => this._menuOpen)\n ) : observableOf();\n\n return merge(backdrop, parentClose, hover, detachments);\n }\n\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event: MouseEvent): void {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : null;\n\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n\n /** Handles key presses on the trigger. */\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (this.triggersSubmenu() && (\n (keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this.openMenu();\n }\n }\n\n /** Handles click events on the trigger. */\n _handleClick(event: MouseEvent): void {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n } else {\n this.toggleMenu();\n }\n }\n\n /** Handles the cases where the user hovers over the trigger. */\n private _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu()) {\n return;\n }\n\n this._hoverSubscription = this._parentMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(\n filter(active => active === this._menuItemInstance && !active.disabled),\n delay(0, asapScheduler)\n )\n .subscribe(() => {\n this._openedBy = 'mouse';\n\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof MatMenu && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMenu._hovered()))\n .subscribe(() => this.openMenu());\n } else {\n this.openMenu();\n }\n });\n }\n\n /** Gets the portal that should be attached to the overlay. */\n private _getPortal(): TemplatePortal {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n\n return this._portal;\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 {FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Output,\n TemplateRef,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {startWith, switchMap, take} from 'rxjs/operators';\nimport {matMenuAnimations} from './menu-animations';\nimport {MatMenuContent} from './menu-content';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel';\nimport {AnimationEvent} from '@angular/animations';\n\n/** Default `mat-menu` options that can be overridden. */\nexport interface MatMenuDefaultOptions {\n /** The x-axis position of the menu. */\n xPosition: MenuPositionX;\n\n /** The y-axis position of the menu. */\n yPosition: MenuPositionY;\n\n /** Whether the menu should overlap the menu trigger. */\n overlapTrigger: boolean;\n\n /** Class to be applied to the menu's backdrop. */\n backdropClass: string;\n\n /** Whether the menu has a backdrop. */\n hasBackdrop?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-menu`. */\nexport const MAT_MENU_DEFAULT_OPTIONS =\n new InjectionToken<MatMenuDefaultOptions>('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n });\n\n/** @docs-private */\nexport function MAT_MENU_DEFAULT_OPTIONS_FACTORY(): MatMenuDefaultOptions {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 4;\n\n/** Base class with all of the `MatMenu` functionality. */\n// tslint:disable-next-line:class-name\nexport class _MatMenuBase implements AfterContentInit, MatMenuPanel<MatMenuItem>, OnInit,\n OnDestroy {\n private _keyManager: FocusKeyManager<MatMenuItem>;\n private _xPosition: MenuPositionX = this._defaultOptions.xPosition;\n private _yPosition: MenuPositionY = this._defaultOptions.yPosition;\n private _previousElevation: string;\n\n /** All items inside the menu. Includes items nested inside another menu. */\n @ContentChildren(MatMenuItem, {descendants: true}) _allItems: QueryList<MatMenuItem>;\n\n /** Only the direct descendant menu items. */\n private _directDescendantItems = new QueryList<MatMenuItem>();\n\n /** Subscription to tab events on the menu panel */\n private _tabSubscription = Subscription.EMPTY;\n\n /** Config object to be passed into the menu's ngClass */\n _classList: {[key: string]: boolean} = {};\n\n /** Current state of the panel animation. */\n _panelAnimationState: 'void' | 'enter' = 'void';\n\n /** Emits whenever an animation on the menu completes. */\n _animationDone = new Subject<AnimationEvent>();\n\n /** Whether the menu is animating. */\n _isAnimating: boolean;\n\n /** Parent menu of the current menu panel. */\n parentMenu: MatMenuPanel | undefined;\n\n /** Layout direction of the menu. */\n direction: Direction;\n\n /** Class to be added to the backdrop element. */\n @Input() backdropClass: string = this._defaultOptions.backdropClass;\n\n /** Position of the menu in the X axis. */\n @Input()\n get xPosition(): MenuPositionX { return this._xPosition; }\n set xPosition(value: MenuPositionX) {\n if (value !== 'before' && value !== 'after') {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n\n /** Position of the menu in the Y axis. */\n @Input()\n get yPosition(): MenuPositionY { return this._yPosition; }\n set yPosition(value: MenuPositionY) {\n if (value !== 'above' && value !== 'below') {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n\n /** @docs-private */\n @ViewChild(TemplateRef, {static: false}) templateRef: TemplateRef<any>;\n\n /**\n * List of the items inside of a menu.\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ContentChildren(MatMenuItem) items: QueryList<MatMenuItem>;\n\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n @ContentChild(MatMenuContent, {static: false}) lazyContent: MatMenuContent;\n\n /** Whether the menu should overlap its trigger. */\n @Input()\n get overlapTrigger(): boolean { return this._overlapTrigger; }\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n private _overlapTrigger: boolean = this._defaultOptions.overlapTrigger;\n\n /** Whether the menu has a backdrop. */\n @Input()\n get hasBackdrop(): boolean | undefined { return this._hasBackdrop; }\n set hasBackdrop(value: boolean | undefined) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n private _hasBackdrop: boolean | undefined = this._defaultOptions.hasBackdrop;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n @Input('class')\n set panelClass(classes: string) {\n const previousPanelClass = this._previousPanelClass;\n\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className: string) => {\n this._classList[className] = false;\n });\n }\n\n this._previousPanelClass = classes;\n\n if (classes && classes.length) {\n classes.split(' ').forEach((className: string) => {\n this._classList[className] = true;\n });\n\n this._elementRef.nativeElement.className = '';\n }\n }\n private _previousPanelClass: string;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n @Input()\n get classList(): string { return this.panelClass; }\n set classList(classes: string) { this.panelClass = classes; }\n\n /** Event emitted when the menu is closed. */\n @Output() readonly closed: EventEmitter<void | 'click' | 'keydown' | 'tab'> =\n new EventEmitter<void | 'click' | 'keydown' | 'tab'>();\n\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n @Output() close = this.closed;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n @Inject(MAT_MENU_DEFAULT_OPTIONS) private _defaultOptions: MatMenuDefaultOptions) { }\n\n ngOnInit() {\n this.setPositionClasses();\n }\n\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n }\n\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered(): Observable<MatMenuItem> {\n // Coerce the `changes` property because Angular types it as `Observable<any>`\n const itemChanges = this._directDescendantItems.changes as Observable<QueryList<MatMenuItem>>;\n return itemChanges.pipe(\n startWith(this._directDescendantItems),\n switchMap(items => merge(...items.map((item: MatMenuItem) => item._hovered)))\n );\n }\n\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item: MatMenuItem) {}\n\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item: MatMenuItem) {}\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n case HOME:\n case END:\n if (!hasModifierKey(event)) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n\n manager.onKeydown(event);\n }\n }\n\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin: FocusOrigin = 'program'): void {\n const manager = this._keyManager;\n\n // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n if (this.lazyContent) {\n this._ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => manager.setFocusOrigin(origin).setFirstItemActive());\n } else {\n manager.setFocusOrigin(origin).setFirstItemActive();\n }\n\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && this._directDescendantItems.length) {\n let element = this._directDescendantItems.first._getHostElement().parentElement;\n\n // Because the `mat-menu` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menu panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n while (element) {\n if (element.getAttribute('role') === 'menu') {\n element.focus();\n break;\n } else {\n element = element.parentElement;\n }\n }\n }\n }\n\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth: number): void {\n // The elevation starts at the base and increases by one for each level.\n const newElevation = `mat-elevation-z${MAT_MENU_BASE_ELEVATION + depth}`;\n const customElevation = Object.keys(this._classList).find(c => c.startsWith('mat-elevation-z'));\n\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX: MenuPositionX = this.xPosition, posY: MenuPositionY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n }\n\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event: AnimationEvent) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._isAnimating = true;\n\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n private _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items: QueryList<MatMenuItem>) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n\n/** @docs-private We show the \"_MatMenu\" class as \"MatMenu\" in the docs. */\nexport class MatMenu extends _MatMenuBase {}\n\n// Note on the weird inheritance setup: we need three classes, because the MDC-based menu has to\n// extend `MatMenu`, however keeping a reference to it will cause the inlined template and styles\n// to be retained as well. The MDC menu also has to provide itself as a `MatMenu` in order for\n// queries and DI to work correctly, while still not referencing the actual menu class.\n// Class responsibility is split up as follows:\n// * _MatMenuBase - provides all the functionality without any of the Angular metadata.\n// * MatMenu - keeps the same name symbol name as the current menu and\n// is used as a provider for DI and query purposes.\n// * _MatMenu - the actual menu component implementation with the Angular metadata that should\n// be tree shaken away for MDC.\n\n/** @docs-public MatMenu */\n@Component({\n moduleId: module.id,\n selector: 'mat-menu',\n templateUrl: 'menu.html',\n styleUrls: ['menu.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matMenu',\n animations: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ],\n providers: [\n {provide: MAT_MENU_PANEL, useExisting: MatMenu},\n {provide: MatMenu, useExisting: _MatMenu}\n ]\n})\n// tslint:disable-next-line:class-name\nexport class _MatMenu extends MatMenu {\n\n constructor(elementRef: ElementRef<HTMLElement>, ngZone: NgZone,\n @Inject(MAT_MENU_DEFAULT_OPTIONS) defaultOptions: MatMenuDefaultOptions) {\n super(elementRef, ngZone, defaultOptions);\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 {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n Inject,\n Optional,\n Input,\n HostListener,\n} from '@angular/core';\nimport {\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n mixinDisabled,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel';\n\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nclass MatMenuItemBase {}\nconst _MatMenuItemMixinBase: CanDisableRippleCtor & CanDisableCtor & typeof MatMenuItemBase =\n mixinDisableRipple(mixinDisabled(MatMenuItemBase));\n\n/**\n * This directive is intended to be used inside an mat-menu tag.\n * It exists mostly to set the role attribute.\n */\n@Component({\n moduleId: module.id,\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled', 'disableRipple'],\n host: {\n '[attr.role]': 'role',\n 'class': 'mat-menu-item',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: 'menu-item.html',\n})\nexport class MatMenuItem extends _MatMenuItemMixinBase\n implements FocusableOption, CanDisable, CanDisableRipple, OnDestroy {\n\n /** ARIA role for the menu item. */\n @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n private _document: Document;\n\n /** Stream that emits when the menu item is hovered. */\n readonly _hovered: Subject<MatMenuItem> = new Subject<MatMenuItem>();\n\n /** Whether the menu item is highlighted. */\n _highlighted: boolean = false;\n\n /** Whether the menu item acts as a trigger for a sub-menu. */\n _triggersSubmenu: boolean = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) document?: any,\n private _focusMonitor?: FocusMonitor,\n @Inject(MAT_MENU_PANEL) @Optional() public _parentMenu?: MatMenuPanel<MatMenuItem>) {\n\n // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n super();\n\n if (_focusMonitor) {\n // Start monitoring the element so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n _focusMonitor.monitor(this._elementRef, false);\n }\n\n if (_parentMenu && _parentMenu.addItem) {\n _parentMenu.addItem(this);\n }\n\n this._document = document;\n }\n\n /** Focuses the menu item. */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n } else {\n this._getHostElement().focus(options);\n }\n }\n\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n\n this._hovered.complete();\n }\n\n /** Used to set the `tabindex`. */\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Returns the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** Prevents the default element actions if it is disabled. */\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('click', ['$event'])\n _checkDisabled(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** Emits to the hover stream. */\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('mouseenter')\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n const element: HTMLElement = this._elementRef.nativeElement;\n const textNodeType = this._document ? this._document.TEXT_NODE : 3;\n let output = '';\n\n if (element.childNodes) {\n const length = element.childNodes.length;\n\n // Go through all the top-level text nodes and extract their text.\n // We skip anything that's not a text node to prevent the text from\n // being thrown off by something like an icon.\n for (let i = 0; i < length; i++) {\n if (element.childNodes[i].nodeType === textNodeType) {\n output += element.childNodes[i].textContent;\n }\n }\n }\n\n return output.trim();\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 {EventEmitter, TemplateRef, InjectionToken} from '@angular/core';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {Direction} from '@angular/cdk/bidi';\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {MatMenuContent} from './menu-content';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nexport const MAT_MENU_PANEL = new InjectionToken<MatMenuPanel>('MAT_MENU_PANEL');\n\n/**\n * Interface for a custom menu panel that can be used with `matMenuTriggerFor`.\n * @docs-private\n */\nexport interface MatMenuPanel<T = any> {\n xPosition: MenuPositionX;\n yPosition: MenuPositionY;\n overlapTrigger: boolean;\n templateRef: TemplateRef<any>;\n close: EventEmitter<void | 'click' | 'keydown' | 'tab'>;\n parentMenu?: MatMenuPanel | undefined;\n direction?: Direction;\n focusFirstItem: (origin?: FocusOrigin) => void;\n resetActiveItem: () => void;\n setPositionClasses?: (x: MenuPositionX, y: MenuPositionY) => void;\n setElevation?(depth: number): void;\n lazyContent?: MatMenuContent;\n backdropClass?: string;\n hasBackdrop?: boolean;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n addItem?: (item: T) => void;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n removeItem?: (item: T) => void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nexport function throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n <mat-menu #menu=\"matMenu\"></mat-menu>\n <button [matMenuTriggerFor]=\"menu\"></button>`);\n}\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: <mat-menu xPosition=\"before\" #menu=\"matMenu\"></mat-menu>`);\n}\n\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: <mat-menu yPosition=\"above\" #menu=\"matMenu\"></mat-menu>`);\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 {DomPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ApplicationRef,\n ChangeDetectorRef,\n ComponentFactoryResolver,\n Directive,\n Inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\n@Directive({\n selector: 'ng-template[matMenuContent]'\n})\nexport class MatMenuContent implements OnDestroy {\n private _portal: TemplatePortal<any>;\n private _outlet: DomPortalOutlet;\n\n /** Emits when the menu content has been attached. */\n _attached = new Subject<void>();\n\n constructor(\n private _template: TemplateRef<any>,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _injector: Injector,\n private _viewContainerRef: ViewContainerRef,\n @Inject(DOCUMENT) private _document: any,\n private _changeDetectorRef?: ChangeDetectorRef) {}\n\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context: any = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n\n this.detach();\n\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'),\n this._componentFactoryResolver, this._appRef, this._injector);\n }\n\n const element: HTMLElement = this._template.elementRef.nativeElement;\n\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode!.insertBefore(this._outlet.outletElement, element);\n\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n // @breaking-change 9.0.0 Make change detector ref required\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\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{\n trigger,\n state,\n style,\n animate,\n transition,\n query,\n group,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nexport const matMenuAnimations: {\n readonly transformMenu: AnimationTriggerMetadata;\n readonly fadeInItems: AnimationTriggerMetadata;\n} = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)'\n })),\n transition('void => enter', group([\n query('.mat-menu-content, .mat-mdc-menu-content', animate('100ms linear', style({\n opacity: 1\n }))),\n animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({transform: 'scale(1)'})),\n ])),\n transition('* => void', animate('100ms 25ms linear', style({opacity: 0})))\n ]),\n\n\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({opacity: 1})),\n transition('void => *', [\n style({opacity: 0}),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const fadeInItems = matMenuAnimations.fadeInItems;\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const transformMenu = matMenuAnimations.transformMenu;\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n MatCommonModule,\n MatLineModule,\n MatPseudoCheckboxModule,\n MatRippleModule,\n} from '@angular/material/core';\nimport {\n MatList,\n MatNavList,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListItem,\n MatListSubheaderCssMatStyler,\n} from './list';\nimport {MatListOption, MatSelectionList} from './selection-list';\nimport {MatDividerModule} from '@angular/material/divider';\n\n\n@NgModule({\n imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n exports: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatLineModule,\n MatCommonModule,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatPseudoCheckboxModule,\n MatSelectionList,\n MatListOption,\n MatDividerModule\n ],\n declarations: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatSelectionList,\n MatListOption\n ],\n})\nexport class MatListModule {}\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 {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n SPACE,\n ENTER,\n HOME,\n END,\n UP_ARROW,\n DOWN_ARROW,\n A,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport {\n CanDisableRipple, CanDisableRippleCtor,\n MatLine,\n setLines,\n mixinDisableRipple,\n ThemePalette,\n} from '@angular/material/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {MatListAvatarCssMatStyler, MatListIconCssMatStyler} from './list';\n\n\n/** @docs-private */\nclass MatSelectionListBase {}\nconst _MatSelectionListMixinBase: CanDisableRippleCtor & typeof MatSelectionListBase =\n mixinDisableRipple(MatSelectionListBase);\n\n/** @docs-private */\nclass MatListOptionBase {}\nconst _MatListOptionMixinBase: CanDisableRippleCtor & typeof MatListOptionBase =\n mixinDisableRipple(MatListOptionBase);\n\n/** @docs-private */\nexport const MAT_SELECTION_LIST_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSelectionList),\n multi: true\n};\n\n/** Change event that is being fired whenever the selected state of an option changes. */\nexport class MatSelectionListChange {\n constructor(\n /** Reference to the selection list that emitted the event. */\n public source: MatSelectionList,\n /** Reference to the option that has been changed. */\n public option: MatListOption) {}\n}\n\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is selected.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-list-option',\n exportAs: 'matListOption',\n inputs: ['disableRipple'],\n host: {\n 'role': 'option',\n 'class': 'mat-list-item mat-list-option',\n '(focus)': '_handleFocus()',\n '(blur)': '_handleBlur()',\n '(click)': '_handleClick()',\n 'tabindex': '-1',\n '[class.mat-list-item-disabled]': 'disabled',\n '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n // Manually set the \"primary\" or \"warn\" class if the color has been explicitly\n // set to \"primary\" or \"warn\". The pseudo checkbox picks up these classes for\n // its theme.\n '[class.mat-primary]': 'color === \"primary\"',\n // Even though accent is the default, we need to set this class anyway, because the list might\n // be placed inside a parent that has one of the other colors with a higher specificity.\n '[class.mat-accent]': 'color !== \"primary\" && color !== \"warn\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled',\n },\n templateUrl: 'list-option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListOption extends _MatListOptionMixinBase\n implements AfterContentInit, OnDestroy, OnInit, FocusableOption, CanDisableRipple {\n\n private _selected = false;\n private _disabled = false;\n private _hasFocus = false;\n\n @ContentChild(MatListAvatarCssMatStyler, {static: false}) _avatar: MatListAvatarCssMatStyler;\n @ContentChild(MatListIconCssMatStyler, {static: false}) _icon: MatListIconCssMatStyler;\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n /** DOM element containing the item's text. */\n @ViewChild('text', {static: false}) _text: ElementRef;\n\n /** Whether the label should appear before or after the checkbox. Defaults to 'after' */\n @Input() checkboxPosition: 'before' | 'after' = 'after';\n\n /** Theme color of the list option. This sets the color of the checkbox. */\n @Input()\n get color(): ThemePalette { return this._color || this.selectionList.color; }\n set color(newValue: ThemePalette) { this._color = newValue; }\n private _color: ThemePalette;\n\n /** Value of the option */\n @Input()\n get value(): any { return this._value; }\n set value(newValue: any) {\n if (this.selected && newValue !== this.value) {\n this.selected = false;\n }\n\n this._value = newValue;\n }\n private _value: any;\n\n /** Whether the option is disabled. */\n @Input()\n get disabled() { return this._disabled || (this.selectionList && this.selectionList.disabled); }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._changeDetector.markForCheck();\n }\n }\n\n /** Whether the option is selected. */\n @Input()\n get selected(): boolean { return this.selectionList.selectedOptions.isSelected(this); }\n set selected(value: boolean) {\n const isSelected = coerceBooleanProperty(value);\n\n if (isSelected !== this._selected) {\n this._setSelected(isSelected);\n this.selectionList._reportValueChange();\n }\n }\n\n constructor(private _element: ElementRef<HTMLElement>,\n private _changeDetector: ChangeDetectorRef,\n /** @docs-private */\n @Inject(forwardRef(() => MatSelectionList)) public selectionList: MatSelectionList) {\n super();\n }\n\n ngOnInit() {\n const list = this.selectionList;\n\n if (list._value && list._value.some(value => list.compareWith(value, this._value))) {\n this._setSelected(true);\n }\n\n const wasSelected = this._selected;\n\n // List options that are selected at initialization can't be reported properly to the form\n // control. This is because it takes some time until the selection-list knows about all\n // available options. Also it can happen that the ControlValueAccessor has an initial value\n // that should be used instead. Deferring the value change report to the next tick ensures\n // that the form control value is not being overwritten.\n Promise.resolve().then(() => {\n if (this._selected || wasSelected) {\n this.selected = true;\n this._changeDetector.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n\n ngOnDestroy(): void {\n if (this.selected) {\n // We have to delay this until the next tick in order\n // to avoid changed after checked errors.\n Promise.resolve().then(() => {\n this.selected = false;\n });\n }\n\n const hadFocus = this._hasFocus;\n const newActiveItem = this.selectionList._removeOptionFromList(this);\n\n // Only move focus if this option was focused at the time it was destroyed.\n if (hadFocus && newActiveItem) {\n newActiveItem.focus();\n }\n }\n\n /** Toggles the selection state of the option. */\n toggle(): void {\n this.selected = !this.selected;\n }\n\n /** Allows for programmatic focusing of the option. */\n focus(): void {\n this._element.nativeElement.focus();\n }\n\n /**\n * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n * @docs-private\n */\n getLabel() {\n return this._text ? (this._text.nativeElement.textContent || '') : '';\n }\n\n /** Whether this list item should show a ripple effect when clicked. */\n _isRippleDisabled() {\n return this.disabled || this.disableRipple || this.selectionList.disableRipple;\n }\n\n _handleClick() {\n if (!this.disabled) {\n this.toggle();\n\n // Emit a change event if the selected state of the option changed through user interaction.\n this.selectionList._emitChangeEvent(this);\n }\n }\n\n _handleFocus() {\n this.selectionList._setFocusedOption(this);\n this._hasFocus = true;\n }\n\n _handleBlur() {\n this.selectionList._onTouched();\n this._hasFocus = false;\n }\n\n /** Retrieves the DOM element of the component host. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n /** Sets the selected state of the option. Returns whether the value has changed. */\n _setSelected(selected: boolean): boolean {\n if (selected === this._selected) {\n return false;\n }\n\n this._selected = selected;\n\n if (selected) {\n this.selectionList.selectedOptions.select(this);\n } else {\n this.selectionList.selectedOptions.deselect(this);\n }\n\n this._changeDetector.markForCheck();\n return true;\n }\n\n /**\n * Notifies Angular that the option needs to be checked in the next change detection run. Mainly\n * used to trigger an update of the list option if the disabled state of the selection list\n * changed.\n */\n _markForCheck() {\n this._changeDetector.markForCheck();\n }\n}\n\n\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-selection-list',\n exportAs: 'matSelectionList',\n inputs: ['disableRipple'],\n host: {\n 'role': 'listbox',\n '[tabIndex]': 'tabIndex',\n 'class': 'mat-selection-list mat-list-base',\n '(blur)': '_onTouched()',\n '(keydown)': '_keydown($event)',\n 'aria-multiselectable': 'true',\n '[attr.aria-disabled]': 'disabled.toString()',\n },\n template: '<ng-content></ng-content>',\n styleUrls: ['list.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [MAT_SELECTION_LIST_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatSelectionList extends _MatSelectionListMixinBase implements CanDisableRipple,\n AfterContentInit, ControlValueAccessor, OnDestroy, OnChanges {\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatListOption>;\n\n /** The option components contained within this selection-list. */\n @ContentChildren(MatListOption, {descendants: true}) options: QueryList<MatListOption>;\n\n /** Emits a change event whenever the selected state of an option changes. */\n @Output() readonly selectionChange: EventEmitter<MatSelectionListChange> =\n new EventEmitter<MatSelectionListChange>();\n\n /** Tabindex of the selection list. */\n @Input() tabIndex: number = 0;\n\n /** Theme color of the selection list. This sets the checkbox color for all list options. */\n @Input() color: ThemePalette = 'accent';\n\n /**\n * Function used for comparing an option against the selected value when determining which\n * options should appear as selected. The first argument is the value of an options. The second\n * one is a value from the selected value. A boolean must be returned.\n */\n @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\n\n /** Whether the selection list is disabled. */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection\n // strategy. Therefore the options will not check for any changes if the `MatSelectionList`\n // changed its state. Since we know that a change to `disabled` property of the list affects\n // the state of the options, we manually mark each option for check.\n this._markOptionsForCheck();\n }\n private _disabled: boolean = false;\n\n /** The currently selected options. */\n selectedOptions: SelectionModel<MatListOption> = new SelectionModel<MatListOption>(true);\n\n /** View to model callback that should be called whenever the selected options change. */\n private _onChange: (value: any) => void = (_: any) => {};\n\n /** Keeps track of the currently-selected value. */\n _value: string[]|null;\n\n /** Emits when the list has been destroyed. */\n private _destroyed = new Subject<void>();\n\n /** View to model callback that should be called if the list or its options lost focus. */\n _onTouched: () => void = () => {};\n\n /** Whether the list has been destroyed. */\n private _isDestroyed: boolean;\n\n constructor(private _element: ElementRef<HTMLElement>, @Attribute('tabindex') tabIndex: string) {\n super();\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngAfterContentInit(): void {\n this._keyManager = new FocusKeyManager<MatListOption>(this.options)\n .withWrap()\n .withTypeAhead()\n // Allow disabled items to be focusable. For accessibility reasons, there must be a way for\n // screenreader users, that allows reading the different options of the list.\n .skipPredicate(() => false)\n .withAllowedModifierKeys(['shiftKey']);\n\n if (this._value) {\n this._setOptionsFromValues(this._value);\n }\n\n // Sync external changes to the model back to the options.\n this.selectedOptions.onChange.pipe(takeUntil(this._destroyed)).subscribe(event => {\n if (event.added) {\n for (let item of event.added) {\n item.selected = true;\n }\n }\n\n if (event.removed) {\n for (let item of event.removed) {\n item.selected = false;\n }\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const disableRippleChanges = changes['disableRipple'];\n const colorChanges = changes['color'];\n\n if ((disableRippleChanges && !disableRippleChanges.firstChange) ||\n (colorChanges && !colorChanges.firstChange)) {\n this._markOptionsForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._isDestroyed = true;\n }\n\n /** Focuses the selection list. */\n focus(options?: FocusOptions) {\n this._element.nativeElement.focus(options);\n }\n\n /** Selects all of the options. */\n selectAll() {\n this._setAllOptionsSelected(true);\n }\n\n /** Deselects all of the options. */\n deselectAll() {\n this._setAllOptionsSelected(false);\n }\n\n /** Sets the focused option of the selection-list. */\n _setFocusedOption(option: MatListOption) {\n this._keyManager.updateActiveItem(option);\n }\n\n /**\n * Removes an option from the selection list and updates the active item.\n * @returns Currently-active item.\n */\n _removeOptionFromList(option: MatListOption): MatListOption | null {\n const optionIndex = this._getOptionIndex(option);\n\n if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {\n // Check whether the option is the last item\n if (optionIndex > 0) {\n this._keyManager.updateActiveItem(optionIndex - 1);\n } else if (optionIndex === 0 && this.options.length > 1) {\n this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));\n }\n }\n\n return this._keyManager.activeItem;\n }\n\n /** Passes relevant key presses to our key manager. */\n _keydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n const previousFocusIndex = manager.activeItemIndex;\n const hasModifier = hasModifierKey(event);\n\n switch (keyCode) {\n case SPACE:\n case ENTER:\n if (!hasModifier) {\n this._toggleFocusedOption();\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n }\n break;\n case HOME:\n case END:\n if (!hasModifier) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n break;\n case A:\n if (hasModifierKey(event, 'ctrlKey')) {\n this.options.find(option => !option.selected) ? this.selectAll() : this.deselectAll();\n event.preventDefault();\n }\n break;\n default:\n manager.onKeydown(event);\n }\n\n if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && event.shiftKey &&\n manager.activeItemIndex !== previousFocusIndex) {\n this._toggleFocusedOption();\n }\n }\n\n /** Reports a value change to the ControlValueAccessor */\n _reportValueChange() {\n // Stop reporting value changes after the list has been destroyed. This avoids\n // cases where the list might wrongly reset its value once it is removed, but\n // the form control is still live.\n if (this.options && !this._isDestroyed) {\n const value = this._getSelectedOptionValues();\n this._onChange(value);\n this._value = value;\n }\n }\n\n /** Emits a change event if the selected state of an option changed. */\n _emitChangeEvent(option: MatListOption) {\n this.selectionChange.emit(new MatSelectionListChange(this, option));\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(values: string[]): void {\n this._value = values;\n\n if (this.options) {\n this._setOptionsFromValues(values || []);\n }\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /** Sets the selected options based on the specified values. */\n private _setOptionsFromValues(values: string[]) {\n this.options.forEach(option => option._setSelected(false));\n\n values.forEach(value => {\n const correspondingOption = this.options.find(option => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n return option.selected ? false : this.compareWith(option.value, value);\n });\n\n if (correspondingOption) {\n correspondingOption._setSelected(true);\n }\n });\n }\n\n /** Returns the values of the selected options. */\n private _getSelectedOptionValues(): string[] {\n return this.options.filter(option => option.selected).map(option => option.value);\n }\n\n /** Toggles the state of the currently focused option if enabled. */\n private _toggleFocusedOption(): void {\n let focusedIndex = this._keyManager.activeItemIndex;\n\n if (focusedIndex != null && this._isValidIndex(focusedIndex)) {\n let focusedOption: MatListOption = this.options.toArray()[focusedIndex];\n\n if (focusedOption && !focusedOption.disabled) {\n focusedOption.toggle();\n\n // Emit a change event because the focused option changed its state through user\n // interaction.\n this._emitChangeEvent(focusedOption);\n }\n }\n }\n\n /**\n * Sets the selected state on all of the options\n * and emits an event if anything changed.\n */\n private _setAllOptionsSelected(isSelected: boolean) {\n // Keep track of whether anything changed, because we only want to\n // emit the changed event when something actually changed.\n let hasChanged = false;\n\n this.options.forEach(option => {\n if (option._setSelected(isSelected)) {\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n this._reportValueChange();\n }\n }\n\n /**\n * Utility to ensure all indexes are valid.\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of options.\n */\n private _isValidIndex(index: number): boolean {\n return index >= 0 && index < this.options.length;\n }\n\n /** Returns the index of the specified list option. */\n private _getOptionIndex(option: MatListOption): number {\n return this.options.toArray().indexOf(option);\n }\n\n /** Marks all the options to be checked in the next change detection run. */\n private _markOptionsForCheck() {\n if (this.options) {\n this.options.forEach(option => option._markForCheck());\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 {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n Optional,\n QueryList,\n ViewEncapsulation,\n OnChanges,\n OnDestroy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n CanDisableRipple,\n CanDisableRippleCtor,\n MatLine,\n setLines,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n// Boilerplate for applying mixins to MatList.\n/** @docs-private */\nclass MatListBase {}\nconst _MatListMixinBase: CanDisableRippleCtor & typeof MatListBase =\n mixinDisableRipple(MatListBase);\n\n// Boilerplate for applying mixins to MatListItem.\n/** @docs-private */\nclass MatListItemBase {}\nconst _MatListItemMixinBase: CanDisableRippleCtor & typeof MatListItemBase =\n mixinDisableRipple(MatListItemBase);\n\n@Component({\n moduleId: module.id,\n selector: 'mat-nav-list',\n exportAs: 'matNavList',\n host: {\n 'role': 'navigation',\n 'class': 'mat-nav-list mat-list-base'\n },\n templateUrl: 'list.html',\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatNavList extends _MatListMixinBase implements CanDisableRipple, OnChanges,\n OnDestroy {\n /** Emits when the state of the list changes. */\n _stateChanges = new Subject<void>();\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-list, mat-action-list',\n exportAs: 'matList',\n templateUrl: 'list.html',\n host: {\n 'class': 'mat-list mat-list-base'\n },\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatList extends _MatListMixinBase implements CanDisableRipple, OnChanges, OnDestroy {\n /** Emits when the state of the list changes. */\n _stateChanges = new Subject<void>();\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n super();\n\n if (this._getListType() === 'action-list') {\n _elementRef.nativeElement.classList.add('mat-action-list');\n }\n }\n\n _getListType(): 'list' | 'action-list' | null {\n const nodeName = this._elementRef.nativeElement.nodeName.toLowerCase();\n\n if (nodeName === 'mat-list') {\n return 'list';\n }\n\n if (nodeName === 'mat-action-list') {\n return 'action-list';\n }\n\n return null;\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-list-avatar], [matListAvatar]',\n host: {'class': 'mat-list-avatar'}\n})\nexport class MatListAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-list-icon], [matListIcon]',\n host: {'class': 'mat-list-icon'}\n})\nexport class MatListIconCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-subheader], [matSubheader]',\n host: {'class': 'mat-subheader'}\n})\nexport class MatListSubheaderCssMatStyler {}\n\n/** An item within a Material Design list. */\n@Component({\n moduleId: module.id,\n selector: 'mat-list-item, a[mat-list-item], button[mat-list-item]',\n exportAs: 'matListItem',\n host: {\n 'class': 'mat-list-item',\n // @breaking-change 8.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.\n '[class.mat-list-item-avatar]': '_avatar || _icon',\n '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n },\n inputs: ['disableRipple'],\n templateUrl: 'list-item.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListItem extends _MatListItemMixinBase implements AfterContentInit,\n CanDisableRipple, OnDestroy {\n private _isInteractiveList: boolean = false;\n private _list?: MatNavList | MatList;\n private _destroyed = new Subject<void>();\n\n @ContentChildren(MatLine, {descendants: true}) _lines: QueryList<MatLine>;\n @ContentChild(MatListAvatarCssMatStyler, {static: false}) _avatar: MatListAvatarCssMatStyler;\n @ContentChild(MatListIconCssMatStyler, {static: false}) _icon: MatListIconCssMatStyler;\n\n constructor(private _element: ElementRef<HTMLElement>,\n _changeDetectorRef: ChangeDetectorRef,\n @Optional() navList?: MatNavList,\n @Optional() list?: MatList) {\n super();\n this._isInteractiveList = !!(navList || (list && list._getListType() === 'action-list'));\n this._list = navList || list;\n\n // If no type attributed is specified for <button>, set it to \"button\".\n // If a type attribute is already specified, do nothing.\n const element = this._getHostElement();\n\n if (element.nodeName.toLowerCase() === 'button' && !element.hasAttribute('type')) {\n element.setAttribute('type', 'button');\n }\n\n if (this._list) {\n // React to changes in the state of the parent list since\n // some of the item's properties depend on it (e.g. `disableRipple`).\n this._list._stateChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n _changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Whether this list item should show a ripple effect when clicked. */\n _isRippleDisabled() {\n return !this._isInteractiveList || this.disableRipple ||\n !!(this._list && this._list.disableRipple);\n }\n\n /** Retrieves the DOM element of the component host. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\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 {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\nimport {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 OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanColor, CanColorCtor, mixinColor} from '@angular/material/core';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n\n// Boilerplate for applying mixins to MatIcon.\n/** @docs-private */\nclass MatIconBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatIconMixinBase: CanColorCtor & typeof MatIconBase = mixinColor(MatIconBase);\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 moduleId: module.id,\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 '[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 _MatIconMixinBase implements OnChanges, OnInit, AfterViewChecked,\n CanColor, OnDestroy {\n\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() 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 this._fontSet = this._cleanupFontValue(value);\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 this._fontIcon = this._cleanupFontValue(value);\n }\n private _fontIcon: string;\n\n private _previousFontSetClass: string;\n private _previousFontIconClass: string;\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 constructor(\n elementRef: ElementRef<HTMLElement>, private _iconRegistry: MatIconRegistry,\n @Attribute('aria-hidden') ariaHidden: string,\n /**\n * @deprecated `location` parameter to be made required.\n * @breaking-change 8.0.0\n */\n @Optional() @Inject(MAT_ICON_LOCATION) private _location?: MatIconLocation,\n // @breaking-change 9.0.0 _errorHandler parameter to be made required\n @Optional() 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}\"`);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Only update the inline SVG icon if the inputs changed, to avoid unnecessary DOM operations.\n const svgIconChanges = changes['svgIcon'];\n\n if (svgIconChanges) {\n if (this.svgIcon) {\n const [namespace, iconName] = this._splitIconName(this.svgIcon);\n\n 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 // @breaking-change 9.0.0 _errorHandler parameter to be made required.\n if (this._errorHandler) {\n this._errorHandler.handleError(new Error(errorMessage));\n } else {\n console.error(errorMessage);\n }\n });\n } else if (svgIconChanges.previousValue) {\n this._clearSvgElement();\n }\n }\n\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\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 if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && this._location && 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 if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n private _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 if (this._location) {\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n }\n\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","/**\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\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n url: SafeResourceUrl | null;\n svgElement: SVGElement | null;\n\n constructor(url: SafeResourceUrl, options?: IconOptions);\n constructor(svgElement: SVGElement, options?: IconOptions);\n constructor(data: SafeResourceUrl | SVGElement, public options?: IconOptions) {\n // Note that we can't use `instanceof SVGElement` here,\n // because it'll break during server-side rendering.\n if (!!(data as any).nodeName) {\n this.svgElement = data as SVGElement;\n } else {\n this.url = data as SafeResourceUrl;\n }\n }\n}\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 /**\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 // @breaking-change 9.0.0 _errorHandler parameter to be made required\n @Optional() 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, options));\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 sanitizedLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this._createSvgElementForSingleIcon(sanitizedLiteral, options);\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(svgElement, 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, 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 sanitizedLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this._svgElementFromString(sanitizedLiteral);\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(svgElement, 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)).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 // Return (copy of) cached icon if possible.\n const key = iconKey(namespace, name);\n const config = this._svgIconConfigs.get(key);\n\n if (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._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.svgElement) {\n // We already have the SVG element for this icon, return a copy.\n return observableOf(cloneSvg(config.svgElement));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(\n tap(svg => config.svgElement = svg),\n map(svg => cloneSvg(svg)),\n );\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<SVGElement | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgElement)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse): Observable<SVGElement | null> => {\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 // @breaking-change 9.0.0 _errorHandler parameter to be made required\n if (this._errorHandler) {\n this._errorHandler.handleError(new Error(errorMessage));\n } else {\n console.error(errorMessage);\n }\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 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 if (config.svgElement) {\n const foundIcon = this._extractSvgIconFromSet(config.svgElement, 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._fetchUrl(config.url)\n .pipe(map(svgText => this._createSvgElementForSingleIcon(svgText, config.options)));\n }\n\n /**\n * Loads the content of the icon set URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n private _loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n // If the SVG for this icon set has already been parsed, do nothing.\n if (config.svgElement) {\n return observableOf(config.svgElement);\n }\n\n return this._fetchUrl(config.url).pipe(map(svgText => {\n // It is possible that the icon set was parsed and cached by an earlier request, so parsing\n // only needs to occur if the cache is yet unset.\n if (!config.svgElement) {\n config.svgElement = this._svgElementFromString(svgText);\n }\n\n return config.svgElement;\n }));\n }\n\n /**\n * Creates a DOM element from the given SVG string, and adds default attributes.\n */\n private _createSvgElementForSingleIcon(responseText: string, options?: IconOptions): SVGElement {\n const svg = this._svgElementFromString(responseText);\n this._setSvgAttributes(svg, options);\n return svg;\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 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 URL. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n private _fetchUrl(safeUrl: SafeResourceUrl | null): Observable<string> {\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\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 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 // TODO(jelbourn): for some reason, the `finalize` operator \"loses\" the generic type on the\n // Observable. Figure out why and fix it.\n const req = this._httpClient.get(url, {responseType: 'text'}).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\n/** @docs-private */\nexport function ICON_REGISTRY_PROVIDER_FACTORY(\n parentRegistry: MatIconRegistry,\n httpClient: HttpClient,\n sanitizer: DomSanitizer,\n document?: any,\n errorHandler?: ErrorHandler) {\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 [new Optional(), 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","/**\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 {MatLineModule, MatCommonModule} from '@angular/material/core';\nimport {\n MatGridTile, MatGridTileText, MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler, MatGridAvatarCssMatStyler\n} from './grid-tile';\nimport {MatGridList} from './grid-list';\n\n\n@NgModule({\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n})\nexport class MatGridListModule {}\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 AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n Optional,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {TileStyler, FitTileStyler, RatioTileStyler, FixedTileStyler} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\n\nconst MAT_FIT_MODE = 'fit';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-list',\n exportAs: 'matGridList',\n templateUrl: 'grid-list.html',\n styleUrls: ['grid-list.css'],\n host: {\n 'class': 'mat-grid-list',\n },\n providers: [{\n provide: MAT_GRID_LIST,\n useExisting: MatGridList\n }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridList implements MatGridListBase, OnInit, AfterContentChecked {\n /** Number of columns being rendered. */\n private _cols: number;\n\n /** Used for determiningthe position of each tile in the grid. */\n private _tileCoordinator: TileCoordinator;\n\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n */\n private _rowHeight: string;\n\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n private _gutter: string = '1px';\n\n /** Sets position and size styles for a tile */\n private _tileStyler: TileStyler;\n\n /** Query list of tiles that are being rendered. */\n @ContentChildren(MatGridTile, {descendants: true}) _tiles: QueryList<MatGridTile>;\n\n constructor(private _element: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality) {}\n\n /** Amount of columns in the grid list. */\n @Input()\n get cols(): number { return this._cols; }\n set cols(value: number) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize(): string { return this._gutter; }\n set gutterSize(value: string) { this._gutter = `${value == null ? '' : value}`; }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n get rowHeight(): string | number { return this._rowHeight; }\n set rowHeight(value: string | number) {\n const newValue = `${value == null ? '' : value}`;\n\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n\n /** Throw a friendly error if cols property is missing */\n private _checkCols() {\n if (!this.cols) {\n throw Error(`mat-grid-list: must pass in number of columns. ` +\n `Example: <mat-grid-list cols=\"3\">`);\n }\n }\n\n /** Default to equal width:height if rowHeight property is missing */\n private _checkRowHeight(): void {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n private _setTileStyler(rowHeight: string): void {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n\n /** Computes and applies the size and position for all children grid tiles. */\n private _layoutTiles(): void {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n\n\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style: [string, string | null] | null): void {\n if (style) {\n (this._element.nativeElement.style as any)[style[0]] = style[1];\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 {MatGridList} from './grid-list';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nexport abstract class TileStyler {\n _gutterSize: string;\n _rows: number = 0;\n _rowspan: number = 0;\n _cols: number;\n _direction: string;\n\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string): void {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent: number, gutterFraction: number): string {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n\n\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize: string, offset: number): string {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n\n\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize: string, span: number): string {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n\n\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile: MatGridTile, rowIndex: number, colIndex: number): void {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile: MatGridTile, colIndex: number, percentWidth: number,\n gutterWidth: number) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan(): string {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight: string): string {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * @docs-private\n */\n abstract setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void;\n\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight(): [string, string] | null { return null; }\n\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * @param list Grid list that the styler was attached to.\n * @docs-private\n */\n abstract reset(list: MatGridList): void;\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example `<mat-grid-list cols=\"3\" rowHeight=\"100px\">`\n * @docs-private\n */\nexport class FixedTileStyler extends TileStyler {\n\n constructor(public fixedRowHeight: string) { super(); }\n\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n\n if (!cssCalcAllowedValue.test(this.fixedRowHeight)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['height', null]);\n\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example `<mat-grid-list cols=\"3\" rowHeight=\"3:1\">`\n * @docs-private\n */\nexport class RatioTileStyler extends TileStyler {\n\n /** Ratio width:height given by user to determine row height. */\n rowHeightRatio: number;\n baseTileHeight: string;\n\n constructor(value: string) {\n super();\n this._parseRatio(value);\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'paddingBottom', calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['paddingBottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n\n private _parseRatio(value: string): void {\n const ratioParts = value.split(':');\n\n if (ratioParts.length !== 2) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example `<mat-grid-list cols=\"3\" rowHeight=\"fit\">`\n *\n * @docs-private\n */\nexport class FitTileStyler extends TileStyler {\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n\n reset(list: MatGridList) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string {\n return `calc(${exp})`;\n}\n\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\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 {MatGridTile} from './grid-tile';\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nexport class TileCoordinator {\n /** Tracking array (see class description). */\n tracker: number[];\n\n /** Index at which the search for the next gap will start. */\n columnIndex: number = 0;\n\n /** The current row index. */\n rowIndex: number = 0;\n\n /** Gets the total number of rows occupied by tiles */\n get rowCount(): number { return this.rowIndex + 1; }\n\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n\n /** The computed (row, col) position of each tile (the output). */\n positions: TilePosition[];\n\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n */\n update(numColumns: number, tiles: MatGridTile[]) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n\n /** Calculates the row and col position of a tile. */\n private _trackTile(tile: MatGridTile): TilePosition {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n\n /** Finds the next available space large enough to fit the tile. */\n private _findMatchingGap(tileCols: number): number {\n if (tileCols > this.tracker.length) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`);\n }\n\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while ((gapEndIndex - gapStartIndex < tileCols) || (gapEndIndex == 0));\n\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n\n /** Move \"down\" to the next row. */\n private _nextRow(): void {\n this.columnIndex = 0;\n this.rowIndex++;\n\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n private _findGapEndIndex(gapStartIndex: number): number {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n\n /** Update the tile tracker to account for the given tile in the given space. */\n private _markTilePosition(start: number, tile: MatGridTile): void {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nexport class TilePosition {\n constructor(public row: number, public col: number) {}\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 Component,\n ViewEncapsulation,\n ElementRef,\n Input,\n Optional,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n Inject,\n} from '@angular/core';\nimport {MatLine, setLines} from '@angular/material/core';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n templateUrl: 'grid-tile.html',\n styleUrls: ['grid-list.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n @Optional() @Inject(MAT_GRID_LIST) public _gridList?: MatGridListBase) {}\n\n /** Amount of rows that the grid tile takes up. */\n @Input()\n get rowspan(): number { return this._rowspan; }\n set rowspan(value: number) { this._rowspan = Math.round(coerceNumberProperty(value)); }\n\n /** Amount of columns that the grid tile takes up. */\n @Input()\n get colspan(): number { return this._colspan; }\n set colspan(value: number) { this._colspan = Math.round(coerceNumberProperty(value)); }\n\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property: string, value: any): void {\n (this._element.nativeElement.style as any)[property] = value;\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n templateUrl: 'grid-tile-text.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridTileText implements AfterContentInit {\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n constructor(private _element: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: {'class': 'mat-grid-avatar'}\n})\nexport class MatGridAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-header',\n host: {'class': 'mat-grid-tile-header'}\n})\nexport class MatGridTileHeaderCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-footer',\n host: {'class': 'mat-grid-tile-footer'}\n})\nexport class MatGridTileFooterCssMatStyler {}\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 * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nexport const MAT_GRID_LIST = new InjectionToken<MatGridListBase>('MAT_GRID_LIST');\n\n/**\n * Base interface for a `MatGridList`.\n * @docs-private\n */\nexport interface MatGridListBase {\n cols: number;\n gutterSize: string;\n rowHeight: number | 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 {CdkAccordionModule} from '@angular/cdk/accordion';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatAccordion} from './accordion';\nimport {MatExpansionPanel, MatExpansionPanelActionRow} from './expansion-panel';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {\n MatExpansionPanelDescription,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from './expansion-panel-header';\n\n\n@NgModule({\n imports: [CommonModule, CdkAccordionModule, PortalModule],\n exports: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n declarations: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n})\nexport class MatExpansionModule {}\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 {Directive, Input, ContentChildren, QueryList, AfterContentInit} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkAccordion} from '@angular/cdk/accordion';\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {HOME, END, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n MAT_ACCORDION,\n MatAccordionBase,\n MatAccordionDisplayMode,\n MatAccordionTogglePosition\n} from './accordion-base';\nimport {MatExpansionPanelHeader} from './expansion-panel-header';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n inputs: ['multi'],\n providers: [{\n provide: MAT_ACCORDION,\n useExisting: MatAccordion\n }],\n host: {\n class: 'mat-accordion'\n }\n})\nexport class MatAccordion extends CdkAccordion implements MatAccordionBase, AfterContentInit {\n private _keyManager: FocusKeyManager<MatExpansionPanelHeader>;\n\n @ContentChildren(MatExpansionPanelHeader, {descendants: true})\n _headers: QueryList<MatExpansionPanelHeader>;\n\n /** Whether the expansion indicator should be hidden. */\n @Input()\n get hideToggle(): boolean { return this._hideToggle; }\n set hideToggle(show: boolean) { this._hideToggle = coerceBooleanProperty(show); }\n private _hideToggle: boolean = false;\n\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n @Input() displayMode: MatAccordionDisplayMode = 'default';\n\n /** The position of the expansion indicator. */\n @Input() togglePosition: MatAccordionTogglePosition = 'after';\n\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager(this._headers).withWrap();\n }\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event: KeyboardEvent) {\n const {keyCode} = event;\n const manager = this._keyManager;\n\n if (keyCode === HOME) {\n if (!hasModifierKey(event)) {\n manager.setFirstItemActive();\n event.preventDefault();\n }\n } else if (keyCode === END) {\n if (!hasModifierKey(event)) {\n manager.setLastItemActive();\n event.preventDefault();\n }\n } else {\n this._keyManager.onKeydown(event);\n }\n }\n\n _handleHeaderFocus(header: MatExpansionPanelHeader) {\n this._keyManager.updateActiveItem(header);\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 {FocusMonitor, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Host,\n Input,\n OnDestroy,\n ViewEncapsulation,\n Optional,\n Inject,\n} from '@angular/core';\nimport {merge, Subscription, EMPTY} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {matExpansionAnimations} from './expansion-animations';\nimport {\n MatExpansionPanel,\n MatExpansionPanelDefaultOptions,\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n} from './expansion-panel';\nimport {MatAccordionTogglePosition} from './accordion-base';\n\n\n/**\n * `<mat-expansion-panel-header>`\n *\n * This component corresponds to the header element of an `<mat-expansion-panel>`.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-expansion-panel-header',\n styleUrls: ['./expansion-panel-header.css'],\n templateUrl: './expansion-panel-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n matExpansionAnimations.indicatorRotate,\n matExpansionAnimations.expansionHeaderHeight\n ],\n host: {\n 'class': 'mat-expansion-panel-header',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'disabled ? -1 : 0',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n '[@.disabled]': '_animationsDisabled',\n '(@expansionHeight.start)': '_animationStarted()',\n '[@expansionHeight]': `{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }`,\n },\n})\nexport class MatExpansionPanelHeader implements OnDestroy, FocusableOption {\n private _parentChangeSubscription = Subscription.EMPTY;\n\n /** Whether Angular animations in the panel header should be disabled. */\n _animationsDisabled = true;\n\n constructor(\n @Host() public panel: MatExpansionPanel,\n private _element: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS) @Optional()\n defaultOptions?: MatExpansionPanelDefaultOptions) {\n const accordionHideToggleChange = panel.accordion ?\n panel.accordion._stateChanges.pipe(\n filter(changes => !!(changes['hideToggle'] || changes['togglePosition']))) :\n EMPTY;\n\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription =\n merge(\n panel.opened, panel.closed, accordionHideToggleChange,\n panel._inputChanges.pipe(filter(\n changes => {\n return !!(\n changes['hideToggle'] ||\n changes['disabled'] ||\n changes['togglePosition']);\n })))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => _focusMonitor.focusVia(_element, 'program'));\n\n _focusMonitor.monitor(_element).subscribe(origin => {\n if (origin && panel.accordion) {\n panel.accordion._handleHeaderFocus(this);\n }\n });\n\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n\n _animationStarted() {\n // Currently the `expansionHeight` animation has a `void => collapsed` transition which is\n // there to work around a bug in Angular (see #13088), however this introduces a different\n // issue. The new transition will cause the header to animate in on init (see #16067), if the\n // consumer has set a header height that is different from the default one. We work around it\n // by disabling animations on the header and re-enabling them after the first animation has run.\n // Note that Angular dispatches animation events even if animations are disabled. Ideally this\n // wouldn't be necessary if we remove the `void => collapsed` transition, but we have to wait\n // for https://github.com/angular/angular/issues/18847 to be resolved.\n this._animationsDisabled = false;\n }\n\n /** Height of the header while the panel is expanded. */\n @Input() expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n @Input() collapsedHeight: string;\n\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled() {\n return this.panel.disabled;\n }\n\n /** Toggles the expanded state of the panel. */\n _toggle(): void {\n this.panel.toggle();\n }\n\n /** Gets whether the panel is expanded. */\n _isExpanded(): boolean {\n return this.panel.expanded;\n }\n\n /** Gets the expanded state string of the panel. */\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n\n /** Gets the panel id. */\n _getPanelId(): string {\n return this.panel.id;\n }\n\n /** Gets the toggle position for the header. */\n _getTogglePosition(): MatAccordionTogglePosition {\n return this.panel.togglePosition;\n }\n\n /** Gets whether the expand indicator should be shown. */\n _showToggle(): boolean {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n\n return;\n }\n }\n\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\n\n/**\n * `<mat-panel-description>`\n *\n * This directive is to be used inside of the MatExpansionPanelHeader component.\n */\n@Directive({\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description'\n }\n})\nexport class MatExpansionPanelDescription {}\n\n/**\n * `<mat-panel-title>`\n *\n * This directive is to be used inside of the MatExpansionPanelHeader component.\n */\n@Directive({\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title'\n }\n})\nexport class MatExpansionPanelTitle {}\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 {CdkAccordionItem} from '@angular/cdk/accordion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n EventEmitter,\n ElementRef,\n Input,\n Inject,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n SkipSelf,\n ViewContainerRef,\n ViewEncapsulation,\n ViewChild,\n InjectionToken,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {Subject} from 'rxjs';\nimport {filter, startWith, take, distinctUntilChanged} from 'rxjs/operators';\nimport {matExpansionAnimations} from './expansion-animations';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {MAT_ACCORDION, MatAccordionBase, MatAccordionTogglePosition} from './accordion-base';\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\n\n/**\n * Object that can be used to override the default options\n * for all of the expansion panels in a module.\n */\nexport interface MatExpansionPanelDefaultOptions {\n /** Height of the header while the panel is expanded. */\n expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n collapsedHeight: string;\n\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Injection token that can be used to configure the defalt\n * options for the expansion panel component.\n */\nexport const MAT_EXPANSION_PANEL_DEFAULT_OPTIONS =\n new InjectionToken<MatExpansionPanelDefaultOptions>('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n\n/**\n * `<mat-expansion-panel>`\n *\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\n@Component({\n moduleId: module.id,\n styleUrls: ['./expansion-panel.css'],\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n templateUrl: './expansion-panel.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled', 'expanded'],\n outputs: ['opened', 'closed', 'expandedChange'],\n animations: [matExpansionAnimations.bodyExpansion],\n providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {provide: MAT_ACCORDION, useValue: undefined},\n ],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n }\n})\nexport class MatExpansionPanel extends CdkAccordionItem implements AfterContentInit, OnChanges,\n OnDestroy {\n private _document: Document;\n private _hideToggle = false;\n private _togglePosition: MatAccordionTogglePosition;\n\n /** Whether the toggle indicator should be hidden. */\n @Input()\n get hideToggle(): boolean {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value: boolean) {\n this._hideToggle = coerceBooleanProperty(value);\n }\n\n /** The position of the expansion indicator. */\n @Input()\n get togglePosition(): MatAccordionTogglePosition {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value: MatAccordionTogglePosition) {\n this._togglePosition = value;\n }\n\n /** An event emitted after the body's expansion animation happens. */\n @Output() afterExpand = new EventEmitter<void>();\n\n /** An event emitted after the body's collapse animation happens. */\n @Output() afterCollapse = new EventEmitter<void>();\n\n /** Stream that emits for changes in `@Input` properties. */\n readonly _inputChanges = new Subject<SimpleChanges>();\n\n /** Optionally defined accordion the expansion panel belongs to. */\n accordion: MatAccordionBase;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatExpansionPanelContent, {static: false}) _lazyContent: MatExpansionPanelContent;\n\n /** Element containing the panel's user-provided content. */\n @ViewChild('body', {static: false}) _body: ElementRef<HTMLElement>;\n\n /** Portal holding the user's content. */\n _portal: TemplatePortal;\n\n /** ID for the associated header element. Used for a11y labelling. */\n _headerId = `mat-expansion-panel-header-${uniqueId++}`;\n\n /** Stream of body animation done events. */\n _bodyAnimationDone = new Subject<AnimationEvent>();\n\n constructor(@Optional() @SkipSelf() @Inject(MAT_ACCORDION) accordion: MatAccordionBase,\n _changeDetectorRef: ChangeDetectorRef,\n _uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n private _viewContainerRef: ViewContainerRef,\n @Inject(DOCUMENT) _document: any,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode: string,\n @Inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS) @Optional()\n defaultOptions?: MatExpansionPanelDefaultOptions) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n this.accordion = accordion;\n this._document = _document;\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._bodyAnimationDone.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n if (event.fromState !== 'void') {\n if (event.toState === 'expanded') {\n this.afterExpand.emit();\n } else if (event.toState === 'collapsed') {\n this.afterCollapse.emit();\n }\n }\n });\n\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing(): boolean {\n if (this.accordion) {\n // We don't need to subscribe to the `stateChanges` of the parent accordion because each time\n // the [displayMode] input changes, the change detection will also cover the host bindings\n // of this expansion panel.\n return (this.expanded ? this.accordion.displayMode : this._getExpandedState()) === 'default';\n }\n return false;\n }\n\n /** Gets the expanded state string. */\n _getExpandedState(): MatExpansionPanelState {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n\n ngAfterContentInit() {\n if (this._lazyContent) {\n // Render the content as soon as the panel becomes open.\n this.opened.pipe(\n startWith(null!),\n filter(() => this.expanded && !this._portal),\n take(1)\n ).subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._inputChanges.next(changes);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._bodyAnimationDone.complete();\n this._inputChanges.complete();\n }\n\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus(): boolean {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n\n return false;\n }\n}\n\n@Directive({\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n})\nexport class MatExpansionPanelActionRow {}\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 {Directive, TemplateRef} from '@angular/core';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n selector: 'ng-template[matExpansionPanelContent]'\n})\nexport class MatExpansionPanelContent {\n constructor(public _template: TemplateRef<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 */\nimport {\n animate,\n animateChild,\n group,\n state,\n style,\n transition,\n trigger,\n query,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Time and timing curve for expansion panel animations. */\nexport const EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n\n/**\n * Animations used by the Material expansion panel.\n *\n * A bug in angular animation's `state` when ViewContainers are moved using ViewContainerRef.move()\n * causes the animation state of moved components to become `void` upon exit, and not update again\n * upon reentry into the DOM. This can lead a to situation for the expansion panel where the state\n * of the panel is `expanded` or `collapsed` but the animation state is `void`.\n *\n * To correctly handle animating to the next state, we animate between `void` and `collapsed` which\n * are defined to have the same styles. Since angular animates from the current styles to the\n * destination state's style definition, in situations where we are moving from `void`'s styles to\n * `collapsed` this acts a noop since no style values change.\n *\n * In the case where angular's animation state is out of sync with the expansion panel's state, the\n * expansion panel being `expanded` and angular animations being `void`, the animation from the\n * `expanded`'s effective styles (though in a `void` animation state) to the collapsed state will\n * occur as expected.\n *\n * Angular Bug: https://github.com/angular/angular/issues/18847\n *\n * @docs-private\n */\nexport const matExpansionAnimations: {\n readonly indicatorRotate: AnimationTriggerMetadata;\n readonly expansionHeaderHeight: AnimationTriggerMetadata;\n readonly bodyExpansion: AnimationTriggerMetadata;\n} = {\n /** Animation that rotates the indicator arrow. */\n indicatorRotate: trigger('indicatorRotate', [\n state('collapsed, void', style({transform: 'rotate(0deg)'})),\n state('expanded', style({transform: 'rotate(180deg)'})),\n transition('expanded <=> collapsed, void => collapsed',\n animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n\n /** Animation that expands and collapses the panel header height. */\n expansionHeaderHeight: trigger('expansionHeight', [\n state('collapsed, void', style({\n height: '{{collapsedHeight}}',\n }), {\n params: {collapsedHeight: '48px'},\n }),\n state('expanded', style({\n height: '{{expandedHeight}}'\n }), {\n params: {expandedHeight: '64px'}\n }),\n transition('expanded <=> collapsed, void => collapsed', group([\n query('@indicatorRotate', animateChild(), {optional: true}),\n animate(EXPANSION_PANEL_ANIMATION_TIMING),\n ])),\n ]),\n\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: trigger('bodyExpansion', [\n state('collapsed, void', style({height: '0px', visibility: 'hidden'})),\n state('expanded', style({height: '*', visibility: 'visible'})),\n transition('expanded <=> collapsed, void => collapsed',\n animate(EXPANSION_PANEL_ANIMATION_TIMING)),\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';\nimport {CdkAccordion} from '@angular/cdk/accordion';\n\n/** MatAccordion's display modes. */\nexport type MatAccordionDisplayMode = 'default' | 'flat';\n\n/** MatAccordion's toggle positions. */\nexport type MatAccordionTogglePosition = 'before' | 'after';\n\n/**\n * Base interface for a `MatAccordion`.\n * @docs-private\n */\nexport interface MatAccordionBase extends CdkAccordion {\n /** Whether the expansion indicator should be hidden. */\n hideToggle: boolean;\n\n /** Display mode used for all expansion panels in the accordion. */\n displayMode: MatAccordionDisplayMode;\n\n /** The position of the expansion indicator. */\n togglePosition: MatAccordionTogglePosition;\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown: (event: KeyboardEvent) => void;\n\n /** Handles focus events on the panel headers. */\n _handleHeaderFocus: (header: any) => void;\n}\n\n\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nexport const MAT_ACCORDION = new InjectionToken<MatAccordionBase>('MAT_ACCORDION');\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDivider} from './divider';\n\n\n@NgModule({\n imports: [MatCommonModule, CommonModule],\n exports: [MatDivider, MatCommonModule],\n declarations: [MatDivider],\n})\nexport class MatDividerModule {}\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 {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider'\n },\n template: '',\n styleUrls: ['divider.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDivider {\n /** Whether the divider is vertically aligned. */\n @Input()\n get vertical(): boolean { return this._vertical; }\n set vertical(value: boolean) { this._vertical = coerceBooleanProperty(value); }\n private _vertical: boolean = false;\n\n /** Whether the divider is an inset divider. */\n @Input()\n get inset(): boolean { return this._inset; }\n set inset(value: boolean) { this._inset = coerceBooleanProperty(value); }\n private _inset: boolean = false;\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 {A11yModule} from '@angular/cdk/a11y';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatCalendar, MatCalendarHeader} from './calendar';\nimport {MatCalendarBody} from './calendar-body';\nimport {\n MatDatepicker,\n MatDatepickerContent,\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './datepicker';\nimport {MatDatepickerInput} from './datepicker-input';\nimport {MatDatepickerIntl} from './datepicker-intl';\nimport {MatDatepickerToggle, MatDatepickerToggleIcon} from './datepicker-toggle';\nimport {MatMonthView} from './month-view';\nimport {MatMultiYearView} from './multi-year-view';\nimport {MatYearView} from './year-view';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n ],\n exports: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n ],\n entryComponents: [\n MatDatepickerContent,\n MatCalendarHeader,\n ]\n})\nexport class MatDatepickerModule {}\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 {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n ViewChild,\n} from '@angular/core';\nimport {MatButton} from '@angular/material/button';\nimport {merge, of as observableOf, Subscription} from 'rxjs';\nimport {MatDatepicker} from './datepicker';\nimport {MatDatepickerIntl} from './datepicker-intl';\n\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\n@Directive({\n selector: '[matDatepickerToggleIcon]'\n})\nexport class MatDatepickerToggleIcon {}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.css'],\n host: {\n 'class': 'mat-datepicker-toggle',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': '-1',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n '(focus)': '_button.focus()',\n },\n exportAs: 'matDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: MatDatepicker<D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MatDatepickerToggleIcon, {static: false}) _customIcon: MatDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', {static: false}) _button: MatButton;\n\n constructor(\n public _intl: MatDatepickerIntl,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string) {\n\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const datepickerDisabled = this.datepicker ? this.datepicker._disabledChange : observableOf();\n const inputDisabled = this.datepicker && this.datepicker._datepickerInput ?\n this.datepicker._datepickerInput._disabledChange : observableOf();\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n this._intl.changes,\n datepickerDisabled,\n inputDisabled,\n datepickerToggled\n ).subscribe(() => 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 {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOWN_ARROW} from '@angular/cdk/keycodes';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats, ThemePalette} from '@angular/material/core';\nimport {MatFormField} from '@angular/material/form-field';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '@angular/material/input';\nimport {Subscription} from 'rxjs';\nimport {MatDatepicker} from './datepicker';\nimport {createMissingDateImplError} from './datepicker-errors';\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nexport class MatDatepickerInputEvent<D> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: MatDatepickerInput<D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement) {\n this.value = this.target.value;\n }\n}\n\n\n/** Directive used to connect an input to a MatDatepicker. */\n@Directive({\n selector: 'input[matDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n {provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput},\n ],\n host: {\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n})\nexport class MatDatepickerInput<D> implements ControlValueAccessor, OnDestroy, Validator {\n /** The datepicker that this input is associated with. */\n @Input()\n set matDatepicker(value: MatDatepicker<D>) {\n if (!value) {\n return;\n }\n\n this._datepicker = value;\n this._datepicker._registerInput(this);\n this._datepickerSubscription.unsubscribe();\n\n this._datepickerSubscription = this._datepicker._selectedChanged.subscribe((selected: D) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n _datepicker: MatDatepicker<D>;\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input()\n set matDatepickerFilter(value: (date: D | null) => boolean) {\n this._dateFilter = value;\n this._validatorOnChange();\n }\n _dateFilter: (date: D | null) => boolean;\n\n /** The value of the input. */\n @Input()\n get value(): D | null { return this._value; }\n set value(value: D | null) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\n value = this._getValidDateOrNull(value);\n const oldDate = this.value;\n this._value = value;\n this._formatValue(value);\n\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n }\n private _value: D | null;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null { return this._min; }\n set min(value: D | null) {\n this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._validatorOnChange();\n }\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null { return this._max; }\n set max(value: D | null) {\n this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._validatorOnChange();\n }\n private _max: D | null;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean { return !!this._disabled; }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled: boolean;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange: EventEmitter<MatDatepickerInputEvent<D>> =\n new EventEmitter<MatDatepickerInputEvent<D>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput: EventEmitter<MatDatepickerInputEvent<D>> =\n new EventEmitter<MatDatepickerInputEvent<D>>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<D | null>();\n\n /** Emits when the disabled state has changed */\n _disabledChange = new EventEmitter<boolean>();\n\n _onTouched = () => {};\n\n private _cvaOnChange: (value: any) => void = () => {};\n\n private _validatorOnChange = () => {};\n\n private _datepickerSubscription = Subscription.EMPTY;\n\n private _localeSubscription = Subscription.EMPTY;\n\n /** The form control validator for whether the input parses. */\n private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this._lastValueValid ?\n null : {'matDatepickerParse': {'text': this._elementRef.nativeElement.value}};\n }\n\n /** The form control validator for the min date. */\n private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return (!this.min || !controlValue ||\n this._dateAdapter.compareDate(this.min, controlValue) <= 0) ?\n null : {'matDatepickerMin': {'min': this.min, 'actual': controlValue}};\n }\n\n /** The form control validator for the max date. */\n private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return (!this.max || !controlValue ||\n this._dateAdapter.compareDate(this.max, controlValue) >= 0) ?\n null : {'matDatepickerMax': {'max': this.max, 'actual': controlValue}};\n }\n\n /** The form control validator for the date filter. */\n private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ?\n null : {'matDatepickerFilter': true};\n }\n\n /** The combined form control validator for this input. */\n private _validator: ValidatorFn | null =\n Validators.compose(\n [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n\n /** Whether the last value set on the input was valid. */\n private _lastValueValid = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() private _formField: MatFormField) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n ngOnDestroy() {\n this._datepickerSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: D): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (this._datepicker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._datepicker.open();\n event.preventDefault();\n }\n }\n\n _onInput(value: string) {\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\n date = this._getValidDateOrNull(date);\n\n if (!this._dateAdapter.sameDate(date, this._value)) {\n this._value = date;\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n } else {\n this._validatorOnChange();\n }\n }\n\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n /** Returns the palette used by the input's form field, if any. */\n _getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n /** Formats a value and sets it on the input element. */\n private _formatValue(value: D | null) {\n this._elementRef.nativeElement.value =\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\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 {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, UP_ARROW} from '@angular/cdk/keycodes';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanColor,\n CanColorCtor,\n DateAdapter,\n mixinColor,\n ThemePalette,\n} from '@angular/material/core';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {merge, Subject, Subscription} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatCalendar} from './calendar';\nimport {matDatepickerAnimations} from './datepicker-animations';\nimport {createMissingDateImplError} from './datepicker-errors';\nimport {MatDatepickerInput} from './datepicker-input';\nimport {MatCalendarCellCssClasses} from './calendar-body';\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-datepicker-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nclass MatDatepickerContentBase {\n constructor(public _elementRef: ElementRef) { }\n}\nconst _MatDatepickerContentMixinBase: CanColorCtor & typeof MatDatepickerContentBase =\n mixinColor(MatDatepickerContentBase);\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-datepicker-content',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.css'],\n host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '\"enter\"',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n },\n animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ],\n exportAs: 'matDatepickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color'],\n})\nexport class MatDatepickerContent<D> extends _MatDatepickerContentMixinBase\n implements AfterViewInit, CanColor {\n\n /** Reference to the internal calendar component. */\n @ViewChild(MatCalendar, {static: false}) _calendar: MatCalendar<D>;\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: MatDatepicker<D>;\n\n /** Whether the datepicker is above or below the input. */\n _isAbove: boolean;\n\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n\n ngAfterViewInit() {\n this._calendar.focusActiveCell();\n }\n}\n\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n moduleId: module.id,\n selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDatepicker<D> implements OnDestroy, CanColor {\n private _scrollStrategy: () => ScrollStrategy;\n\n /** An input indicating the type of the custom header component for the calendar, if set. */\n @Input() calendarHeaderComponent: ComponentType<any>;\n\n /** The date to open the calendar to initially. */\n @Input()\n get startAt(): D | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this._datepickerInput ? this._datepickerInput.value : null);\n }\n set startAt(value: D | null) {\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** The view that the calendar should start in. */\n @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n /** Color palette to use on the datepicker's calendar. */\n @Input()\n get color(): ThemePalette {\n return this._color ||\n (this._datepickerInput ? this._datepickerInput._getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n _color: ThemePalette;\n\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n */\n @Input()\n get touchUi(): boolean { return this._touchUi; }\n set touchUi(value: boolean) {\n this._touchUi = coerceBooleanProperty(value);\n }\n private _touchUi = false;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n }\n private _disabled: boolean;\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => MatCalendarCellCssClasses;\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { value ? this.open() : this.close(); }\n private _opened = false;\n\n /** The id for the datepicker calendar. */\n id: string = `mat-datepicker-${datepickerUid++}`;\n\n /** The currently selected date. */\n get _selected(): D | null { return this._validSelected; }\n set _selected(value: D | null) { this._validSelected = value; }\n private _validSelected: D | null = null;\n\n /** The minimum selectable date. */\n get _minDate(): D | null {\n return this._datepickerInput && this._datepickerInput.min;\n }\n\n /** The maximum selectable date. */\n get _maxDate(): D | null {\n return this._datepickerInput && this._datepickerInput.max;\n }\n\n get _dateFilter(): (date: D | null) => boolean {\n return this._datepickerInput && this._datepickerInput._dateFilter;\n }\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n _popupRef: OverlayRef;\n\n /** A reference to the dialog when the calendar is opened as a dialog. */\n private _dialogRef: MatDialogRef<MatDatepickerContent<D>> | null;\n\n /** A portal containing the calendar for this datepicker. */\n private _calendarPortal: ComponentPortal<MatDatepickerContent<D>>;\n\n /** Reference to the component instantiated in popup mode. */\n private _popupComponentRef: ComponentRef<MatDatepickerContent<D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private _inputSubscription = Subscription.EMPTY;\n\n /** The input element this datepicker is associated with. */\n _datepickerInput: MatDatepickerInput<D>;\n\n /** Emits when the datepicker is disabled. */\n readonly _disabledChange = new Subject<boolean>();\n\n /** Emits new selected date when selected date changes. */\n readonly _selectedChanged = new Subject<D>();\n\n constructor(private _dialog: MatDialog,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnDestroy() {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupComponentRef = null;\n }\n }\n\n /** Selects the given date */\n select(date: D): void {\n let oldValue = this._selected;\n this._selected = date;\n if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n this._selectedChanged.next(date);\n }\n }\n\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n _registerInput(input: MatDatepickerInput<D>): void {\n if (this._datepickerInput) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._datepickerInput = input;\n this._inputSubscription =\n this._datepickerInput._valueChange.subscribe((value: D | null) => this._selected = value);\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this._datepickerInput) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(): void {\n if (!this._opened) {\n return;\n }\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n if (this._calendarPortal && this._calendarPortal.isAttached) {\n this._calendarPortal.detach();\n }\n\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /** Open the calendar as a dialog. */\n private _openAsDialog(): void {\n // Usually this would be handled by `open` which ensures that we can only have one overlay\n // open at a time, however since we reset the variables in async handlers some overlays\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\n // by holding down the enter key).\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n\n this._dialogRef = this._dialog.open<MatDatepickerContent<D>>(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n });\n\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._dialogRef.componentInstance.datepicker = this;\n this._setColor();\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal<MatDatepickerContent<D>>(MatDatepickerContent,\n this._viewContainerRef);\n }\n\n if (!this._popupRef) {\n this._createPopup();\n }\n\n if (!this._popupRef.hasAttached()) {\n this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\n this._popupComponentRef.instance.datepicker = this;\n this._setColor();\n\n // Update the position once the calendar has rendered.\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._popupRef.updatePosition();\n });\n }\n }\n\n /** Create the popup. */\n private _createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return event.keyCode === ESCAPE ||\n (this._datepickerInput && event.altKey && event.keyCode === UP_ARROW);\n }))\n ).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n /** Create the popup PositionStrategy. */\n private _createPopupPositionStrategy(): PositionStrategy {\n return this._overlay.position()\n .flexibleConnectedTo(this._datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n ]);\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Passes the current theme color along to the calendar overlay. */\n private _setColor(): void {\n const color = this.color;\n if (this._popupComponentRef) {\n this._popupComponentRef.instance.color = color;\n }\n if (this._dialogRef) {\n this._dialogRef.componentInstance.color = color;\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nexport const matDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\n transition('* => void', animate('100ms linear', style({opacity: 0})))\n ]),\n\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({opacity: 0})),\n state('enter', style({opacity: 1})),\n\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\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 {ComponentPortal, ComponentType, Portal} from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {Subject, Subscription} from 'rxjs';\nimport {MatCalendarCellCssClasses} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\nimport {MatDatepickerIntl} from './datepicker-intl';\nimport {MatMonthView} from './month-view';\nimport {\n getActiveOffset,\n isSameMultiYearView,\n MatMultiYearView,\n yearsPerPage\n} from './multi-year-view';\nimport {MatYearView} from './year-view';\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport type MatCalendarView = 'month' | 'year' | 'multi-year';\n\n/** Default header for MatCalendar */\n@Component({\n moduleId: module.id,\n selector: 'mat-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'matCalendarHeader',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarHeader<D> {\n constructor(private _intl: MatDatepickerIntl,\n @Inject(forwardRef(() => MatCalendar)) public calendar: MatCalendar<D>,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n changeDetectorRef: ChangeDetectorRef) {\n\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n /** The label for the current calendar view. */\n get periodButtonText(): string {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n const minYearOfPage = activeYear - getActiveOffset(\n this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n return `${minYearOfPage} \\u2013 ${maxYearOfPage}`;\n }\n\n get periodButtonLabel(): string {\n return this.calendar.currentView == 'month' ?\n this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1) :\n this._dateAdapter.addCalendarYears(\n this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n );\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1) :\n this._dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n );\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.calendar.minDate) {\n return true;\n }\n return !this.calendar.minDate ||\n !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.calendar.maxDate ||\n !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private _isSameView(date1: D, date2: D): boolean {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(\n this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n }\n}\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-calendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.css'],\n host: {\n 'class': 'mat-calendar',\n },\n exportAs: 'matCalendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n /** An input indicating the type of the header component, if set. */\n @Input() headerComponent: ComponentType<any>;\n\n /** A portal containing the header component type for this calendar. */\n _calendarHeaderPortal: Portal<any>;\n\n private _intlChanges: Subscription;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private _moveFocusOnNextTick = false;\n\n /** A date representing the period (month or year) to start the calendar in. */\n @Input()\n get startAt(): D | null { return this._startAt; }\n set startAt(value: D | null) {\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: MatCalendarView = 'month';\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null { return this._selected; }\n set selected(value: D | null) {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => MatCalendarCellCssClasses;\n\n /** Emits when the currently selected date changes. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Reference to the current month view component. */\n @ViewChild(MatMonthView, {static: false}) monthView: MatMonthView<D>;\n\n /** Reference to the current year view component. */\n @ViewChild(MatYearView, {static: false}) yearView: MatYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(MatMultiYearView, {static: false}) multiYearView: MatMultiYearView<D>;\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D { return this._clampedActiveDate; }\n set activeDate(value: D) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _clampedActiveDate: D;\n\n /** Whether the calendar is in month view. */\n get currentView(): MatCalendarView { return this._currentView; }\n set currentView(value: MatCalendarView) {\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n }\n private _currentView: MatCalendarView;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n constructor(_intl: MatDatepickerIntl,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef) {\n\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || MatCalendarHeader);\n this.activeDate = this.startAt || this._dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change =\n changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\n\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n let view = this.currentView == 'month' ? this.monthView :\n (this.currentView == 'year' ? this.yearView : this.multiYearView);\n\n view.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n _dateSelected(date: D): void {\n if (!this._dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n _userSelected(): void {\n this._userSelection.emit();\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n this.activeDate = date;\n this.currentView = view;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private _getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\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 DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MatCalendarBody, MatCalendarCell} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-year-view',\n templateUrl: 'year-view.html',\n exportAs: 'matYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatYearView<D> implements AfterContentInit {\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null { return this._selected; }\n set selected(value: D | null) {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n }\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, {static: false}) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the months of the year. */\n _months: MatCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n _yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n _todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n _selectedMonth: number | null;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._init();\n }\n\n /** Handles when a new month is selected. */\n _monthSelected(month: number) {\n const normalizedDate =\n this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate), month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n this._monthSelected(this._dateAdapter.getMonth(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n _init() {\n this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(\n month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private _getMonthInCurrentYear(date: D | null) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n this._dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an MatCalendarCell for the given month. */\n private _createCellForMonth(month: number, monthName: string) {\n let ariaLabel = this._dateAdapter.format(\n this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1),\n this._dateFormats.display.monthYearA11yLabel);\n return new MatCalendarCell(\n month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month));\n }\n\n /** Whether the given month is enabled. */\n private _shouldEnableMonth(month: number) {\n\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n if (month === undefined || month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\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 DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DateAdapter} from '@angular/material/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MatCalendarBody, MatCalendarCell} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-multi-year-view',\n templateUrl: 'multi-year-view.html',\n exportAs: 'matMultiYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatMultiYearView<D> implements AfterContentInit {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!isSameMultiYearView(\n this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null { return this._selected; }\n set selected(value: D | null) {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._selectedYear = this._selected && this._dateAdapter.getYear(this._selected);\n }\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, {static: false}) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the currently displayed years. */\n _years: MatCalendarCell[][];\n\n /** The year that today falls on. */\n _todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n _selectedYear: number | null;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._init();\n }\n\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n\n this._years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n _yearSelected(year: number) {\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n let month = this._dateAdapter.getMonth(this.activeDate);\n let daysInMonth =\n this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(year, month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n yearsPerPage - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this._yearSelected(this._dateAdapter.getYear(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n _getActiveCell(): number {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /** Creates an MatCalendarCell for the given year. */\n private _createCellForYear(year: number) {\n let yearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(year, 0, 1));\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\n }\n\n /** Whether the given year is enabled. */\n private _shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n}\n\nexport function isSameMultiYearView<D>(\n dateAdapter: DateAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return Math.floor((year1 - startingYear) / yearsPerPage) ===\n Math.floor((year2 - startingYear) / yearsPerPage);\n}\n\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nexport function getActiveOffset<D>(\n dateAdapter: DateAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)),\n yearsPerPage);\n}\n\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear<D>(\n dateAdapter: DateAdapter<D>, minDate: D | null, maxDate: D | null): number {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n } else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo (a: number, b: number): number {\n return (a % b + b) % b;\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 DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MatCalendarBody, MatCalendarCell, MatCalendarCellCssClasses} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\n\n\nconst DAYS_PER_WEEK = 7;\n\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-month-view',\n templateUrl: 'month-view.html',\n exportAs: 'matMonthView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatMonthView<D> implements AfterContentInit {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null { return this._selected; }\n set selected(value: D | null) {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._selectedDate = this._getDateInCurrentMonth(this._selected);\n }\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => MatCalendarCellCssClasses;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, {static: false}) _matCalendarBody: MatCalendarBody;\n\n /** The label for this month (e.g. \"January 2017\"). */\n _monthLabel: string;\n\n /** Grid of calendar cells representing the dates of the month. */\n _weeks: MatCalendarCell[][];\n\n /** The number of blank cells in the first row before the 1st of the month. */\n _firstWeekOffset: number;\n\n /**\n * The date of the month that the currently selected Date falls on.\n * Null if the currently selected Date is in another month.\n */\n _selectedDate: number | null;\n\n /** The date of the month that today falls on. Null if today is in another month. */\n _todayDate: number | null;\n\n /** The names of the weekdays. */\n _weekdays: {long: string, narrow: string}[];\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._init();\n }\n\n /** Handles when a new date is selected. */\n _dateSelected(date: number) {\n if (this._selectedDate != date) {\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this._userSelection.emit();\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate)));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this._dateSelected(this._dateAdapter.getDate(this._activeDate));\n this._userSelection.emit();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n _init() {\n this._selectedDate = this._getDateInCurrentMonth(this.selected);\n this._todayDate = this._getDateInCurrentMonth(this._dateAdapter.today());\n this._monthLabel =\n this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\n .toLocaleUpperCase();\n\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),\n this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /** Initializes the weekdays. */\n private _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return {long, narrow: narrowWeekdays[i]};\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n\n /** Creates MatCalendarCells for the dates in this month. */\n private _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate),\n this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n this._weeks[this._weeks.length - 1]\n .push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses));\n }\n }\n\n /** Date filter for the month */\n private _shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0);\n }\n\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n private _getDateInCurrentMonth(date: D | null): number | null {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n this._dateAdapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private _getValidDateOrNull(obj: any): D | null {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\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 ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n NgZone,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {take} from 'rxjs/operators';\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type MatCalendarCellCssClasses = string | string[] | Set<string> | {[key: string]: any};\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class MatCalendarCell {\n constructor(public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public cssClasses?: MatCalendarCellCssClasses) {}\n}\n\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: '[mat-calendar-body]',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.css'],\n host: {\n 'class': 'mat-calendar-body',\n 'role': 'grid',\n 'aria-readonly': 'true'\n },\n exportAs: 'matCalendarBody',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarBody implements OnChanges {\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: MatCalendarCell[][];\n\n /** The value in the table that corresponds to today. */\n @Input() todayValue: number;\n\n /** The value in the table that is currently selected. */\n @Input() selectedValue: number;\n\n /** The minimum number of free cells needed to fit the label in the first row. */\n @Input() labelMinRequiredCells: number;\n\n /** The number of columns in the table. */\n @Input() numCols = 7;\n\n /** The cell number of the active cell in the table. */\n @Input() activeCell = 0;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio = 1;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n _firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n _cellPadding: string;\n\n /** Width of an individual cell. */\n _cellWidth: string;\n\n constructor(private _elementRef: ElementRef<HTMLElement>, private _ngZone: NgZone) { }\n\n _cellClicked(cell: MatCalendarCell): void {\n if (cell.enabled) {\n this.selectedValueChange.emit(cell.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes['numCols'];\n const {rows, numCols} = this;\n\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\n }\n\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n\n _isActiveCell(rowIndex: number, colIndex: number): boolean {\n let cellNumber = rowIndex * this.numCols + colIndex;\n\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n\n return cellNumber == this.activeCell;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this._elementRef.nativeElement.querySelector('.mat-calendar-body-active');\n\n if (activeCell) {\n activeCell.focus();\n }\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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\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 createMissingDateImplError(provider: string) {\n return Error(\n `MatDatepicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: MatNativeDateModule, MatMomentDateModule, or provide a ` +\n `custom implementation.`);\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n CommonModule,\n TextFieldModule,\n MatFormFieldModule,\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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl} 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 */\nclass MatInputBase {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n}\nconst _MatInputMixinBase: CanUpdateErrorStateCtor & typeof MatInputBase =\n mixinErrorState(MatInputBase);\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 '[attr.placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-required]': 'required.toString()',\n '(blur)': '_focusChanged(false)',\n '(focus)': '_focusChanged(true)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputMixinBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, OnInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n /** The aria-describedby attribute on the input for improved a11y. */\n _ariaDescribedby: string;\n\n /** Whether the component is being rendered on the server. */\n _isServer = false;\n\n /** Whether the component is a native html select. */\n _isNativeSelect = false;\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 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() errorStateMatcher: ErrorStateMatcher;\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 /** @docs-private */\n @Optional() @Self() public 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\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\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 let el = event.target as HTMLInputElement;\n if (!el.value && !el.selectionStart && !el.selectionEnd) {\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 = element.nodeName.toLowerCase() === 'select';\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngOnInit() {\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\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused && (!this.readonly || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\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 `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 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 /** Determines if the component host is a textarea. */\n protected _isTextarea() {\n return this._elementRef.nativeElement.nodeName.toLowerCase() === 'textarea';\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 this._ariaDescribedby = ids.join(' ');\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","/**\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\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 {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 '(input)': '_noopInputHandler()',\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\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\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 CommonModule,\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\nimport {\n Directive,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {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)': 'dialogRef.close(dialogResult)',\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 @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\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 @Input() id = `mat-dialog-title-${dialogElementUid++}`;\n\n constructor(\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 {Directionality} from '@angular/cdk/bidi';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n TemplateRef,\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} 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/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog 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 /**\n * Stream that emits when a dialog has been opened.\n * @deprecated Use `afterOpened` instead.\n * @breaking-change 8.0.0\n */\n get afterOpen(): Subject<MatDialogRef<any>> {\n return this.afterOpened;\n }\n\n get _afterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._afterAllClosed : 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._afterAllClosed :\n this._afterAllClosed.pipe(startWith(undefined))) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n @Optional() private _location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) private _defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() private _parentDialog: MatDialog,\n private _overlayContainer: OverlayContainer) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param componentOrTemplateRef Type of the component to load into the dialog,\n * or a 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>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n if (config.id && this.getDialogById(config.id)) {\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 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 an MatDialogContainer 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): MatDialogContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatDialogConfig, config]\n ]));\n const containerPortal = new ComponentPortal(MatDialogContainer,\n config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach<MatDialogContainer>(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Attaches the user-provided component to the already-created MatDialogContainer.\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 MatDialogContainer.\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: MatDialogContainer,\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 =\n new MatDialogRef<T, R>(overlayRef, dialogContainer, this._location, config.id);\n\n // When the dialog backdrop is clicked, we want to close it.\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(() => {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\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, undefined, 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 container 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: MatDialogContainer): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n // The MatDialogContainer is injected in the portal as the MatDialogContainer and the dialog's\n // content are created out of the same ViewContainerRef and as such, are siblings for injector\n // purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly\n // added to the injection tokens.\n const injectionTokens = new WeakMap<any, any>([\n [MatDialogContainer, dialogContainer],\n [MAT_DIALOG_DATA, config.data],\n [MatDialogRef, dialogRef]\n ]);\n\n if (config.direction &&\n (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n }\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\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._afterAllClosed.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 * 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 {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Location} from '@angular/common';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {MatDialogContainer} 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: MatDialogContainer,\n // @breaking-change 8.0.0 `_location` parameter to be removed.\n _location?: Location,\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.phaseName === 'done' && event.toState === 'enter'),\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.phaseName === 'done' && event.toState === 'exit'),\n take(1)\n ).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._overlayRef.dispose();\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 this.close();\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.phaseName === 'start'),\n take(1)\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._state = MatDialogState.CLOSED;\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(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n });\n\n this._containerInstance._startExitAnimation();\n this._state = MatDialogState.CLOSING;\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.asObservable();\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.asObservable();\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.asObservable();\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._getPositionStrategy().width(width).height(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 /**\n * Gets an observable that is notified when the dialog is finished opening.\n * @deprecated Use `afterOpened` instead.\n * @breaking-change 8.0.0\n */\n afterOpen(): Observable<void> {\n return this.afterOpened();\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n * @deprecated Use `beforeClosed` instead.\n * @breaking-change 8.0.0\n */\n beforeClose(): Observable<R | undefined> {\n return this.beforeClosed();\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\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 * @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 ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Optional,\n ChangeDetectorRef,\n ViewChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {AnimationEvent} from '@angular/animations';\nimport {matDialogAnimations} from './dialog-animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n CdkPortalOutlet,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {MatDialogConfig} from './dialog-config';\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 * 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 moduleId: module.id,\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 '[attr.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 BasePortalOutlet {\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 /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<AnimationEvent>();\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 private _elementRef: ElementRef,\n private _focusTrapFactory: FocusTrapFactory,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(DOCUMENT) private _document: any,\n /** The dialog configuration. */\n public _config: MatDialogConfig) {\n\n super();\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\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()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n this._savePreviouslyFocusedElement();\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()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Moves the focus inside the focus trap. */\n private _trapFocus() {\n const element = this._elementRef.nativeElement;\n\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(element);\n }\n\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 {\n const activeElement = this._document.activeElement;\n\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 if (activeElement !== element && !element.contains(activeElement)) {\n element.focus();\n }\n }\n }\n\n /** Restores focus to the element that was focused before the dialog opened. */\n private _restoreFocus() {\n const toFocus = 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 && toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Saves a reference to the element that was focused before the dialog was opened. */\n private _savePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = this._document.activeElement as HTMLElement;\n\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n // Move focus onto the dialog immediately in order to prevent the user from accidentally\n // opening multiple dialogs at the same time. Needs to be async, because the element\n // may not be focusable immediately.\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n }\n }\n }\n\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'enter') {\n this._trapFocus();\n } else if (event.toState === 'exit') {\n this._restoreFocus();\n }\n\n this._animationStateChanged.emit(event);\n }\n\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart(event: AnimationEvent) {\n this._animationStateChanged.emit(event);\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst animationBody = [\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 * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n readonly slideDialog: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by defalt. */\n dialogContainer: trigger('dialogContainer', animationBody),\n\n /** @deprecated @breaking-change 8.0.0 Use `matDialogAnimations.dialogContainer` instead. */\n slideDialog: trigger('slideDialog', animationBody)\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 {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 = '';\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, pixel units are assumed. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, pixel units are assumed. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, pixel units are assumed. Defaults to 80vw */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, pixel units are assumed. */\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 */\n\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatChip, MatChipAvatar, MatChipRemove, MatChipTrailingIcon} from './chip';\nimport {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './chip-default-options';\nimport {MatChipInput} from './chip-input';\nimport {MatChipList} from './chip-list';\n\nconst CHIP_DECLARATIONS = [\n MatChipList,\n MatChip,\n MatChipInput,\n MatChipRemove,\n MatChipAvatar,\n MatChipTrailingIcon,\n];\n\n@NgModule({\n exports: CHIP_DECLARATIONS,\n declarations: CHIP_DECLARATIONS,\n providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER]\n } as MatChipsDefaultOptions\n }\n ]\n})\nexport class MatChipsModule {}\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 {Directive, ElementRef, EventEmitter, Inject, Input, OnChanges, Output} from '@angular/core';\nimport {hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './chip-default-options';\nimport {MatChipList} from './chip-list';\nimport {MatChipTextControl} from './chip-text-control';\n\n\n/** Represents an input event on a `matChipInput`. */\nexport interface MatChipInputEvent {\n /** The native `<input>` element that the event is being fired for. */\n input: HTMLInputElement;\n\n /** The value of the input. */\n value: string;\n}\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<mat-form-field>`.\n * May be placed inside or outside of an `<mat-chip-list>`.\n */\n@Directive({\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n 'class': 'mat-chip-input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '[attr.aria-invalid]': '_chipList && _chipList.ngControl ? _chipList.ngControl.invalid : null',\n }\n})\nexport class MatChipInput implements MatChipTextControl, OnChanges {\n /** Whether the control is focused. */\n focused: boolean = false;\n _chipList: MatChipList;\n\n /** Register input for chip list */\n @Input('matChipInputFor')\n set chipList(value: MatChipList) {\n if (value) {\n this._chipList = value;\n this._chipList.registerInput(this);\n }\n }\n\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n @Input('matChipInputAddOnBlur')\n get addOnBlur(): boolean { return this._addOnBlur; }\n set addOnBlur(value: boolean) { this._addOnBlur = coerceBooleanProperty(value); }\n _addOnBlur: boolean = false;\n\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n @Input('matChipInputSeparatorKeyCodes')\n separatorKeyCodes: number[] | Set<number> = this._defaultOptions.separatorKeyCodes;\n\n /** Emitted when a chip is to be added. */\n @Output('matChipInputTokenEnd')\n chipEnd: EventEmitter<MatChipInputEvent> = new EventEmitter<MatChipInputEvent>();\n\n /** The input's placeholder text. */\n @Input() placeholder: string = '';\n\n /** Unique id for the input. */\n @Input() id: string = `mat-chip-list-input-${nextUniqueId++}`;\n\n /** Whether the input is disabled. */\n @Input()\n get disabled(): boolean { return this._disabled || (this._chipList && this._chipList.disabled); }\n set disabled(value: boolean) { this._disabled = coerceBooleanProperty(value); }\n private _disabled: boolean = false;\n\n /** Whether the input is empty. */\n get empty(): boolean { return !this._inputElement.value; }\n\n /** The native input element to which this directive is attached. */\n protected _inputElement: HTMLInputElement;\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement>,\n @Inject(MAT_CHIPS_DEFAULT_OPTIONS) private _defaultOptions: MatChipsDefaultOptions) {\n this._inputElement = this._elementRef.nativeElement as HTMLInputElement;\n }\n\n ngOnChanges() {\n this._chipList.stateChanges.next();\n }\n\n /** Utility method to make host definition/tests more clear. */\n _keydown(event?: KeyboardEvent) {\n // Allow the user's focus to escape when they're tabbing forward. Note that we don't\n // want to do this when going backwards, because focus should go back to the first chip.\n if (event && event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) {\n this._chipList._allowFocusEscape();\n }\n\n this._emitChipEnd(event);\n }\n\n /** Checks to see if the blur should emit the (chipEnd) event. */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipList.focused) {\n this._chipList._blur();\n }\n this._chipList.stateChanges.next();\n }\n\n _focus() {\n this.focused = true;\n this._chipList.stateChanges.next();\n }\n\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event?: KeyboardEvent) {\n if (!this._inputElement.value && !!event) {\n this._chipList._keydown(event);\n }\n if (!event || this._isSeparatorKey(event)) {\n this.chipEnd.emit({ input: this._inputElement, value: this._inputElement.value });\n\n if (event) {\n event.preventDefault();\n }\n }\n }\n\n _onInput() {\n // Let chip list know whenever the value changes.\n this._chipList.stateChanges.next();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._inputElement.focus(options);\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private _isSeparatorKey(event: KeyboardEvent) {\n if (hasModifierKey(event)) {\n return false;\n }\n\n const separators = this.separatorKeyCodes;\n const keyCode = event.keyCode;\n return Array.isArray(separators) ? separators.indexOf(keyCode) > -1 : separators.has(keyCode);\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 {FocusKeyManager} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {BACKSPACE, END, HOME} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl} from '@angular/material/form-field';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent, MatChipSelectionChange} from './chip';\nimport {MatChipTextControl} from './chip-text-control';\n\n\n// Boilerplate for applying mixins to MatChipList.\n/** @docs-private */\nclass MatChipListBase {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n}\nconst _MatChipListMixinBase: CanUpdateErrorStateCtor & typeof MatChipListBase =\n mixinErrorState(MatChipListBase);\n\n\n// Increasing integer for generating unique ids for chip-list components.\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the chip list value has changed. */\nexport class MatChipListChange {\n constructor(\n /** Chip list that emitted the event. */\n public source: MatChipList,\n /** Value of the chip list when the event was emitted. */\n public value: any) { }\n}\n\n\n/**\n * A material design chips component (named ChipList for its similarity to the List component).\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-chip-list',\n template: `<div class=\"mat-chip-list-wrapper\"><ng-content></ng-content></div>`,\n exportAs: 'matChipList',\n host: {\n '[attr.tabindex]': 'disabled ? null : _tabIndex',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.role]': 'role',\n '[class.mat-chip-list-disabled]': 'disabled',\n '[class.mat-chip-list-invalid]': 'errorState',\n '[class.mat-chip-list-required]': 'required',\n '[attr.aria-orientation]': 'ariaOrientation',\n 'class': 'mat-chip-list',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatChipList}],\n styleUrls: ['chips.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatChipList extends _MatChipListMixinBase implements MatFormFieldControl<any>,\n ControlValueAccessor, AfterContentInit, DoCheck, OnInit, OnDestroy, CanUpdateErrorState {\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly controlType: string = 'mat-chip-list';\n\n /**\n * When a chip is destroyed, we store the index of the destroyed chip until the chips\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate chip that should receive focus until the array of chips updated completely.\n */\n private _lastDestroyedChipIndex: number | null = null;\n\n /** Subject that emits when the component has been destroyed. */\n private _destroyed = new Subject<void>();\n\n /** Subscription to focus changes in the chips. */\n private _chipFocusSubscription: Subscription | null;\n\n /** Subscription to blur changes in the chips. */\n private _chipBlurSubscription: Subscription | null;\n\n /** Subscription to selection changes in chips. */\n private _chipSelectionSubscription: Subscription | null;\n\n /** Subscription to remove changes in chips. */\n private _chipRemoveSubscription: Subscription | null;\n\n /** The chip input to add more chips */\n protected _chipInput: MatChipTextControl;\n\n /** Uid of the chip list */\n _uid: string = `mat-chip-list-${nextUniqueId++}`;\n\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n\n /** Tab index for the chip list. */\n _tabIndex = 0;\n\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n */\n _userTabIndex: number | null = null;\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatChip>;\n\n /** Function when touched */\n _onTouched = () => {};\n\n /** Function when changed */\n _onChange: (value: any) => void = () => {};\n\n _selectionModel: SelectionModel<MatChip>;\n\n /** The array of selected chips inside chip list. */\n get selected(): MatChip[] | MatChip {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n\n /** The ARIA role applied to the chip list. */\n get role(): string | null { return this.empty ? null : 'listbox'; }\n\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /** Whether the user should be allowed to select multiple chips. */\n @Input()\n get multiple(): boolean { return this._multiple; }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n private _multiple: boolean = false;\n\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith(): (o1: any, o2: any) => boolean { return this._compareWith; }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): any { return this._value; }\n set value(value: any) {\n this.writeValue(value);\n this._value = value;\n }\n protected _value: any;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this._chipInput ? this._chipInput.id : this._uid;\n }\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) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n protected _required: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get placeholder(): string {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n protected _placeholder: string;\n\n /** Whether any chips or the matChipInput inside of this chip-list has focus. */\n get focused(): boolean {\n return (this._chipInput && this._chipInput.focused) || this._hasFocusedChip();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean { return !this.empty || this.focused; }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean { return this.ngControl ? !!this.ngControl.disabled : this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n protected _disabled: boolean = false;\n\n /** Orientation of the chip list. */\n @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Whether or not this chip list is selectable. When a chip list is not selectable,\n * the selected states for all the chips inside the chip list are always ignored.\n */\n @Input()\n get selectable(): boolean { return this._selectable; }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n\n if (this.chips) {\n this.chips.forEach(chip => chip.chipListSelectable = this._selectable);\n }\n }\n protected _selectable: boolean = true;\n\n @Input()\n set tabIndex(value: number) {\n this._userTabIndex = value;\n this._tabIndex = value;\n }\n\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges(): Observable<MatChipSelectionChange> {\n return merge(...this.chips.map(chip => chip.selectionChange));\n }\n\n /** Combined stream of all of the child chips' focus change events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return merge(...this.chips.map(chip => chip._onFocus));\n }\n\n /** Combined stream of all of the child chips' blur change events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return merge(...this.chips.map(chip => chip._onBlur));\n }\n\n /** Combined stream of all of the child chips' remove change events. */\n get chipRemoveChanges(): Observable<MatChipEvent> {\n return merge(...this.chips.map(chip => chip.destroyed));\n }\n\n /** Event emitted when the selected chip list value has been changed by the user. */\n @Output() readonly change: EventEmitter<MatChipListChange> =\n new EventEmitter<MatChipListChange>();\n\n /**\n * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** The chip components contained within this chip list. */\n @ContentChildren(MatChip, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n }) chips: QueryList<MatChip>;\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _dir: Directionality,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n /** @docs-private */\n @Optional() @Self() public ngControl: NgControl) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager<MatChip>(this.chips)\n .withWrap()\n .withVerticalOrientation()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withHorizontalOrientation(dir));\n }\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._allowFocusEscape();\n });\n\n // When the list changes, re-subscribe\n this.chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.disabled) {\n // Since this happens after the content has been\n // checked, we need to defer it to the next tick.\n Promise.resolve().then(() => {\n this._syncChipsState();\n });\n }\n\n this._resetChips();\n\n // Reset chips selected/deselected status\n this._initializeSelection();\n\n // Check to see if we need to update our tab index\n this._updateTabIndex();\n\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n\n this.stateChanges.next();\n });\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatChip>(this.multiple, undefined, false);\n this.stateChanges.next();\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\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this.stateChanges.complete();\n\n this._dropSubscriptions();\n }\n\n\n /** Associates an HTML input element with this chip list. */\n registerInput(inputElement: MatChipTextControl): void {\n this._chipInput = inputElement;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) { this._ariaDescribedby = ids.join(' '); }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n if (this.chips) {\n this._setSelectionByValue(value, false);\n }\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event: MouseEvent) {\n if (!this._originatesFromChip(event)) {\n this.focus();\n }\n }\n\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled) {\n return;\n }\n\n // TODO: ARIA says this should focus the first `selected` chip if any are selected.\n // Focus on first element if there's no chipInput inside chip-list\n if (this._chipInput && this._chipInput.focused) {\n // do nothing\n } else if (this.chips.length > 0) {\n this._keyManager.setFirstItemActive();\n this.stateChanges.next();\n } else {\n this._focusInput(options);\n this.stateChanges.next();\n }\n }\n\n /** Attempt to focus an input if we have one. */\n _focusInput(options?: FocusOptions) {\n if (this._chipInput) {\n this._chipInput.focus(options);\n }\n }\n\n /**\n * Pass events to the keyboard manager. Available here for tests.\n */\n _keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n\n // If they are on an empty input and hit backspace, focus the last chip\n if (event.keyCode === BACKSPACE && this._isInputEmpty(target)) {\n this._keyManager.setLastItemActive();\n event.preventDefault();\n } else if (target && target.classList.contains('mat-chip')) {\n if (event.keyCode === HOME) {\n this._keyManager.setFirstItemActive();\n event.preventDefault();\n } else if (event.keyCode === END) {\n this._keyManager.setLastItemActive();\n event.preventDefault();\n } else {\n this._keyManager.onKeydown(event);\n }\n\n this.stateChanges.next();\n }\n }\n\n\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n */\n protected _updateTabIndex(): void {\n // If we have 0 chips, we should not allow keyboard focus\n this._tabIndex = this._userTabIndex || (this.chips.length === 0 ? -1 : 0);\n }\n\n /**\n * If the amount of chips changed, we need to update the\n * key manager state and focus the next closest chip.\n */\n protected _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-list itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this.chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this.chips.length - 1);\n this._keyManager.setActiveItem(newChipIndex);\n } else {\n this.focus();\n }\n }\n\n this._lastDestroyedChipIndex = null;\n }\n\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of chips.\n */\n private _isValidIndex(index: number): boolean {\n return index >= 0 && index < this.chips.length;\n }\n\n private _isInputEmpty(element: HTMLElement): boolean {\n if (element && element.nodeName.toLowerCase() === 'input') {\n let input = element as HTMLInputElement;\n return !input.value;\n }\n\n return false;\n }\n\n _setSelectionByValue(value: any, isUserInput: boolean = true) {\n this._clearSelection();\n this.chips.forEach(chip => chip.deselect());\n\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n this._sortValues();\n } else {\n const correspondingChip = this._selectValue(value, isUserInput);\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n if (isUserInput) {\n this._keyManager.setActiveItem(correspondingChip);\n }\n }\n }\n }\n\n /**\n * Finds and selects the chip based on its value.\n * @returns Chip that has the corresponding value.\n */\n private _selectValue(value: any, isUserInput: boolean = true): MatChip | undefined {\n\n const correspondingChip = this.chips.find(chip => {\n return chip.value != null && this._compareWith(chip.value, value);\n });\n\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n this._selectionModel.select(correspondingChip);\n }\n\n return correspondingChip;\n }\n\n private _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl || this._value) {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value, false);\n this.stateChanges.next();\n }\n });\n }\n\n /**\n * Deselects every chip in the list.\n * @param skip Chip that should not be deselected.\n */\n private _clearSelection(skip?: MatChip): void {\n this._selectionModel.clear();\n this.chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n this.stateChanges.next();\n }\n\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n */\n private _sortValues(): void {\n if (this._multiple) {\n this._selectionModel.clear();\n\n this.chips.forEach(chip => {\n if (chip.selected) {\n this._selectionModel.select(chip);\n }\n });\n this.stateChanges.next();\n }\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n\n /** When blurred, mark the field as touched when focus moved outside the chip list. */\n _blur() {\n if (!this._hasFocusedChip()) {\n this._keyManager.setActiveItem(-1);\n }\n\n if (!this.disabled) {\n if (this._chipInput) {\n // If there's a chip input, we should check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._markAsTouched();\n }\n });\n } else {\n // If there's no chip input, then mark the field as touched.\n this._markAsTouched();\n }\n }\n }\n\n /** Mark the field as touched */\n _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /**\n * Removes the `tabindex` from the chip list and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the list from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (this._tabIndex !== -1) {\n this._tabIndex = -1;\n\n setTimeout(() => {\n this._tabIndex = this._userTabIndex || 0;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _resetChips() {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n }\n\n private _dropSubscriptions() {\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n\n if (this._chipRemoveSubscription) {\n this._chipRemoveSubscription.unsubscribe();\n this._chipRemoveSubscription = null;\n }\n }\n\n /** Listens to user-generated selection events on each chip. */\n private _listenToChipsSelection(): void {\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(event => {\n event.source.selected\n ? this._selectionModel.select(event.source)\n : this._selectionModel.deselect(event.source);\n\n // For single selection chip list, make sure the deselected value is unselected.\n if (!this.multiple) {\n this.chips.forEach(chip => {\n if (!this._selectionModel.isSelected(chip) && chip.selected) {\n chip.deselect();\n }\n });\n }\n\n if (event.isUserInput) {\n this._propagateChanges();\n }\n });\n }\n\n /** Listens to user-generated selection events on each chip. */\n private _listenToChipsFocus(): void {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe(event => {\n let chipIndex: number = this.chips.toArray().indexOf(event.chip);\n\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveItemIndex(chipIndex);\n }\n this.stateChanges.next();\n });\n\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n }\n\n private _listenToChipsRemoved(): void {\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(event => {\n const chip = event.chip;\n const chipIndex = this.chips.toArray().indexOf(event.chip);\n\n // In case the chip that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling chip that will\n // receive focus.\n if (this._isValidIndex(chipIndex) && chip._hasFocus) {\n this._lastDestroyedChipIndex = chipIndex;\n }\n });\n }\n\n /** Checks whether an event comes from inside a chip element. */\n private _originatesFromChip(event: Event): boolean {\n let currentElement = event.target as HTMLElement | null;\n\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n if (currentElement.classList.contains('mat-chip')) {\n return true;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return false;\n }\n\n /** Checks whether any of the chips is focused. */\n private _hasFocusedChip() {\n return this.chips.some(chip => chip._hasFocus);\n }\n\n /** Syncs the list's state with the individual chips. */\n private _syncChipsState() {\n if (this.chips) {\n this.chips.forEach(chip => {\n chip.disabled = this._disabled;\n chip._chipListMultiple = this.multiple;\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 {InjectionToken} from '@angular/core';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface MatChipsDefaultOptions {\n /** The list of key codes that will trigger a chipEnd event. */\n separatorKeyCodes: number[] | Set<number>;\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const MAT_CHIPS_DEFAULT_OPTIONS =\n new InjectionToken<MatChipsDefaultOptions>('mat-chips-default-options');\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 {FocusableOption} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {BACKSPACE, DELETE, SPACE} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n CanColor,\n CanColorCtor,\n CanDisable,\n CanDisableCtor,\n CanDisableRipple,\n CanDisableRippleCtor,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n RippleConfig,\n RippleGlobalOptions,\n RippleRenderer,\n RippleTarget,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/** Represents an event fired on an individual `mat-chip`. */\nexport interface MatChipEvent {\n /** The chip the event was fired on. */\n chip: MatChip;\n}\n\n/** Event object emitted by MatChip when selected or deselected. */\nexport class MatChipSelectionChange {\n constructor(\n /** Reference to the chip that emitted the event. */\n public source: MatChip,\n /** Whether the chip that emitted the event is selected. */\n public selected: boolean,\n /** Whether the selection change was a result of a user interaction. */\n public isUserInput = false) { }\n}\n\n\n// Boilerplate for applying mixins to MatChip.\n/** @docs-private */\nclass MatChipBase {\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _MatChipMixinBase: CanColorCtor & CanDisableRippleCtor & CanDisableCtor & typeof MatChipBase =\n mixinColor(mixinDisableRipple(mixinDisabled(MatChipBase)), 'primary');\n\n/**\n * Dummy directive to add CSS class to chip avatar.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: {'class': 'mat-chip-avatar'}\n})\nexport class MatChipAvatar {}\n\n/**\n * Dummy directive to add CSS class to chip trailing icon.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: {'class': 'mat-chip-trailing-icon'}\n})\nexport class MatChipTrailingIcon {}\n\n/**\n * Material design styled Chip component. Used inside the MatChipList component.\n */\n@Directive({\n selector: `mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]`,\n inputs: ['color', 'disabled', 'disableRipple'],\n exportAs: 'matChip',\n host: {\n 'class': 'mat-chip',\n '[attr.tabindex]': 'disabled ? null : -1',\n 'role': 'option',\n '[class.mat-chip-selected]': 'selected',\n '[class.mat-chip-with-avatar]': 'avatar',\n '[class.mat-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-chip-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n },\n})\nexport class MatChip extends _MatChipMixinBase implements FocusableOption, OnDestroy, CanColor,\n CanDisable, CanDisableRipple, RippleTarget {\n\n /** Reference to the RippleRenderer for the chip. */\n private _chipRipple: RippleRenderer;\n\n /**\n * Ripple configuration for ripples that are launched on pointer down. The ripple config\n * is set to the global ripple options since we don't have any configurable options for\n * the chip ripples.\n * @docs-private\n */\n rippleConfig: RippleConfig & RippleGlobalOptions;\n\n /**\n * Whether ripples are disabled on interaction\n * @docs-private\n */\n get rippleDisabled(): boolean {\n return this.disabled || this.disableRipple || !!this.rippleConfig.disabled;\n }\n\n /** Whether the chip has focus. */\n _hasFocus: boolean = false;\n\n /** Whether animations for the chip are enabled. */\n _animationsDisabled: boolean;\n\n /** Whether the chip list is selectable */\n chipListSelectable: boolean = true;\n\n /** Whether the chip list is in multi-selection mode. */\n _chipListMultiple: boolean = false;\n\n /** The chip avatar */\n @ContentChild(MatChipAvatar, {static: false}) avatar: MatChipAvatar;\n\n /** The chip's trailing icon. */\n @ContentChild(MatChipTrailingIcon, {static: false}) trailingIcon: MatChipTrailingIcon;\n\n /** The chip's remove toggler. */\n @ContentChild(forwardRef(() => MatChipRemove), {static: false}) removeIcon: MatChipRemove;\n\n /** Whether the chip is selected. */\n @Input()\n get selected(): boolean { return this._selected; }\n set selected(value: boolean) {\n const coercedValue = coerceBooleanProperty(value);\n\n if (coercedValue !== this._selected) {\n this._selected = coercedValue;\n this._dispatchSelectionChange();\n }\n }\n protected _selected: boolean = false;\n\n /** The value of the chip. Defaults to the content inside `<mat-chip>` tags. */\n @Input()\n get value(): any {\n return this._value !== undefined\n ? this._value\n : this._elementRef.nativeElement.textContent;\n }\n set value(value: any) { this._value = value; }\n protected _value: any;\n\n /**\n * Whether or not the chip is selectable. When a chip is not selectable,\n * changes to its selected state are always ignored. By default a chip is\n * selectable, and it becomes non-selectable if its parent chip list is\n * not selectable.\n */\n @Input()\n get selectable(): boolean { return this._selectable && this.chipListSelectable; }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n }\n protected _selectable: boolean = true;\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n @Input()\n get removable(): boolean { return this._removable; }\n set removable(value: boolean) {\n this._removable = coerceBooleanProperty(value);\n }\n protected _removable: boolean = true;\n\n /** Emits when the chip is focused. */\n readonly _onFocus = new Subject<MatChipEvent>();\n\n /** Emits when the chip is blured. */\n readonly _onBlur = new Subject<MatChipEvent>();\n\n /** Emitted when the chip is selected or deselected. */\n @Output() readonly selectionChange: EventEmitter<MatChipSelectionChange> =\n new EventEmitter<MatChipSelectionChange>();\n\n /** Emitted when the chip is destroyed. */\n @Output() readonly destroyed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** Emitted when a chip is to be removed. */\n @Output() readonly removed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** The ARIA selected applied to the chip. */\n get ariaSelected(): string | null {\n // Remove the `aria-selected` when the chip is deselected in single-selection mode, because\n // it adds noise to NVDA users where \"not selected\" will be read out for each chip.\n return this.selectable && (this._chipListMultiple || this.selected) ?\n this.selected.toString() : null;\n }\n\n constructor(public _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS)\n globalRippleOptions: RippleGlobalOptions | null,\n // @breaking-change 8.0.0 `animationMode` parameter to become required.\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n // @breaking-change 9.0.0 `_changeDetectorRef` parameter to become required.\n private _changeDetectorRef?: ChangeDetectorRef) {\n super(_elementRef);\n\n this._addHostClassName();\n\n this._chipRipple = new RippleRenderer(this, _ngZone, _elementRef, platform);\n this._chipRipple.setupTriggerEvents(_elementRef);\n this.rippleConfig = globalRippleOptions || {};\n this._animationsDisabled = animationMode === 'NoopAnimations';\n }\n\n _addHostClassName() {\n const basicChipAttrName = 'mat-basic-chip';\n const element = this._elementRef.nativeElement as HTMLElement;\n\n if (element.hasAttribute(basicChipAttrName) ||\n element.tagName.toLowerCase() === basicChipAttrName) {\n element.classList.add(basicChipAttrName);\n return;\n } else {\n element.classList.add('mat-standard-chip');\n }\n }\n\n ngOnDestroy() {\n this.destroyed.emit({chip: this});\n this._chipRipple._removeTriggerEvents();\n }\n\n /** Selects the chip. */\n select(): void {\n if (!this._selected) {\n this._selected = true;\n this._dispatchSelectionChange();\n this._markForCheck();\n }\n }\n\n /** Deselects the chip. */\n deselect(): void {\n if (this._selected) {\n this._selected = false;\n this._dispatchSelectionChange();\n this._markForCheck();\n }\n }\n\n /** Select this chip and emit selected event */\n selectViaInteraction(): void {\n if (!this._selected) {\n this._selected = true;\n this._dispatchSelectionChange(true);\n this._markForCheck();\n }\n }\n\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput: boolean = false): boolean {\n this._selected = !this.selected;\n this._dispatchSelectionChange(isUserInput);\n this._markForCheck();\n return this.selected;\n }\n\n /** Allows for programmatic focusing of the chip. */\n focus(): void {\n if (!this._hasFocus) {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({chip: this});\n }\n this._hasFocus = true;\n }\n\n /**\n * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n */\n remove(): void {\n if (this.removable) {\n this.removed.emit({chip: this});\n }\n }\n\n /** Handles click events on the chip. */\n _handleClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n } else {\n event.stopPropagation();\n }\n }\n\n /** Handle custom key presses. */\n _handleKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // If we are removable, remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n case SPACE:\n // If we are selectable, toggle the focused chip\n if (this.selectable) {\n this.toggleSelected(true);\n }\n\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n }\n\n _blur(): void {\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n // that moves focus not the next item. To work around the issue, we defer marking the chip\n // as not focused until the next time the zone stabilizes.\n this._ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._ngZone.run(() => {\n this._hasFocus = false;\n this._onBlur.next({chip: this});\n });\n });\n }\n\n private _dispatchSelectionChange(isUserInput = false) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this._selected\n });\n }\n\n private _markForCheck() {\n // @breaking-change 9.0.0 Remove this method once the _changeDetectorRef is a required param.\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n\n\n/**\n * Applies proper (click) support and adds styling for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * `<mat-chip>\n * <mat-icon matChipRemove>cancel</mat-icon>\n * </mat-chip>`\n *\n * You *may* use a custom icon, but you may need to override the `mat-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\n@Directive({\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-chip-remove mat-chip-trailing-icon',\n '(click)': '_handleClick($event)',\n }\n})\nexport class MatChipRemove {\n constructor(protected _parentChip: MatChip) {}\n\n /** Calls the parent chip's public `remove()` method if applicable. */\n _handleClick(event: Event): void {\n const parentChip = this._parentChip;\n\n if (parentChip.removable && !parentChip.disabled) {\n parentChip.remove();\n }\n\n // We need to stop event propagation because otherwise the event will bubble up to the\n // form field and cause the `onContainerClick` method to be invoked. This method would then\n // reset the focused chip that has been focused after chip removal. Usually the parent\n // the parent click listener of the `MatChip` would prevent propagation, but it can happen\n // that the chip is being removed before the event bubbles up.\n event.stopPropagation();\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 {ObserversModule} from '@angular/cdk/observers';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatCheckbox} from './checkbox';\nimport {MatCheckboxRequiredValidator} from './checkbox-required-validator';\n\n/** This module is used by both original and MDC-based checkbox implementations. */\n@NgModule({\n exports: [MatCheckboxRequiredValidator],\n declarations: [MatCheckboxRequiredValidator],\n})\n// tslint:disable-next-line:class-name\nexport class _MatCheckboxRequiredValidatorModule {\n}\n\n@NgModule({\n imports: [\n CommonModule, MatRippleModule, MatCommonModule, ObserversModule,\n _MatCheckboxRequiredValidatorModule\n ],\n exports: [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule],\n declarations: [MatCheckbox],\n})\nexport class MatCheckboxModule {\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 forwardRef,\n Provider,\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS,\n} from '@angular/forms';\n\nexport const MAT_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatCheckboxRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Material checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mat-checkbox`.\n */\n@Directive({\n selector: `mat-checkbox[required][formControlName],\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]`,\n providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR],\n})\nexport class MatCheckboxRequiredValidator extends CheckboxRequiredValidator {}\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 {FocusMonitor, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n AfterViewChecked,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor,\n CanColorCtor,\n CanDisable,\n CanDisableCtor,\n CanDisableRipple,\n CanDisableRippleCtor,\n HasTabIndex,\n HasTabIndexCtor,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {MAT_CHECKBOX_CLICK_ACTION, MatCheckboxClickAction} from './checkbox-config';\n\n\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n\n/**\n * Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true\n};\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init,\n /** The state representing the component when it's becoming checked. */\n Checked,\n /** The state representing the component when it's becoming unchecked. */\n Unchecked,\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate\n}\n\n/** Change event object emitted by MatCheckbox. */\nexport class MatCheckboxChange {\n /** The source MatCheckbox of the event. */\n source: MatCheckbox;\n /** The new `checked` value of the checkbox. */\n checked: boolean;\n}\n\n// Boilerplate for applying mixins to MatCheckbox.\n/** @docs-private */\nclass MatCheckboxBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatCheckboxMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableRippleCtor &\n CanDisableCtor &\n typeof MatCheckboxBase =\n mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatCheckboxBase)), 'accent'));\n\n\n/**\n * A material design checkbox component. Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A MatCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n * See: https://material.io/design/components/selection-controls.html\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-checkbox',\n templateUrl: 'checkbox.html',\n styleUrls: ['checkbox.css'],\n exportAs: 'matCheckbox',\n host: {\n 'class': 'mat-checkbox',\n '[id]': 'id',\n '[attr.tabindex]': 'null',\n '[class.mat-checkbox-indeterminate]': 'indeterminate',\n '[class.mat-checkbox-checked]': 'checked',\n '[class.mat-checkbox-disabled]': 'disabled',\n '[class.mat-checkbox-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAccessor,\n AfterViewChecked, OnDestroy, CanColor, CanDisable, HasTabIndex, CanDisableRipple,\n FocusableOption {\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel: string = '';\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n private _uniqueId: string = `mat-checkbox-${++nextUniqueId}`;\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n /** Whether the checkbox is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n private _required: boolean;\n\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | null = null;\n\n /** Event emitted when the checkbox's `checked` value changes. */\n @Output() readonly change: EventEmitter<MatCheckboxChange> =\n new EventEmitter<MatCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The value attribute of the native input element */\n @Input() value: string;\n\n /** The native `<input type=\"checkbox\">` element */\n @ViewChild('input', {static: false}) _inputElement: ElementRef<HTMLInputElement>;\n\n /** Reference to the ripple instance of the checkbox. */\n @ViewChild(MatRipple, {static: false}) ripple: MatRipple;\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n _onTouched: () => any = () => {};\n\n private _currentAnimationClass: string = '';\n\n private _currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n constructor(elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _ngZone: NgZone,\n @Attribute('tabindex') tabIndex: string,\n @Optional() @Inject(MAT_CHECKBOX_CLICK_ACTION)\n private _clickAction: MatCheckboxClickAction,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n\n this._focusMonitor.monitor(elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n _changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n // TODO: Delete next major revision.\n ngAfterViewChecked() {}\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /**\n * Whether the checkbox is checked.\n */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n if (value != this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _checked: boolean = false;\n\n /**\n * Whether the checkbox is disabled. This fully overrides the implementation provided by\n * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\n */\n @Input()\n get disabled() { return this._disabled; }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this.disabled) {\n this._disabled = newValue;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _disabled: boolean = false;\n\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input()\n get indeterminate(): boolean { return this._indeterminate; }\n set indeterminate(value: boolean) {\n const changed = value != this._indeterminate;\n this._indeterminate = value;\n\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this._transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n private _indeterminate: boolean = false;\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n _getAriaChecked(): 'true' | 'false' | 'mixed' {\n return this.checked ? 'true' : (this.indeterminate ? 'mixed' : 'false');\n }\n\n private _transitionCheckState(newState: TransitionCheckState) {\n let oldState = this._currentCheckState;\n let element: HTMLElement = this._elementRef.nativeElement;\n\n if (oldState === newState) {\n return;\n }\n if (this._currentAnimationClass.length > 0) {\n element.classList.remove(this._currentAnimationClass);\n }\n\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(\n oldState, newState);\n this._currentCheckState = newState;\n\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n\n private _emitChangeEvent() {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = this.checked;\n\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked;\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @param event\n */\n _onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `checkbox` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && this._clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && this._clickAction !== 'check') {\n\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n\n this.toggle();\n this._transitionCheckState(\n this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n } else if (!this.disabled && this._clickAction === 'noop') {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n /** Focuses the checkbox. */\n focus(origin: FocusOrigin = 'keyboard', options?: FocusOptions): void {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\n\n _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n private _getAnimationClassForCheckStateTransition(\n oldState: TransitionCheckState, newState: TransitionCheckState): string {\n // Don't transition if animations are disabled.\n if (this._animationMode === 'NoopAnimations') {\n return '';\n }\n\n let animSuffix: string = '';\n\n switch (oldState) {\n case TransitionCheckState.Init:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === TransitionCheckState.Checked) {\n animSuffix = 'unchecked-checked';\n } else if (newState == TransitionCheckState.Indeterminate) {\n animSuffix = 'unchecked-indeterminate';\n } else {\n return '';\n }\n break;\n case TransitionCheckState.Unchecked:\n animSuffix = newState === TransitionCheckState.Checked ?\n 'unchecked-checked' : 'unchecked-indeterminate';\n break;\n case TransitionCheckState.Checked:\n animSuffix = newState === TransitionCheckState.Unchecked ?\n 'checked-unchecked' : 'checked-indeterminate';\n break;\n case TransitionCheckState.Indeterminate:\n animSuffix = newState === TransitionCheckState.Checked ?\n 'indeterminate-checked' : 'indeterminate-unchecked';\n break;\n }\n\n return `mat-checkbox-anim-${animSuffix}`;\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 {InjectionToken} from '@angular/core';\n\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type MatCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n\n/**\n * Injection token that can be used to specify the checkbox click behavior.\n */\nexport const MAT_CHECKBOX_CLICK_ACTION =\n new InjectionToken<MatCheckboxClickAction>('mat-checkbox-click-action');\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 {\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n} from './card';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle,\n MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage,\n MatCardXlImage, MatCardAvatar,\n ],\n})\nexport class MatCardModule {}\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 ChangeDetectionStrategy,\n Directive,\n Input,\n Optional,\n Inject,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\n@Directive({\n selector: 'mat-card-content',\n host: {'class': 'mat-card-content'}\n})\nexport class MatCardContent {}\n\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\n@Directive({\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {\n 'class': 'mat-card-title'\n }\n})\nexport class MatCardTitle {}\n\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\n@Directive({\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {\n 'class': 'mat-card-subtitle'\n }\n})\nexport class MatCardSubtitle {}\n\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\n@Directive({\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-card-actions',\n '[class.mat-card-actions-align-end]': 'align === \"end\"',\n }\n})\nexport class MatCardActions {\n /** Position of the actions inside the card. */\n @Input() align: 'start' | 'end' = 'start';\n}\n\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\n@Directive({\n selector: 'mat-card-footer',\n host: {'class': 'mat-card-footer'}\n})\nexport class MatCardFooter {}\n\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-image], [matCardImage]',\n host: {'class': 'mat-card-image'}\n})\nexport class MatCardImage {}\n\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: {'class': 'mat-card-sm-image'}\n})\nexport class MatCardSmImage {}\n\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: {'class': 'mat-card-md-image'}\n})\nexport class MatCardMdImage {}\n\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: {'class': 'mat-card-lg-image'}\n})\nexport class MatCardLgImage {}\n\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: {'class': 'mat-card-xl-image'}\n})\nexport class MatCardXlImage {}\n\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\n@Directive({\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: {'class': 'mat-card-avatar'}\n})\nexport class MatCardAvatar {}\n\n\n/**\n * A basic content container component that adds the styles of a Material design card.\n *\n * While this component can be used alone, it also provides a number\n * of preset styles for common card sections, including:\n * - mat-card-title\n * - mat-card-subtitle\n * - mat-card-content\n * - mat-card-actions\n * - mat-card-footer\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-card',\n exportAs: 'matCard',\n templateUrl: 'card.html',\n styleUrls: ['card.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-card',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }\n})\nexport class MatCard {\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {}\n}\n\n\n/**\n * Component intended to be used within the `<mat-card>` component. It adds styles for a\n * preset header section (i.e. a title, subtitle, and avatar layout).\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-card-header',\n templateUrl: 'card-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-card-header'}\n})\nexport class MatCardHeader {}\n\n\n/**\n * Component intended to be used within the `<mat-card>` component. It adds styles for a preset\n * layout that groups an image with a title section.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-card-title-group',\n templateUrl: 'card-title-group.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-card-title-group'}\n})\nexport class MatCardTitleGroup {}\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, MatRippleModule} from '@angular/material/core';\nimport {MatButtonToggle, MatButtonToggleGroup} from './button-toggle';\n\n\n@NgModule({\n imports: [MatCommonModule, MatRippleModule],\n exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle],\n declarations: [MatButtonToggleGroup, MatButtonToggle],\n})\nexport class MatButtonToggleModule {}\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n InjectionToken,\n Inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanDisableRipple,\n mixinDisableRipple,\n CanDisableRippleCtor,\n} from '@angular/material/core';\n\n\n/** Acceptable types for a button toggle. */\nexport type ToggleType = 'checkbox' | 'radio';\n\n/** Possible appearance styles for the button toggle. */\nexport type MatButtonToggleAppearance = 'legacy' | 'standard';\n\n/**\n * Represents the default options for the button toggle that can be configured\n * using the `MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatButtonToggleDefaultOptions {\n appearance?: MatButtonToggleAppearance;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nexport const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS =\n new InjectionToken<MatButtonToggleDefaultOptions>('MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS');\n\n\n\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true\n};\n\n/**\n * @deprecated Use `MatButtonToggleGroup` instead.\n * @breaking-change 8.0.0\n */\nexport class MatButtonToggleGroupMultiple {}\n\nlet _uniqueIdCounter = 0;\n\n/** Change event object emitted by MatButtonToggle. */\nexport class MatButtonToggleChange {\n constructor(\n /** The MatButtonToggle that emits the event. */\n public source: MatButtonToggle,\n\n /** The value assigned to the MatButtonToggle. */\n public value: any) {}\n}\n\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\n@Directive({\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n {provide: MatButtonToggleGroupMultiple, useExisting: MatButtonToggleGroup},\n ],\n host: {\n 'role': 'group',\n 'class': 'mat-button-toggle-group',\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {\n private _vertical = false;\n private _multiple = false;\n private _disabled = false;\n private _selectionModel: SelectionModel<MatButtonToggle>;\n\n /**\n * Reference to the raw value that the consumer tried to assign. The real\n * value will exclude any values from this one that don't correspond to a\n * toggle. Useful for the cases where the value is assigned before the toggles\n * have been initialized or at the same that they're being swapped out.\n */\n private _rawValue: any;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle)) _buttonToggles: QueryList<MatButtonToggle>;\n\n /** The appearance for all the buttons in the group. */\n @Input() appearance: MatButtonToggleAppearance;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string { return this._name; }\n set name(value: string) {\n this._name = value;\n\n if (this._buttonToggles) {\n this._buttonToggles.forEach(toggle => {\n toggle.name = this._name;\n toggle._markForCheck();\n });\n }\n }\n private _name = `mat-button-toggle-group-${_uniqueIdCounter++}`;\n\n /** Whether the toggle group is vertical. */\n @Input()\n get vertical(): boolean { return this._vertical; }\n set vertical(value: boolean) {\n this._vertical = coerceBooleanProperty(value);\n }\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue: any) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() readonly valueChange = new EventEmitter<any>();\n\n /** Selected button toggles in the group. */\n get selected() {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : (selected[0] || null);\n }\n\n /** Whether multiple button toggles can be selected. */\n @Input()\n get multiple(): boolean { return this._multiple; }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n }\n\n /** Whether multiple button toggle group is disabled. */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._buttonToggles) {\n this._buttonToggles.forEach(toggle => toggle._markForCheck());\n }\n }\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor(\n private _changeDetector: ChangeDetectorRef,\n @Optional() @Inject(MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS)\n defaultOptions?: MatButtonToggleDefaultOptions) {\n\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatButtonToggle>(this.multiple, undefined, false);\n }\n\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(): void {\n const selected = this.selected;\n const source = Array.isArray(selected) ? selected[selected.length - 1] : selected;\n const event = new MatButtonToggleChange(source!, this.value);\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(toggle: MatButtonToggle,\n select: boolean,\n isUserInput = false,\n deferEvents = false) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n (this.selected as MatButtonToggle).checked = false;\n }\n\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n } else {\n this._selectionModel.deselect(toggle);\n }\n } else {\n deferEvents = true;\n }\n\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve(() => this._updateModelValue(isUserInput));\n } else {\n this._updateModelValue(isUserInput);\n }\n }\n\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle: MatButtonToggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle: MatButtonToggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n\n return toggle.value === this._rawValue;\n }\n\n /** Updates the selection state of the toggles in the group based on a value. */\n private _setSelectionByValue(value: any|any[]) {\n this._rawValue = value;\n\n if (!this._buttonToggles) {\n return;\n }\n\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n } else {\n this._clearSelection();\n this._selectValue(value);\n }\n }\n\n /** Clears the selected toggles. */\n private _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => toggle.checked = false);\n }\n\n /** Selects a value if there's a toggle that corresponds to it. */\n private _selectValue(value: any) {\n const correspondingOption = this._buttonToggles.find(toggle => {\n return toggle.value != null && toggle.value === value;\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n this._selectionModel.select(correspondingOption);\n }\n }\n\n /** Syncs up the group's value with the model and emits the change event. */\n private _updateModelValue(isUserInput: boolean) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent();\n }\n\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n}\n\n// Boilerplate for applying mixins to the MatButtonToggle class.\n/** @docs-private */\nclass MatButtonToggleBase {}\nconst _MatButtonToggleMixinBase: CanDisableRippleCtor & typeof MatButtonToggleBase =\n mixinDisableRipple(MatButtonToggleBase);\n\n/** Single button inside of a toggle group. */\n@Component({\n moduleId: module.id,\n selector: 'mat-button-toggle',\n templateUrl: 'button-toggle.html',\n styleUrls: ['button-toggle.css'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matButtonToggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disableRipple'],\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n // Always reset the tabindex to -1 so it doesn't conflict with the one on the `button`,\n // but can still receive focus from things like cdkFocusInitial.\n '[attr.tabindex]': '-1',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n }\n})\nexport class MatButtonToggle extends _MatButtonToggleMixinBase implements OnInit,\n CanDisableRipple, OnDestroy {\n\n private _isSingleSelector = false;\n private _checked = false;\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Type of the button toggle. Either 'radio' or 'checkbox'. */\n _type: ToggleType;\n\n @ViewChild('button', {static: false}) _buttonElement: ElementRef<HTMLButtonElement>;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** Unique ID for the underlying `button` element. */\n get buttonId(): string { return `${this.id}-button`; }\n\n /** The unique ID for this button toggle. */\n @Input() id: string;\n\n /** HTML's 'name' attribute used to group radios for unique selection. */\n @Input() name: string;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input() value: any;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** The appearance style of the button. */\n @Input()\n get appearance(): MatButtonToggleAppearance {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value: MatButtonToggleAppearance) {\n this._appearance = value;\n }\n private _appearance: MatButtonToggleAppearance;\n\n /** Whether the button is checked. */\n @Input()\n get checked(): boolean {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._checked) {\n this._checked = newValue;\n\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Whether the button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value: boolean) { this._disabled = coerceBooleanProperty(value); }\n private _disabled: boolean = false;\n\n /** Event emitted when the group value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor(@Optional() toggleGroup: MatButtonToggleGroup,\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _focusMonitor: FocusMonitor,\n // @breaking-change 8.0.0 `defaultTabIndex` to be made a required parameter.\n @Attribute('tabindex') defaultTabIndex: string,\n @Optional() @Inject(MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS)\n defaultOptions?: MatButtonToggleDefaultOptions) {\n super();\n\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n this.buttonToggleGroup = toggleGroup;\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n\n ngOnInit() {\n this._isSingleSelector = this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n this._type = this._isSingleSelector ? 'radio' : 'checkbox';\n this.id = this.id || `mat-button-toggle-${_uniqueIdCounter++}`;\n\n if (this._isSingleSelector) {\n this.name = this.buttonToggleGroup.name;\n }\n\n if (this.buttonToggleGroup && this.buttonToggleGroup._isPrechecked(this)) {\n this.checked = true;\n }\n\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n\n this._focusMonitor.stopMonitoring(this._elementRef);\n\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n\n /** Focuses the button. */\n focus(options?: FocusOptions): void {\n this._buttonElement.nativeElement.focus(options);\n }\n\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n const newChecked = this._isSingleSelector ? true : !this._checked;\n\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatAnchor, MatButton} from './button';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule,\n MatCommonModule,\n ],\n exports: [\n MatButton,\n MatAnchor,\n MatCommonModule,\n ],\n declarations: [\n MatButton,\n MatAnchor,\n ],\n})\nexport class MatButtonModule {}\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 {FocusMonitor, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n Optional,\n Inject,\n Input,\n} from '@angular/core';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n CanColorCtor,\n CanDisableCtor,\n CanDisableRippleCtor,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Default color palette for round buttons (mat-fab and mat-mini-fab) */\nconst DEFAULT_ROUND_BUTTON_COLOR = 'accent';\n\n/**\n * List of classes to add to MatButton instances based on host attributes to\n * style as different variants.\n */\nconst BUTTON_HOST_ATTRIBUTES = [\n 'mat-button',\n 'mat-flat-button',\n 'mat-icon-button',\n 'mat-raised-button',\n 'mat-stroked-button',\n 'mat-mini-fab',\n 'mat-fab',\n];\n\n// Boilerplate for applying mixins to MatButton.\n/** @docs-private */\nclass MatButtonBase {\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _MatButtonMixinBase: CanDisableRippleCtor & CanDisableCtor & CanColorCtor &\n typeof MatButtonBase = mixinColor(mixinDisabled(mixinDisableRipple(MatButtonBase)));\n\n/**\n * Material design button.\n */\n@Component({\n moduleId: module.id,\n selector: `button[mat-button], button[mat-raised-button], button[mat-icon-button],\n button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],\n button[mat-flat-button]`,\n exportAs: 'matButton',\n host: {\n '[attr.disabled]': 'disabled || null',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n templateUrl: 'button.html',\n styleUrls: ['button.css'],\n inputs: ['disabled', 'disableRipple', 'color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatButton extends _MatButtonMixinBase\n implements OnDestroy, CanDisable, CanColor, CanDisableRipple, FocusableOption {\n\n /** Whether the button is round. */\n readonly isRoundButton: boolean = this._hasHostAttributes('mat-fab', 'mat-mini-fab');\n\n /** Whether the button is icon button. */\n readonly isIconButton: boolean = this._hasHostAttributes('mat-icon-button');\n\n /** Reference to the MatRipple instance of the button. */\n @ViewChild(MatRipple, {static: false}) ripple: MatRipple;\n\n constructor(elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode: string) {\n super(elementRef);\n\n // For each of the variant selectors that is present in the button's host\n // attributes, add the correct corresponding class.\n for (const attr of BUTTON_HOST_ATTRIBUTES) {\n if (this._hasHostAttributes(attr)) {\n (this._getHostElement() as HTMLElement).classList.add(attr);\n }\n }\n\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons. We do it here rather than `host` to ensure that\n // the class is applied to derived classes.\n elementRef.nativeElement.classList.add('mat-button-base');\n\n this._focusMonitor.monitor(this._elementRef, true);\n\n if (this.isRoundButton) {\n this.color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the button. */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Gets whether the button has one of the given attributes. */\n _hasHostAttributes(...attributes: string[]) {\n return attributes.some(attribute => this._getHostElement().hasAttribute(attribute));\n }\n}\n\n/**\n * Material design anchor button.\n */\n@Component({\n moduleId: module.id,\n selector: `a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab],\n a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]`,\n exportAs: 'matButton, matAnchor',\n host: {\n // Note that we ignore the user-specified tabindex when it's disabled for\n // consistency with the `mat-button` applied on native buttons where even\n // though they have an index, they're not tabbable.\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_haltDisabledEvents($event)',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n inputs: ['disabled', 'disableRipple', 'color'],\n templateUrl: 'button.html',\n styleUrls: ['button.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatAnchor extends MatButton {\n /** Tabindex of the button. */\n @Input() tabIndex: number;\n\n constructor(\n focusMonitor: FocusMonitor,\n elementRef: ElementRef,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode: string) {\n super(elementRef, focusMonitor, animationMode);\n }\n\n _haltDisabledEvents(event: Event) {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\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 {Directionality} from '@angular/cdk/bidi';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Injectable,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n InjectionToken,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {of as observableOf} from 'rxjs';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetModule} from './bottom-sheet-module';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\n\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS =\n new InjectionToken<MatBottomSheetConfig>('mat-bottom-sheet-default-options');\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: MatBottomSheetModule})\nexport class MatBottomSheet implements OnDestroy {\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n @Optional() @SkipSelf() private _parentBottomSheet: MatBottomSheet,\n @Optional() private _location?: Location,\n @Optional() @Inject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS)\n private _defaultOptions?: MatBottomSheetConfig) {}\n\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R> {\n\n const _config =\n _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const ref = new MatBottomSheetRef<T, R>(container, overlayRef, this._location);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(new TemplatePortal<T>(componentOrTemplateRef, null!, {\n $implicit: _config.data,\n bottomSheetRef: ref\n } as any));\n } else {\n const portal = new ComponentPortal(componentOrTemplateRef, undefined,\n this._createInjector(_config, ref));\n const contentRef = container.attachComponentPortal(portal);\n ref.instance = contentRef.instance;\n }\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef == ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref;\n\n return ref;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n */\n dismiss(): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the bottom sheet container component to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef,\n config: MatBottomSheetConfig): MatBottomSheetContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatBottomSheetConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatBottomSheetContainer> = overlayRef.attach(containerPortal);\n return containerRef.instance;\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified bottom sheet config.\n */\n private _createOverlay(config: MatBottomSheetConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: config.hasBackdrop,\n disposeOnNavigation: config.closeOnNavigation,\n maxWidth: '100%',\n scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')\n });\n\n if (config.backdropClass) {\n overlayConfig.backdropClass = config.backdropClass;\n }\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a bottom sheet component.\n * @param config Config that was used to create the bottom sheet.\n * @param bottomSheetRef Reference to the bottom sheet.\n */\n private _createInjector<T>(config: MatBottomSheetConfig,\n bottomSheetRef: MatBottomSheetRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap<any, any>([\n [MatBottomSheetRef, bottomSheetRef],\n [MAT_BOTTOM_SHEET_DATA, config.data]\n ]);\n\n if (config.direction &&\n (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n }\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\n\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults: MatBottomSheetConfig,\n config?: MatBottomSheetConfig): MatBottomSheetConfig {\n return {...defaults, ...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 {Location} from '@angular/common';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n instance: T;\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has been dismissed. */\n private readonly _afterDismissed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\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 constructor(\n containerInstance: MatBottomSheetContainer,\n private _overlayRef: OverlayRef,\n // @breaking-change 8.0.0 `_location` parameter to be removed.\n _location?: Location) {\n this.containerInstance = containerInstance;\n this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'done' && event.toState === 'visible'),\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\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n _overlayRef.dispose();\n });\n\n _overlayRef.detachments().pipe(take(1)).subscribe(() => {\n this._afterDismissed.next(this._result);\n this._afterDismissed.complete();\n });\n\n merge(\n _overlayRef.backdropClick(),\n _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n ).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this._afterDismissed.closed) {\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'start'),\n take(1)\n ).subscribe(event => {\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 fired.\n this._closeFallbackTimeout = setTimeout(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n\n this._overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\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 * @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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PortalModule,\n ],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n entryComponents: [MatBottomSheetContainer],\n})\nexport class MatBottomSheetModule {}\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 ComponentRef,\n EmbeddedViewRef,\n ViewChild,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n EventEmitter,\n Inject,\n Optional,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n TemplatePortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {matBottomSheetAnimations} from './bottom-sheet-animations';\nimport {Subscription} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrls: ['bottom-sheet-container.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matBottomSheetAnimations.bottomSheetState],\n host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n 'role': 'dialog',\n 'aria-modal': 'true',\n '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)'\n },\n})\nexport class MatBottomSheetContainer extends BasePortalOutlet implements OnDestroy {\n private _breakpointSubscription: Subscription;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** The class that traps and manages focus within the bottom sheet. */\n private _focusTrap: FocusTrap;\n\n /** Element that was focused before the bottom sheet was opened. */\n private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n /** Server-side rendering-compatible reference to the global document object. */\n private _document: Document;\n\n /** Whether the component has been destroyed. */\n private _destroyed: boolean;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusTrapFactory: FocusTrapFactory,\n breakpointObserver: BreakpointObserver,\n @Optional() @Inject(DOCUMENT) document: any,\n /** The bottom sheet configuration. */\n public bottomSheetConfig: MatBottomSheetConfig) {\n super();\n\n this._document = document;\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n\n /** Attach a component portal as content to this bottom sheet container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this bottom sheet container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'hidden') {\n this._restoreFocus();\n } else if (event.toState === 'visible') {\n this._trapFocus();\n }\n\n this._animationStateChanged.emit(event);\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._animationStateChanged.emit(event);\n }\n\n private _toggleClass(cssClass: string, add: boolean) {\n const classList = this._elementRef.nativeElement.classList;\n add ? classList.add(cssClass) : classList.remove(cssClass);\n }\n\n private _validatePortalAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach bottom sheet content after content is already attached');\n }\n }\n\n private _setPanelClass() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClass = this.bottomSheetConfig.panelClass;\n\n if (Array.isArray(panelClass)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClass.forEach(cssClass => element.classList.add(cssClass));\n } else if (panelClass) {\n element.classList.add(panelClass);\n }\n }\n\n /** Moves the focus inside the focus trap. */\n private _trapFocus() {\n const element = this._elementRef.nativeElement;\n\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(element);\n }\n\n if (this.bottomSheetConfig.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else {\n const activeElement = this._document.activeElement;\n\n // Otherwise ensure that focus is on the 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 bottom sheet already, because it's possible that the\n // consumer turned off `autoFocus` in order to move focus themselves.\n if (activeElement !== element && !element.contains(activeElement)) {\n element.focus();\n }\n }\n }\n\n /** Restores focus to the element that was focused before the bottom sheet was opened. */\n private _restoreFocus() {\n const toFocus = this._elementFocusedBeforeOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n private _savePreviouslyFocusedElement() {\n this._elementFocusedBeforeOpened = this._document.activeElement as HTMLElement;\n\n // The `focus` method isn't available during server-side rendering.\n if (this._elementRef.nativeElement.focus) {\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const matBottomSheetAnimations: {\n readonly bottomSheetState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({transform: 'translateY(100%)'})),\n state('visible', style({transform: 'translateY(0%)'})),\n transition('visible => void, visible => hidden',\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n transition('void => visible',\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\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 {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /** Extra CSS classes to be added to the bottom sheet container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether the bottom sheet 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 // Note that this is disabled by default, because while the a11y recommendations are to focus\n // the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /** Whether the bottom sheet should focus the first focusable element on open. */\n autoFocus?: boolean = false;\n\n /**\n * Whether the bottom sheet 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 bottom sheet. */\n scrollStrategy?: ScrollStrategy;\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 {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n imports: [\n A11yModule,\n MatCommonModule\n ],\n exports: [MatBadge],\n declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\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 {AriaDescriber} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n SimpleChanges,\n isDevMode,\n} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nclass MatBadgeBase {}\n\nconst _MatBadgeMixinBase:\n CanDisableCtor & typeof MatBadgeBase = mixinDisabled(MatBadgeBase);\n\nexport type MatBadgePosition = 'above after' | 'above before' | 'below before' | 'below after';\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Directive to display a text badge. */\n@Directive({\n selector: '[matBadge]',\n inputs: ['disabled: matBadgeDisabled'],\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !_hasContent',\n '[class.mat-badge-disabled]': 'disabled',\n },\n})\nexport class MatBadge extends _MatBadgeMixinBase implements OnDestroy, OnChanges, CanDisable {\n /** Whether the badge has any content. */\n _hasContent = false;\n\n /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n @Input('matBadgeColor')\n get color(): ThemePalette { return this._color; }\n set color(value: ThemePalette) {\n this._setColor(value);\n this._color = value;\n }\n private _color: ThemePalette = 'primary';\n\n /** Whether the badge should overlap its contents or not */\n @Input('matBadgeOverlap')\n get overlap(): boolean { return this._overlap; }\n set overlap(val: boolean) {\n this._overlap = coerceBooleanProperty(val);\n }\n private _overlap: boolean = true;\n\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n /** The content for the badge */\n @Input('matBadge') content: string;\n\n /** Message used to describe the decorated element via aria-describedby */\n @Input('matBadgeDescription')\n get description(): string { return this._description; }\n set description(newDescription: string) {\n if (newDescription !== this._description) {\n const badgeElement = this._badgeElement;\n this._updateHostAriaDescription(newDescription, this._description);\n this._description = newDescription;\n\n if (badgeElement) {\n newDescription ? badgeElement.setAttribute('aria-label', newDescription) :\n badgeElement.removeAttribute('aria-label');\n }\n }\n }\n private _description: string;\n\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n /** Whether the badge is hidden. */\n @Input('matBadgeHidden')\n get hidden(): boolean { return this._hidden; }\n set hidden(val: boolean) {\n this._hidden = coerceBooleanProperty(val);\n }\n private _hidden: boolean;\n\n /** Unique id for the badge */\n _id: number = nextId++;\n\n private _badgeElement: HTMLElement | undefined;\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef<HTMLElement>,\n private _ariaDescriber: AriaDescriber,\n private _renderer: Renderer2,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n super();\n\n if (isDevMode()) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n\n /** Whether the badge is above the host or not */\n isAbove(): boolean {\n return this.position.indexOf('below') === -1;\n }\n\n /** Whether the badge is after the host or not */\n isAfter(): boolean {\n return this.position.indexOf('before') === -1;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const contentChange = changes['content'];\n\n if (contentChange) {\n const value = contentChange.currentValue;\n this._hasContent = value != null && `${value}`.trim().length > 0;\n this._updateTextContent();\n }\n }\n\n ngOnDestroy() {\n const badgeElement = this._badgeElement;\n\n if (badgeElement) {\n if (this.description) {\n this._ariaDescriber.removeDescription(badgeElement, this.description);\n }\n\n // When creating a badge through the Renderer, Angular will keep it in an index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(badgeElement);\n }\n }\n }\n\n /**\n * Gets the element into which the badge's content is being rendered.\n * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement(): HTMLElement | undefined {\n return this._badgeElement;\n }\n\n /** Injects a span element into the DOM with the content. */\n private _updateTextContent(): HTMLSpanElement {\n if (!this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n } else {\n this._badgeElement.textContent = this.content;\n }\n return this._badgeElement;\n }\n\n /** Creates the badge element */\n private _createBadgeElement(): HTMLElement {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n const contentClass = 'mat-badge-content';\n\n // Clear any existing badges which may have persisted from a server-side render.\n this._clearExistingBadges(contentClass);\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n badgeElement.classList.add(contentClass);\n badgeElement.textContent = this.content;\n\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n\n if (this.description) {\n badgeElement.setAttribute('aria-label', this.description);\n }\n\n this._elementRef.nativeElement.appendChild(badgeElement);\n\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n } else {\n badgeElement.classList.add(activeClass);\n }\n\n return badgeElement;\n }\n\n /** Sets the aria-label property on the element */\n private _updateHostAriaDescription(newDescription: string, oldDescription: string): void {\n // ensure content available before setting label\n const content = this._updateTextContent();\n\n if (oldDescription) {\n this._ariaDescriber.removeDescription(content, oldDescription);\n }\n\n if (newDescription) {\n this._ariaDescriber.describe(content, newDescription);\n }\n }\n\n /** Adds css theme class given the color to the component host */\n private _setColor(colorPalette: ThemePalette) {\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-badge-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-badge-${colorPalette}`);\n }\n }\n }\n\n /** Clears any existing badges that might be left over from server-side rendering. */\n private _clearExistingBadges(cssClass: string) {\n const element = this._elementRef.nativeElement;\n let childCount = element.children.length;\n\n // Use a reverse while, because we'll be removing elements from the list as we're iterating.\n while (childCount--) {\n const currentChild = element.children[childCount];\n\n if (currentChild.classList.contains(cssClass)) {\n element.removeChild(currentChild);\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {MatOptionModule, MatCommonModule} from '@angular/material/core';\nimport {MatAutocomplete} from './autocomplete';\nimport {\n MatAutocompleteTrigger,\n MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './autocomplete-trigger';\nimport {MatAutocompleteOrigin} from './autocomplete-origin';\n\n@NgModule({\n imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n exports: [\n MatAutocomplete,\n MatOptionModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n MatCommonModule\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MatAutocompleteModule {}\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 {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW} from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport {_supportsShadowDom} from '@angular/cdk/platform';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n MatOption,\n MatOptionSelectionChange,\n} from '@angular/material/core';\nimport {MatFormField} from '@angular/material/form-field';\nimport {defer, fromEvent, merge, Observable, of as observableOf, Subject, Subscription} from 'rxjs';\nimport {delay, filter, map, switchMap, take, tap} from 'rxjs/operators';\n\nimport {MatAutocomplete} from './autocomplete';\nimport {MatAutocompleteOrigin} from './autocomplete-origin';\n\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the scrollTop of the panel. Because we are not\n * actually focusing the active item, scroll must be handled manually.\n */\n\n/** The height of each autocomplete option. */\nexport const AUTOCOMPLETE_OPTION_HEIGHT = 48;\n\n/** The total height of the autocomplete panel. */\nexport const AUTOCOMPLETE_PANEL_HEIGHT = 256;\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-autocomplete-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nexport const MAT_AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nexport function getMatAutocompleteMissingPanelError(): Error {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n 'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\n\n\n@Directive({\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': '!autocompleteDisabled',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class MatAutocompleteTrigger implements ControlValueAccessor, AfterViewInit, OnChanges,\n OnDestroy {\n private _overlayRef: OverlayRef | null;\n private _portal: TemplatePortal;\n private _componentDestroyed = false;\n private _autocompleteDisabled = false;\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private _previousValue: string | number | null;\n\n /** Strategy that is used to position the panel. */\n private _positionStrategy: FlexibleConnectedPositionStrategy;\n\n /** Whether or not the label state is being overridden. */\n private _manuallyFloatingLabel = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Subscription to viewport size changes. */\n private _viewportSubscription = Subscription.EMPTY;\n\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot: boolean;\n\n /** Stream of keyboard events that can close the panel. */\n private readonly _closeKeyEventStream = new Subject<void>();\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n }\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when autocomplete has been touched` */\n _onTouched = () => {};\n\n /** The autocomplete panel to be attached to this trigger. */\n @Input('matAutocomplete') autocomplete: MatAutocomplete;\n\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n @Input('matAutocompletePosition') position: 'auto' | 'above' | 'below' = 'auto';\n\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n @Input('matAutocompleteConnectedTo') connectedTo: MatAutocompleteOrigin;\n\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n @Input('autocomplete') autocompleteAttribute: string = 'off';\n\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n @Input('matAutocompleteDisabled')\n get autocompleteDisabled(): boolean { return this._autocompleteDisabled; }\n set autocompleteDisabled(value: boolean) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n\n constructor(private _element: ElementRef<HTMLInputElement>, private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n private _zone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any,\n // @breaking-change 8.0.0 Make `_viewportRuler` required.\n private _viewportRuler?: ViewportRuler) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._element.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n\n if (this.panelOpen) {\n this._overlayRef!.updatePosition();\n }\n }\n }\n\n ngOnDestroy() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n\n /** Whether or not the autocomplete panel is open. */\n get panelOpen(): boolean {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n private _overlayAttached: boolean = false;\n\n /** Opens the autocomplete suggestion panel. */\n openPanel(): void {\n this._attachOverlay();\n this._floatLabel();\n }\n\n /** Closes the autocomplete suggestion panel. */\n closePanel(): void {\n this._resetLabel();\n\n if (!this._overlayAttached) {\n return;\n }\n\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n this.autocomplete.closed.emit();\n }\n\n this.autocomplete._isOpen = this._overlayAttached = false;\n\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition(): void {\n if (this._overlayAttached) {\n this._overlayRef!.updatePosition();\n }\n }\n\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions(): Observable<MatOptionSelectionChange|null> {\n return merge(\n this.optionSelections,\n this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)),\n this._closeKeyEventStream,\n this._getOutsideClickStream(),\n this._overlayRef ?\n this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) :\n observableOf()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => event instanceof MatOptionSelectionChange ? event : null)\n );\n }\n\n /** Stream of autocomplete option selections. */\n readonly optionSelections: Observable<MatOptionSelectionChange> = defer(() => {\n if (this.autocomplete && this.autocomplete.options) {\n return merge(...this.autocomplete.options.map(option => option.onSelectionChange));\n }\n\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelections));\n }) as Observable<MatOptionSelectionChange>;\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): MatOption | null {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n\n return null;\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>)\n .pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget =\n (this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] :\n event.target) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return this._overlayAttached && clickTarget !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this._element.nativeElement.disabled = isDisabled;\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n\n if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n } else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption();\n }\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n let target = event.target as HTMLInputElement;\n let value: number | string | null = target.value;\n\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._onChange(value);\n\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n\n _handleFocus(): void {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n } else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n private _floatLabel(shouldAnimate = false): void {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n } else {\n this._formField.floatLabel = 'always';\n }\n\n this._manuallyFloatingLabel = true;\n }\n }\n\n /** If the label has been manually elevated, return it to its normal state. */\n private _resetLabel(): void {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n\n /**\n * Given that we are not actually focusing active options, we must manually adjust scroll\n * to reveal options below the fold. First, we find the offset of the option from the top\n * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n * the panel height + the option height, so the active option will be just visible at the\n * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n * will become the offset. If that offset is visible within the panel already, the scrollTop is\n * not adjusted.\n */\n private _scrollToOption(): void {\n const index = this.autocomplete._keyManager.activeItemIndex || 0;\n const labelCount = _countGroupLabelsBeforeOption(index,\n this.autocomplete.options, this.autocomplete.optionGroups);\n\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n this.autocomplete._setScrollTop(0);\n } else {\n const newScrollPosition = _getOptionScrollPosition(\n index + labelCount,\n AUTOCOMPLETE_OPTION_HEIGHT,\n this.autocomplete._getScrollTop(),\n AUTOCOMPLETE_PANEL_HEIGHT\n );\n\n this.autocomplete._setScrollTop(newScrollPosition);\n }\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private _subscribeToClosingActions(): Subscription {\n const firstStable = this._zone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(\n tap(() => this._positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n\n // When the zone is stable initially, and when the option list changes...\n return merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n\n if (this.panelOpen) {\n this._overlayRef!.updatePosition();\n\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event));\n }\n\n /** Destroys the autocomplete suggestion panel. */\n private _destroyPanel(): void {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n private _setTriggerValue(value: any): void {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\n\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const inputValue = toDisplay != null ? toDisplay : '';\n\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n } else {\n this._element.nativeElement.value = inputValue;\n }\n\n this._previousValue = inputValue;\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private _setValueAndClose(event: MatOptionSelectionChange | null): void {\n if (event && event.source) {\n this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source.value);\n this._onChange(event.source.value);\n this._element.nativeElement.focus();\n this.autocomplete._emitSelectEvent(event.source);\n }\n\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: MatOption) {\n this.autocomplete.options.forEach(option => {\n if (option != skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private _attachOverlay(): void {\n if (!this.autocomplete) {\n throw getMatAutocompleteMissingPanelError();\n }\n\n let overlayRef = this._overlayRef;\n\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this._resetActiveItem();\n this._closeKeyEventStream.next();\n\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n if (this._viewportRuler) {\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({width: this._getPanelWidth()});\n }\n });\n }\n } else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({width: this._getPanelWidth()});\n }\n\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n\n const wasOpen = this.panelOpen;\n\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir\n });\n }\n\n private _getOverlayPosition(): PositionStrategy {\n const strategy = this._overlay.position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n\n /** Sets the positions on a position strategy based on the directive's input state. */\n private _setStrategyPositions(positionStrategy: FlexibleConnectedPositionStrategy) {\n const belowPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n };\n const abovePosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n panelClass: 'mat-autocomplete-panel-above'\n };\n\n let positions: ConnectedPosition[];\n\n if (this.position === 'above') {\n positions = [abovePosition];\n } else if (this.position === 'below') {\n positions = [belowPosition];\n } else {\n positions = [belowPosition, abovePosition];\n }\n\n positionStrategy.withPositions(positions);\n }\n\n private _getConnectedElement(): ElementRef {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n\n private _getPanelWidth(): number | string {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n\n /** Returns the width of the input element, so the panel width can match it. */\n private _getHostWidth(): number {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n private _resetActiveItem(): void {\n this.autocomplete._keyManager.setActiveItem(this.autocomplete.autoActiveFirstOption ? 0 : -1);\n }\n\n /** Determines whether the panel can be opened. */\n private _canOpen(): boolean {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\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 {Directive, ElementRef} from '@angular/core';\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\n@Directive({\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n})\nexport class MatAutocompleteOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n public elementRef: ElementRef<HTMLElement>) { }\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 {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisableRipple,\n CanDisableRippleCtor,\n MAT_OPTION_PARENT_COMPONENT,\n MatOptgroup,\n MatOption,\n mixinDisableRipple,\n} from '@angular/material/core';\n\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n\n/** Event object that is emitted when an autocomplete option is selected. */\nexport class MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n public source: MatAutocomplete,\n /** Option that was selected. */\n public option: MatOption) { }\n}\n\n\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nclass MatAutocompleteBase {}\nconst _MatAutocompleteMixinBase: CanDisableRippleCtor & typeof MatAutocompleteBase =\n mixinDisableRipple(MatAutocompleteBase);\n\n/** Default `mat-autocomplete` options that can be overridden. */\nexport interface MatAutocompleteDefaultOptions {\n /** Whether the first option should be highlighted when an autocomplete panel is opened. */\n autoActiveFirstOption?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nexport const MAT_AUTOCOMPLETE_DEFAULT_OPTIONS =\n new InjectionToken<MatAutocompleteDefaultOptions>('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): MatAutocompleteDefaultOptions {\n return {autoActiveFirstOption: false};\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-autocomplete',\n templateUrl: 'autocomplete.html',\n styleUrls: ['autocomplete.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n inputs: ['disableRipple'],\n host: {\n 'class': 'mat-autocomplete'\n },\n providers: [\n {provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete}\n ]\n})\nexport class MatAutocomplete extends _MatAutocompleteMixinBase implements AfterContentInit,\n CanDisableRipple {\n\n /** Manages active item in option list based on key events. */\n _keyManager: ActiveDescendantKeyManager<MatOption>;\n\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel: boolean = false;\n\n /** Whether the autocomplete panel is open. */\n get isOpen(): boolean { return this._isOpen && this.showPanel; }\n _isOpen: boolean = false;\n\n // The @ViewChild query for TemplateRef here needs to be static because some code paths\n // lead to the overlay being created before change detection has finished for this component.\n // Notably, another component may trigger `focus` on the autocomplete-trigger.\n\n /** @docs-private */\n @ViewChild(TemplateRef, {static: true}) template: TemplateRef<any>;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild('panel', {static: false}) panel: ElementRef;\n\n /** @docs-private */\n @ContentChildren(MatOption, {descendants: true}) options: QueryList<MatOption>;\n\n /** @docs-private */\n @ContentChildren(MatOptgroup) optionGroups: QueryList<MatOptgroup>;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n @Input()\n get autoActiveFirstOption(): boolean { return this._autoActiveFirstOption; }\n set autoActiveFirstOption(value: boolean) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n private _autoActiveFirstOption: boolean;\n\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n @Input() panelWidth: string | number;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<MatAutocompleteSelectedEvent> =\n new EventEmitter<MatAutocompleteSelectedEvent>();\n\n /** Event that is emitted when the autocomplete panel is opened. */\n @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event that is emitted when the autocomplete panel is closed. */\n @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n @Input('class')\n set classList(value: string) {\n if (value && value.length) {\n this._classList = value.split(' ').reduce((classList, className) => {\n classList[className.trim()] = true;\n return classList;\n }, {} as {[key: string]: boolean});\n } else {\n this._classList = {};\n }\n\n this._setVisibilityClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n _classList: {[key: string]: boolean} = {};\n\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id: string = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS) defaults: MatAutocompleteDefaultOptions) {\n super();\n\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options).withWrap();\n // Set the initial visibility state.\n this._setVisibility();\n }\n\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop: number): void {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n\n /** Returns the panel's scrollTop. */\n _getScrollTop(): number {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits the `select` event. */\n _emitSelectEvent(option: MatOption): void {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n private _setVisibilityClasses(classList: {[key: string]: boolean}) {\n classList['mat-autocomplete-visible'] = this.showPanel;\n classList['mat-autocomplete-hidden'] = !this.showPanel;\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {MatError} from './error';\nimport {MatFormField} from './form-field';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\n\n\n@NgModule({\n declarations: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n imports: [\n CommonModule,\n ObserversModule,\n ],\n exports: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n})\nexport class MatFormFieldModule {}\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 {Direction, Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n OnDestroy,\n} from '@angular/core';\nimport {\n CanColor, CanColorCtor,\n FloatLabelType,\n LabelOptions,\n MAT_LABEL_GLOBAL_OPTIONS,\n mixinColor,\n} from '@angular/material/core';\nimport {fromEvent, merge, Subject} from 'rxjs';\nimport {startWith, take, takeUntil} from 'rxjs/operators';\nimport {MatError} from './error';\nimport {matFormFieldAnimations} from './form-field-animations';\nimport {MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n getMatFormFieldPlaceholderConflictError,\n} from './form-field-errors';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\nimport {Platform} from '@angular/cdk/platform';\nimport {NgControl} from '@angular/forms';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextUniqueId = 0;\nconst floatingLabelScale = 0.75;\nconst outlineGapPadding = 5;\n\n\n/**\n * Boilerplate for applying mixins to MatFormField.\n * @docs-private\n */\nclass MatFormFieldBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\n/**\n * Base class to which we're applying the form field mixins.\n * @docs-private\n */\nconst _MatFormFieldMixinBase: CanColorCtor & typeof MatFormFieldBase =\n mixinColor(MatFormFieldBase, 'primary');\n\n/** Possible appearance styles for the form field. */\nexport type MatFormFieldAppearance = 'legacy' | 'standard' | 'fill' | 'outline';\n\n/**\n * Represents the default options for the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatFormFieldDefaultOptions {\n appearance?: MatFormFieldAppearance;\n hideRequiredMarker?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const MAT_FORM_FIELD_DEFAULT_OPTIONS =\n new InjectionToken<MatFormFieldDefaultOptions>('MAT_FORM_FIELD_DEFAULT_OPTIONS');\n\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n moduleId: module.id,\n selector: 'mat-form-field',\n exportAs: 'matFormField',\n templateUrl: 'form-field.html',\n // MatInput is a directive and can't have styles, so we need to include its styles here\n // in form-field-input.css. The MatInput styles are fairly minimal so it shouldn't be a\n // big deal for people who aren't using MatInput.\n styleUrls: [\n 'form-field.css',\n 'form-field-fill.css',\n 'form-field-input.css',\n 'form-field-legacy.css',\n 'form-field-outline.css',\n 'form-field-standard.css',\n ],\n animations: [matFormFieldAnimations.transitionMessages],\n host: {\n 'class': 'mat-form-field',\n '[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-can-float]': '_canLabelFloat',\n '[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n '[class.mat-form-field-has-label]': '_hasFloatingLabel()',\n '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class MatFormField extends _MatFormFieldMixinBase\n implements AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy, CanColor {\n private _labelOptions: LabelOptions;\n\n /**\n * Whether the outline gap needs to be calculated\n * immediately on the next change detection run.\n */\n private _outlineGapCalculationNeededImmediately = false;\n\n /** Whether the outline gap needs to be calculated next time the zone has stabilized. */\n private _outlineGapCalculationNeededOnStable = false;\n\n private _destroyed = new Subject<void>();\n\n /** The form-field appearance style. */\n @Input()\n get appearance(): MatFormFieldAppearance { return this._appearance; }\n set appearance(value: MatFormFieldAppearance) {\n const oldValue = this._appearance;\n\n this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';\n\n if (this._appearance === 'outline' && oldValue !== value) {\n this._outlineGapCalculationNeededOnStable = true;\n }\n }\n _appearance: MatFormFieldAppearance;\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker(): boolean { return this._hideRequiredMarker; }\n set hideRequiredMarker(value: boolean) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n private _hideRequiredMarker: boolean;\n\n /** Override for the logic that disables the label animation in certain cases. */\n private _showAlwaysAnimate = false;\n\n /** Whether the floating label should always float or not. */\n get _shouldAlwaysFloat(): boolean {\n return this.floatLabel === 'always' && !this._showAlwaysAnimate;\n }\n\n /** Whether the label can float or not. */\n get _canLabelFloat(): boolean { return this.floatLabel !== 'never'; }\n\n /** State of the mat-hint and mat-error animations. */\n _subscriptAnimationState: string = '';\n\n /** Text for the form field hint. */\n @Input()\n get hintLabel(): string { return this._hintLabel; }\n set hintLabel(value: string) {\n this._hintLabel = value;\n this._processHints();\n }\n private _hintLabel = '';\n\n // Unique id for the hint label.\n _hintLabelId: string = `mat-hint-${nextUniqueId++}`;\n\n // Unique id for the internal form field label.\n _labelId = `mat-form-field-label-${nextUniqueId++}`;\n\n /**\n * Whether the label should always float, never float or float as the user types.\n *\n * Note: only the legacy appearance supports the `never` option. `never` was originally added as a\n * way to make the floating label emulate the behavior of a standard input placeholder. However\n * the form field now supports both floating labels and placeholders. Therefore in the non-legacy\n * appearances the `never` option has been disabled in favor of just using the placeholder.\n */\n @Input()\n get floatLabel(): FloatLabelType {\n return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;\n }\n set floatLabel(value: FloatLabelType) {\n if (value !== this._floatLabel) {\n this._floatLabel = value || this._labelOptions.float || 'auto';\n this._changeDetectorRef.markForCheck();\n }\n }\n private _floatLabel: FloatLabelType;\n\n /** Whether the Angular animations are enabled. */\n _animationsEnabled: boolean;\n\n /* Holds the previous direction emitted by directionality service change emitter.\n This is used in updateOutlineGap() method to update the width and position of the gap in the\n outline. Only relevant for the outline appearance. The direction is getting updated in the\n UI after directionality service change emission. So the outlines gaps are getting\n updated in updateOutlineGap() method before connectionContainer child direction change\n in UI. We may get wrong calculations. So we are storing the previous direction to get the\n correct outline calculations*/\n private _previousDirection: Direction = 'ltr';\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ViewChild('underline', {static: false}) underlineRef: ElementRef;\n\n @ViewChild('connectionContainer', {static: true}) _connectionContainerRef: ElementRef;\n @ViewChild('inputContainer', {static: false}) _inputContainerRef: ElementRef;\n @ViewChild('label', {static: false}) private _label: ElementRef;\n\n @ContentChild(MatFormFieldControl, {static: false}) _controlNonStatic: MatFormFieldControl<any>;\n @ContentChild(MatFormFieldControl, {static: true}) _controlStatic: MatFormFieldControl<any>;\n get _control() {\n // TODO(crisbeto): we need this hacky workaround in order to support both Ivy\n // and ViewEngine. We should clean this up once Ivy is the default renderer.\n return this._explicitFormFieldControl || this._controlNonStatic || this._controlStatic;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n private _explicitFormFieldControl: MatFormFieldControl<any>;\n\n @ContentChild(MatLabel, {static: false}) _labelChildNonStatic: MatLabel;\n @ContentChild(MatLabel, {static: true}) _labelChildStatic: MatLabel;\n get _labelChild() {\n return this._labelChildNonStatic || this._labelChildStatic;\n }\n\n @ContentChild(MatPlaceholder, {static: false}) _placeholderChild: MatPlaceholder;\n @ContentChildren(MatError) _errorChildren: QueryList<MatError>;\n @ContentChildren(MatHint) _hintChildren: QueryList<MatHint>;\n @ContentChildren(MatPrefix) _prefixChildren: QueryList<MatPrefix>;\n @ContentChildren(MatSuffix) _suffixChildren: QueryList<MatSuffix>;\n\n constructor(\n public _elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_LABEL_GLOBAL_OPTIONS) labelOptions: LabelOptions,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) private _defaults:\n MatFormFieldDefaultOptions, private _platform: Platform, private _ngZone: NgZone,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) _animationMode: string) {\n super(_elementRef);\n\n this._labelOptions = labelOptions ? labelOptions : {};\n this.floatLabel = this._labelOptions.float || 'auto';\n this._animationsEnabled = _animationMode !== 'NoopAnimations';\n\n // Set the default through here so we invoke the setter on the first run.\n this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';\n this._hideRequiredMarker = (_defaults && _defaults.hideRequiredMarker != null) ?\n _defaults.hideRequiredMarker : false;\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._connectionContainerRef || this._elementRef;\n }\n\n ngAfterContentInit() {\n this._validateControlChild();\n\n const control = this._control;\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-form-field-type-${control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.pipe(startWith(null!)).subscribe(() => {\n this._validatePlaceholders();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n // Note that we have to run outside of the `NgZone` explicitly,\n // in order to avoid throwing users into an infinite loop\n // if `zone-patch-rxjs` is included.\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.asObservable().pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._outlineGapCalculationNeededOnStable) {\n this.updateOutlineGap();\n }\n });\n });\n\n // Run change detection and update the outline if the suffix or prefix changes.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._outlineGapCalculationNeededOnStable = true;\n this._changeDetectorRef.markForCheck();\n });\n\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n if (this._dir) {\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this.updateOutlineGap();\n this._previousDirection = this._dir.value;\n });\n }\n }\n\n ngAfterContentChecked() {\n this._validateControlChild();\n if (this._outlineGapCalculationNeededImmediately) {\n this.updateOutlineGap();\n }\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n _shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this._control ? this._control.ngControl : null;\n return ngControl && ngControl[prop];\n }\n\n _hasPlaceholder() {\n return !!(this._control && this._control.placeholder || this._placeholderChild);\n }\n\n _hasLabel() {\n return !!this._labelChild;\n }\n\n _shouldLabelFloat() {\n return this._canLabelFloat && (this._control.shouldLabelFloat || this._shouldAlwaysFloat);\n }\n\n _hideControlPlaceholder() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this.appearance === 'legacy' && !this._hasLabel() ||\n this._hasLabel() && !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this._hasLabel() || this.appearance === 'legacy' && this._hasPlaceholder();\n }\n\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages(): 'error' | 'hint' {\n return (this._errorChildren && this._errorChildren.length > 0 &&\n this._control.errorState) ? 'error' : 'hint';\n }\n\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel(): void {\n if (this._hasFloatingLabel() && this._canLabelFloat) {\n // If animations are disabled, we shouldn't go in here,\n // because the `transitionend` will never fire.\n if (this._animationsEnabled) {\n this._showAlwaysAnimate = true;\n\n fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(() => {\n this._showAlwaysAnimate = false;\n });\n }\n\n this.floatLabel = 'always';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n * or child element with the `mat-placeholder` directive).\n */\n private _validatePlaceholders() {\n if (this._control.placeholder && this._placeholderChild) {\n throw getMatFormFieldPlaceholderConflictError();\n }\n }\n\n /** Does any extra processing that is required when handling the hints. */\n private _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /**\n * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n * attribute being considered as `align=\"start\"`.\n */\n private _validateHints() {\n if (this._hintChildren) {\n let startHint: MatHint;\n let endHint: MatHint;\n this._hintChildren.forEach((hint: MatHint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n private _syncDescribedByIds() {\n if (this._control) {\n let ids: string[] = [];\n\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'start') : null;\n const endHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'end') : null;\n\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids = this._errorChildren.map(error => error.id);\n }\n\n this._control.setDescribedByIds(ids);\n }\n }\n\n /** Throws an error if the form field's control is missing. */\n protected _validateControlChild() {\n if (!this._control) {\n throw getMatFormFieldMissingControlError();\n }\n }\n\n /**\n * Updates the width and position of the gap in the outline. Only relevant for the outline\n * appearance.\n */\n updateOutlineGap() {\n const labelEl = this._label ? this._label.nativeElement : null;\n\n if (this.appearance !== 'outline' || !labelEl || !labelEl.children.length ||\n !labelEl.textContent.trim()) {\n return;\n }\n\n if (!this._platform.isBrowser) {\n // getBoundingClientRect isn't available on the server.\n return;\n }\n // If the element is not present in the DOM, the outline gap will need to be calculated\n // the next time it is checked and in the DOM.\n if (!document.documentElement!.contains(this._elementRef.nativeElement)) {\n this._outlineGapCalculationNeededImmediately = true;\n return;\n }\n\n let startWidth = 0;\n let gapWidth = 0;\n\n const container = this._connectionContainerRef.nativeElement;\n const startEls = container.querySelectorAll('.mat-form-field-outline-start');\n const gapEls = container.querySelectorAll('.mat-form-field-outline-gap');\n\n if (this._label && this._label.nativeElement.children.length) {\n const containerRect = container.getBoundingClientRect();\n\n // If the container's width and height are zero, it means that the element is\n // invisible and we can't calculate the outline gap. Mark the element as needing\n // to be checked the next time the zone stabilizes. We can't do this immediately\n // on the next change detection, because even if the element becomes visible,\n // the `ClientRect` won't be reclaculated immediately. We reset the\n // `_outlineGapCalculationNeededImmediately` flag some we don't run the checks twice.\n if (containerRect.width === 0 && containerRect.height === 0) {\n this._outlineGapCalculationNeededOnStable = true;\n this._outlineGapCalculationNeededImmediately = false;\n return;\n }\n\n const containerStart = this._getStartEnd(containerRect);\n const labelStart = this._getStartEnd(labelEl.children[0].getBoundingClientRect());\n let labelWidth = 0;\n\n for (const child of labelEl.children) {\n labelWidth += child.offsetWidth;\n }\n startWidth = labelStart - containerStart - outlineGapPadding;\n gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;\n }\n\n for (let i = 0; i < startEls.length; i++) {\n startEls.item(i).style.width = `${startWidth}px`;\n }\n for (let i = 0; i < gapEls.length; i++) {\n gapEls.item(i).style.width = `${gapWidth}px`;\n }\n\n this._outlineGapCalculationNeededOnStable =\n this._outlineGapCalculationNeededImmediately = false;\n }\n\n /** Gets the start end of the rect considering the current directionality. */\n private _getStartEnd(rect: ClientRect): number {\n return this._previousDirection === 'rtl' ? rect.right : rect.left;\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 {Directive} from '@angular/core';\n\n\n/** Suffix to be placed at the end of the form field. */\n@Directive({\n selector: '[matSuffix]',\n})\nexport class MatSuffix {}\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 {Directive} from '@angular/core';\n\n\n/** Prefix to be placed in front of the form field. */\n@Directive({\n selector: '[matPrefix]',\n})\nexport class MatPrefix {}\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 {Directive} from '@angular/core';\n\n\n/**\n * The placeholder text for an `MatFormField`.\n * @deprecated Use `<mat-label>` to specify the label and the `placeholder` attribute to specify the\n * placeholder.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'mat-placeholder'\n})\nexport class MatPlaceholder {}\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 {Directive} from '@angular/core';\n\n\n/** The floating label for a `mat-form-field`. */\n@Directive({\n selector: 'mat-label'\n})\nexport class MatLabel {}\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 {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Hint text to be shown underneath the form field control. */\n@Directive({\n selector: 'mat-hint',\n host: {\n 'class': 'mat-hint',\n '[class.mat-right]': 'align == \"end\"',\n '[attr.id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n }\n})\nexport class MatHint {\n /** Whether to align the hint label at the start or end of the line. */\n @Input() align: 'start' | 'end' = 'start';\n\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n @Input() id: string = `mat-hint-${nextUniqueId++}`;\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 getMatFormFieldPlaceholderConflictError(): Error {\n return Error('Placeholder attribute and child element were both specified.');\n}\n\n/** @docs-private */\nexport function getMatFormFieldDuplicatedHintError(align: string): Error {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n\n/** @docs-private */\nexport function getMatFormFieldMissingControlError(): Error {\n return Error('mat-form-field must contain a MatFormFieldControl.');\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} from 'rxjs';\nimport {NgControl} from '@angular/forms';\n\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nexport abstract class MatFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MatFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the `MatFormField` label should try to float. */\n readonly shouldLabelFloat: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mat-form-field` elements\n * based on their control type. The form field will add a class,\n * `mat-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the input is currently in an autofilled state. If property is not present on the\n * control it is assumed to be false.\n */\n readonly autofilled?: boolean;\n\n /** Sets the list of element IDs that currently describe this control. */\n abstract setDescribedByIds(ids: string[]): void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\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 the MatFormField.\n * @docs-private\n */\nexport const matFormFieldAnimations: {\n readonly transitionMessages: AnimationTriggerMetadata\n} = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-100%)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\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 {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Single error message to be shown underneath the form field. */\n@Directive({\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n 'role': 'alert',\n '[attr.id]': 'id',\n }\n})\nexport class MatError {\n @Input() id: string = `mat-error-${nextUniqueId++}`;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * 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 {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\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 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 @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(_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\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 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 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 {coerceElement} from '@angular/cdk/coercion';\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 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 // 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(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._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 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 // 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 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 {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.2.2');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): boolean {\n return true;\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/**\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.2.2');\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n"],"names":["DataSource","merge","map","BehaviorSubject","tslib_1.__extends","take","CdkTreeModule","CommonModule","NgModule","CdkTreeNodeToggle","Input","Directive","ViewEncapsulation","Component","Inject","CDK_TREE_NODE_OUTLET_NODE","Optional","ViewContainerRef","CdkTreeNodeOutlet","CdkTreeNodePadding","CdkNestedTreeNode","Attribute","IterableDiffers","CdkTree","ElementRef","CdkTreeNode","coerceBooleanProperty","CdkTreeNodeDef","DOCUMENT","ChangeDetectionStrategy","isDevMode","A11yModule","ObserversModule","PortalModule","ANIMATION_MODULE_TYPE","FocusMonitor","Platform","NgZone","platform","ViewChild","ViewportRuler","ChangeDetectorRef","Directionality","startWith","takeUntil","timer","SPACE","ENTER","END","HOME","hasModifierKey","FocusKeyManager","observableOf","fromEvent","passiveEventListenerOptions","coerceNumberProperty","EventEmitter","Subject","normalizePassiveListenerOptions","Output","nextId","Subscription","InjectionToken","distinctUntilChanged","CdkPortalOutlet","forwardRef","ComponentFactoryResolver","animate","style","transition","state","trigger","TemplateRef","TemplatePortal","CdkPortal","combineLatest","_isNumberValue","CdkTableModule","CdkRow","CdkFooterRow","CdkHeaderRow","CDK_ROW_TEMPLATE","CdkRowDef","CdkFooterRowDef","CdkHeaderRowDef","CdkCell","CdkColumnDef","CdkFooterCell","CdkHeaderCell","CdkFooterCellDef","CdkHeaderCellDef","CdkCellDef","CdkTable","CDK_TABLE_TEMPLATE","CdkStepperModule","CdkStepperPrevious","CdkStepperNext","CdkStepper","ContentChildren","STEPPER_GLOBAL_OPTIONS","stepper","SkipSelf","Injectable","CdkStepLabel","query","animateChild","keyframes","BreakpointObserver","Injector","LiveAnnouncer","Overlay","PortalInjector","OverlayConfig","Breakpoints","portal","ComponentPortal","tslib_1.__assign","OverlayModule","HAMMER_GESTURE_CONFIG","DOWN_ARROW","RIGHT_ARROW","UP_ARROW","LEFT_ARROW","PAGE_DOWN","PAGE_UP","NG_VALUE_ACCESSOR","CheckboxRequiredValidator","NG_VALIDATORS","nextUniqueId","PlatformModule","ScrollingModule","ContentChild","ScrollDispatcher","debounceTime","HostListener","HostBinding","UniqueSelectionDispatcher","filter","inject","HAMMER_LOADER","AriaDescriber","overlay","ESCAPE","CdkConnectedOverlay","NgControl","Self","FormGroupDirective","NgForm","ActiveDescendantKeyManager","A","SelectionModel","switchMap","defer","delay","asapScheduler","isFakeMousedownFromScreenReader","QueryList","ApplicationRef","DomPortalOutlet","group","ErrorHandler","ɵ0","DomSanitizer","HttpClient","share","finalize","SecurityContext","forkJoin","catchError","tap","observableThrow","CdkAccordionModule","CdkAccordion","EMPTY","accordion","uniqueId","Validators","TextFieldModule","AutofillMonitor","getSupportedInputTypes","CdkTextareaAutosize","_applyConfigDefaults","OverlayContainer","Location","TAB","BACKSPACE","DELETE","_uniqueIdCounter","FocusTrapFactory","Renderer2","Host","_supportsShadowDom","coerceElement","HammerGestureConfig","LOCALE_ID","Observable","BidiModule","CDK_VERSION","VERSION","Version"],"mappings":"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"}
\No newline at end of file