UNPKG

1.61 MBSource Map (JSON)View Raw
1{"version":3,"file":"nix-component-library.umd.js","sources":["~/nix-component-library/src/app/modules/mat-user-management/mat-user-management.module.ts","~/nix-component-library/src/app/modules/mat-user-management/mat-user-management/mat-user-management.component.ts","~/nix-component-library/src/app/modules/mat-user-management/user-list/user-list.component.ts","~/nix-component-library/src/app/modules/mat-user-management/user.service.ts","~/nix-component-library/src/environments/environment.ts","~/nix-component-library/src/app/modules/mat-user-management/user-form/user-form.component.ts","~/nix-component-library/src/app/modules/mat-user-management/user-identity.ts","~/nix-component-library/src/app/modules/mat-user-management/gender.ts","~/nix-component-library/src/app/modules/mat-user-management/user.ts","~/nix-component-library/src/app/modules/mat-user-management/delete-confirmation/delete-confirmation.component.ts","../../../node_modules/@angular/src/lib/version.ts","../../../node_modules/src/lib/toolbar/toolbar.ts","../../../node_modules/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts","../../../node_modules/src/lib/tabs/tab-header.ts","../../../node_modules/src/lib/tabs/tab-label-wrapper.ts","../../../node_modules/src/lib/tabs/tab-group.ts","../../../node_modules/src/lib/tabs/tab-body.ts","../../../node_modules/src/lib/tabs/tabs-animations.ts","../../../node_modules/src/lib/tabs/tab.ts","../../../node_modules/src/lib/tabs/tab-label.ts","../../../node_modules/src/lib/tabs/ink-bar.ts","../../../node_modules/src/lib/table/table-data-source.ts","../../../node_modules/src/lib/table/table-module.ts","../../../node_modules/src/lib/table/row.ts","../../../node_modules/src/lib/table/cell.ts","../../../node_modules/src/lib/table/table.ts","../../../node_modules/src/operators/combineLatest.ts","../../../node_modules/src/lib/stepper/stepper-button.ts","../../../node_modules/src/lib/stepper/stepper.ts","../../../node_modules/src/lib/stepper/stepper-icon.ts","../../../node_modules/src/lib/stepper/stepper-animations.ts","../../../node_modules/src/lib/stepper/step-header.ts","../../../node_modules/src/lib/stepper/stepper-intl.ts","../../../node_modules/src/lib/stepper/step-label.ts","../../../node_modules/src/lib/sort/sort-module.ts","../../../node_modules/src/lib/sort/sort-header.ts","../../../node_modules/src/lib/sort/sort-animations.ts","../../../node_modules/src/lib/sort/sort-header-intl.ts","../../../node_modules/src/lib/sort/sort.ts","../../../node_modules/src/lib/sort/sort-errors.ts","../../../node_modules/src/lib/snack-bar/snack-bar.ts","../../../node_modules/src/lib/snack-bar/snack-bar-container.ts","../../../node_modules/src/lib/snack-bar/simple-snack-bar.ts","../../../node_modules/src/lib/snack-bar/snack-bar-animations.ts","../../../node_modules/src/lib/snack-bar/snack-bar-config.ts","../../../node_modules/src/lib/snack-bar/snack-bar-ref.ts","../../../node_modules/src/lib/slider/slider.ts","../../../node_modules/src/lib/slide-toggle/slide-toggle.ts","../../../node_modules/src/lib/sidenav/sidenav-module.ts","../../../node_modules/src/lib/sidenav/sidenav.ts","../../../node_modules/src/lib/sidenav/drawer.ts","../../../node_modules/src/lib/sidenav/drawer-animations.ts","../../../node_modules/src/operators/debounceTime.ts","../../../node_modules/src/lib/radio/radio.ts","../../../node_modules/src/lib/progress-spinner/progress-spinner.ts","../../../node_modules/src/lib/progress-bar/progress-bar.ts","../../../node_modules/src/lib/paginator/paginator-module.ts","../../../node_modules/src/lib/paginator/paginator.ts","../../../node_modules/src/lib/paginator/paginator-intl.ts","../../../node_modules/src/lib/tooltip/tooltip-module.ts","../../../node_modules/src/lib/tooltip/tooltip.ts","../../../node_modules/src/lib/tooltip/tooltip-animations.ts","../../../node_modules/src/cdk/layout/public-api.ts","../../../node_modules/src/cdk/layout/breakpoints.ts","../../../node_modules/src/cdk/layout/breakpoints-observer.ts","../../../node_modules/src/cdk/layout/media-matcher.ts","../../../node_modules/src/lib/select/select-module.ts","../../../node_modules/src/lib/select/select.ts","../../../node_modules/src/lib/select/select-errors.ts","../../../node_modules/src/lib/select/select-animations.ts","../../../node_modules/src/lib/menu/menu-trigger.ts","../../../node_modules/src/lib/menu/menu-directive.ts","../../../node_modules/src/lib/menu/menu-content.ts","../../../node_modules/src/lib/menu/menu-item.ts","../../../node_modules/src/lib/menu/menu-errors.ts","../../../node_modules/src/lib/menu/menu-animations.ts","../../../node_modules/src/lib/list/selection-list.ts","../../../node_modules/src/lib/list/list.ts","../../../node_modules/src/lib/icon/icon.ts","../../../node_modules/src/lib/icon/icon-registry.ts","../../../node_modules/src/operators/share.ts","../../../node_modules/src/operators/multicast.ts","../../../node_modules/src/observable/ConnectableObservable.ts","../../../node_modules/src/operators/refCount.ts","../../../node_modules/src/Subject.ts","../../../node_modules/src/SubjectSubscription.ts","../../../node_modules/src/util/ObjectUnsubscribedError.ts","../../../node_modules/src/operators/map.ts","../../../node_modules/src/operators/finalize.ts","../../../node_modules/src/operators/catchError.ts","../../../node_modules/src/lib/grid-list/grid-list.ts","../../../node_modules/src/lib/grid-list/tile-styler.ts","../../../node_modules/src/lib/grid-list/tile-coordinator.ts","../../../node_modules/src/lib/grid-list/grid-tile.ts","../../../node_modules/src/lib/grid-list/grid-list-measure.ts","../../../node_modules/src/lib/expansion/expansion-panel-header.ts","../../../node_modules/src/lib/expansion/expansion-panel.ts","../../../node_modules/src/lib/expansion/expansion-animations.ts","../../../node_modules/src/lib/expansion/expansion-panel-content.ts","../../../node_modules/src/lib/expansion/accordion.ts","../../../node_modules/src/cdk/accordion/accordion-item.ts","../../../node_modules/src/cdk/accordion/accordion.ts","../../../node_modules/src/lib/divider/divider.ts","../../../node_modules/src/lib/datepicker/datepicker-module.ts","../../../node_modules/src/lib/datepicker/datepicker-toggle.ts","../../../node_modules/src/lib/datepicker/datepicker-input.ts","../../../node_modules/src/lib/datepicker/datepicker.ts","../../../node_modules/src/lib/datepicker/calendar.ts","../../../node_modules/src/lib/datepicker/year-view.ts","../../../node_modules/src/lib/datepicker/multi-year-view.ts","../../../node_modules/src/lib/datepicker/month-view.ts","../../../node_modules/src/lib/datepicker/calendar-body.ts","../../../node_modules/src/lib/datepicker/datepicker-intl.ts","../../../node_modules/src/lib/datepicker/datepicker-errors.ts","../../../node_modules/src/lib/input/input-module.ts","../../../node_modules/src/lib/input/input.ts","../../../node_modules/src/lib/input/input-value-accessor.ts","../../../node_modules/src/lib/input/input-errors.ts","../../../node_modules/src/lib/input/autosize.ts","../../../node_modules/src/operators/takeUntil.ts","../../../node_modules/src/operators/auditTime.ts","../../../node_modules/src/observable/timer.ts","../../../node_modules/src/observable/TimerObservable.ts","../../../node_modules/src/util/isNumeric.ts","../../../node_modules/src/operators/audit.ts","../../../node_modules/src/lib/dialog/dialog-module.ts","../../../node_modules/src/lib/dialog/dialog-content-directives.ts","../../../node_modules/src/lib/dialog/dialog.ts","../../../node_modules/src/lib/dialog/dialog-ref.ts","../../../node_modules/src/lib/dialog/dialog-container.ts","../../../node_modules/src/lib/dialog/dialog-animations.ts","../../../node_modules/src/lib/dialog/dialog-config.ts","../../../node_modules/src/lib/chips/chip-input.ts","../../../node_modules/src/lib/chips/chip-list.ts","../../../node_modules/src/lib/chips/chip.ts","../../../node_modules/src/lib/checkbox/checkbox-module.ts","../../../node_modules/src/lib/checkbox/checkbox-required-validator.ts","../../../node_modules/src/lib/checkbox/checkbox.ts","../../../node_modules/src/lib/checkbox/checkbox-config.ts","../../../node_modules/src/lib/card/card.ts","../../../node_modules/src/lib/button-toggle/button-toggle.ts","../../../node_modules/src/lib/button/button-module.ts","../../../node_modules/src/lib/button/button.ts","../../../node_modules/src/lib/autocomplete/autocomplete-trigger.ts","../../../node_modules/src/lib/autocomplete/autocomplete.ts","../../../node_modules/src/lib/form-field/form-field-module.ts","../../../node_modules/src/lib/form-field/form-field.ts","../../../node_modules/src/lib/form-field/suffix.ts","../../../node_modules/src/lib/form-field/prefix.ts","../../../node_modules/src/lib/form-field/placeholder.ts","../../../node_modules/src/lib/form-field/label.ts","../../../node_modules/src/lib/form-field/hint.ts","../../../node_modules/src/lib/form-field/form-field-errors.ts","../../../node_modules/src/lib/form-field/form-field-control.ts","../../../node_modules/src/lib/form-field/form-field-animations.ts","../../../node_modules/src/lib/form-field/error.ts","../../../node_modules/src/operators/startWith.ts","../../../node_modules/src/observable/concat.ts","../../../node_modules/src/operators/concatAll.ts","../../../node_modules/src/operators/mergeAll.ts","../../../node_modules/src/util/identity.ts","../../../node_modules/src/operators/mergeMap.ts","../../../node_modules/src/observable/from.ts","../../../node_modules/src/observable/FromObservable.ts","../../../node_modules/src/operators/observeOn.ts","../../../node_modules/src/observable/ArrayLikeObservable.ts","../../../node_modules/src/observable/IteratorObservable.ts","../../../node_modules/src/observable/PromiseObservable.ts","../../../node_modules/src/observable/of.ts","../../../node_modules/src/observable/ArrayObservable.ts","../../../node_modules/src/util/isScheduler.ts","../../../node_modules/src/observable/ScalarObservable.ts","../../../node_modules/src/operators/delay.ts","../../../node_modules/src/Notification.ts","../../../node_modules/src/util/isDate.ts","../../../node_modules/src/scheduler/async.ts","../../../node_modules/src/scheduler/AsyncScheduler.ts","../../../node_modules/src/Scheduler.ts","../../../node_modules/src/scheduler/AsyncAction.ts","../../../node_modules/src/scheduler/Action.ts","../../../node_modules/src/operators/tap.ts","../../../node_modules/src/operators/switchMap.ts","../../../node_modules/src/util/subscribeToResult.ts","../../../node_modules/src/InnerSubscriber.ts","../../../node_modules/src/symbol/iterator.ts","../../../node_modules/src/util/isPromise.ts","../../../node_modules/src/util/isArrayLike.ts","../../../node_modules/src/OuterSubscriber.ts","../../../node_modules/src/operators/take.ts","../../../node_modules/src/observable/EmptyObservable.ts","../../../node_modules/src/Observable.ts","../../../node_modules/src/util/pipe.ts","../../../node_modules/src/util/noop.ts","../../../node_modules/src/symbol/observable.ts","../../../node_modules/src/util/toSubscriber.ts","../../../node_modules/src/util/ArgumentOutOfRangeError.ts","../../../node_modules/src/operators/filter.ts","../../../node_modules/src/Subscriber.ts","../../../node_modules/src/symbol/rxSubscriber.ts","../../../node_modules/src/util/root.ts","../../../node_modules/src/Observer.ts","../../../node_modules/src/Subscription.ts","../../../node_modules/src/util/UnsubscriptionError.ts","../../../node_modules/src/util/tryCatch.ts","../../../node_modules/src/util/errorObject.ts","../../../node_modules/src/util/isObject.ts","../../../node_modules/src/util/isArray.ts","../../../node_modules/src/util/isFunction.ts","../../../node_modules/src/lib/core/label/label-options.ts","../../../node_modules/src/lib/core/option/index.ts","../../../node_modules/src/lib/core/option/option.ts","../../../node_modules/src/lib/core/option/optgroup.ts","../../../node_modules/src/lib/core/selection/index.ts","../../../node_modules/src/lib/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../node_modules/src/lib/core/ripple/index.ts","../../../node_modules/src/lib/core/ripple/ripple.ts","../../../node_modules/src/lib/core/ripple/ripple-renderer.ts","../../../node_modules/src/lib/core/ripple/ripple-ref.ts","../../../node_modules/src/lib/core/line/line.ts","../../../node_modules/src/lib/core/gestures/gesture-config.ts","../../../node_modules/src/lib/core/error/error-options.ts","../../../node_modules/src/lib/core/datetime/index.ts","../../../node_modules/src/lib/core/datetime/native-date-formats.ts","../../../node_modules/src/lib/core/datetime/native-date-adapter.ts","../../../node_modules/src/lib/core/datetime/date-formats.ts","../../../node_modules/src/lib/core/datetime/date-adapter.ts","../../../node_modules/src/lib/core/common-behaviors/error-state.ts","../../../node_modules/src/lib/core/common-behaviors/tabindex.ts","../../../node_modules/src/lib/core/common-behaviors/disable-ripple.ts","../../../node_modules/src/lib/core/common-behaviors/color.ts","../../../node_modules/src/lib/core/common-behaviors/disabled.ts","../../../node_modules/src/lib/core/common-behaviors/common-module.ts","../../../node_modules/src/lib/core/animation/animation.ts","../../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["import {NgModule, ModuleWithProviders} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { \n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatTableModule,\n MatPaginatorModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatCheckboxModule,\n MatSortModule,\n MatSidenavModule\n} from '@angular/material';\n\nimport { UserListComponent } from './user-list/user-list.component';\nimport { MatUserManagementComponent } from './mat-user-management/mat-user-management.component';\nimport { DeleteCofirmationComponent } from './delete-confirmation/delete-confirmation.component';\nimport { UserFormComponent } from './user-form/user-form.component';\n\nimport { UserService } from './user.service';\n\nexport {MatUserManagementComponent} from './mat-user-management/mat-user-management.component';\nexport class MatUserManagementModule {\n/**\n * @param {?} baseUrl\n * @return {?}\n */\nstatic setBaseUrl(baseUrl: string): ModuleWithProviders{\n UserService.setBaseUrl(baseUrl);\n return {ngModule: MatUserManagementModule, providers: [UserService]};\n };\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatPaginatorModule,\n MatSidenavModule,\n MatCheckboxModule,\n MatSortModule\n ],\n declarations: [\n MatUserManagementComponent,\n UserListComponent,\n DeleteCofirmationComponent,\n UserFormComponent\n ],\n exports: [\n MatUserManagementComponent\n ],\n entryComponents: [\n DeleteCofirmationComponent,\n UserFormComponent\n ],\n providers: [ UserService ],\n bootstrap: [ MatUserManagementComponent ]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction MatUserManagementModule_tsickle_Closure_declarations() {\n/** @type {?} */\nMatUserManagementModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nMatUserManagementModule.ctorParameters;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Component } from '@angular/core';\nexport class MatUserManagementComponent {\nconstructor() {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'mat-user-management',\n template: `\n <mat-sidenav-container>\n <user-list></user-list>\n </mat-sidenav-container>\n `\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction MatUserManagementComponent_tsickle_Closure_declarations() {\n/** @type {?} */\nMatUserManagementComponent.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nMatUserManagementComponent.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatTableDataSource, MatSort } from '@angular/material';\nimport { MatDialog } from '@angular/material';\nimport { DeleteCofirmationComponent } from '../delete-confirmation/delete-confirmation.component';\nimport { UserFormComponent } from '../user-form/user-form.component';\n\nimport { environment } from '../../../../environments/environment';\n\nimport { User } from '../user';\nimport { Page } from '../page';\nimport { Sort } from '../sort';\n\nimport { UserService } from '../user.service';\nexport class UserListComponent implements OnInit {\n dataSource: MatTableDataSource<User>;\n displayedColumns: string[];\n users: User[];\n totalUsers: number;\n currentPage: Page = environment.page;\n currentSort: Sort = environment.sort;\n itemsPerPage: number = environment.page.pageSize;\n\n sort: MatSort;\n/**\n * @param {?} userService\n * @param {?} dialog\n */\nconstructor(private userService: UserService,\npublic dialog: MatDialog) {}\n/**\n * @return {?}\n */\nngOnInit() {\n this.displayedColumns = environment.displayedColumns;\n this.getPage(this.currentPage, this.currentSort);\n }\n/**\n * @param {?} page\n * @param {?} sort\n * @return {?}\n */\ngetPage(page: Page, sort: Sort) {\n this.userService.getUserPage(page, sort).subscribe(data => {\n this.currentPage = page;\n this.itemsPerPage = page.pageSize;\n this.totalUsers = data.page.totalElements;\n this.users = /** @type {?} */(( data._embedded.users as User[]));\n this.dataSource = new MatTableDataSource(this.users);\n this.dataSource.sort = this.sort;\n });\n }\n/**\n * @param {?} user\n * @return {?}\n */\nshowDeleteConfirmationDialog(user: User) {\n this.dialog\n .open(DeleteCofirmationComponent, { data: { user: user } })\n .updatePosition(environment.dialogPosition)\n .afterClosed()\n .subscribe(result => {\n if (`${result}` == \"true\") {\n this.userService.deleteUser(user).subscribe(any => {\n this.getPage(this.currentPage, this.currentSort);\n });\n }\n });\n }\n/**\n * @param {?} selectedUser\n * @return {?}\n */\nshowUpdateUserFormDialog(selectedUser: User) {\n this.userService.get(selectedUser._links.self.href).subscribe(data => {\n this.dialog\n .open(UserFormComponent, {\n autoFocus: false,\n data: {\n user: data\n }\n })\n .updatePosition(environment.dialogPosition)\n .afterClosed().subscribe(data => {\n if(!data) { return }\n this.userService\n .update(data._links.self.href, data)\n .subscribe(data => {\n this.getPage(this.currentPage, this.currentSort);\n });\n });\n console.log(data);\n });\n }\n/**\n * @return {?}\n */\nshowCreateUserFormDialog() {\n this.dialog\n .open(UserFormComponent, {\n autoFocus: false,\n data: {}\n })\n .updatePosition(environment.dialogPosition)\n .afterClosed().subscribe(data => {\n if(!data) { return }\n this.userService\n .save(data).subscribe(data => {\n this.getPage(this.currentPage, this.currentSort);\n });\n });\n }\n/**\n * @param {?} sort\n * @return {?}\n */\nsortData(sort: Sort) {\n this.getPage(this.currentPage, sort);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: \"user-list\",\n template: `\n <div class=\"example-container mat-elevation-z8\">\n <mat-table [dataSource]=\"users\" matSort (matSortChange)=\"sortData($event)\">\n <ng-container matColumnDef=\"firstName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header class=\"tbl-header\"> First name </mat-header-cell>\n <mat-cell *matCellDef=\"let user\"> {{user.firstName}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"lastName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header class=\"tbl-header\"> Last name </mat-header-cell>\n <mat-cell *matCellDef=\"let user\"> {{user.lastName}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"birthday\">\n <mat-header-cell *matHeaderCellDef mat-sort-header class=\"tbl-header\"> Birthday </mat-header-cell>\n <mat-cell *matCellDef=\"let user\"> {{user.birthday | date}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"phone\">\n <mat-header-cell *matHeaderCellDef mat-sort-header class=\"tbl-header\"> Phone </mat-header-cell>\n <mat-cell *matCellDef=\"let user\"> {{user.phone}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <mat-header-cell *matHeaderCellDef mat-sort-header class=\"tbl-header\"> Email </mat-header-cell>\n <mat-cell *matCellDef=\"let user\"> {{user.email}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef>\n <button mat-icon-button class=\"btn-create btn-management\" (click)=\"showCreateUserFormDialog()\">&#43;</button>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let user\">\n <button class=\"btn-delete btn-management\" mat-icon-button (click)=\"showDeleteConfirmationDialog(user)\">\n <b>&#10007;</b>\n </button>\n <button class=\"btn-edit btn-management\" mat-icon-button (click)=\"showUpdateUserFormDialog(user)\">\n <b>&#9998;</b>\n </button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let user; columns: displayedColumns;\"></mat-row>\n </mat-table>\n\n <mat-paginator [pageSizeOptions]=\"[2, 5, 10, 20, 50]\" [pageSize]=\"itemsPerPage\" \n [length]=\"totalUsers\" (page)=\"getPage($event, currentSort)\"></mat-paginator>\n </div>\n `,\n styles: [`\n .example-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 300px;\n }\n\n .example-header {\n min-height: 64px;\n padding: 15px 10px 0;\n }\n\n .mat-form-field {\n font-size: 14px;\n width: 100%;\n }\n\n .mat-table {\n overflow: auto;\n max-height: 500px;\n }\n\n .tbl-header {\n font-size: 16px;\n }\n\n .btn-management {\n font-size: 25px;\n float: right;\n }\n\n .btn-create {\n color: rgb(42, 142, 75);\n }\n\n .btn-edit {\n color: rgb(37, 117, 163);\n }\n\n .btn-delete {\n color: rgb(236, 53, 93);\n }\n\n .mat-header-cell .mat-sort-header-sorted {\n color: black;\n }\n `]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: UserService, },\n{type: MatDialog, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'sort': [{ type: ViewChild, args: [MatSort, ] },],\n};\n}\n\nfunction UserListComponent_tsickle_Closure_declarations() {\n/** @type {?} */\nUserListComponent.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nUserListComponent.ctorParameters;\n/** @type {?} */\nUserListComponent.propDecorators;\n/** @type {?} */\nUserListComponent.prototype.dataSource;\n/** @type {?} */\nUserListComponent.prototype.displayedColumns;\n/** @type {?} */\nUserListComponent.prototype.users;\n/** @type {?} */\nUserListComponent.prototype.totalUsers;\n/** @type {?} */\nUserListComponent.prototype.currentPage;\n/** @type {?} */\nUserListComponent.prototype.currentSort;\n/** @type {?} */\nUserListComponent.prototype.itemsPerPage;\n/** @type {?} */\nUserListComponent.prototype.sort;\n/** @type {?} */\nUserListComponent.prototype.userService;\n/** @type {?} */\nUserListComponent.prototype.dialog;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs/Observable';\nimport'rxjs/add/operator/map';\n\nimport { environment } from '../../../environments/environment';\n\nimport { User } from './user';\nimport { Page } from './page';\nimport { Sort } from './sort';\nexport class UserService {\nprivate baseUrl: string;\nprivate static remotebaseUrl;\n/**\n * @param {?} http\n */\nconstructor(private http: HttpClient) {\n this.baseUrl = UserService.remotebaseUrl ? UserService.remotebaseUrl: environment.baseUrl;\n\n }\n/**\n * @param {?} remoteUrl\n * @return {?}\n */\nstatic setBaseUrl(remoteUrl){\n this.remotebaseUrl = remoteUrl;\n }\n/**\n * @param {?} page\n * @param {?} sort\n * @return {?}\n */\ngetUserPage(page: Page, sort: Sort): Observable<any> {\n return this.http.get(`${this.baseUrl}/users?page=${page.pageIndex}&size=${page.pageSize}&sort=${sort.active},${sort.direction}`);\n }\n/**\n * @param {?} link\n * @return {?}\n */\nget(link: string): Observable<any> {\n return this.http.get(`${link}`);\n }\n/**\n * @param {?} user\n * @return {?}\n */\nsave(user: User): Observable<User> {\n return this.http\n .post(`${this.baseUrl}/users`, user)\n .map(data => /** @type {?} */(( data as User)));\n }\n/**\n * @param {?} selfXrefLink\n * @param {?} user\n * @return {?}\n */\nupdate(selfXrefLink: string, user: User): Observable<User> {\n return this.http\n .put(`${selfXrefLink}`, user)\n .map(data => /** @type {?} */(( data as User)));\n }\n/**\n * @param {?} user\n * @return {?}\n */\ndeleteUser(user: User) {\n return this.http.delete(`${user._links.self.href}`);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: HttpClient, },\n];\n}\n\nfunction UserService_tsickle_Closure_declarations() {\n/** @type {?} */\nUserService.remotebaseUrl;\n/** @type {?} */\nUserService.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nUserService.ctorParameters;\n/** @type {?} */\nUserService.prototype.baseUrl;\n/** @type {?} */\nUserService.prototype.http;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","export const /** @type {?} */ environment = {\n production: false,\n baseUrl: \"http://localhost:8080/api\",\n page: {\n pageIndex: 0,\n pageSize: 10\n },\n sort: {\n active: \"id\",\n direction: \"asc\"\n },\n displayedColumns: [\n \"firstName\",\n \"lastName\",\n \"birthday\",\n \"phone\",\n \"email\",\n \"actions\"\n ],\n dialogPosition: {\n top: \"5%\"\n }\n};\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA } from '@angular/material';\n\nimport { User } from '../user';\nimport { Gender } from '../gender';\nimport { UserIdentity } from '../user-identity';\nexport class UserFormComponent implements OnInit {\n user: User;\n matcher: ErrorStateMatcher;\n/**\n * @param {?} data\n */\nconstructor(\npublic data: any\n ) {\n this.matcher = new FormFieldStateMatcher();\n this.user = new User();\n this.user.gender = new Gender();\n this.user.userIdentity = new UserIdentity();\n this.user.userIdentity.banned = false;\n }\n/**\n * @return {?}\n */\nngOnInit() {\n if (this.data.user) {\n this.user._links = this.data.user._links;\n this.user.firstName = this.data.user.firstName;\n this.user.lastName = this.data.user.lastName;\n this.user.birthday = this.data.user.birthday;\n this.user.phone = this.data.user.phone;\n this.user.city = this.data.user.city;\n this.user.address = this.data.user.address;\n this.user.userIdentity = this.data.user.userIdentity;\n this.user.gender = this.data.user.gender;\n }\n }\n/**\n * @return {?}\n */\nisExistedUser() {\n return this.user._links;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: \"user-form\",\n template: `\n <form #form=\"ngForm\">\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]='user.userIdentity.login' placeholder=\"Login\" \n [errorStateMatcher]=\"matcher\" [readonly]='isExistedUser()' required name=\"login\" #login=ngModel>\n <mat-error *ngIf=\"login.errors?.required\">\n Login is required\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.userIdentity.email\" placeholder=\"Email: example@domain.com\" \n [errorStateMatcher]=\"matcher\" pattern=\"^\\\\w+([\\\\.-]?\\\\w+)*@\\\\w+([\\\\.-]?\\\\w+)*(\\\\.\\\\w{2,3})+$\"\n required name=\"email\" #email=ngModel>\n <mat-error *ngIf=\"email.errors?.required\">\n Email is required\n </mat-error>\n <mat-error *ngIf=\"email.errors?.pattern\">\n Incorrect email\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" *ngIf=\"!isExistedUser()\">\n <input matInput type=\"password\" [(ngModel)]=\"user.userIdentity.password\" placeholder=\"Password\"\n [errorStateMatcher]=\"matcher\" required name=\"password\" #password=ngModel>\n <mat-error *ngIf=\"password.invalid\">\n Password is required\n </mat-error>\n </mat-form-field>\n\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.firstName\" placeholder=\"First name\" name=\"firstName\" #firstName=ngModel>\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.lastName\" placeholder=\"Last name\" name=\"lastName\" #lastName=ngModel>\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput [matDatepicker]=\"picker\" [(ngModel)]=\"user.birthday\" placeholder=\"Birthday\"\n [errorStateMatcher]=\"matcher\" name=\"birthday\" #birthday=ngModel>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error *ngIf=\"birthday.invalid\">\n Incorrect date format\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.phone\" placeholder=\"Phone\" name=\"phone\" #phone=ngModel>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.city\" placeholder=\"City\" name=\"city\" #city=ngModel>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" [(ngModel)]=\"user.address\" placeholder=\"Address\" name=\"address\" #address=ngModel>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\">\n <mat-select placeholder=\"Gender\" [(ngModel)]=\"user.gender.id\" name=\"gender\">\n <mat-option value=\"1\">Male</mat-option>\n <mat-option value=\"2\">Female</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"justify-content-between\">\n <button mat-button [mat-dialog-close]=\"user\" class=\"justify-content-end\" [disabled]=\"form.invalid\">Submit</button>\n <button mat-button mat-dialog-close class=\"justify-content-end\">Back</button>\n </div>\n </form>\n `,\n styles: [`\n input[readonly] {\n color: gray;\n }\n\n .full-width {\n width: 100%;\n }\n\n .form-control {\n text-align: left;\n }\n\n .banned {\n margin: 0;\n padding: 0 0 15px;\n }\n `]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA, ] }, ]},\n];\n}\n\nfunction UserFormComponent_tsickle_Closure_declarations() {\n/** @type {?} */\nUserFormComponent.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nUserFormComponent.ctorParameters;\n/** @type {?} */\nUserFormComponent.prototype.user;\n/** @type {?} */\nUserFormComponent.prototype.matcher;\n/** @type {?} */\nUserFormComponent.prototype.data;\n}\n\nexport class FormFieldStateMatcher implements ErrorStateMatcher {\n/**\n * @param {?} data\n * @return {?}\n */\nisErrorState(data: FormControl): boolean {\n return !!(data && data.invalid && (data.dirty || data.touched));\n }\n}\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","\nexport class UserIdentity {\n login: string;\n password: string;\n email: string;\n banned: boolean;\n roles: any[];\nconstructor() {}\n}\n\nfunction UserIdentity_tsickle_Closure_declarations() {\n/** @type {?} */\nUserIdentity.prototype.login;\n/** @type {?} */\nUserIdentity.prototype.password;\n/** @type {?} */\nUserIdentity.prototype.email;\n/** @type {?} */\nUserIdentity.prototype.banned;\n/** @type {?} */\nUserIdentity.prototype.roles;\n}\n","\nexport class Gender {\n id: number;\n abbr: string;\n fullTitle: string;\n _links: any;\nconstructor () {}\n}\n\nfunction Gender_tsickle_Closure_declarations() {\n/** @type {?} */\nGender.prototype.id;\n/** @type {?} */\nGender.prototype.abbr;\n/** @type {?} */\nGender.prototype.fullTitle;\n/** @type {?} */\nGender.prototype._links;\n}\n","import { Gender } from './gender';\nimport { UserIdentity } from './user-identity';\nexport class User {\n firstName: string;\n lastName: string;\n birthday: Date;\n phone: string;\n city: string;\n address: string;\n gender: Gender;\n userIdentity: UserIdentity;\n _links: any;\nconstructor() {}\n}\n\nfunction User_tsickle_Closure_declarations() {\n/** @type {?} */\nUser.prototype.firstName;\n/** @type {?} */\nUser.prototype.lastName;\n/** @type {?} */\nUser.prototype.birthday;\n/** @type {?} */\nUser.prototype.phone;\n/** @type {?} */\nUser.prototype.city;\n/** @type {?} */\nUser.prototype.address;\n/** @type {?} */\nUser.prototype.gender;\n/** @type {?} */\nUser.prototype.userIdentity;\n/** @type {?} */\nUser.prototype._links;\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material';\nexport class DeleteCofirmationComponent {\n/**\n * @param {?} data\n */\nconstructor(\npublic data: any) {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'delete-confirmation',\n template: `\n <div mat-dialog-content>\n <p>Are you sure, you want to delete \"{{data.user.firstName}}\"?</p>\n </div>\n <div mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\" class=\"justify-content-start\">Submit</button>\n <button mat-button mat-dialog-close class=\"justify-content-end\">Cancel</button>\n </div>\n `\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA, ] }, ]},\n];\n}\n\nfunction DeleteCofirmationComponent_tsickle_Closure_declarations() {\n/** @type {?} */\nDeleteCofirmationComponent.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nDeleteCofirmationComponent.ctorParameters;\n/** @type {?} */\nDeleteCofirmationComponent.prototype.data;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: 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 {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('5.2.4');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n isDevMode,\n QueryList,\n ViewEncapsulation,\n Inject,\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {DOCUMENT} from '@angular/common';\n\n// Boilerplate for applying mixins to MatToolbar.\n/** @docs-private */\nexport class MatToolbarBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatToolbarMixinBase = 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]': 'this._toolbarRows.length',\n '[class.mat-toolbar-single-row]': '!this._toolbarRows.length'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 = [].slice.call(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.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 */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\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 CanColor,\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex, RippleConfig,\n RippleGlobalOptions,\n RippleRenderer,\n RippleTarget,\n ThemePalette,\n} from '@angular/material/core';\nimport {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {Subject} from 'rxjs/Subject';\nimport {MatInkBar} from '../ink-bar';\n\n\n// Boilerplate for applying mixins to MatTabNav.\n/** @docs-private */\nexport class MatTabNavBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatTabNavMixinBase = mixinColor(MatTabNavBase, 'primary');\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: {'class': 'mat-tab-nav-bar'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTabNav extends _MatTabNavMixinBase implements AfterContentInit, CanColor,\n OnDestroy {\n\n /** Subject that emits when the component has been destroyed. */\n private readonly _onDestroy = new Subject<void>();\n\n _activeLinkChanged: boolean;\n _activeLinkElement: ElementRef;\n\n @ViewChild(MatInkBar) _inkBar: MatInkBar;\n\n /** Query list of all tab links of the tab navigation. */\n @ContentChildren(forwardRef(() => MatTabLink), {descendants: true})\n _tabLinks: QueryList<MatTabLink>;\n\n /** Background color of the tab nav. */\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 /** Whether ripples should be disabled for all links or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: boolean) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setLinkDisableRipple();\n }\n private _disableRipple: boolean = false;\n\n constructor(elementRef: ElementRef,\n @Optional() private _dir: Directionality,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler) {\n super(elementRef);\n }\n\n /** Notifies the component that the active link has been changed. */\n updateActiveLink(element: ElementRef) {\n this._activeLinkChanged = this._activeLinkElement != element;\n this._activeLinkElement = element;\n\n if (this._activeLinkChanged) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit(): void {\n this._ngZone.runOutsideAngular(() => {\n const dirChange = this._dir ? this._dir.change : observableOf(null);\n\n return merge(dirChange, this._viewportRuler.change(10)).pipe(takeUntil(this._onDestroy))\n .subscribe(() => this._alignInkBar());\n });\n\n this._setLinkDisableRipple();\n }\n\n /** Checks if the active link has been changed and, if so, will update the ink bar. */\n ngAfterContentChecked(): void {\n if (this._activeLinkChanged) {\n this._alignInkBar();\n this._activeLinkChanged = false;\n }\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /** Aligns the ink bar to the active link. */\n _alignInkBar(): void {\n if (this._activeLinkElement) {\n this._inkBar.alignToElement(this._activeLinkElement.nativeElement);\n }\n }\n\n /** Sets the `disableRipple` property on each link of the navigation bar. */\n private _setLinkDisableRipple() {\n if (this._tabLinks) {\n this._tabLinks.forEach(link => link.disableRipple = this.disableRipple);\n }\n }\n}\n\n\n// Boilerplate for applying mixins to MatTabLink.\nexport class MatTabLinkBase {}\nexport const _MatTabLinkMixinBase =\n mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTabLinkBase)));\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-disabled]': 'disabled.toString()',\n '[attr.tabIndex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n '(click)': '_handleClick($event)'\n }\n})\nexport class MatTabLink extends _MatTabLinkMixinBase\n implements OnDestroy, CanDisable, CanDisableRipple, HasTabIndex, RippleTarget {\n\n /** Whether the tab link is active or not. */\n private _isActive: boolean = false;\n\n /** Reference to the RippleRenderer for the tab-link. */\n private _tabLinkRipple: RippleRenderer;\n\n /** Whether the link is active. */\n @Input()\n get active(): boolean { return this._isActive; }\n set active(value: boolean) {\n this._isActive = value;\n if (value) {\n this._tabNavBar.updateActiveLink(this._elementRef);\n }\n }\n\n /**\n * Ripple configuration for ripples that are launched on pointer down.\n * @docs-private\n */\n rippleConfig: RippleConfig = {};\n\n /**\n * Whether ripples are disabled on interaction\n * @docs-private\n */\n get rippleDisabled(): boolean {\n return this.disabled || this.disableRipple;\n }\n\n constructor(private _tabNavBar: MatTabNav,\n private _elementRef: ElementRef,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions: RippleGlobalOptions,\n @Attribute('tabindex') tabIndex: string) {\n super();\n\n this._tabLinkRipple = new RippleRenderer(this, ngZone, _elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (globalOptions) {\n this.rippleConfig = {\n terminateOnPointerUp: globalOptions.terminateOnPointerUp,\n speedFactor: globalOptions.baseSpeedFactor,\n animation: globalOptions.animation,\n };\n }\n }\n\n ngOnDestroy() {\n this._tabLinkRipple._removeTriggerEvents();\n }\n\n /**\n * Handles the click event, preventing default navigation if the tab link is disabled.\n */\n _handleClick(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\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 {Direction, Directionality} from '@angular/cdk/bidi';\nimport {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, HOME, END} from '@angular/cdk/keycodes';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanDisableRipple, mixinDisableRipple} from '@angular/material/core';\nimport {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {Subscription} from 'rxjs/Subscription';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MatInkBar} from './ink-bar';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\n\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// Boilerplate for applying mixins to MatTabHeader.\n/** @docs-private */\nexport class MatTabHeaderBase {}\nexport const _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\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: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 _MatTabHeaderMixinBase\n implements AfterContentChecked, AfterContentInit, OnDestroy, CanDisableRipple {\n\n @ContentChildren(MatTabLabelWrapper) _labelWrappers: QueryList<MatTabLabelWrapper>;\n @ViewChild(MatInkBar) _inkBar: MatInkBar;\n @ViewChild('tabListContainer') _tabListContainer: ElementRef;\n @ViewChild('tabList') _tabList: ElementRef;\n\n /** The tab index that is focused. */\n private _focusIndex: number = 0;\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 /** Combines listeners that will re-align the ink bar whenever they're invoked. */\n private _realignInkBar = Subscription.EMPTY;\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 private _selectedIndex: number = 0;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number { return this._selectedIndex; }\n set selectedIndex(value: number) {\n value = coerceNumberProperty(value);\n this._selectedIndexChanged = this._selectedIndex != value;\n this._selectedIndex = value;\n this._focusIndex = value;\n }\n\n /** Event emitted when the option is selected. */\n @Output() readonly selectFocusedIndex = new EventEmitter();\n\n /** Event emitted when a label is focused. */\n @Output() readonly indexFocused = new EventEmitter();\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality) {\n super();\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._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.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 _handleKeydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n case RIGHT_ARROW:\n this._focusNextTab();\n break;\n case LEFT_ARROW:\n this._focusPreviousTab();\n break;\n case HOME:\n this._focusFirstTab();\n event.preventDefault();\n break;\n case END:\n this._focusLastTab();\n event.preventDefault();\n break;\n case ENTER:\n case SPACE:\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n }\n }\n\n /**\n * Aligns the ink bar to the selected tab on load.\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 // 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 this._realignInkBar = merge(dirChange, resize).subscribe(realign);\n }\n\n ngOnDestroy() {\n this._realignInkBar.unsubscribe();\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n this._updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Updating the view whether pagination should be enabled or not\n */\n _updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\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) { return; }\n\n this._focusIndex = value;\n this.indexFocused.emit(value);\n this._setTabFocus(value);\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number { return this._focusIndex; }\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._labelWrappers) { return true; }\n\n const tab = this._labelWrappers ? this._labelWrappers.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._labelWrappers && this._labelWrappers.length) {\n this._labelWrappers.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 /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n */\n _moveFocus(offset: number) {\n if (this._labelWrappers) {\n const tabs: MatTabLabelWrapper[] = this._labelWrappers.toArray();\n\n for (let i = this.focusIndex + offset; i < tabs.length && i >= 0; i += offset) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n return;\n }\n }\n }\n }\n\n /** Increment the focus index by 1 until a valid tab is found. */\n _focusNextTab(): void {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? 1 : -1);\n }\n\n /** Decrement the focus index by 1 until a valid tab is found. */\n _focusPreviousTab(): void {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? -1 : 1);\n }\n\n /** Focuses the first tab. */\n private _focusFirstTab(): void {\n for (let i = 0; i < this._labelWrappers.length; i++) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n break;\n }\n }\n }\n\n /** Focuses the last tab. */\n private _focusLastTab(): void {\n for (let i = this._labelWrappers.length - 1; i > -1; i--) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n break;\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 translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n\n this._tabList.nativeElement.style.transform = `translate3d(${translateX}px, 0, 0)`;\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(v: number) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\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\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(scrollDir: 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 this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;\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._labelWrappers ? this._labelWrappers.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\n let labelBeforePos: number, labelAfterPos: number;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = selectedLabel.getOffsetLeft();\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n } else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\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 private _alignInkBarToSelectedTab(): void {\n const selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n null;\n\n this._inkBar.alignToElement(selectedLabelWrapper);\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, mixinDisabled} from '@angular/material/core';\n\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nexport class MatTabLabelWrapperBase {}\nexport const _MatTabLabelWrapperMixinBase = 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 }\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 {\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} from '@angular/core';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatTab} from './tab';\nimport {MatTabHeader} from './tab-header';\nimport {merge} from 'rxjs/observable/merge';\nimport {\n CanColor,\n CanDisableRipple,\n mixinColor,\n mixinDisableRipple,\n ThemePalette\n} from '@angular/material/core';\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// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nexport class MatTabGroupBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\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://www.google.com/design/spec/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 preserveWhitespaces: false,\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 _MatTabGroupMixinBase implements AfterContentInit,\n AfterContentChecked, OnDestroy, CanColor, CanDisableRipple {\n\n @ContentChildren(MatTab) _tabs: QueryList<MatTab>;\n\n @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\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 /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input('mat-dynamic-height')\n get _dynamicHeightDeprecated(): boolean { return this._dynamicHeight; }\n set _dynamicHeightDeprecated(value: boolean) { this._dynamicHeight = value; }\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 /** 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 /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly selectChange: EventEmitter<MatTabChangeEvent> = this.selectedTabChange;\n\n private _groupId: number;\n\n constructor(elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n super(elementRef);\n this._groupId = nextId++;\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 // Clamp the next selected index to the boundsof 0 and the tabs length.\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 let indexToSelect = this._indexToSelect =\n Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0));\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 && this._selectedIndex != null) {\n const tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(() => this.selectedIndexChange.emit(indexToSelect));\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 tab.isActive = 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 this._subscribeToTabLabels();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\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(\n ...this._tabs.map(tab => tab._disableChange),\n ...this._tabs.map(tab => tab._labelChange)).subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\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 this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n this._tabBodyWrapper.nativeElement.style.height = '';\n this.animationDone.emit();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: MatTab, tabHeader: MatTabHeader, idx: number) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = idx;\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 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} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {TemplatePortal, CdkPortalOutlet} from '@angular/cdk/portal';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {Subscription} from 'rxjs/Subscription';\nimport {matTabsAnimations} from './tabs-animations';\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 /** A subscription to events for when the tab body begins centering. */\n private _centeringSub: Subscription;\n /** A subscription to events for when the tab body finishes leaving from center position. */\n private _leavingSub: Subscription;\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 if (this._host._isCenterPosition(this._host._position)) {\n this.attach(this._host._content);\n }\n this._centeringSub = this._host._beforeCentering.subscribe((isCentering: boolean) => {\n if (isCentering) {\n if (!this.hasAttached()) {\n this.attach(this._host._content);\n }\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 if (this._centeringSub && !this._centeringSub.closed) {\n this._centeringSub.unsubscribe();\n }\n\n if (this._leavingSub && !this._leavingSub.closed) {\n this._leavingSub.unsubscribe();\n }\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [matTabsAnimations.translateTab],\n host: {\n 'class': 'mat-tab-body',\n },\n})\nexport class MatTabBody implements OnInit {\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 tab body content to display. */\n @Input('content') _content: TemplatePortal;\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 if (position < 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'left' : 'right';\n } else if (position > 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'right' : 'left';\n } else {\n this._position = 'center';\n }\n }\n _position: MatTabBodyPositionState;\n\n /** The origin position from which this tab should appear when it is centered into view. */\n @Input()\n set origin(origin: number) {\n if (origin == null) { return; }\n\n const dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n this._origin = 'left';\n } else {\n this._origin = 'right';\n }\n }\n _origin: MatTabBodyOriginState;\n\n constructor(private _elementRef: ElementRef,\n @Optional() private _dir: Directionality) { }\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) {\n this._position = this._origin == 'left' ? 'left-origin-center' : 'right-origin-center';\n }\n }\n\n _onTranslateTabStarted(e: AnimationEvent): void {\n const isCentering = this._isCenterPosition(e.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n\n _onTranslateTabComplete(e: AnimationEvent): void {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(e.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n\n if (this._isCenterPosition(e.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this 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/** Animations used by the Material tabs. */\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 state('left', style({transform: 'translate3d(-100%, 0, 0)'})),\n state('right', style({transform: 'translate3d(100%, 0, 0)'})),\n transition('* => left, * => right, left => center, right => center',\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({transform: 'translate3d(-100%, 0, 0)'}),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({transform: 'translate3d(100%, 0, 0)'}),\n animate('500ms 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, mixinDisabled} from '@angular/material/core';\nimport {Subject} from 'rxjs/Subject';\nimport {MatTabLabel} from './tab-label';\n\n\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nexport class MatTabBase {}\nexport const _MatTabMixinBase = 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 preserveWhitespaces: false,\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) templateLabel: MatTabLabel;\n\n /** Template inside the MatTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef) _content: TemplateRef<any>;\n\n /** The plain text label for the tab, used when there is no template label. */\n @Input('label') textLabel: string = '';\n\n /** The 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 label changes. */\n readonly _labelChange = new Subject<void>();\n\n /** Emits whenever the disable changes */\n readonly _disableChange = 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')) {\n this._labelChange.next();\n }\n\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n }\n\n ngOnDestroy(): void {\n this._disableChange.complete();\n this._labelChange.complete();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._content, 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, TemplateRef, ViewContainerRef} 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 constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, 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, ElementRef, NgZone} from '@angular/core';\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 },\n})\nexport class MatInkBar {\n constructor(\n private _elementRef: ElementRef,\n private _ngZone: NgZone) {}\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 inkBar: HTMLElement = this._elementRef.nativeElement;\n\n inkBar.style.left = element ? (element.offsetLeft || 0) + 'px' : '0';\n inkBar.style.width = element ? (element.offsetWidth || 0) + 'px' : '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 {DataSource} from '@angular/cdk/table';\nimport {BehaviorSubject} from 'rxjs/BehaviorSubject';\nimport {MatPaginator} from '@angular/material/paginator';\nimport {MatSort} from '@angular/material/sort';\nimport {Subscription} from 'rxjs/Subscription';\nimport {combineLatest} from 'rxjs/operators/combineLatest';\nimport {map} from 'rxjs/operators/map';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {empty} from 'rxjs/observable/empty';\nimport {_isNumberValue} from '@angular/cdk/coercion';\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 */\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 /**\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;\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: any = data[sortHeaderId];\n return _isNumberValue(value) ? Number(value) : 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 first.\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 && valueB) {\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) {\n comparatorResult = 1;\n } else if (valueB) {\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 accumulator = (currentTerm, key) => currentTerm + data[key];\n const dataStr = Object.keys(data).reduce(accumulator, '').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 // Otherwise, use an empty observable stream to take their place.\n const sortChange = this._sort ? this._sort.sortChange : empty();\n const pageChange = this._paginator ? this._paginator.page : empty();\n\n if (this._renderChangesSubscription) {\n this._renderChangesSubscription.unsubscribe();\n }\n\n // Watch for base data or filter changes to provide a filtered set of data.\n this._renderChangesSubscription = this._data.pipe(\n combineLatest(this._filter),\n map(([data]) => this._filterData(data)),\n // Watch for filtered data or sort changes to provide an ordered set of data.\n combineLatest(sortChange.pipe(startWith(null!))),\n map(([data]) => this._orderData(data)),\n // Watch for ordered data or page changes to provide a paged set of data.\n combineLatest(pageChange.pipe(startWith(null!))),\n map(([data]) => this._pageData(data))\n )\n // Watched for paged data changes and send the result to the table to render.\n .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 splice 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().splice(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 if (!this.paginator) { return; }\n\n this.paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (this.paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(this.paginator.length / this.paginator.pageSize) - 1 || 0;\n this.paginator.pageIndex = Math.min(this.paginator.pageIndex, lastPageIndex);\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 {MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef} from './cell';\nimport {MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef} from './row';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\n@NgModule({\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: [MatTable, MatCellDef, MatHeaderCellDef, MatColumnDef,\n MatHeaderCell, MatCell, MatHeaderRow, MatRow,\n MatHeaderRowDef, MatRowDef],\n declarations: [MatTable, MatCellDef, MatHeaderCellDef, MatColumnDef,\n MatHeaderCell, MatCell, MatHeaderRow, MatRow,\n MatHeaderRowDef, MatRowDef],\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 {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\nimport {\n CDK_ROW_TEMPLATE,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n} from '@angular/cdk/table';\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'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef { }\n\n/**\n * Data row definition for the mat-table.\n * Captures the header row's template and other row 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/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n preserveWhitespaces: false,\n})\nexport class MatHeaderRow extends CdkHeaderRow { }\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',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n preserveWhitespaces: false,\n})\nexport class MatRow extends CdkRow { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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,\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 * 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: [{provide: CdkColumnDef, useExisting: MatColumnDef}],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: '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) {\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',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\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 {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTable<T> extends CdkTable<T> { }\n","import { Observable, ObservableInput } from '../Observable';\nimport { ArrayObservable } from '../observable/ArrayObservable';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../interfaces';\n\nconst none = {};\n\n/* tslint:disable:max-line-length */\nexport function combineLatest<T, R>(project: (v1: T) => R): OperatorFunction<T, R>;\nexport function combineLatest<T, T2, R>(v2: ObservableInput<T2>, project: (v1: T, v2: T2) => R): OperatorFunction<T, R>;\nexport function combineLatest<T, T2, T3, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction<T, R>;\nexport function combineLatest<T, T2, T3, T4, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction<T, R>;\nexport function combineLatest<T, T2, T3, T4, T5, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction<T, R>;\nexport function combineLatest<T, T2, T3, T4, T5, T6, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction<T, R> ;\nexport function combineLatest<T, T2>(v2: ObservableInput<T2>): OperatorFunction<T, [T, T2]>;\nexport function combineLatest<T, T2, T3>(v2: ObservableInput<T2>, v3: ObservableInput<T3>): OperatorFunction<T, [T, T2, T3]>;\nexport function combineLatest<T, T2, T3, T4>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>): OperatorFunction<T, [T, T2, T3, T4]>;\nexport function combineLatest<T, T2, T3, T4, T5>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>): OperatorFunction<T, [T, T2, T3, T4, T5]>;\nexport function combineLatest<T, T2, T3, T4, T5, T6>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>): OperatorFunction<T, [T, T2, T3, T4, T5, T6]> ;\nexport function combineLatest<T, R>(...observables: Array<ObservableInput<T> | ((...values: Array<T>) => R)>): OperatorFunction<T, R>;\nexport function combineLatest<T, R>(array: ObservableInput<T>[]): OperatorFunction<T, Array<T>>;\nexport function combineLatest<T, TOther, R>(array: ObservableInput<TOther>[], project: (v1: T, ...values: Array<TOther>) => R): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * <img src=\"./img/combineLatest.png\" width=\"100%\">\n *\n * `combineLatest` combines the values from this Observable with values from\n * Observables passed as arguments. This is done by subscribing to each\n * Observable, in order, and collecting an array of each of the most recent\n * values any time any of the input Observables emits, then either taking that\n * array and passing it as arguments to an optional `project` function and\n * emitting the return value of that, or just emitting the array of recent\n * values directly if there is no `project` function.\n *\n * @example <caption>Dynamically calculate the Body-Mass Index from an Observable of weight and one for height</caption>\n * var weight = Rx.Observable.of(70, 72, 76, 79, 75);\n * var height = Rx.Observable.of(1.76, 1.77, 1.78);\n * var bmi = weight.combineLatest(height, (w, h) => w / (h * h));\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method combineLatest\n * @owner Observable\n */\nexport function combineLatest<T, R>(...observables: Array<ObservableInput<any> |\n Array<ObservableInput<any>> |\n ((...values: Array<any>) => R)>): OperatorFunction<T, R> {\n let project: (...values: Array<any>) => R = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = <(...values: Array<any>) => R>observables.pop();\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = (<any>observables[0]).slice();\n }\n\n return (source: Observable<T>) => source.lift.call(new ArrayObservable([source, ...observables]), new CombineLatestOperator(project));\n}\n\nexport class CombineLatestOperator<T, R> implements Operator<T, R> {\n constructor(private project?: (...values: Array<any>) => R) {\n }\n\n call(subscriber: Subscriber<R>, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber<T, R> extends OuterSubscriber<T, R> {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond: number;\n\n constructor(destination: Subscriber<R>, private project?: (...values: Array<any>) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(none);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber<R>): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber<T, R>): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === none ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.project) {\n this._tryProject(values);\n } else {\n this.destination.next(values.slice());\n }\n }\n }\n\n private _tryProject(values: any[]) {\n let result: any;\n try {\n result = this.project.apply(this, values);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\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 {CdkStepper, CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {MatStepper} from './stepper';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n '(click)': '_stepper.next()',\n '[type]': 'type',\n },\n inputs: ['type'],\n providers: [{provide: CdkStepper, useExisting: MatStepper}]\n})\nexport class MatStepperNext extends CdkStepperNext {}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n '(click)': '_stepper.previous()',\n '[type]': 'type',\n },\n inputs: ['type'],\n providers: [{provide: CdkStepper, useExisting: MatStepper}]\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkStep, CdkStepper} from '@angular/cdk/stepper';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n Inject,\n QueryList,\n SkipSelf,\n ViewChildren,\n ViewEncapsulation,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Optional,\n TemplateRef,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon} from './stepper-icon';\n\n/** Workaround for https://github.com/angular/angular/issues/17849 */\nexport const _MatStep = CdkStep;\nexport const _MatStepper = CdkStepper;\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 preserveWhitespaces: false,\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) stepLabel: MatStepLabel;\n\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher) {\n super(stepper);\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({\n selector: '[matStepper]'\n})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader, {read: ElementRef}) _stepHeader: QueryList<ElementRef>;\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 /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: {[key: string]: TemplateRef<any>} = {};\n\n ngAfterContentInit() {\n const icons = this._icons.toArray();\n const editOverride = icons.find(icon => icon.name === 'edit');\n const doneOverride = icons.find(icon => icon.name === 'done');\n\n if (editOverride) {\n this._iconOverrides.edit = editOverride.templateRef;\n }\n\n if (doneOverride) {\n this._iconOverrides.done = doneOverride.templateRef;\n }\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}\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 'aria-orientation': 'horizontal',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.horizontalStepTransition],\n providers: [{provide: MatStepper, useExisting: MatHorizontalStepper}],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatHorizontalStepper extends MatStepper { }\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: [{provide: MatStepper, useExisting: MatVerticalStepper}],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatVerticalStepper extends MatStepper {\n constructor(@Optional() dir: Directionality, changeDetectorRef: ChangeDetectorRef) {\n super(dir, changeDetectorRef);\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';\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: 'edit' | 'done';\n\n constructor(public templateRef: 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 state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Animations used by the Material steppers. */\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 {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\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/Subscription';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader implements OnDestroy {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: string;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<any>};\n\n /** Index of the given step. */\n @Input()\n get index(): number { return this._index; }\n set index(value: number) { this._index = coerceNumberProperty(value); }\n private _index: number;\n\n /** Whether the given step is selected. */\n @Input()\n get selected(): boolean { return this._selected; }\n set selected(value: boolean) { this._selected = coerceBooleanProperty(value); }\n private _selected: boolean;\n\n /** Whether the given step label is active. */\n @Input()\n get active(): boolean { return this._active; }\n set active(value: boolean) { this._active = coerceBooleanProperty(value); }\n private _active: boolean;\n\n /** Whether the given step is optional. */\n @Input()\n get optional(): boolean { return this._optional; }\n set optional(value: boolean) { this._optional = coerceBooleanProperty(value); }\n private _optional: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n private _element: ElementRef,\n changeDetectorRef: ChangeDetectorRef) {\n _focusMonitor.monitor(_element.nativeElement, true);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element.nativeElement);\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._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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs/Subject';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable()\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {\n constructor(template: TemplateRef<any>) {\n super(template);\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 {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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {Subscription} from 'rxjs/Subscription';\nimport {merge} from 'rxjs/observable/merge';\nimport {MatSort, MatSortable} from './sort';\nimport {SortDirection} from './sort-direction';\nimport {MatSortHeaderIntl} from './sort-header-intl';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {matSortAnimations} from './sort-animations';\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nexport class MatSortHeaderBase {}\nexport const _MatSortHeaderMixinBase = 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/**\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 '(longpress)': '_setIndicatorHintVisible(true)',\n '(mouseleave)': '_setIndicatorHintVisible(false)',\n '[class.mat-sort-header-disabled]': '_isDisabled()',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 implements MatSortable, CanDisable {\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 @Optional() public _cdkColumnDef: CdkColumnDef) {\n\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._cdkColumnDef) {\n this.id = this._cdkColumnDef.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this 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/** Animations used by MatSort. */\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',\n style({opacity: 0})),\n // Transition between all states except for immediate transitions\n transition('* => asc, * => desc, * => active, * => hint', 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 {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs/Subject';\nimport {SortDirection} from './sort-direction';\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()\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 /** A label to describe the current sort (visible only to screenreaders). */\n sortDescriptionLabel = (id: string, direction: SortDirection) => {\n return `Sorted by ${id} ${direction == 'asc' ? 'ascending' : 'descending'}`;\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 */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n isDevMode,\n Output,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {SortDirection} from './sort-direction';\nimport {\n getSortInvalidDirectionError,\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError\n} from './sort-errors';\nimport {Subject} from 'rxjs/Subject';\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 */\nexport class MatSortBase {}\nexport const _MatSortMixinBase = 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 implements CanDisable, OnChanges, OnDestroy {\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 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} from '@angular/cdk/portal';\nimport {ComponentRef, Injectable, Injector, Optional, SkipSelf} from '@angular/core';\nimport {take} from 'rxjs/operators/take';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable()\nexport class MatSnackBar {\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\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): MatSnackBarRef<T> {\n const _config = _applyConfigDefaults(config);\n const snackBarRef = this._attach(component, _config);\n\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\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 this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\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 = _applyConfigDefaults(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 _config.announcementMessage = message;\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 /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(overlayRef: OverlayRef,\n config: MatSnackBarConfig): MatSnackBarContainer {\n const containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef);\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 as the content of the snack bar container.\n */\n private _attach<T>(component: ComponentType<T>, config: MatSnackBarConfig): MatSnackBarRef<T> {\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T>(container, overlayRef);\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(component, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\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.Handset).pipe(\n takeUntil(overlayRef.detachments().pipe(take(1)))\n ).subscribe(state => {\n if (state.matches) {\n overlayRef.overlayElement.classList.add('mat-snack-bar-handset');\n } else {\n overlayRef.overlayElement.classList.remove('mat-snack-bar-handset');\n }\n });\n\n return snackBarRef;\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 const injectionTokens = new WeakMap();\n\n injectionTokens.set(MatSnackBarRef, snackBarRef);\n injectionTokens.set(MAT_SNACK_BAR_DATA, config.data);\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\n\n/**\n * Applies default options to the snackbar config.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(config?: MatSnackBarConfig): MatSnackBarConfig {\n return {...new MatSnackBarConfig(), ...config};\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ComponentRef,\n EmbeddedViewRef,\n ViewChild,\n NgZone,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {take} from 'rxjs/operators/take';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {MatSnackBarConfig} from './snack-bar-config';\nimport {matSnackBarAnimations} from './snack-bar-animations';\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'role': 'alert',\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) _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 /** The snack bar configuration. */\n snackBarConfig: MatSnackBarConfig;\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n\n const element: HTMLElement = this._elementRef.nativeElement;\n\n if (this.snackBarConfig.panelClass || this.snackBarConfig.extraClasses) {\n this._setCssClasses(this.snackBarConfig.panelClass);\n this._setCssClasses(this.snackBarConfig.extraClasses);\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 return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(): EmbeddedViewRef<any> {\n throw Error('Not yet implemented');\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.startsWith('hidden')) {\n this._completeExit();\n }\n\n if (toState.startsWith('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-${this.snackBarConfig.verticalPosition}`;\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n this._animationState = `hidden-${this.snackBarConfig.verticalPosition}`;\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 user-specified list of CSS classes to the element. */\n private _setCssClasses(classList: undefined|string|string[]) {\n if (!classList) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n if (Array.isArray(classList)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n classList.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(classList);\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';\nimport {matSnackBarAnimations} from './snack-bar-animations';\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [matSnackBarAnimations.contentFade],\n host: {\n '[@contentFade]': '',\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 */\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/** @docs-private */\nexport const SHOW_ANIMATION =\n `${AnimationDurations.ENTERING} ${AnimationCurves.DECELERATION_CURVE}`;\n\n/** @docs-private */\nexport const HIDE_ANIMATION =\n `${AnimationDurations.EXITING} ${AnimationCurves.ACCELERATION_CURVE}`;\n\n/** Animations used by the Material snack bar. */\nexport const matSnackBarAnimations: {\n readonly contentFade: AnimationTriggerMetadata;\n readonly snackBarState: AnimationTriggerMetadata;\n} = {\n /** Animation that slides the dialog in and out of view and fades the opacity. */\n contentFade: trigger('contentFade', [\n transition(':enter', [\n style({opacity: '0'}),\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.STANDARD_CURVE}`)\n ])\n ]),\n\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('visible-top, visible-bottom', style({transform: 'translateY(0%)'})),\n transition('visible-top => hidden-top, visible-bottom => hidden-bottom',\n animate(HIDE_ANIMATION)),\n transition('void => visible-top, void => visible-bottom', animate(SHOW_ANIMATION)),\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 /** Message to be announced by the MatAriaLiveAnnouncer */\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 /**\n * Extra CSS classes to be added to the snack bar container.\n * @deprecated Use `panelClass` instead.\n * @deletion-target 6.0.0\n */\n extraClasses?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction = 'ltr';\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} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {MatSnackBarContainer} from './snack-bar-container';\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 * @deletion-target 7.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 {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} from '@angular/cdk/keycodes';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\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 CanDisable,\n HammerInput,\n HasTabIndex,\n mixinColor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {Subscription} from 'rxjs/Subscription';\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 */\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 */\nexport class MatSliderBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatSliderMixinBase =\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 '(click)': '_onClick($event)',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n '(slide)': '_onSlide($event)',\n '(slideend)': '_onSlideEnd()',\n '(slidestart)': '_onSlideStart($event)',\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.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 },\n templateUrl: 'slider.html',\n styleUrls: ['slider.css'],\n inputs: ['disabled', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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._roundLabelTo = 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 * @deprecated\n * @deletion-target 6.0.0\n */\n @Input('thumb-label')\n get _thumbLabelDeprecated(): boolean { return this._thumbLabel; }\n set _thumbLabelDeprecated(value) { this._thumbLabel = value; }\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 /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input('tick-interval')\n get _tickIntervalDeprecated() { return this.tickInterval; }\n set _tickIntervalDeprecated(v) { this.tickInterval = v; }\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 this._value = coerceNumberProperty(v);\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 /** 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 /** The value to be used for display purposes. */\n get displayValue(): string | number {\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._roundLabelTo && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundLabelTo);\n }\n\n return this.value || 0;\n }\n\n /** set focus to the host element */\n focus() {\n this._focusHostElement();\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 let axis = this.vertical ? 'Y' : 'X';\n let sign = this._invertMouseCoords ? '-' : '';\n return {\n 'transform': `translate${axis}(${sign}${this._thumbGap}px) scale${axis}(${1 - this.percent})`\n };\n }\n\n /** CSS styles for the track fill element. */\n get _trackFillStyles(): { [key: string]: string } {\n let axis = this.vertical ? 'Y' : 'X';\n let sign = this._invertMouseCoords ? '' : '-';\n return {\n 'transform': `translate${axis}(${sign}${this._thumbGap}px) scale${axis}(${this.percent})`\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._direction == '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._direction == 'rtl' ? '-' : '';\n let rotate = !this.vertical && this._direction == '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._direction == '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 _roundLabelTo: 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') 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 private get _invertMouseCoords() {\n return (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n }\n\n /** The language direction for this slider element. */\n private get _direction() {\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 super(elementRef);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngOnInit() {\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, 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.nativeElement);\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 _onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n let 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) { return; }\n\n let 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._direction == '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._direction == '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 if (this._invertMouseCoords) {\n percent = 1 - percent;\n }\n let exactValue = this._calculateValue(percent);\n\n // This calculation finds the closest step by finding the closest whole number divisible by the\n // step relative to the min.\n let closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\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.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() {\n this._elementRef.nativeElement.focus();\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 eb 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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\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} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n HammerInput,\n HasTabIndex,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n RippleRef,\n} from '@angular/material/core';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n\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 */\nexport class MatSlideToggleBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatSlideToggleMixinBase =\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 '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestroy, AfterContentInit,\n ControlValueAccessor, CanDisable, CanColor, HasTabIndex, CanDisableRipple {\n\n private onChange = (_: any) => {};\n private onTouched = () => {};\n\n private _uniqueId: string = `mat-slide-toggle-${++nextUniqueId}`;\n private _slideRenderer: SlideToggleRenderer;\n private _required: boolean = false;\n private _checked: boolean = false;\n\n /** Reference to the focus state ripple. */\n private _focusRipple: RippleRef | null;\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 /** Whether the slide-toggle element is checked or not */\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 /** 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') _inputElement: ElementRef;\n\n /** Reference to the ripple directive on the thumb container. */\n @ViewChild(MatRipple) _ripple: MatRipple;\n\n constructor(elementRef: ElementRef,\n private _platform: Platform,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string) {\n\n super(elementRef);\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngAfterContentInit() {\n this._slideRenderer = new SlideToggleRenderer(this._elementRef, this._platform);\n\n this._focusMonitor\n .monitor(this._inputElement.nativeElement)\n .subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\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 // 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.\n if (this._slideRenderer.dragging) {\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(): void {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n }\n\n /** Function is called whenever the focus changes for the input element. */\n private _onInputFocusChange(focusOrigin: FocusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n // For keyboard focus show a persistent ripple as focus indicator.\n this._focusRipple = this._ripple.launch(0, 0, {persistent: true});\n } else if (!focusOrigin) {\n this.onTouched();\n\n // Fade out and clear the focus ripple if one is currently present.\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\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 _onDragStart() {\n if (!this.disabled) {\n this._slideRenderer.startThumbDrag(this.checked);\n }\n }\n\n _onDrag(event: HammerInput) {\n if (this._slideRenderer.dragging) {\n this._slideRenderer.updateThumbPosition(event.deltaX);\n }\n }\n\n _onDragEnd() {\n if (this._slideRenderer.dragging) {\n const newCheckedValue = this._slideRenderer.dragPercentage > 50;\n\n if (newCheckedValue !== this.checked) {\n this.checked = newCheckedValue;\n this._emitChangeEvent();\n }\n\n // The drag should be stopped outside of the current event handler, because otherwise the\n // click event will be fired before and will revert the drag change.\n setTimeout(() => this._slideRenderer.stopThumbDrag());\n }\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // This method is getting called whenever the label of the slide-toggle changes.\n // Since the slide-toggle uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this._changeDetectorRef.markForCheck();\n }\n}\n\n/**\n * Renderer for the Slide Toggle component, which separates DOM modification in its own class\n */\nclass SlideToggleRenderer {\n\n /** Reference to the thumb HTMLElement. */\n private _thumbEl: HTMLElement;\n\n /** Reference to the thumb bar HTMLElement. */\n private _thumbBarEl: HTMLElement;\n\n /** Width of the thumb bar of the slide-toggle. */\n private _thumbBarWidth: number;\n\n /** Previous checked state before drag started. */\n private _previousChecked: boolean;\n\n /** Percentage of the thumb while dragging. Percentage as fraction of 100. */\n dragPercentage: number;\n\n /** Whether the thumb is currently being dragged. */\n dragging: boolean = false;\n\n constructor(elementRef: ElementRef, platform: Platform) {\n // We only need to interact with these elements when we're on the browser, so only grab\n // the reference in that case.\n if (platform.isBrowser) {\n this._thumbEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-thumb-container');\n this._thumbBarEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-bar');\n }\n }\n\n /** Initializes the drag of the slide-toggle. */\n startThumbDrag(checked: boolean): void {\n if (this.dragging) { return; }\n\n this._thumbBarWidth = this._thumbBarEl.clientWidth - this._thumbEl.clientWidth;\n this._thumbEl.classList.add('mat-dragging');\n\n this._previousChecked = checked;\n this.dragging = true;\n }\n\n /** Resets the current drag and returns the new checked value. */\n stopThumbDrag(): boolean {\n if (!this.dragging) { return false; }\n\n this.dragging = false;\n this._thumbEl.classList.remove('mat-dragging');\n\n // Reset the transform because the component will take care of the thumb position after drag.\n this._thumbEl.style.transform = '';\n\n return this.dragPercentage > 50;\n }\n\n /** Updates the thumb containers position from the specified distance. */\n updateThumbPosition(distance: number): void {\n this.dragPercentage = this._getDragPercentage(distance);\n // Calculate the moved distance based on the thumb bar width.\n const dragX = (this.dragPercentage / 100) * this._thumbBarWidth;\n this._thumbEl.style.transform = `translate3d(${dragX}px, 0, 0)`;\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}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {ScrollDispatchModule} from '@angular/cdk/scrolling';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\nimport {\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MAT_DRAWER_DEFAULT_AUTOSIZE,\n} from './drawer';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n A11yModule,\n OverlayModule,\n ScrollDispatchModule,\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 providers: [\n {provide: MAT_DRAWER_DEFAULT_AUTOSIZE, useValue: false}\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} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\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]': '_margins.left',\n '[style.margin-right.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer) {\n super(changeDetectorRef, container);\n }\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n template: '<ng-content></ng-content>',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\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-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 preserveWhitespaces: false,\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 },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav) _drawers: QueryList<MatSidenav>;\n @ContentChild(MatSidenavContent) _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 {FocusTrap, FocusTrapFactory, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n InjectionToken,\n ViewChild,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {merge} from 'rxjs/observable/merge';\nimport {filter} from 'rxjs/operators/filter';\nimport {take} from 'rxjs/operators/take';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {debounceTime} from 'rxjs/operators/debounceTime';\nimport {map} from 'rxjs/operators/map';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {Subject} from 'rxjs/Subject';\nimport {Observable} from 'rxjs/Observable';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\n\n\n/** Throws an exception when two MatDrawer are matching the same position. */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/**\n * Drawer toggle promise result.\n * @deprecated\n * @deletion-target 6.0.0\n */\nexport class MatDrawerToggleResult {\n constructor(\n /** Whether the drawer is opened or closed. */\n public type: 'open' | 'close',\n /** Whether the drawer animation is finished. */\n public animationFinished: boolean) {}\n}\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\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]': '_margins.left',\n '[style.margin-right.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatDrawerContent implements AfterContentInit {\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 _margins: {left: number|null, right: number|null} = {left: null, right: null};\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) private _container: MatDrawerContainer) {\n }\n\n ngAfterContentInit() {\n this._container._contentMargins.subscribe(margins => {\n this._margins = margins;\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 template: '<ng-content></ng-content>',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\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 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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.onAlignChanged.emit();\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input()\n get align(): 'start' | 'end' { return this.position; }\n set align(value: 'start' | 'end') { this.position = value; }\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._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 /** 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 EventEmitter<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\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 /**\n * Event emitted when the drawer is fully opened.\n * @deprecated Use `opened` instead.\n * @deletion-target 6.0.0\n */\n @Output('open') readonly onOpen: Observable<void> = this._openedStream;\n\n /**\n * Event emitted when the drawer is fully closed.\n * @deprecated Use `closed` instead.\n * @deletion-target 6.0.0\n */\n @Output('close') readonly onClose: Observable<void> = this._closedStream;\n\n /** Event emitted when the drawer's position changes. */\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Output('align-changed') onAlignChanged: 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();\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,\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').pipe(\n filter((event: KeyboardEvent) => event.keyCode === ESCAPE && !this.disableClose)\n ).subscribe((event) => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n }));\n });\n }\n\n /** Traps focus inside the drawer. */\n private _trapFocus() {\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 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._focusTrap.enabled = this._isFocusTrapEnabled;\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\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<void> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<void> {\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<void> {\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 if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n\n // TODO(crisbeto): This promise is here for backwards-compatibility.\n // It should be removed next time we do breaking changes in the drawer.\n // @deletion-target 6.0.0\n return new Promise<any>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => {\n resolve(new MatDrawerToggleResult(open ? 'open' : 'close', true));\n });\n });\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._animationStarted.emit(event);\n }\n\n _onAnimationEnd(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 get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\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 },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatDrawerContainer implements AfterContentInit, OnDestroy {\n @ContentChildren(MatDrawer) _drawers: QueryList<MatDrawer>;\n @ContentChild(MatDrawerContent) _content: 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 /** 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 readonly _contentMargins = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n @ViewChild(CdkScrollable) scrollable: CdkScrollable;\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false) {\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 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._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 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 takeUntil(this._drawers.changes),\n filter((event: AnimationEvent) => event.fromState !== event.toState)\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') {\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 if (isAdd) {\n this._element.nativeElement.classList.add('mat-drawer-opened');\n } else {\n this._element.nativeElement.classList.remove('mat-drawer-opened');\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 == 'ltr') {\n this._left = this._start;\n this._right = this._end;\n } else {\n this._left = this._end;\n this._right = this._start;\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 && drawer.mode !== 'side')\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._start!.mode != 'side')\n || (this._isDrawerOpen(this._end) && this._end!.mode != 'side');\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): boolean {\n return drawer != null && drawer.opened;\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 private _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\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 let 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 let width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // Pull back into the NgZone since in some cases we could be outside.\n this._ngZone.run(() => this._contentMargins.next({left, right}));\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/** Animations used by the Material drawers. */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n state('open, open-instant', style({\n transform: 'translate3d(0, 0, 0)',\n visibility: 'visible',\n })),\n state('void', style({\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","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { IScheduler } from '../Scheduler';\nimport { Subscription, TeardownLogic } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime<T>(dueTime: number, scheduler: IScheduler = async): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\n\nclass DebounceTimeOperator<T> implements Operator<T, T> {\n constructor(private dueTime: number, private scheduler: IScheduler) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceTimeSubscriber<T> extends Subscriber<T> {\n private debouncedSubscription: Subscription = null;\n private lastValue: T = null;\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber<T>,\n private dueTime: number,\n private scheduler: IScheduler) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n\n protected _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n\n debouncedNext(): void {\n this.clearDebounce();\n\n if (this.hasValue) {\n this.destination.next(this.lastValue);\n this.lastValue = null;\n this.hasValue = false;\n }\n }\n\n private clearDebounce(): void {\n const debouncedSubscription = this.debouncedSubscription;\n\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\n\nfunction dispatchNext(subscriber: DebounceTimeSubscriber<any>) {\n subscriber.debouncedNext();\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, FocusOrigin} 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 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 CanColor,\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n RippleRef,\n} from '@angular/material/core';\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// Boilerplate for applying mixins to MatRadioGroup.\n/** @docs-private */\nexport class MatRadioGroupBase { }\nexport const _MatRadioGroupMixinBase = mixinDisabled(MatRadioGroupBase);\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 inputs: ['disabled'],\n})\nexport class MatRadioGroup extends _MatRadioGroupMixinBase\n implements AfterContentInit, ControlValueAccessor, CanDisable {\n /**\n * Selected value for 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 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 /** 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 /**\n * Alignment of the radio-buttons relative to their labels. Can be 'before' or 'after'.\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input()\n get align(): 'start' | 'end' {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n }\n set align(v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n }\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 /** Value of the radio button. */\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 /** Whether the radio button is selected. */\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 super();\n }\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 });\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 != null && !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 */\nexport class 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\nexport const _MatRadioButtonMixinBase =\n mixinColor(mixinDisableRipple(mixinTabIndex(MatRadioButtonBase)), 'accent');\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: ['color', 'disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matRadioButton',\n host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[attr.id]': 'id',\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, CanColor, 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\n if (this._checked != newCheckedState) {\n this._checked = newCheckedState;\n\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 // 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 /**\n * Whether or not the radio-button should appear before or after the label.\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input()\n get align(): 'start' | 'end' {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n }\n set align(v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n }\n\n private _labelPosition: 'before' | 'after';\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\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 this._disabled = coerceBooleanProperty(value);\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 /**\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 /** The child ripple instance. */\n @ViewChild(MatRipple) _ripple: MatRipple;\n\n /** Reference to the current focus ripple. */\n private _focusRipple: RippleRef | null;\n\n /** Unregister function for _radioDispatcher */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n /** The native `<input type=radio>` element */\n @ViewChild('input') _inputElement: ElementRef;\n\n constructor(@Optional() radioGroup: MatRadioGroup,\n elementRef: ElementRef,\n private _changeDetector: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _radioDispatcher: UniqueSelectionDispatcher) {\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(): void {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\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._inputElement.nativeElement)\n .subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\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 this.radioGroup._touch();\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n\n /** Function is called whenever the focus changes for the input element. */\n private _onInputFocusChange(focusOrigin: FocusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, {persistent: true});\n } else if (!focusOrigin) {\n if (this.radioGroup) {\n this.radioGroup._touch();\n }\n\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\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 {\n Component,\n ChangeDetectionStrategy,\n Input,\n ElementRef,\n SimpleChanges,\n OnChanges,\n ViewEncapsulation,\n Optional,\n Inject,\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {DOCUMENT} from '@angular/common';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\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 */\nexport class MatProgressSpinnerBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\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/material2/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 '[style.width.px]': '_elementSize',\n '[style.height.px]': '_elementSize',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'value',\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 preserveWhitespaces: false,\n})\nexport class MatProgressSpinner extends _MatProgressSpinnerMixinBase implements CanColor,\n OnChanges {\n\n private _value = 0;\n private _strokeWidth: number;\n private _fallbackAnimation = false;\n\n /** The width and height of the host element. Will grow with stroke width. */\n _elementSize = BASE_SIZE;\n\n /** Tracks diameters of existing instances to de-dupe generated styles (default d = 100) */\n private static diameters = new Set<number>([BASE_SIZE]);\n\n /**\n * Used for storing all of the generated keyframe animations.\n * @dynamic\n */\n private static styleTag: HTMLStyleElement|null = null;\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._fallbackAnimation && !MatProgressSpinner.diameters.has(this._diameter)) {\n this._attachStyleNode();\n }\n this._updateElementSize();\n }\n private _diameter = BASE_SIZE;\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\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,\n platform: Platform,\n @Optional() @Inject(DOCUMENT) private _document: any) {\n\n super(_elementRef);\n this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\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 _elementRef.nativeElement.classList.add(animationClass);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.strokeWidth || changes.diameter) {\n this._updateElementSize();\n }\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._elementSize * 100;\n }\n\n /** Dynamically generates a style tag containing the correct animation for this diameter. */\n private _attachStyleNode(): void {\n let styleTag = MatProgressSpinner.styleTag;\n\n if (!styleTag) {\n styleTag = this._document.createElement('style');\n this._document.head.appendChild(styleTag);\n MatProgressSpinner.styleTag = styleTag;\n }\n\n if (styleTag && styleTag.sheet) {\n (styleTag.sheet as CSSStyleSheet).insertRule(this._getAnimationText(), 0);\n }\n\n MatProgressSpinner.diameters.add(this.diameter);\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 /** Updates the spinner element size based on its diameter. */\n private _updateElementSize() {\n this._elementSize = this._diameter + Math.max(this.strokeWidth - BASE_STROKE_WIDTH, 0);\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 '[style.width.px]': '_elementSize',\n '[style.height.px]': '_elementSize',\n },\n inputs: ['color'],\n templateUrl: 'progress-spinner.html',\n styleUrls: ['progress-spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatSpinner extends MatProgressSpinner {\n constructor(elementRef: ElementRef, platform: Platform,\n @Optional() @Inject(DOCUMENT) document: any) {\n super(elementRef, platform, document);\n this.mode = 'indeterminate';\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 Component,\n ChangeDetectionStrategy,\n ElementRef,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\n\n// TODO(josephperrott): Benchpress tests.\n// TODO(josephperrott): Add ARIA attributes for progress bar \"for\".\n\n// Boilerplate for applying mixins to MatProgressBar.\n/** @docs-private */\nexport class MatProgressBarBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\nexport const _MatProgressBarMixinBase = mixinColor(MatProgressBarBase, 'primary');\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]': 'value',\n '[attr.mode]': 'mode',\n 'class': 'mat-progress-bar',\n },\n inputs: ['color'],\n templateUrl: 'progress-bar.html',\n styleUrls: ['progress-bar.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatProgressBar extends _MatProgressBarMixinBase implements CanColor {\n\n constructor(public _elementRef: ElementRef) {\n super(_elementRef);\n }\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) { this._value = clamp(v || 0); }\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 /**\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 /** The id of the progress bar. */\n progressbarId = `mat-progress-bar-${progressbarId++}`;\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 }\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/Subscription';\nimport {MatPaginatorIntl} from './paginator-intl';\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 /** The current page size */\n pageSize: number;\n\n /** The current total number of items being paged */\n length: number;\n}\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 host: {\n 'class': 'mat-paginator',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatPaginator implements OnInit, OnDestroy {\n private _initialized: boolean;\n private _intlChanges: Subscription;\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 = coerceNumberProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n _pageIndex: number = 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 _length: number = 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 = coerceNumberProperty(value);\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 this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n ngOnInit() {\n this._initialized = true;\n this._updateDisplayedPageSizeOptions();\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 this.pageIndex++;\n this._emitPageEvent();\n }\n\n /** Move back to the previous page if it exists. */\n previousPage(): void {\n if (!this.hasPreviousPage()) { return; }\n this.pageIndex--;\n this._emitPageEvent();\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 this.pageIndex = 0;\n this._emitPageEvent();\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 this.pageIndex = this.getNumberOfPages();\n this._emitPageEvent();\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 numberOfPages = this.getNumberOfPages();\n return this.pageIndex < numberOfPages && this.pageSize != 0;\n }\n\n /** Calculate the number of pages */\n getNumberOfPages(): number {\n return Math.ceil(this.length / this.pageSize) - 1;\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 this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n\n this.pageSize = pageSize;\n this._emitPageEvent();\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 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\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() {\n this.page.emit({\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, SkipSelf, Optional } from '@angular/core';\nimport {Subject} from 'rxjs/Subject';\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()\nexport class MatPaginatorIntl {\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 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 {A11yModule, ARIA_DESCRIBER_PROVIDER} from '@angular/cdk/a11y';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {LayoutModule} from '@angular/cdk/layout';\nimport {\n MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER,\n MAT_TOOLTIP_DEFAULT_OPTIONS,\n MatTooltip,\n TooltipComponent,\n} from './tooltip';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PlatformModule,\n A11yModule,\n LayoutModule,\n ],\n exports: [MatTooltip, TooltipComponent, MatCommonModule],\n declarations: [MatTooltip, TooltipComponent],\n entryComponents: [TooltipComponent],\n providers: [\n MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER,\n ARIA_DESCRIBER_PROVIDER,\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500\n }\n }\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} from '@angular/cdk/keycodes';\nimport {\n ConnectionPositionPair,\n HorizontalConnectionPos,\n OriginConnectionPosition,\n Overlay,\n OverlayConfig,\n OverlayConnectionPosition,\n OverlayRef,\n RepositionScrollStrategy,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {Platform} from '@angular/cdk/platform';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {take} from 'rxjs/operators/take';\nimport {merge} from 'rxjs/observable/merge';\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 Optional,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {matTooltipAnimations} from './tooltip-animations';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\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/** Creates an error to be thrown if the user supplied an invalid tooltip position. */\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_PROVIDER_FACTORY(overlay: Overlay):\n () => RepositionScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n\n/** @docs-private */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n showDelay: number;\n hideDelay: number;\n touchendHideDelay: number;\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\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.google.com/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 {\n _overlayRef: OverlayRef | null;\n _tooltipInstance: TooltipComponent | null;\n\n private _position: TooltipPosition = 'below';\n private _disabled: boolean = false;\n private _tooltipClass: string|string[]|Set<string>|{[key: string]: any};\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 // TODO(andrewjs): When the overlay's position can be dynamically changed, do not destroy\n // the tooltip.\n if (this._tooltipInstance) {\n this._disposeTooltip();\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 /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input('tooltip-position')\n get _positionDeprecated(): TooltipPosition { return this._position; }\n set _positionDeprecated(value: TooltipPosition) { this._position = value; }\n\n /** The default delay in ms before showing the tooltip after show is called */\n @Input('matTooltipShowDelay') showDelay =\n this._defaultOptions ? this._defaultOptions.showDelay : 0;\n\n /** The default delay in ms before hiding the tooltip after hide is called */\n @Input('matTooltipHideDelay') hideDelay =\n this._defaultOptions ? this._defaultOptions.hideDelay : 0;\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._ariaDescriber.describe(this._elementRef.nativeElement, this.message);\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, Function>();\n\n constructor(\n private _overlay: Overlay,\n private _elementRef: ElementRef,\n private _scrollDispatcher: ScrollDispatcher,\n private _viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n private _platform: Platform,\n private _ariaDescriber: AriaDescriber,\n private _focusMonitor: FocusMonitor,\n @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) private _scrollStrategy,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS)\n private _defaultOptions?: MatTooltipDefaultOptions) {\n\n // TODO(crisbeto): make the `_defaultOptions` a required param next time we do breaking changes.\n // @deletion-target 6.0.0\n\n const element: HTMLElement = _elementRef.nativeElement;\n\n // The mouse events shouldn't be bound on iOS devices, because\n // they can prevent the first tap from firing its click event.\n if (!_platform.IOS) {\n this._manualListeners.set('mouseenter', () => this.show());\n this._manualListeners.set('mouseleave', () => this.hide());\n\n this._manualListeners\n .forEach((listener, event) => _elementRef.nativeElement.addEventListener(event, listener));\n } else 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, because it will prevent users from typing in inputs. If\n // we're on iOS and the tooltip is attached on an input or textarea, we clear\n // the `user-select` to avoid these issues.\n element.style.webkitUserSelect = element.style.userSelect = '';\n }\n\n _focusMonitor.monitor(element).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 !== 'program') {\n _ngZone.run(() => this.show());\n }\n });\n }\n\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n if (this._tooltipInstance) {\n this._disposeTooltip();\n }\n\n // Clean up the event listeners set in the constructor\n if (!this._platform.IOS) {\n this._manualListeners.forEach((listener, event) => {\n this._elementRef.nativeElement.removeEventListener(event, listener);\n });\n\n this._manualListeners.clear();\n }\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.message);\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\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) { return; }\n\n if (!this._tooltipInstance) {\n this._createTooltip();\n }\n\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n this._tooltipInstance!.show(this._position, 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) {\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 ? this._defaultOptions.touchendHideDelay : 1500);\n }\n\n /** Create the tooltip to display */\n private _createTooltip(): void {\n const overlayRef = this._createOverlay();\n const portal = new ComponentPortal(TooltipComponent, this._viewContainerRef);\n\n this._tooltipInstance = overlayRef.attach(portal).instance;\n\n // Dispose of the tooltip when the overlay is detached.\n merge(this._tooltipInstance!.afterHidden(), overlayRef.detachments()).subscribe(() => {\n // Check first if the tooltip has already been removed through this components destroy.\n if (this._tooltipInstance) {\n this._disposeTooltip();\n }\n });\n }\n\n /** Create the overlay config and position strategy */\n private _createOverlay(): OverlayRef {\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay\n .position()\n .connectedTo(this._elementRef, origin.main, overlay.main)\n .withFallbackPosition(origin.fallback, overlay.fallback);\n\n const scrollableAncestors = this._scrollDispatcher\n .getAncestorScrollContainers(this._elementRef);\n\n strategy.withScrollableContainers(scrollableAncestors);\n\n strategy.onPositionChange.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 } else {\n // Otherwise recalculate the origin based on the new position.\n this._tooltipInstance._setTransformOrigin(change.connectionPair);\n }\n }\n });\n\n const config = new OverlayConfig({\n direction: this._dir ? this._dir.value : 'ltr',\n positionStrategy: strategy,\n panelClass: TOOLTIP_PANEL_CLASS,\n scrollStrategy: this._scrollStrategy()\n });\n\n this._overlayRef = this._overlay.create(config);\n\n return this._overlayRef;\n }\n\n /** Disposes the current tooltip and the overlay it is attached to */\n private _disposeTooltip(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n this._tooltipInstance = null;\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 isDirectionLtr = !this._dir || this._dir.value == 'ltr';\n let position: OriginConnectionPosition;\n\n if (this.position == 'above' || this.position == 'below') {\n position = {originX: 'center', originY: this.position == 'above' ? 'top' : 'bottom'};\n } else if (this.position == 'left' ||\n this.position == 'before' && isDirectionLtr ||\n this.position == 'after' && !isDirectionLtr) {\n position = {originX: 'start', originY: 'center'};\n } else if (this.position == 'right' ||\n this.position == 'after' && isDirectionLtr ||\n this.position == 'before' && !isDirectionLtr) {\n position = {originX: 'end', originY: 'center'};\n } else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n\n const {x, y} = this._invertPosition(position.originX, position.originY);\n\n return {\n main: position,\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 let position: OverlayConnectionPosition;\n\n if (this.position == 'above') {\n position = {overlayX: 'center', overlayY: 'bottom'};\n } else if (this.position == 'below') {\n position = {overlayX: 'center', overlayY: 'top'};\n } else if (this.position == 'left' ||\n this.position == 'before' && isLtr ||\n this.position == 'after' && !isLtr) {\n position = {overlayX: 'end', overlayY: 'center'};\n } else if (this.position == 'right' ||\n this.position == 'after' && isLtr ||\n this.position == 'before' && !isLtr) {\n position = {overlayX: 'start', overlayY: 'center'};\n } else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n\n const {x, y} = this._invertPosition(position.overlayX, position.overlayY);\n\n return {\n main: position,\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(take(1)).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 preserveWhitespaces: false,\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 {\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;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n _hideTimeoutId: number;\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 /** The transform origin used in the animation for showing and hiding the tooltip */\n _transformOrigin: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n\n /** Current position of the tooltip. */\n private _position: TooltipPosition;\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 position Position of the tooltip.\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(position: TooltipPosition, delay: number): void {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\n }\n\n // Body interactions should cancel the tooltip if there is a delay in showing.\n this._closeOnInteraction = true;\n this._position = position;\n this._showTimeoutId = setTimeout(() => {\n this._visibility = 'visible';\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 }\n\n this._hideTimeoutId = setTimeout(() => {\n this._visibility = 'hidden';\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 /** Sets the tooltip transform origin according to the position of the tooltip overlay. */\n _setTransformOrigin(overlayPosition: ConnectionPositionPair) {\n const axis = (this._position === 'above' || this._position === 'below') ? 'Y' : 'X';\n const position = axis == 'X' ? overlayPosition.overlayX : overlayPosition.overlayY;\n\n if (position === 'top' || position === 'bottom') {\n this._transformOrigin = position;\n } else if (position === 'start') {\n this._transformOrigin = 'left';\n } else if (position === 'end') {\n this._transformOrigin = 'right';\n } else {\n throw getMatTooltipInvalidPositionError(this._position);\n }\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.google.com/components/tooltips.html#tooltips-interaction\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 state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Animations used by MatTooltip. */\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({transform: 'scale(0)'})),\n state('visible', style({transform: 'scale(1)'})),\n transition('* => visible', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => hidden', animate('150ms cubic-bezier(0.4, 0.0, 1, 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 */\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {BreakpointObserver} from './breakpoints-observer';\nimport {MediaMatcher} from './media-matcher';\n\n@NgModule({\n providers: [BreakpointObserver, MediaMatcher],\n imports: [PlatformModule],\n})\nexport class LayoutModule {}\n\nexport {BreakpointObserver, BreakpointState} from './breakpoints-observer';\nexport {Breakpoints} from './breakpoints';\nexport {MediaMatcher} from './media-matcher';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nexport const Breakpoints = {\n XSmall: '(max-width: 599px)',\n Small: '(min-width: 600px) and (max-width: 959px)',\n Medium: '(min-width: 960px) and (max-width: 1279px)',\n Large: '(min-width: 1280px) and (max-width: 1919px)',\n XLarge: '(min-width: 1920px)',\n\n Handset: '(max-width: 599px) and (orientation: portrait), ' +\n '(max-width: 959px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n\n HandsetPortrait: '(max-width: 599px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n\n HandsetLandscape: '(max-width: 959px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\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 {Injectable, NgZone, OnDestroy} from '@angular/core';\nimport {MediaMatcher} from './media-matcher';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {map} from 'rxjs/operators/map';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {coerceArray} from '@angular/cdk/coercion';\nimport {combineLatest} from 'rxjs/observable/combineLatest';\nimport {fromEventPattern} from 'rxjs/observable/fromEventPattern';\n\n/** The current state of a layout breakpoint. */\nexport interface BreakpointState {\n /** Whether the breakpoint is currently matching. */\n matches: boolean;\n}\n\ninterface Query {\n observable: Observable<BreakpointState>;\n mql: MediaQueryList;\n}\n\n/** Utility for checking the matching state of @media queries. */\n@Injectable()\nexport class BreakpointObserver implements OnDestroy {\n /** A map of all media queries currently being listened for. */\n private _queries: Map<string, Query> = new Map();\n /** A subject for all other observables to takeUntil based on. */\n private _destroySubject: Subject<{}> = new Subject();\n\n constructor(private mediaMatcher: MediaMatcher, private zone: NgZone) {}\n\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value: string | string[]): boolean {\n let queries = coerceArray(value);\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @returns A stream of matches for the given queries.\n */\n observe(value: string | string[]): Observable<BreakpointState> {\n let queries = coerceArray(value);\n let observables = queries.map(query => this._registerQuery(query).observable);\n\n return combineLatest(observables, (a: BreakpointState, b: BreakpointState) => {\n return {\n matches: !!((a && a.matches) || (b && b.matches)),\n };\n });\n }\n\n /** Registers a specific query to be listened for. */\n private _registerQuery(query: string): Query {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query)!;\n }\n\n let mql: MediaQueryList = this.mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n let queryObservable = fromEventPattern(\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n (listener: MediaQueryListListener) => {\n mql.addListener((e: MediaQueryList) => this.zone.run(() => listener(e)));\n },\n (listener: MediaQueryListListener) => {\n mql.removeListener((e: MediaQueryList) => this.zone.run(() => listener(e)));\n })\n .pipe(\n takeUntil(this._destroySubject),\n startWith(mql),\n map((nextMql: MediaQueryList) => ({matches: nextMql.matches}))\n );\n\n // Add the MediaQueryList to the set of queries.\n let output = {observable: queryObservable, mql: mql};\n this._queries.set(query, output);\n return output;\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 {Injectable} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n/**\n * Global registry for all dynamically-created, injected style tags.\n */\nconst styleElementForWebkitCompatibility: Map<string, HTMLStyleElement> = new Map();\n\n/** A utility for calling matchMedia queries. */\n@Injectable()\nexport class MediaMatcher {\n /** The internal matchMedia method to return back a MediaQueryList like object. */\n private _matchMedia: (query: string) => MediaQueryList;\n\n constructor(private platform: Platform) {\n this._matchMedia = this.platform.isBrowser && window.matchMedia ?\n // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window) :\n noopMatchMedia;\n }\n\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query: string): MediaQueryList {\n if (this.platform.WEBKIT) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\n\n/**\n * For Webkit engines that only trigger the MediaQueryListListener when there is at least one CSS\n * selector for the respective media query.\n */\nfunction createEmptyStyleRule(query: string) {\n if (!styleElementForWebkitCompatibility.has(query)) {\n try {\n const style = document.createElement('style');\n\n style.setAttribute('type', 'text/css');\n if (!style.sheet) {\n const cssText = `@media ${query} {.fx-query-test{ }}`;\n style.appendChild(document.createTextNode(cssText));\n }\n\n document.getElementsByTagName('head')[0].appendChild(style);\n\n // Store in private global registry\n styleElementForWebkitCompatibility.set(query, style);\n } catch (e) {\n console.error(e);\n }\n }\n}\n\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query: string): MediaQueryList {\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {},\n removeListener: () => {}\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 {MatSelect, MatSelectTrigger, MAT_SELECT_SCROLL_STRATEGY_PROVIDER} from './select';\nimport {MatCommonModule, MatOptionModule} from '@angular/material/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {ErrorStateMatcher} from '@angular/material/core';\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, ErrorStateMatcher]\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 */\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n SPACE,\n UP_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n} from '@angular/cdk/keycodes';\nimport {\n CdkConnectedOverlay,\n Overlay,\n RepositionScrollStrategy,\n ScrollStrategy,\n ViewportRuler,\n} from '@angular/cdk/overlay';\nimport {filter} from 'rxjs/operators/filter';\nimport {take} from 'rxjs/operators/take';\nimport {map} from 'rxjs/operators/map';\nimport {switchMap} from 'rxjs/operators/switchMap';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\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 {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport {\n CanDisable,\n ErrorStateMatcher,\n CanUpdateErrorState,\n mixinErrorState,\n HasTabIndex,\n MatOptgroup,\n MatOption,\n MatOptionSelectionChange,\n mixinDisabled,\n mixinTabIndex,\n MAT_OPTION_PARENT_COMPONENT,\n mixinDisableRipple,\n CanDisableRipple,\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n} from '@angular/material/core';\nimport {MatFormField, MatFormFieldControl} from '@angular/material/form-field';\nimport {Observable} from 'rxjs/Observable';\nimport {merge} from 'rxjs/observable/merge';\nimport {Subject} from 'rxjs/Subject';\nimport {defer} from 'rxjs/observable/defer';\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/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * (SELECT_PANEL_PADDING_X * 1.5) + 20 = 44\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 20px.\n */\nexport const SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 20;\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 () => RepositionScrollStrategy {\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 */\nexport class MatSelectBase {\n constructor(public _elementRef: ElementRef,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl) {}\n}\nexport const _MatSelectMixinBase = mixinDisableRipple(\n 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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-label]': '_ariaLabel',\n '[attr.aria-labelledby]': 'ariaLabelledby',\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',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n animations: [\n matSelectAnimations.transformPanel,\n matSelectAnimations.fadeInContent\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 /** 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 /** Whether the panel's animation is done. */\n _panelDoneAnimating: boolean = false;\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n _scrollStrategy = this._scrollStrategyFactory();\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 select is focused. */\n focused: boolean = 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') trigger: ElementRef;\n\n /** Panel containing the select options. */\n @ViewChild('panel') panel: ElementRef;\n\n /** Overlay pane containing the options. */\n @ViewChild(CdkConnectedOverlay) 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) 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 /**\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() { 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 /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\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 if (this.options) {\n return merge(...this.options.map(option => option.onSelectionChange));\n }\n\n return this._ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n });\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')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the select has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /**\n * Event emitted when the select has been opened.\n * @deprecated Use `openedChange` instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly onOpen: Observable<void> = this._openedStream;\n\n /**\n * Event emitted when the select has been closed.\n * @deprecated Use `openedChange` instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly onClose: Observable<void> = this._closedStream;\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 emitted when the selected value has been changed by the user.\n * @deprecated Use `selectionChange` instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly change: EventEmitter<MatSelectChange> = this.selectionChange;\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) private _scrollStrategyFactory) {\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.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, undefined, false);\n this.stateChanges.next();\n }\n\n ngAfterContentInit() {\n this._initKeyManager();\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\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) {\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)['font-size']);\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\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((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 this._keyManager.onKeydown(event);\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 event.preventDefault();\n manager.activeItem._selectViaInteraction();\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 /**\n * When the panel element is finished transforming in (though not fading in), it\n * emits an event and focuses an option if the panel is open.\n */\n _onPanelDone(): void {\n if (this.panelOpen) {\n this._scrollTop = 0;\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this._panelDoneAnimating = false;\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * When the panel content is done fading in, the _panelDoneAnimating property is\n * set so the proper class can be added to the panel.\n */\n _onFadeInDone(): void {\n this._panelDoneAnimating = this.panelOpen;\n this._changeDetectorRef.markForCheck();\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 });\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[], isUserInput = false): void {\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getMatSelectNonArrayValueError();\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue, isUserInput));\n this._sortValues();\n } else {\n this._clearSelection();\n\n const correspondingOption = 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 option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.setActiveItem(this.options.toArray().indexOf(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, isUserInput = false): 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 isUserInput ? correspondingOption._selectViaInteraction() : correspondingOption.select();\n this._selectionModel.select(correspondingOption);\n this.stateChanges.next();\n }\n\n return correspondingOption;\n }\n\n\n /**\n * Clears the select trigger and deselects every option in the list.\n * @param skip Option that should not be deselected.\n */\n private _clearSelection(skip?: MatOption): void {\n this._selectionModel.clear();\n this.options.forEach(option => {\n if (option !== skip) {\n option.deselect();\n }\n });\n this.stateChanges.next();\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()\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => this.close());\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\n .pipe(takeUntil(changedOrDestroyed), filter(event => event.isUserInput))\n .subscribe(event => {\n this._onSelect(event.source);\n\n if (!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): void {\n const wasSelected = this._selectionModel.isSelected(option);\n\n // TODO(crisbeto): handle blank/null options inside multi-select.\n if (this.multiple) {\n this._selectionModel.toggle(option);\n this.stateChanges.next();\n wasSelected ? option.deselect() : option.select();\n this._keyManager.setActiveItem(this._getOptionIndex(option)!);\n this._sortValues();\n } else {\n this._clearSelection(option.value == null ? undefined : option);\n\n if (option.value == null) {\n this._propagateChanges(option.value);\n } else {\n this._selectionModel.select(option);\n this.stateChanges.next();\n }\n }\n\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\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.options.forEach(option => {\n if (option.selected) {\n this._selectionModel.select(option);\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 (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._getOptionIndex(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(): void {\n this._elementRef.nativeElement.focus();\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, 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 get _ariaLabel(): string | null {\n // If an ariaLabelledby value has been set, 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 /** 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.\n this.overlayDir.offsetX = 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 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\n // difference, multiplied by -1 to ensure that the overlay moves in the correct\n // direction up the page.\n return 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 shouldPlaceholderFloat(): 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 AnimationTriggerMetadata,\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 */\nexport const matSelectAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInContent: AnimationTriggerMetadata;\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('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 => *', [\n style({\n opacity: 0,\n minWidth: '100%',\n transform: 'scaleY(0)'\n }),\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ]),\n transition('* => void', [\n animate('250ms 100ms linear', style({opacity: 0}))\n ])\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 */\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 * @deletion-target 7.0.0\n */\nexport const transformPanel = matSelectAnimations.transformPanel;\n\n/**\n * @deprecated\n * @deletion-target 7.0.0\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 {isFakeMousedownFromScreenReader} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';\nimport {\n ConnectedPositionStrategy,\n HorizontalConnectionPos,\n Overlay,\n OverlayRef,\n OverlayConfig,\n RepositionScrollStrategy,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {filter} from 'rxjs/operators/filter';\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 {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatMenu} from './menu-directive';\nimport {throwMatMenuMissingError} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\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_PROVIDER_FACTORY(overlay: Overlay):\n () => RepositionScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_MENU_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n\n/** Default top padding of the menu panel. */\nexport const MENU_PANEL_TOP_PADDING = 8;\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 'aria-haspopup': 'true',\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 _closeSubscription = Subscription.EMPTY;\n private _hoverSubscription = Subscription.EMPTY;\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 private _openedByMouse: boolean = false;\n\n /**\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input('mat-menu-trigger-for')\n get _deprecatedMatMenuTriggerFor(): MatMenuPanel {\n return this.menu;\n }\n\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') menu: MatMenuPanel;\n\n /** Data to be passed along to any lazily-rendered content. */\n @Input('matMenuTriggerData') menuData: any;\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 * @deletion-target 6.0.0\n */\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 * @deletion-target 6.0.0\n */\n @Output() readonly onMenuClose: EventEmitter<void> = this.menuClosed;\n\n constructor(private _overlay: Overlay,\n private _element: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_MENU_SCROLL_STRATEGY) private _scrollStrategy,\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 private _focusMonitor?: FocusMonitor) {\n\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n\n ngAfterContentInit() {\n this._checkMenu();\n\n this.menu.close.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' && this._parentMenu) {\n this._parentMenu.closed.emit(reason);\n }\n });\n\n if (this.triggersSubmenu()) {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n this._hoverSubscription = this._parentMenu._hovered()\n .pipe(filter(active => active === this._menuItemInstance))\n .subscribe(() => {\n this._openedByMouse = true;\n this.openMenu();\n });\n }\n }\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n this._cleanUpSubscriptions();\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._createOverlay().attach(this._portal);\n\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n\n this._closeSubscription = 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') {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._element.nativeElement, origin);\n } else {\n this._element.nativeElement.focus();\n }\n }\n\n /** Closes the menu and does the necessary cleanup. */\n private _destroyMenu() {\n if (this._overlayRef && this.menuOpen) {\n this._resetMenu();\n this._closeSubscription.unsubscribe();\n this._overlayRef.detach();\n\n if (this.menu instanceof MatMenu) {\n this.menu._resetAnimation();\n }\n }\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._openedByMouse ? 'mouse' : '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 /**\n * This method resets the menu when it's closed, most importantly restoring\n * focus to the menu trigger if the menu was opened via the keyboard.\n */\n private _resetMenu(): void {\n this._setIsMenuOpen(false);\n\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._openedByMouse) {\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('mouse');\n }\n\n this._openedByMouse = false;\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 this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy as ConnectedPositionStrategy);\n this._overlayRef = this._overlay.create(config);\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._getPosition(),\n hasBackdrop: !this.triggersSubmenu(),\n backdropClass: 'cdk-overlay-transparent-backdrop',\n direction: this.dir,\n scrollStrategy: this._scrollStrategy()\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: ConnectedPositionStrategy): void {\n position.onPositionChange.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 * This method builds the position strategy for the overlay, so the menu is properly connected\n * to the trigger.\n * @returns ConnectedPositionStrategy\n */\n private _getPosition(): ConnectedPositionStrategy {\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 return this._overlay.position()\n .connectedTo(this._element, {originX, originY}, {overlayX, overlayY})\n .withDirection(this.dir)\n .withOffsetY(offsetY)\n .withFallbackPosition(\n {originX: originFallbackX, originY},\n {overlayX: overlayFallbackX, overlayY})\n .withFallbackPosition(\n {originX, originY: originFallbackY},\n {overlayX, overlayY: overlayFallbackY},\n undefined, -offsetY)\n .withFallbackPosition(\n {originX: originFallbackX, originY: originFallbackY},\n {overlayX: overlayFallbackX, overlayY: overlayFallbackY},\n undefined, -offsetY);\n }\n\n /** Cleans up the active subscriptions. */\n private _cleanUpSubscriptions(): void {\n this._closeSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\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.close : 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 this._openedByMouse = true;\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}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 {FocusKeyManager} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ESCAPE, LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {switchMap} from 'rxjs/operators/switchMap';\nimport {take} from 'rxjs/operators/take';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n NgZone,\n} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {merge} from 'rxjs/observable/merge';\nimport {Subscription} from 'rxjs/Subscription';\nimport {matMenuAnimations} from './menu-animations';\nimport {throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel} from './menu-panel';\nimport {MatMenuContent} from './menu-content';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {FocusOrigin} from '@angular/cdk/a11y';\n\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\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\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 2;\n\n\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 preserveWhitespaces: false,\n animations: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ],\n exportAs: 'matMenu'\n})\nexport class MatMenu implements AfterContentInit, MatMenuPanel, 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 /** 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-start' | 'enter' = 'void';\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 /** 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) templateRef: TemplateRef<any>;\n\n /** List of the items inside of a menu. */\n @ContentChildren(MatMenuItem) items: QueryList<MatMenuItem>;\n\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n @ContentChild(MatMenuContent) 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 /**\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 if (classes && classes.length) {\n this._classList = classes.split(' ').reduce((obj: any, className: string) => {\n obj[className] = true;\n return obj;\n }, {});\n\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n }\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 * @deletion-target 6.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'> =\n new EventEmitter<void | 'click' | 'keydown'>();\n\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @deletion-target 6.0.0\n */\n @Output() close = this.closed;\n\n constructor(\n private _elementRef: ElementRef,\n private _ngZone: NgZone,\n @Inject(MAT_MENU_DEFAULT_OPTIONS) private _defaultOptions: MatMenuDefaultOptions) { }\n\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager<MatMenuItem>(this.items).withWrap().withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.close.emit('keydown'));\n }\n\n ngOnDestroy() {\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 if (this.items) {\n return this.items.changes.pipe(\n startWith(this.items),\n switchMap(items => merge(...items.map(item => item._hovered)))\n );\n }\n\n return this._ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this._hovered()));\n }\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n case ESCAPE:\n this.closed.emit('keydown');\n event.stopPropagation();\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 default:\n this._keyManager.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 // 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(() => this._keyManager.setFocusOrigin(origin).setFirstItemActive());\n } else {\n this._keyManager.setFocusOrigin(origin).setFirstItemActive();\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 * It's necessary to set position-based classes to ensure the menu panel animation\n * folds out from the correct direction.\n */\n setPositionClasses(posX: MenuPositionX = this.xPosition, posY: MenuPositionY = this.yPosition) {\n this._classList['mat-menu-before'] = posX === 'before';\n this._classList['mat-menu-after'] = posX === 'after';\n this._classList['mat-menu-above'] = posY === 'above';\n this._classList['mat-menu-below'] = posY === 'below';\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 /** Starts the enter animation. */\n _startAnimation() {\n this._panelAnimationState = 'enter-start';\n }\n\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n this._panelAnimationState = 'void';\n }\n\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event: AnimationEvent) {\n // After the initial expansion is done, trigger the second phase of the enter animation.\n if (event.toState === 'enter-start') {\n this._panelAnimationState = 'enter';\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 Directive,\n TemplateRef,\n ComponentFactoryResolver,\n ApplicationRef,\n Injector,\n ViewContainerRef,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {TemplatePortal, DomPortalOutlet} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\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 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\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 } else if (this._portal.isAttached) {\n this._portal.detach();\n }\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 this._portal.attach(this._outlet, context);\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 {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n Inject,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableRipple,\n mixinDisabled,\n mixinDisableRipple\n} from '@angular/material/core';\nimport {Subject} from 'rxjs/Subject';\nimport {DOCUMENT} from '@angular/common';\n\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nexport class MatMenuItemBase {}\nexport const _MatMenuItemMixinBase = 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 'role': 'menuitem',\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 '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_emitHoverEvent()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n templateUrl: 'menu-item.html',\n})\nexport class MatMenuItem extends _MatMenuItemMixinBase\n implements FocusableOption, CanDisable, CanDisableRipple, OnDestroy {\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,\n @Inject(DOCUMENT) document?: any,\n private _focusMonitor?: FocusMonitor) {\n\n // @deletion-target 6.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._getHostElement(), false);\n }\n\n this._document = document;\n }\n\n /** Focuses the menu item. */\n focus(origin: FocusOrigin = 'program'): void {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._getHostElement(), origin);\n } else {\n this._getHostElement().focus();\n }\n }\n\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._getHostElement());\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 _checkDisabled(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** Emits to the hover stream. */\n _emitHoverEvent() {\n if (!this.disabled) {\n this._hovered.next(this);\n }\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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(`mat-menu-trigger: 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(`x-position value must be either 'before' or after'.\n Example: <mat-menu x-position=\"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(`y-position value must be either 'above' or below'.\n Example: <mat-menu y-position=\"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{\n trigger,\n state,\n style,\n animate,\n transition,\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 */\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 // TODO(kara): switch to :enter and :leave once Mobile Safari is sorted out.\n state('void', style({\n opacity: 0,\n // This starts off from 0.01, instead of 0, because there's an issue in the Angular animations\n // as of 4.2, which causes the animation to be skipped if it starts from 0.\n transform: 'scale(0.01, 0.01)'\n })),\n state('enter-start', style({\n opacity: 1,\n transform: 'scale(1, 0.5)'\n })),\n state('enter', style({\n transform: 'scale(1, 1)'\n })),\n transition('void => enter-start', animate('100ms linear')),\n transition('enter-start => enter', animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n transition('* => void', animate('150ms 50ms 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 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 * @deletion-target 7.0.0\n */\nexport const fadeInItems = matMenuAnimations.fadeInItems;\n\n/**\n * @deprecated\n * @deletion-target 7.0.0\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 {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {SPACE, ENTER, HOME, END} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\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} from '@angular/core';\nimport {\n CanDisable,\n CanDisableRipple,\n MatLine,\n MatLineSetter,\n mixinDisabled,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Subscription} from 'rxjs/Subscription';\n\n\n/** @docs-private */\nexport class MatSelectionListBase {}\nexport const _MatSelectionListMixinBase = mixinDisableRipple(mixinDisabled(MatSelectionListBase));\n\n/** @docs-private */\nexport class MatListOptionBase {}\nexport const _MatListOptionMixinBase = 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/**\n * Change event object emitted by MatListOption whenever the selected state changes.\n * @deprecated Use the `MatSelectionListChange` event on the selection list instead.\n * @deletion-target 6.0.0\n */\nexport class MatListOptionChange {\n constructor(\n /** Reference to the list option that changed. */\n public source: MatListOption,\n /** The new selected state of the option. */\n public selected: boolean) {}\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-focus]': '_hasFocus',\n '[attr.aria-selected]': 'selected.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n },\n templateUrl: 'list-option.html',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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\n /** Whether the option has focus. */\n _hasFocus: boolean = false;\n\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n /** DOM element containing the item's text. */\n @ViewChild('text') _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 /** Value of the option */\n @Input() 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 /**\n * Emits a change event whenever the selected state of an option changes.\n * @deprecated Use the `selectionChange` event on the `<mat-selection-list>` instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly selectionChange: EventEmitter<MatListOptionChange> =\n new EventEmitter<MatListOptionChange>();\n\n constructor(private _element: ElementRef,\n private _changeDetector: ChangeDetectorRef,\n /** @docs-private */\n @Inject(forwardRef(() => MatSelectionList)) public selectionList: MatSelectionList) {\n super();\n }\n\n ngOnInit() {\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 const wasSelected = this._selected;\n\n Promise.resolve().then(() => {\n if (this._selected || wasSelected) {\n this.selected = true;\n this._changeDetector.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n // TODO: consider turning the setter into a function, it doesn't do anything as a class.\n // tslint:disable-next-line:no-unused-expression\n new MatLineSetter(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(() => this.selected = false);\n }\n\n this.selectionList._removeOptionFromList(this);\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 // TODO: the `selectionChange` event on the option is deprecated. Remove that in the future.\n this._emitDeprecatedChangeEvent();\n }\n }\n\n _handleFocus() {\n this._hasFocus = true;\n this.selectionList._setFocusedOption(this);\n }\n\n _handleBlur() {\n this._hasFocus = false;\n this.selectionList._onTouched();\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. */\n _setSelected(selected: boolean) {\n if (selected === this._selected) {\n return;\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 }\n\n /** Emits a selectionChange event for this option. */\n _emitDeprecatedChangeEvent() {\n // TODO: the `selectionChange` event on the option is deprecated. Remove that in the future.\n this.selectionChange.emit(new MatListOptionChange(this, this.selected));\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: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'listbox',\n '[tabIndex]': 'tabIndex',\n 'class': 'mat-selection-list',\n '(focus)': 'focus()',\n '(blur)': '_onTouched()',\n '(keydown)': '_keydown($event)',\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatSelectionList extends _MatSelectionListMixinBase implements FocusableOption,\n CanDisable, CanDisableRipple, AfterContentInit, ControlValueAccessor, OnDestroy {\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatListOption>;\n\n /** The option components contained within this selection-list. */\n @ContentChildren(MatListOption) 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 /** 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 /** Used for storing the values that were assigned before the options were initialized. */\n private _tempValues: string[]|null;\n\n private _modelChanges = Subscription.EMPTY;\n\n /** View to model callback that should be called if the list or its options lost focus. */\n _onTouched: () => void = () => {};\n\n constructor(private _element: ElementRef, @Attribute('tabindex') tabIndex: string) {\n super();\n\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\n if (this._tempValues) {\n this._setOptionsFromValues(this._tempValues);\n this._tempValues = null;\n }\n\n // Sync external changes to the model back to the options.\n this._modelChanges = this.selectedOptions.onChange!.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 ngOnDestroy() {\n this._modelChanges.unsubscribe();\n }\n\n /** Focuses the last active list option. */\n focus() {\n this._element.nativeElement.focus();\n }\n\n /** Selects all of the options. */\n selectAll() {\n this.options.forEach(option => option._setSelected(true));\n this._reportValueChange();\n }\n\n /** Deselects all of the options. */\n deselectAll() {\n this.options.forEach(option => option._setSelected(false));\n this._reportValueChange();\n }\n\n /** Sets the focused option of the selection-list. */\n _setFocusedOption(option: MatListOption) {\n this._keyManager.updateActiveItemIndex(this._getOptionIndex(option));\n }\n\n /** Removes an option from the selection list and updates the active item. */\n _removeOptionFromList(option: MatListOption) {\n if (option._hasFocus) {\n const optionIndex = this._getOptionIndex(option);\n\n // Check whether the option is the last item\n if (optionIndex > 0) {\n this._keyManager.setPreviousItemActive();\n } else if (optionIndex === 0 && this.options.length > 1) {\n this._keyManager.setNextItemActive();\n }\n }\n }\n\n /** Passes relevant key presses to our key manager. */\n _keydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n case SPACE:\n case ENTER:\n if (!this.disabled) {\n this._toggleSelectOnFocusedOption();\n\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 event.keyCode === HOME ? this._keyManager.setFirstItemActive() :\n this._keyManager.setLastItemActive();\n event.preventDefault();\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /** Reports a value change to the ControlValueAccessor */\n _reportValueChange() {\n if (this.options) {\n this._onChange(this._getSelectedOptionValues());\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 if (this.options) {\n this._setOptionsFromValues(values || []);\n } else {\n this._tempValues = values;\n }\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n if (this.options) {\n this.options.forEach(option => option.disabled = isDisabled);\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 /** Returns the option with the specified value. */\n private _getOptionByValue(value: string): MatListOption | undefined {\n return this.options.find(option => option.value === value);\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\n .map(value => this._getOptionByValue(value))\n .filter(Boolean)\n .forEach(option => option!._setSelected(true));\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 selected state of the currently focused option. */\n private _toggleSelectOnFocusedOption(): 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) {\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 // TODO: the `selectionChange` event on the option is deprecated. Remove that in the future.\n focusedOption._emitDeprecatedChangeEvent();\n }\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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} from '@angular/core';\nimport {CanDisableRipple, MatLine, MatLineSetter, mixinDisableRipple} from '@angular/material/core';\n\n// Boilerplate for applying mixins to MatList.\n/** @docs-private */\nexport class MatListBase {}\nexport const _MatListMixinBase = mixinDisableRipple(MatListBase);\n\n// Boilerplate for applying mixins to MatListItem.\n/** @docs-private */\nexport class MatListItemBase {}\nexport const _MatListItemMixinBase = 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'\n },\n templateUrl: 'list.html',\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatNavList extends _MatListMixinBase implements CanDisableRipple {}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-list',\n exportAs: 'matList',\n templateUrl: 'list.html',\n host: {'class': 'mat-list'},\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatList extends _MatListMixinBase implements CanDisableRipple {}\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]',\n exportAs: 'matListItem',\n host: {\n 'class': 'mat-list-item',\n // @deletion-target 7.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.\n '[class.mat-list-item-avatar]': '_avatar',\n '[class.mat-list-item-with-avatar]': '_avatar',\n '(focus)': '_handleFocus()',\n '(blur)': '_handleBlur()',\n },\n inputs: ['disableRipple'],\n templateUrl: 'list-item.html',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListItem extends _MatListItemMixinBase implements AfterContentInit,\n CanDisableRipple {\n private _isNavList: boolean = false;\n\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n @ContentChild(MatListAvatarCssMatStyler) _avatar: MatListAvatarCssMatStyler;\n\n constructor(private _element: ElementRef,\n @Optional() private _navList: MatNavList) {\n super();\n this._isNavList = !!_navList;\n }\n\n ngAfterContentInit() {\n // TODO: consider turning the setter into a function, it doesn't do anything as a class.\n // tslint:disable-next-line:no-unused-expression\n new MatLineSetter(this._lines, this._element);\n }\n\n /** Whether this list item should show a ripple effect when clicked. */\n _isRippleDisabled() {\n return !this._isNavList || this.disableRipple || this._navList.disableRipple;\n }\n\n _handleFocus() {\n this._element.nativeElement.classList.add('mat-list-item-focus');\n }\n\n _handleBlur() {\n this._element.nativeElement.classList.remove('mat-list-item-focus');\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 {take} from 'rxjs/operators/take';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {MatIconRegistry} from './icon-registry';\n\n\n// Boilerplate for applying mixins to MatIcon.\n/** @docs-private */\nexport class MatIconBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatIconMixinBase = mixinColor(MatIconBase);\n\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',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon extends _MatIconMixinBase implements OnChanges, OnInit, CanColor {\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 constructor(\n elementRef: ElementRef,\n private _iconRegistry: MatIconRegistry,\n @Attribute('aria-hidden') ariaHidden: string) {\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 if (changes.svgIcon) {\n if (this.svgIcon) {\n const [namespace, iconName] = this._splitIconName(this.svgIcon);\n\n this._iconRegistry.getNamedSvgIcon(iconName, namespace).pipe(take(1)).subscribe(\n svg => this._setSvgElement(svg),\n (err: Error) => console.log(`Error retrieving icon: ${err.message}`)\n );\n } else {\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 private _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n const childCount = layoutElement.childNodes.length;\n\n // Remove existing child nodes and add the new SVG element. Note that we can't\n // use innerHTML, because IE will throw if the element has a data binding.\n for (let i = 0; i < childCount; i++) {\n layoutElement.removeChild(layoutElement.childNodes[i]);\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {catchError} from 'rxjs/operators/catchError';\nimport {tap} from 'rxjs/operators/tap';\nimport {finalize} from 'rxjs/operators/finalize';\nimport {map} from 'rxjs/operators/map';\nimport {share} from 'rxjs/operators/share';\nimport {\n Injectable,\n Inject,\n InjectionToken,\n Optional,\n SecurityContext,\n SkipSelf,\n} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {Observable} from 'rxjs/Observable';\nimport {forkJoin} from 'rxjs/observable/forkJoin';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {_throw as observableThrow} from 'rxjs/observable/throw';\nimport {DOCUMENT} from '@angular/common';\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/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 getMatIconFailedToSanitizeError(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 * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n svgElement: SVGElement | null = null;\n constructor(public url: SafeResourceUrl) { }\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()\nexport class MatIconRegistry {\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 // TODO(crisbeto): make _document required next major release.\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): this {\n return this.addSvgIconInNamespace('', iconName, url);\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): this {\n const key = iconKey(namespace, iconName);\n this._svgIconConfigs.set(key, new SvgIconConfig(url));\n return this;\n }\n\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url: SafeResourceUrl): this {\n return this.addSvgIconSetInNamespace('', url);\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): this {\n const config = new SvgIconConfig(url);\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 return this;\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 let url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeError(safeUrl);\n }\n\n let 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 /**\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: any): Observable<SVGElement | null> => {\n let url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the combined Observable won't\n // necessarily fail.\n console.log(`Loading icon set URL: ${url} failed: ${err}`);\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);\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)));\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): SVGElement {\n const svg = this._svgElementFromString(responseText);\n this._setSvgAttributes(svg);\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): SVGElement | null {\n const iconSource = iconSet.querySelector('#' + 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.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);\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));\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);\n }\n\n /**\n * Creates a DOM element from the given SVG string.\n */\n private _svgElementFromString(str: string): SVGElement {\n if (this._document || typeof document !== 'undefined') {\n const div = (this._document || document).createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n return svg;\n }\n\n throw new Error('MatIconRegistry could not resolve document.');\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 let svg = this._svgElementFromString('<svg></svg>');\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): SVGElement {\n if (!svg.getAttribute('xmlns')) {\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n }\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 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): Observable<string> {\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeError(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 `finally` 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/** @docs-private */\nexport function ICON_REGISTRY_PROVIDER_FACTORY(\n parentRegistry: MatIconRegistry,\n httpClient: HttpClient,\n sanitizer: DomSanitizer,\n document?: any) {\n return parentRegistry || new MatIconRegistry(httpClient, sanitizer, document);\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(), 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","import { Observable } from '../Observable';\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\n\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\nfunction shareSubjectFactory() {\n return new Subject();\n}\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for .multicast(() => new Subject()).refCount().\n *\n * <img src=\"./img/share.png\" width=\"100%\">\n *\n * @return {Observable<T>} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share<T>(): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => refCount()(multicast(shareSubjectFactory)(source)) as Observable<T>;\n};\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';\nimport { FactoryOrValue, MonoTypeOperatorFunction, OperatorFunction, UnaryFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function multicast<T>(subjectOrSubjectFactory: FactoryOrValue<Subject<T>>): UnaryFunction<Observable<T>, ConnectableObservable<T>>;\nexport function multicast<T>(SubjectFactory: (this: Observable<T>) => Subject<T>, selector?: MonoTypeOperatorFunction<T>): MonoTypeOperatorFunction<T>;\nexport function multicast<T, R>(SubjectFactory: (this: Observable<T>) => Subject<T>, selector?: OperatorFunction<T, R>): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * <img src=\"./img/multicast.png\" width=\"100%\">\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast<T, R>(subjectOrSubjectFactory: Subject<T> | (() => Subject<T>),\n selector?: (source: Observable<T>) => Observable<R>): OperatorFunction<T, R> {\n return function multicastOperatorFunction(source: Observable<T>): Observable<R> {\n let subjectFactory: () => Subject<T>;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = <() => Subject<T>>subjectOrSubjectFactory;\n } else {\n subjectFactory = function subjectFactory() {\n return <Subject<T>>subjectOrSubjectFactory;\n };\n }\n\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n\n const connectable: any = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n\n return <ConnectableObservable<R>> connectable;\n };\n}\n\nexport class MulticastOperator<T, R> implements Operator<T, R> {\n constructor(private subjectFactory: () => Subject<T>,\n private selector: (source: Observable<T>) => Observable<R>) {\n }\n call(subscriber: Subscriber<R>, source: any): any {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription, TeardownLogic } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable<T>\n */\nexport class ConnectableObservable<T> extends Observable<T> {\n\n protected _subject: Subject<T>;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n _isComplete = false;\n\n constructor(protected source: Observable<T>,\n protected subjectFactory: () => Subject<T>) {\n super();\n }\n\n protected _subscribe(subscriber: Subscriber<T>) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject<T> {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n } else {\n this._connection = connection;\n }\n }\n return connection;\n }\n\n refCount(): Observable<T> {\n return higherOrderRefCount()(this) as Observable<T>;\n }\n}\n\nconst connectableProto = <any>ConnectableObservable.prototype;\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n};\n\nclass ConnectableSubscriber<T> extends SubjectSubscriber<T> {\n constructor(destination: Subject<T>,\n private connectable: ConnectableObservable<T>) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = <any>this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator<T> implements Operator<T, T> {\n constructor(private connectable: ConnectableObservable<T>) {\n }\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n\n const { connectable } = this;\n (<any> connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n (<any> refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber<T> extends Subscriber<T> {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber<T>,\n private connectable: ConnectableObservable<T>) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = (<any> connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n (<any> connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // Observable.range(0, 10)\n // .publish()\n // .refCount()\n // .take(5)\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = (<any> connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription, TeardownLogic } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../interfaces';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Observable } from '../Observable';\n\nexport function refCount<T>(): MonoTypeOperatorFunction<T> {\n return function refCountOperatorFunction(source: ConnectableObservable<T>): Observable<T> {\n return source.lift(new RefCountOperator(source));\n };\n}\n\nclass RefCountOperator<T> implements Operator<T, T> {\n constructor(private connectable: ConnectableObservable<T>) {\n }\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n\n const { connectable } = this;\n (<any> connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n (<any> refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber<T> extends Subscriber<T> {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber<T>,\n private connectable: ConnectableObservable<T>) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = (<any> connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n (<any> connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // Observable.range(0, 10)\n // .publish()\n // .refCount()\n // .take(5)\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = (<any> connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Operator } from './Operator';\nimport { Observer } from './Observer';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { ISubscription, Subscription, TeardownLogic } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber<T>\n */\nexport class SubjectSubscriber<T> extends Subscriber<T> {\n constructor(protected destination: Subject<T>) {\n super(destination);\n }\n}\n\n/**\n * @class Subject<T>\n */\nexport class Subject<T> extends Observable<T> implements ISubscription {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer<T>[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n static create: Function = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n }\n\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = <any>operator;\n return <any>subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n asObservable(): Observable<T> {\n const observable = new Observable<T>();\n (<any>observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(protected destination?: Observer<T>, source?: Observable<T>) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Observer } from './Observer';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription<T> extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject<T>, public subscriber: Observer<T>) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport class ObjectUnsubscribedError extends Error {\n constructor() {\n const err: any = super('object unsubscribed');\n (<any> this).name = err.name = 'ObjectUnsubscribedError';\n (<any> this).stack = err.stack;\n (<any> this).message = err.message;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../interfaces';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n return function mapOperation(source: Observable<T>): Observable<R> {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator<T, R> implements Operator<T, R> {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber<R>, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber<T, R> extends Subscriber<T> {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber<R>,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription, TeardownLogic } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => source.lift(new FinallyOperator(callback));\n}\n\nclass FinallyOperator<T> implements Operator<T, T> {\n constructor(private callback: () => void) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FinallySubscriber<T> extends Subscriber<T> {\n constructor(destination: Subscriber<T>, callback: () => void) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable, ObservableInput } from '../Observable';\n\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../interfaces';\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <img src=\"./img/catch.png\" width=\"100%\">\n *\n * @example <caption>Continues with a different Observable when there's an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n == 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * })\n * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n *\n * @example <caption>Retries the caught source Observable again in case of error, similar to retry() operator</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * })\n * .catch((err, caught) => caught)\n * .take(30)\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n *\n * @example <caption>Throws a new error when the source Observable throws an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * if (n == 4) {\n * throw 'four!';\n * }\n * return n;\n * })\n * .catch(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError<T, R>(selector: (err: any, caught: Observable<T>) => ObservableInput<R>): OperatorFunction<T, T | R> {\n return function catchErrorOperatorFunction(source: Observable<T>): Observable<T | R> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable<T>);\n };\n}\n\nclass CatchOperator<T, R> implements Operator<T, T | R> {\n caught: Observable<T>;\n\n constructor(private selector: (err: any, caught: Observable<T>) => ObservableInput<T | R>) {\n }\n\n call(subscriber: Subscriber<R>, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber<T, R> extends OuterSubscriber<T, T | R> {\n constructor(destination: Subscriber<any>,\n private selector: (err: any, caught: Observable<T>) => ObservableInput<T | R>,\n private caught: Observable<T>) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n this.add(subscribeToResult(this, result));\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 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 {\n coerceToString,\n coerceToNumber,\n} from './grid-list-measure';\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MatGridList implements OnInit, AfterContentChecked {\n /** Number of columns being rendered. */\n private _cols: number;\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) _tiles: QueryList<MatGridTile>;\n\n constructor(private _element: ElementRef, @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) { this._cols = coerceToNumber(value); }\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 = coerceToString(value); }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n set rowHeight(value: string | number) {\n const newValue = coerceToString(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 const tracker = new TileCoordinator(this.cols, this._tiles);\n const direction = this._dir ? this._dir.value : 'ltr';\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n this._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[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 * 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);\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);\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\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 list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\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\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 list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n}\n\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string { return `calc(${exp})`; }\n\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return (value.match(/px|em|rem/)) ? 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 {QueryList} from '@angular/core';\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 let 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 constructor(numColumns: number, tiles: QueryList<MatGridTile>) {\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n\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 let 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 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 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.\n } while (gapEndIndex - gapStartIndex < tileCols);\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 ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {MatLine, MatLineSetter} from '@angular/material/core';\nimport {coerceToNumber} from './grid-list-measure';\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(private _element: ElementRef) {}\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 = coerceToNumber(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 = coerceToNumber(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[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 preserveWhitespaces: false,\n})\nexport class MatGridTileText implements AfterContentInit {\n /**\n * Helper that watches the number of lines in a text area and sets\n * a class on the host element that matches the line count.\n */\n _lineSetter: MatLineSetter;\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n constructor(private _element: ElementRef) {}\n\n ngAfterContentInit() {\n this._lineSetter = new MatLineSetter(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\n/**\n * Converts values into strings. Falsy values become empty strings.\n * @docs-private\n */\nexport function coerceToString(value: string | number): string {\n return `${value || ''}`;\n}\n\n/**\n * Converts a value that might be a string into a number.\n * @docs-private\n */\nexport function coerceToNumber(value: string | number): number {\n return typeof value === 'string' ? parseInt(value, 10) : 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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {filter} from 'rxjs/operators/filter';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Host,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {merge} from 'rxjs/observable/merge';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatExpansionPanel} from './expansion-panel';\nimport {matExpansionAnimations} from './expansion-animations';\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 preserveWhitespaces: false,\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]': 'panel.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 '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n '[@expansionHeight]': `{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }`,\n },\n})\nexport class MatExpansionPanelHeader implements OnDestroy {\n private _parentChangeSubscription = Subscription.EMPTY;\n\n constructor(\n @Host() public panel: MatExpansionPanel,\n private _element: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef) {\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 = merge(\n panel.opened,\n panel.closed,\n panel._inputChanges.pipe(filter(changes => !!(changes.hideToggle || changes.disabled)))\n )\n .subscribe(() => this._changeDetectorRef.markForCheck());\n\n _focusMonitor.monitor(_element.nativeElement);\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 /** 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 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 event.preventDefault();\n this._toggle();\n break;\n default:\n return;\n }\n }\n\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element.nativeElement);\n }\n}\n\n/**\n * `<mat-panel-description>`\n *\n * This direction 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 direction 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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n Host,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n SimpleChanges,\n ViewEncapsulation,\n ViewContainerRef,\n AfterContentInit,\n ContentChild,\n} from '@angular/core';\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {Subject} from 'rxjs/Subject';\nimport {take} from 'rxjs/operators/take';\nimport {filter} from 'rxjs/operators/filter';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {MatAccordion} from './accordion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {matExpansionAnimations} from './expansion-animations';\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\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 MdAccordion 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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled', 'expanded'],\n outputs: ['opened', 'closed', 'expandedChange'],\n animations: [matExpansionAnimations.bodyExpansion],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n }\n})\nexport class MatExpansionPanel extends CdkAccordionItem\n implements AfterContentInit, OnChanges, OnDestroy {\n /** Whether the toggle indicator should be hidden. */\n @Input()\n get hideToggle(): boolean { return this._hideToggle; }\n set hideToggle(value: boolean) {\n this._hideToggle = coerceBooleanProperty(value);\n }\n private _hideToggle = false;\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: MatAccordion;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatExpansionPanelContent) _lazyContent: MatExpansionPanelContent;\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 constructor(@Optional() @Host() accordion: MatAccordion,\n _changeDetectorRef: ChangeDetectorRef,\n _uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n private _viewContainerRef: ViewContainerRef) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n this.accordion = accordion;\n }\n\n /** Whether the expansion indicator should be hidden. */\n _getHideToggle(): boolean {\n if (this.accordion) {\n return this.accordion.hideToggle;\n }\n return this.hideToggle;\n }\n\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing(): boolean {\n if (this.accordion) {\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._inputChanges.complete();\n }\n\n _bodyAnimation(event: AnimationEvent) {\n const classList = event.element.classList;\n const cssClass = 'mat-expanded';\n const {phaseName, toState} = event;\n\n // Toggle the body's `overflow: hidden` class when closing starts or when expansion ends in\n // order to prevent the cases where switching too early would cause the animation to jump.\n // Note that we do it directly on the DOM element to avoid the slight delay that comes\n // with doing it via change detection.\n if (phaseName === 'done' && toState === 'expanded') {\n classList.add(cssClass);\n } else if (phaseName === 'start' && toState === 'collapsed') {\n classList.remove(cssClass);\n }\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\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/** Animations used by the Material expansion panel. */\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', style({transform: 'rotate(0deg)'})),\n state('expanded', style({transform: 'rotate(180deg)'})),\n transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n\n /** Animation that expands and collapses the panel header height. */\n expansionHeaderHeight: trigger('expansionHeight', [\n state('collapsed', 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', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: trigger('bodyExpansion', [\n state('collapsed', style({height: '0px', visibility: 'hidden'})),\n state('expanded', style({height: '*', visibility: 'visible'})),\n transition('expanded <=> collapsed', 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 {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 */\n\nimport {Directive, Input} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkAccordion} from '@angular/cdk/accordion';\n\n/** MatAccordion's display modes. */\nexport type MatAccordionDisplayMode = 'default' | 'flat';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n host: {\n class: 'mat-accordion'\n }\n})\nexport class MatAccordion extends CdkAccordion {\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 * The 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 reset 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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 Output,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {CdkAccordion} from './accordion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\n@Directive({\n selector: 'cdk-accordion-item',\n exportAs: 'cdkAccordionItem',\n})\nexport class CdkAccordionItem implements OnDestroy {\n /** Event emitted every time the AccordionItem is closed. */\n @Output() closed: EventEmitter<void> = new EventEmitter<void>();\n /** Event emitted every time the AccordionItem is opened. */\n @Output() opened: EventEmitter<void> = new EventEmitter<void>();\n /** Event emitted when the AccordionItem is destroyed. */\n @Output() destroyed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n @Output() expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The unique AccordionItem id. */\n readonly id: string = `cdk-accordion-child-${nextId++}`;\n\n /** Whether the AccordionItem is expanded. */\n @Input()\n get expanded(): any { return this._expanded; }\n set expanded(expanded: any) {\n expanded = coerceBooleanProperty(expanded);\n\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n } else {\n this.closed.emit();\n }\n\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n private _expanded = false;\n\n /** Whether the AccordionItem is disabled. */\n @Input()\n get disabled() { return this._disabled; }\n set disabled(disabled: any) { this._disabled = coerceBooleanProperty(disabled); }\n private _disabled: boolean = false;\n\n /** Unregister function for _expansionDispatcher. */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n constructor(@Optional() public accordion: CdkAccordion,\n private _changeDetectorRef: ChangeDetectorRef,\n protected _expansionDispatcher: UniqueSelectionDispatcher) {\n this._removeUniqueSelectionListener =\n _expansionDispatcher.listen((id: string, accordionId: string) => {\n if (this.accordion && !this.accordion.multi &&\n this.accordion.id === accordionId && this.id !== id) {\n this.expanded = false;\n }\n });\n }\n\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.destroyed.emit();\n this._removeUniqueSelectionListener();\n }\n\n /** Toggles the expanded state of the accordion item. */\n toggle(): void {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n\n /** Sets the expanded state of the accordion item to false. */\n close(): void {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n\n /** Sets the expanded state of the accordion item to true. */\n open(): void {\n if (!this.disabled) {\n this.expanded = 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 {Directive, Input} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n/** Used to generate unique ID for each accordion. */\nlet nextId = 0;\n\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\n@Directive({\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n})\nexport class CdkAccordion {\n /** A readonly id value to use for unique selection coordination. */\n readonly id = `cdk-accordion-${nextId++}`;\n\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n @Input()\n get multi(): boolean { return this._multi; }\n set multi(multi: boolean) { this._multi = coerceBooleanProperty(multi); }\n private _multi: 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 {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-inset]': 'inset',\n 'class': 'mat-divider'\n },\n template: '',\n styleUrls: ['divider.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatCalendar} from './calendar';\nimport {MatCalendarBody} from './calendar-body';\nimport {\n MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER,\n MatDatepicker,\n MatDatepickerContent,\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 ],\n exports: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [\n MatDatepickerContent,\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n Directive,\n ContentChild,\n} from '@angular/core';\nimport {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {Subscription} from 'rxjs/Subscription';\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 '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n },\n exportAs: 'matDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.datepicker.disabled : !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MatDatepickerToggleIcon) _customIcon: MatDatepickerToggleIcon;\n\n constructor(public _intl: MatDatepickerIntl, private _changeDetectorRef: ChangeDetectorRef) {}\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 AfterContentInit,\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} from '@angular/material/core';\nimport {MatFormField} from '@angular/material/form-field';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '@angular/material/input';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatDatepicker} from './datepicker';\nimport {createMissingDateImplError} from './datepicker-errors';\n\n\nexport const MAT_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\n\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]': 'true',\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)': '_onTouched()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n})\nexport class MatDatepickerInput<D> implements AfterContentInit, ControlValueAccessor, OnDestroy,\n Validator {\n /** The datepicker that this input is associated with. */\n @Input()\n set matDatepicker(value: MatDatepicker<D>) {\n this.registerDatepicker(value);\n }\n _datepicker: MatDatepicker<D>;\n\n private registerDatepicker(value: MatDatepicker<D>) {\n if (value) {\n this._datepicker = value;\n this._datepicker._registerInput(this);\n }\n }\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 let oldDate = this.value;\n this._value = value;\n this._elementRef.nativeElement.value =\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\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\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n\n if (newValue) {\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 this._elementRef.nativeElement.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,\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 ngAfterContentInit() {\n if (this._datepicker) {\n this._datepickerSubscription =\n 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 }\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 * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getPopupConnectionElementRef(): ElementRef {\n return this._formField ? this._formField.underlineRef : this._elementRef;\n }\n\n /**\n * Determines the offset to be used when the calendar goes into a fallback position.\n * Primarily used to prevent the calendar from overlapping the input.\n */\n _getPopupFallbackOffset(): number {\n return this._formField ? -this._formField._inputContainerRef.nativeElement.clientHeight : 0;\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 if (event.altKey && event.keyCode === DOWN_ARROW) {\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 this._value = date;\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\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} from '@angular/cdk/keycodes';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n RepositionScrollStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {take} from 'rxjs/operators/take';\nimport {filter} from 'rxjs/operators/filter';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\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 {DateAdapter} from '@angular/material/core';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {DOCUMENT} from '@angular/common';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {merge} from 'rxjs/observable/merge';\nimport {MatCalendar} from './calendar';\nimport {createMissingDateImplError} from './datepicker-errors';\nimport {MatDatepickerInput} from './datepicker-input';\n\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_PROVIDER_FACTORY(overlay: Overlay):\n () => RepositionScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\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 '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n },\n exportAs: 'matDatepickerContent',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDatepickerContent<D> implements AfterContentInit {\n datepicker: MatDatepicker<D>;\n\n @ViewChild(MatCalendar) _calendar: MatCalendar<D>;\n\n ngAfterContentInit() {\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 preserveWhitespaces: false,\n})\nexport class MatDatepicker<D> implements OnDestroy {\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' = 'month';\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 new selected date when selected date changes.\n * @deprecated Switch to the `dateChange` and `dateInput` binding on the input element.\n * @deletion-target 6.0.0\n */\n @Output() readonly selectedChanged: 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 /** 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 /** 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 private _popupRef: OverlayRef;\n\n /** A reference to the dialog when the calendar is opened as a dialog. */\n private _dialogRef: MatDialogRef<any> | null;\n\n /** A portal containing the calendar for this datepicker. */\n private _calendarPortal: ComponentPortal<MatDatepickerContent<D>>;\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\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 constructor(private _dialog: MatDialog,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_DATEPICKER_SCROLL_STRATEGY) private _scrollStrategy,\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\n ngOnDestroy() {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n\n if (this._popupRef) {\n this._popupRef.dispose();\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.emit(date);\n }\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 this._dialogRef = this._dialog.open(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n });\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._dialogRef.componentInstance.datepicker = this;\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n }\n\n if (!this._popupRef) {\n this._createPopup();\n }\n\n if (!this._popupRef.hasAttached()) {\n let componentRef: ComponentRef<MatDatepickerContent<D>> =\n this._popupRef.attach(this._calendarPortal);\n componentRef.instance.datepicker = this;\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 ? this._dir.value : 'ltr',\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n ).subscribe(() => this.close());\n }\n\n /** Create the popup PositionStrategy. */\n private _createPopupPositionStrategy(): PositionStrategy {\n const fallbackOffset = this._datepickerInput._getPopupFallbackOffset();\n\n return this._overlay.position()\n .connectedTo(this._datepickerInput.getPopupConnectionElementRef(),\n {originX: 'start', originY: 'bottom'},\n {overlayX: 'start', overlayY: 'top'}\n )\n .withFallbackPosition(\n {originX: 'start', originY: 'top'},\n {overlayX: 'start', overlayY: 'bottom'},\n undefined,\n fallbackOffset\n )\n .withFallbackPosition(\n {originX: 'end', originY: 'bottom'},\n {overlayX: 'end', overlayY: 'top'}\n )\n .withFallbackPosition(\n {originX: 'end', originY: 'top'},\n {overlayX: 'end', overlayY: 'bottom'},\n undefined,\n fallbackOffset\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\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 {take} from 'rxjs/operators/take';\nimport {Subscription} from 'rxjs/Subscription';\nimport {createMissingDateImplError} from './datepicker-errors';\nimport {MatDatepickerIntl} from './datepicker-intl';\nimport {MatMonthView} from './month-view';\nimport {MatMultiYearView, yearsPerPage, yearsPerRow} from './multi-year-view';\nimport {MatYearView} from './year-view';\nimport {Directionality} from '@angular/cdk/bidi';\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendar<D> implements AfterContentInit, OnDestroy, OnChanges {\n private _intlChanges: Subscription;\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: 'month' | 'year' | 'multi-year' = '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 /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when the currently selected date changes. */\n @Output() readonly selectedChange: 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) monthView: MatMonthView<D>;\n\n /** Reference to the current year view component. */\n @ViewChild(MatYearView) yearView: MatYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(MatMultiYearView) 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 }\n private _clampedActiveDate: D;\n\n /** Whether the calendar is in month view. */\n _currentView: 'month' | 'year' | 'multi-year';\n\n /** The label for the current calendar view. */\n get _periodButtonText(): string {\n if (this._currentView == 'month') {\n return this._dateAdapter.format(this._activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this._currentView == 'year') {\n return this._dateAdapter.getYearName(this._activeDate);\n }\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const firstYearInView = this._dateAdapter.getYearName(\n this._dateAdapter.createDate(activeYear - activeYear % 24, 0, 1));\n const lastYearInView = this._dateAdapter.getYearName(\n this._dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24, 0, 1));\n return `${firstYearInView} \\u2013 ${lastYearInView}`;\n }\n\n get _periodButtonLabel(): string {\n return this._currentView == 'month' ?\n this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n\n /** The label for the 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._currentView];\n }\n\n /** The label for the 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._currentView];\n }\n\n constructor(private _elementRef: ElementRef,\n private _intl: MatDatepickerIntl,\n private _ngZone: NgZone,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() private _dir?: Directionality) {\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(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterContentInit() {\n this._activeDate = this.startAt || this._dateAdapter.today();\n this._focusActiveCell();\n this._currentView = this.startView;\n }\n\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n if (change && !change.firstChange) {\n const view = this.monthView || this.yearView || this.multiYearView;\n\n if (view) {\n view._init();\n }\n }\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 _userSelected(): void {\n this._userSelection.emit();\n }\n\n /** Handles month selection in the multi-year view. */\n _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n this._activeDate = date;\n this._currentView = view;\n }\n\n /** Handles user clicks on the period label. */\n _currentPeriodClicked(): void {\n this._currentView = this._currentView == 'month' ? 'multi-year' : 'month';\n }\n\n /** Handles user clicks on the previous button. */\n _previousClicked(): void {\n this._activeDate = this._currentView == 'month' ?\n this._dateAdapter.addCalendarMonths(this._activeDate, -1) :\n this._dateAdapter.addCalendarYears(\n this._activeDate, this._currentView == 'year' ? -1 : -yearsPerPage);\n }\n\n /** Handles user clicks on the next button. */\n _nextClicked(): void {\n this._activeDate = this._currentView == 'month' ?\n this._dateAdapter.addCalendarMonths(this._activeDate, 1) :\n this._dateAdapter.addCalendarYears(\n this._activeDate, this._currentView == 'year' ? 1 : yearsPerPage);\n }\n\n /** Whether the previous period button is enabled. */\n _previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this._isSameView(this._activeDate, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n _nextEnabled(): boolean {\n return !this.maxDate || !this._isSameView(this._activeDate, this.maxDate);\n }\n\n /** Handles keydown events on the calendar body. */\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 if (this._currentView == 'month') {\n this._handleCalendarBodyKeydownInMonthView(event);\n } else if (this._currentView == 'year') {\n this._handleCalendarBodyKeydownInYearView(event);\n } else {\n this._handleCalendarBodyKeydownInMultiYearView(event);\n }\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 this._elementRef.nativeElement.querySelector('.mat-calendar-body-active').focus();\n });\n });\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._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._currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return Math.floor(this._dateAdapter.getYear(date1) / yearsPerPage) ==\n Math.floor(this._dateAdapter.getYear(date2) / yearsPerPage);\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n private _handleCalendarBodyKeydownInMonthView(event: KeyboardEvent): void {\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 if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this._dateSelected(this._activeDate);\n this._userSelected();\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 this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n private _handleCalendarBodyKeydownInYearView(event: KeyboardEvent): void {\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 this._goToDateInView(this._activeDate, 'month');\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 this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n private _handleCalendarBodyKeydownInMultiYearView(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarYears(this._activeDate, 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 -this._dateAdapter.getYear(this._activeDate) % yearsPerPage);\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n yearsPerPage - this._dateAdapter.getYear(this._activeDate) % yearsPerPage - 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 this._goToDateInView(this._activeDate, 'year');\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 this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\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 AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {MatCalendarCell} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\n\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 preserveWhitespaces: false,\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 this._activeDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\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 /** 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(@Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef) {\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 let daysInMonth = this._dateAdapter.getNumDaysInMonth(\n this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1));\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 /** 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 /**\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport {DateAdapter} from '@angular/material/core';\nimport {MatCalendarCell} from './calendar-body';\nimport {createMissingDateImplError} from './datepicker-errors';\n\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\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 preserveWhitespaces: false,\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 this._activeDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n if (Math.floor(this._dateAdapter.getYear(oldActiveDate) / yearsPerPage) !=\n Math.floor(this._dateAdapter.getYear(this._activeDate) / yearsPerPage)) {\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 month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\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(@Optional() public _dateAdapter: DateAdapter<D>,\n private _changeDetectorRef: ChangeDetectorRef) {\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 let activeYear = this._dateAdapter.getYear(this._activeDate);\n let activeOffset = activeYear % yearsPerPage;\n this._years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(activeYear - activeOffset + 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 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 _getActiveCell(): number {\n return this._dateAdapter.getYear(this.activeDate) % yearsPerPage;\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {MatCalendarCell} 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 preserveWhitespaces: false,\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 let oldActiveDate = this._activeDate;\n this._activeDate =\n this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\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 /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\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 /** 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(@Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\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 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 /** 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._createWeekCells();\n this._changeDetectorRef.markForCheck();\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 this._weeks[this._weeks.length - 1]\n .push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\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}\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 'attr.aria-readonly': 'true'\n },\n exportAs: 'matCalendarBody',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarBody {\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 /** Whether to allow selection of disabled cells. */\n @Input() allowDisabledSelection = false;\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 _cellClicked(cell: MatCalendarCell): void {\n if (!this.allowDisabledSelection && !cell.enabled) {\n return;\n }\n this.selectedValueChange.emit(cell.value);\n }\n\n /** The number of blank cells to put at the beginning for the first row. */\n get _firstRowOffset(): number {\n return this.rows && this.rows.length && this.rows[0].length ?\n this.numCols - this.rows[0].length : 0;\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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/Subject';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable()\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 {PlatformModule} from '@angular/cdk/platform';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\nimport {ErrorStateMatcher} from '@angular/material/core';\n\n\n@NgModule({\n declarations: [\n MatInput,\n MatTextareaAutosize,\n ],\n imports: [\n CommonModule,\n MatFormFieldModule,\n PlatformModule,\n ],\n exports: [\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {ErrorStateMatcher, mixinErrorState, CanUpdateErrorState} from '@angular/material/core';\nimport {MatFormFieldControl} from '@angular/material/form-field';\nimport {Subject} from 'rxjs/Subject';\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 */\nexport class MatInputBase {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n}\nexport const _MatInputMixinBase = mixinErrorState(MatInputBase);\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput]`,\n exportAs: 'matInput',\n host: {\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 '[placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[readonly]': 'readonly',\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, 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 /**\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 @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.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(protected _elementRef: ElementRef,\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 super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || this._elementRef.nativeElement;\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 _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 `1, 1` fixes it for the first\n // time that you type text and 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 this._isServer = !this._platform.isBrowser;\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\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(): void { this._elementRef.nativeElement.focus(); }\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) {\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.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. If not recognizable it returns false. */\n protected _isTextarea() {\n let nativeElement = this._elementRef.nativeElement;\n\n // In Universal, we don't have access to `nodeName`, but the same can be achieved with `name`.\n // Note that this shouldn't be necessary once Angular switches to an API that resembles the\n // DOM closer.\n let nodeName = this._platform.isBrowser ? nativeElement.nodeName : nativeElement.name;\n return nodeName ? nodeName.toLowerCase() === 'textarea' : false;\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 }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean { return this.focused || !this.empty; }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) { this._ariaDescribedby = ids.join(' '); }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() { this.focus(); }\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 {\n Directive,\n ElementRef,\n Input,\n AfterViewInit,\n DoCheck,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {auditTime} from 'rxjs/operators/auditTime';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\nimport {Subject} from 'rxjs/Subject';\n\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n */\n@Directive({\n selector: `textarea[mat-autosize], textarea[matTextareaAutosize]`,\n exportAs: 'matTextareaAutosize',\n host: {\n 'class': 'mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class MatTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {\n /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */\n private _previousValue: string;\n private readonly _destroyed = new Subject<void>();\n\n private _minRows: number;\n private _maxRows: number;\n\n /** Minimum amount of rows in the textarea. */\n @Input('matAutosizeMinRows')\n set minRows(value: number) {\n this._minRows = value;\n this._setMinHeight();\n }\n get minRows(): number { return this._minRows; }\n\n /** Maximum amount of rows in the textarea. */\n @Input('matAutosizeMaxRows')\n get maxRows(): number { return this._maxRows; }\n set maxRows(value: number) {\n this._maxRows = value;\n this._setMaxHeight();\n }\n\n /** Cached height of a textarea with a single row. */\n private _cachedLineHeight: number;\n\n constructor(\n private _elementRef: ElementRef,\n private _platform: Platform,\n private _ngZone?: NgZone) {}\n\n // TODO(crisbeto): make the `_ngZone` a required param in the next major version.\n\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight(): void {\n const minHeight = this.minRows && this._cachedLineHeight ?\n `${this.minRows * this._cachedLineHeight}px` : null;\n\n if (minHeight) {\n this._setTextareaStyle('minHeight', minHeight);\n }\n }\n\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight(): void {\n const maxHeight = this.maxRows && this._cachedLineHeight ?\n `${this.maxRows * this._cachedLineHeight}px` : null;\n\n if (maxHeight) {\n this._setTextareaStyle('maxHeight', maxHeight);\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n });\n }\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Sets a style property on the textarea element. */\n private _setTextareaStyle(property: string, value: string): void {\n const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n textarea.style[property] = value;\n }\n\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n private _cacheTextareaLineHeight(): void {\n if (this._cachedLineHeight) {\n return;\n }\n\n let textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n\n // Use a clone element because we have to override some styles.\n let textareaClone = textarea.cloneNode(false) as HTMLTextAreaElement;\n textareaClone.rows = 1;\n\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n\n textarea.parentNode!.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textarea.parentNode!.removeChild(textareaClone);\n\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force: boolean = false) {\n this._cacheTextareaLineHeight();\n\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n\n const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n const value = textarea.value;\n\n // Only resize of the value changed since these calculations can be expensive.\n if (value === this._previousValue && !force) {\n return;\n }\n\n const placeholderText = textarea.placeholder;\n\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n // Long placeholders that are wider than the textarea width may lead to a bigger scrollHeight\n // value. To ensure that the scrollHeight is not bigger than the content, the placeholders\n // need to be removed temporarily.\n textarea.style.height = 'auto';\n textarea.style.overflow = 'hidden';\n textarea.placeholder = '';\n\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${textarea.scrollHeight}px`;\n textarea.style.overflow = '';\n textarea.placeholder = placeholderText;\n\n this._previousValue = value;\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic } from '../Subscription';\n\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits something. Then, it completes.</span>\n *\n * <img src=\"./img/takeUntil.png\" width=\"100%\">\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value or a complete notification, the output Observable stops\n * mirroring the source Observable and completes.\n *\n * @example <caption>Tick every second until the first click happens</caption>\n * var interval = Rx.Observable.interval(1000);\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = interval.takeUntil(clicks);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable<T>} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil<T>(notifier: Observable<any>): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => source.lift(new TakeUntilOperator(notifier));\n}\n\nclass TakeUntilOperator<T> implements Operator<T, T> {\n constructor(private notifier: Observable<any>) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new TakeUntilSubscriber(subscriber, this.notifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeUntilSubscriber<T, R> extends OuterSubscriber<T, R> {\n\n constructor(destination: Subscriber<any>,\n private notifier: Observable<any>) {\n super(destination);\n this.add(subscribeToResult(this, notifier));\n }\n\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber<T, R>): void {\n this.complete();\n }\n\n notifyComplete(): void {\n // noop\n }\n}\n","import { async } from '../scheduler/async';\nimport { IScheduler } from '../Scheduler';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * <span class=\"informal\">When it sees a source values, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.</span>\n *\n * <img src=\"./img/auditTime.png\" width=\"100%\">\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.auditTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime<T>(duration: number, scheduler: IScheduler = async): MonoTypeOperatorFunction<T> {\n return audit(() => timer(duration, scheduler));\n}\n","import { TimerObservable } from './TimerObservable';\n\nexport const timer = TimerObservable.create;","import { isNumeric } from '../util/isNumeric';\nimport { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isDate } from '../util/isDate';\nimport { TeardownLogic } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class TimerObservable extends Observable<number> {\n\n /**\n * Creates an Observable that starts emitting after an `initialDelay` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * <span class=\"informal\">Its like {@link interval}, but you can specify when\n * should the emissions start.</span>\n *\n * <img src=\"./img/timer.png\" width=\"100%\">\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `initialDelay`. The initial delay may be a {@link Date}. By default, this\n * operator uses the `async` IScheduler to provide a notion of time, but you\n * may pass any IScheduler to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * @example <caption>Emits ascending numbers, one every second (1000ms), starting after 3 seconds</caption>\n * var numbers = Rx.Observable.timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n *\n * @example <caption>Emits one number after five seconds</caption>\n * var numbers = Rx.Observable.timer(5000);\n * numbers.subscribe(x => console.log(x));\n *\n * @see {@link interval}\n * @see {@link delay}\n *\n * @param {number|Date} initialDelay The initial delay time to wait before\n * emitting the first value of `0`.\n * @param {number} [period] The period of time between emissions of the\n * subsequent numbers.\n * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `initialDelay` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\n static create(initialDelay: number | Date = 0,\n period?: number | IScheduler,\n scheduler?: IScheduler): Observable<number> {\n return new TimerObservable(initialDelay, period, scheduler);\n }\n\n static dispatch(state: any) {\n\n const { index, period, subscriber } = state;\n const action = (<any> this);\n\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n action.schedule(state, period);\n }\n\n private period: number = -1;\n private dueTime: number = 0;\n private scheduler: IScheduler;\n\n constructor(dueTime: number | Date = 0,\n period?: number | IScheduler,\n scheduler?: IScheduler) {\n super();\n\n if (isNumeric(period)) {\n this.period = Number(period) < 1 && 1 || Number(period);\n } else if (isScheduler(period)) {\n scheduler = <IScheduler> period;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n this.scheduler = scheduler;\n this.dueTime = isDate(dueTime) ?\n (+dueTime - this.scheduler.now()) :\n (<number> dueTime);\n }\n\n protected _subscribe(subscriber: Subscriber<number>): TeardownLogic {\n const index = 0;\n const { period, dueTime, scheduler } = this;\n\n return scheduler.schedule(TimerObservable.dispatch, dueTime, {\n index, period, subscriber\n });\n }\n}\n","import { isArray } from '../util/isArray';\n\nexport function isNumeric(val: any): val is number {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n};\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable, SubscribableOrPromise } from '../Observable';\nimport { Subscription, TeardownLogic } from '../Subscription';\n\nimport { tryCatch } from '../util/tryCatch';\nimport { errorObject } from '../util/errorObject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/audit.png\" width=\"100%\">\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.audit(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable<T>} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit<T>(durationSelector: (value: T) => SubscribableOrPromise<any>): MonoTypeOperatorFunction<T> {\n return function auditOperatorFunction(source: Observable<T>) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator<T> implements Operator<T, T> {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise<any>) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber<T, T>(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber<T, R> extends OuterSubscriber<T, R> {\n\n private value: T;\n private hasValue: boolean = false;\n private throttled: Subscription;\n\n constructor(destination: Subscriber<T>,\n private durationSelector: (value: T) => SubscribableOrPromise<any>) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n const duration = tryCatch(this.durationSelector)(value);\n if (duration === errorObject) {\n this.destination.error(errorObject.e);\n } else {\n const innerSubscription = subscribeToResult(this, duration);\n if (innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = null;\n this.hasValue = false;\n this.destination.next(value);\n }\n }\n\n notifyNext(outerValue: T, innerValue: R, outerIndex: number, innerIndex: number): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\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 {PortalModule} from '@angular/cdk/portal';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatCommonModule} from '@angular/material/core';\nimport {\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER\n} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n MatDialogActions\n} from './dialog-content-directives';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule,\n A11yModule,\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: `button[mat-dialog-close], button[matDialogClose]`,\n exportAs: 'matDialogClose',\n host: {\n '(click)': 'dialogRef.close(dialogResult)',\n '[attr.aria-label]': 'ariaLabel',\n 'type': 'button', // Prevents accidental form submits.\n }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string = 'Close dialog';\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,\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,\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, 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 OverlayRef,\n ScrollStrategy,\n OverlayContainer,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {defer} from 'rxjs/observable/defer';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {Subject} from 'rxjs/Subject';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\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_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 {\n private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenAtThisLevel = new Subject<MatDialogRef<any>>();\n private _ariaHiddenElements = new Map<Element, string|null>();\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 afterOpen(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpen : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed() {\n const parent = this._parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n }\n\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<void>(() => this.openDialogs.length ?\n this._afterAllClosed :\n this._afterAllClosed.pipe(startWith(undefined)));\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,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) private _scrollStrategy,\n @Optional() @SkipSelf() private _parentDialog: MatDialog,\n private _overlayContainer: OverlayContainer) {}\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>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T> {\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 =\n this._attachDialogContent<T>(componentOrTemplateRef, dialogContainer, overlayRef, 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.afterOpen.next(dialogRef);\n\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n let i = this.openDialogs.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 this.openDialogs[i].close();\n }\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 /**\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 });\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 let containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef);\n let containerRef: ComponentRef<MatDialogContainer> = overlay.attach(containerPortal);\n containerRef.instance._config = config;\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>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: MatDialogContainer,\n overlayRef: OverlayRef,\n config: MatDialogConfig): MatDialogRef<T> {\n\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new MatDialogRef<T>(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 const injectionTokens = new WeakMap();\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 injectionTokens\n .set(MatDialogContainer, dialogContainer)\n .set(MAT_DIALOG_DATA, config.data)\n .set(MatDialogRef, dialogRef);\n\n if (!userInjector || !userInjector.get(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\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 {OverlayRef, GlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ESCAPE} from '@angular/cdk/keycodes';\nimport {Location} from '@angular/common';\nimport {filter} from 'rxjs/operators/filter';\nimport {take} from 'rxjs/operators/take';\nimport {DialogPosition} from './dialog-config';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription, ISubscription} from 'rxjs/Subscription';\nimport {MatDialogContainer} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\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 _afterOpen = 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 _beforeClose = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Subscription to changes in the user's location. */\n private _locationChanges: ISubscription = Subscription.EMPTY;\n\n constructor(\n private _overlayRef: OverlayRef,\n public _containerInstance: MatDialogContainer,\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._afterOpen.next();\n this._afterOpen.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 )\n .subscribe(() => {\n this._overlayRef.dispose();\n this._locationChanges.unsubscribe();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\n });\n\n _overlayRef.keydownEvents()\n .pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose))\n .subscribe(() => this.close());\n\n if (location) {\n // Close the dialog when the user goes forwards/backwards in history or when the location\n // hash changes. Note that this usually doesn't include clicking on links (unless the user\n // is using the `HashLocationStrategy`).\n this._locationChanges = location.subscribe(() => {\n if (this._containerInstance._config.closeOnNavigation) {\n this.close();\n }\n });\n }\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'start'),\n take(1)\n )\n .subscribe(() => {\n this._beforeClose.next(dialogResult);\n this._beforeClose.complete();\n this._overlayRef.detachBackdrop();\n });\n\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpen(): Observable<void> {\n return this._afterOpen.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 beforeClose(): Observable<R | undefined> {\n return this._beforeClose.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 = 'auto', height: string = 'auto'): this {\n this._getPositionStrategy().width(width).height(height);\n this._overlayRef.updatePosition();\n return this;\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 preserveWhitespaces: false,\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.slideDialog],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\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 '[@slideDialog]': '_state',\n '(@slideDialog.start)': '_onAnimationStart($event)',\n '(@slideDialog.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) _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 /** The dialog configuration. */\n _config: MatDialogConfig;\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 = 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\n super();\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 if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n // If 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 }\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 (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\n/** Animations used by MatDialog. */\nexport const matDialogAnimations: {\n readonly slideDialog: AnimationTriggerMetadata;\n} = {\n /** Animation that slides the dialog in and out of view and fades the opacity. */\n slideDialog: trigger('slideDialog', [\n // Note: The `enter` animation doesn't transition to something like `translate3d(0, 0, 0)\n // scale(1)`, because for some reason specifying the transform explicitly, causes IE both\n // to blur the dialog content and decimate the animation performance. Leaving it as `none`\n // solves both issues.\n state('enter', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translate3d(0, 25%, 0) scale(0.9)', opacity: 0 })),\n state('exit', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),\n transition('* => *', 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 {ViewContainerRef} 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 outside to close a 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 = 'ltr';\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: 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 /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /** Whether the dialog should close when the user goes backwards/forwards in history. */\n closeOnNavigation?: boolean = true;\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 {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {Directive, ElementRef, EventEmitter, Input, Output} from '@angular/core';\nimport {MatChipList} from './chip-list';\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/**\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 }\n})\nexport class MatChipInput {\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 // TODO(tinayuangao): Support Set here\n @Input('matChipInputSeparatorKeyCodes') separatorKeyCodes: number[] = [ENTER];\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 /** 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(protected _elementRef: ElementRef) {\n this._inputElement = this._elementRef.nativeElement as HTMLInputElement;\n }\n\n /** Utility method to make host definition/tests more clear. */\n _keydown(event?: KeyboardEvent) {\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.separatorKeyCodes.indexOf(event.keyCode) > -1) {\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(): void { this._inputElement.focus(); }\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} from '@angular/cdk/keycodes';\nimport {startWith} from 'rxjs/operators/startWith';\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 {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport {ErrorStateMatcher, mixinErrorState, CanUpdateErrorState} from '@angular/material/core';\nimport {MatFormFieldControl} from '@angular/material/form-field';\nimport {Observable} from 'rxjs/Observable';\nimport {merge} from 'rxjs/observable/merge';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatChip, MatChipEvent, MatChipSelectionChange} from './chip';\nimport {MatChipInput} from './chip-input';\n\n// Boilerplate for applying mixins to MatChipList.\n/** @docs-private */\nexport class MatChipListBase {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n}\nexport const _MatChipListMixinBase = 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 it's 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]': '_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 },\n providers: [{provide: MatFormFieldControl, useExisting: MatChipList}],\n styleUrls: ['chips.css'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 /** When a chip is destroyed, we track the index so we can focus the appropriate next chip. */\n protected _lastDestroyedIndex: number|null = null;\n\n /** Track which chips we're listening to for focus/destruction. */\n protected _chipSet: WeakMap<MatChip, boolean> = new WeakMap();\n\n /** Subscription to tabbing out from the chip list. */\n private _tabOutSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the chip list. */\n private _changeSubscription: Subscription;\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: MatChipInput;\n\n /** Uid of the chip list */\n protected _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 }\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 @Input()\n get id(): string { return this._id || this._uid; }\n set id(value: string) {\n this._id = value;\n this.stateChanges.next();\n }\n protected _id: 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) {\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.chips.some(chip => chip._hasFocus) ||\n (this._chipInput && this._chipInput.focused);\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) { this._disabled = coerceBooleanProperty(value); }\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 is selectable. When a chip is not selectable,\n * its selected state is always ignored.\n */\n @Input()\n get selectable(): boolean { return this._selectable; }\n set selectable(value: boolean) { this._selectable = coerceBooleanProperty(value); }\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.destroy));\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) chips: QueryList<MatChip>;\n\n constructor(protected _elementRef: ElementRef,\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 // Prevents the chip list from capturing focus and redirecting\n // it back to the first chip when the user tabs out.\n this._tabOutSubscription = this._keyManager.tabOut.subscribe(() => {\n this._tabIndex = -1;\n setTimeout(() => this._tabIndex = this._userTabIndex || 0);\n });\n\n // When the list changes, re-subscribe\n this._changeSubscription = this.chips.changes.pipe(startWith(null)).subscribe(() => {\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._tabOutSubscription.unsubscribe();\n\n if (this._changeSubscription) {\n this._changeSubscription.unsubscribe();\n }\n\n if (this._chipRemoveSubscription) {\n this._chipRemoveSubscription.unsubscribe();\n }\n\n this._dropSubscriptions();\n this.stateChanges.complete();\n }\n\n\n /** Associates an HTML input element with this chip list. */\n registerInput(inputElement: MatChipInput): 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._elementRef.nativeElement.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() { this.focus(); }\n\n /**\n * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(): void {\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();\n this.stateChanges.next();\n }\n }\n\n /** Attempt to focus an input if we have one. */\n _focusInput() {\n if (this._chipInput) {\n this._chipInput.focus();\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 this._keyManager.onKeydown(event);\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 * Update key manager's active item when chip is deleted.\n * If the deleted chip is the last chip in chip list, focus the new last chip.\n * Otherwise focus the next chip in the list.\n * Save `_lastDestroyedIndex` so we can set the correct focus.\n */\n protected _updateKeyManager(chip: MatChip) {\n let chipIndex: number = this.chips.toArray().indexOf(chip);\n if (this._isValidIndex(chipIndex)) {\n if (chip._hasFocus) {\n // Check whether the chip is not the last item\n if (chipIndex < this.chips.length - 1) {\n this._keyManager.setActiveItem(chipIndex);\n } else if (chipIndex - 1 >= 0) {\n this._keyManager.setActiveItem(chipIndex - 1);\n }\n }\n if (this._keyManager.activeItemIndex === chipIndex) {\n this._lastDestroyedIndex = chipIndex;\n }\n }\n }\n\n /**\n * Checks to see if a focus chip was recently destroyed so that we can refocus the next closest\n * one.\n */\n protected _updateFocusForDestroyedChips() {\n let chipsArray = this.chips;\n\n if (this._lastDestroyedIndex != null && chipsArray.length > 0) {\n // Check whether the destroyed chip was the last item\n const newFocusIndex = Math.min(this._lastDestroyedIndex, chipsArray.length - 1);\n this._keyManager.setActiveItem(newFocusIndex);\n let focusChip = this._keyManager.activeItem;\n // Focus the chip\n if (focusChip) {\n focusChip.focus();\n }\n }\n\n // Reset our destroyed index\n this._lastDestroyedIndex = 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 const correspondingChipIndex = this.chips.toArray().indexOf(correspondingChip);\n\n if (isUserInput) {\n this._keyManager.setActiveItem(correspondingChipIndex);\n } else {\n this._keyManager.updateActiveItemIndex(correspondingChipIndex);\n }\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.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 private _resetChips() {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n }\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\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 this._updateKeyManager(event.chip);\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 {FocusableOption} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {BACKSPACE, DELETE, SPACE} from '@angular/cdk/keycodes';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {CanColor, CanDisable, mixinColor, mixinDisabled} from '@angular/material/core';\nimport {Subject} from 'rxjs/Subject';\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 */\nexport class MatChipBase {\n constructor(public _elementRef: ElementRef) {}\n}\n\nexport const _MatChipMixinBase = mixinColor(mixinDisabled(MatChipBase), 'primary');\n\n\n/**\n * Dummy directive to add CSS class to basic chips.\n * @docs-private\n */\n@Directive({\n selector: `mat-basic-chip, [mat-basic-chip]`,\n host: {'class': 'mat-basic-chip'},\n})\nexport class MatBasicChip {\n}\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'],\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 '[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)': '_hasFocus = true',\n '(blur)': '_blur()',\n },\n\n})\nexport class MatChip extends _MatChipMixinBase implements FocusableOption, OnDestroy, CanColor,\n CanDisable {\n /** Whether the chip has focus. */\n _hasFocus: boolean = false;\n\n /** Whether the chip is selected. */\n @Input()\n get selected(): boolean { return this._selected; }\n set selected(value: boolean) {\n this._selected = coerceBooleanProperty(value);\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: value\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 chips are selectable. When a chip is not selectable,\n * changes to it's selected state 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 protected _selectable: boolean = true;\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (remove) 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 /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n * @deletion-target 6.0.0\n */\n @Output() readonly destroy: EventEmitter<MatChipEvent> = this.destroyed;\n\n /** Emitted when a chip is to be removed. */\n @Output() readonly removed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n * @deletion-target 6.0.0\n */\n @Output('remove') onRemove: EventEmitter<MatChipEvent> = this.removed;\n\n /** The ARIA selected applied to the chip. */\n get ariaSelected(): string | null {\n return this.selectable ? this.selected.toString() : null;\n }\n\n constructor(public _elementRef: ElementRef) {\n super(_elementRef);\n }\n\n ngOnDestroy() {\n this.destroyed.emit({chip: this});\n }\n\n /** Selects the chip. */\n select(): void {\n this._selected = true;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: true\n });\n }\n\n /** Deselects the chip. */\n deselect(): void {\n this._selected = false;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: false\n });\n }\n\n /** Select this chip and emit selected event */\n selectViaInteraction(): void {\n this._selected = true;\n // Emit select event when selected changes.\n this.selectionChange.emit({\n source: this,\n isUserInput: true,\n selected: true\n });\n }\n\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput: boolean = false): boolean {\n this._selected = !this.selected;\n\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this._selected\n });\n\n return this.selected;\n }\n\n /** Allows for programmatic focusing of the chip. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({chip: this});\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 /** Ensures events fire properly upon click. */\n _handleClick(event: Event) {\n // Check disabled\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n this.focus();\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 this._hasFocus = false;\n this._onBlur.next({chip: this});\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',\n '(click)': '_handleClick()',\n }\n})\nexport class MatChipRemove {\n constructor(protected _parentChip: MatChip) {\n }\n\n /** Calls the parent chip's public `remove()` method if applicable. */\n _handleClick(): void {\n if (this._parentChip.removable) {\n this._parentChip.remove();\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 {ObserversModule} from '@angular/cdk/observers';\nimport {MatRippleModule, MatCommonModule} from '@angular/material/core';\nimport {MatCheckbox} from './checkbox';\nimport {MatCheckboxRequiredValidator} from './checkbox-required-validator';\nimport {A11yModule} from '@angular/cdk/a11y';\n\n@NgModule({\n imports: [CommonModule, MatRippleModule, MatCommonModule, ObserversModule, A11yModule],\n exports: [MatCheckbox, MatCheckboxRequiredValidator, MatCommonModule],\n declarations: [MatCheckbox, MatCheckboxRequiredValidator],\n})\nexport class MatCheckboxModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 host: {'[attr.required]': 'required ? \"\" : null'}\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, FocusOrigin} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n RippleRef,\n} from '@angular/material/core';\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 */\nexport class MatCheckboxBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatCheckboxMixinBase =\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://www.google.com/design/spec/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 '[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 },\n providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatCheckbox extends _MatCheckboxMixinBase implements ControlValueAccessor,\n AfterViewInit, OnDestroy, CanColor, CanDisable, HasTabIndex, CanDisableRipple {\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, arial-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 /**\n * Whether or not the checkbox should appear before or after the label.\n * @deprecated\n * @deletion-target 6.0.0\n */\n @Input()\n get align(): 'start' | 'end' {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n }\n set align(value: 'start' | 'end') {\n this.labelPosition = (value == 'start') ? 'after' : 'before';\n }\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') _inputElement: ElementRef;\n\n /** Reference to the ripple instance of the checkbox. */\n @ViewChild(MatRipple) 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 /** Reference to the focused state ripple. */\n private _focusRipple: RippleRef | null;\n\n constructor(elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n @Attribute('tabindex') tabIndex: string,\n @Optional() @Inject(MAT_CHECKBOX_CLICK_ACTION)\n private _clickAction: MatCheckboxClickAction) {\n super(elementRef);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._inputElement.nativeElement)\n .subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\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 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 // This method is getting called whenever the label of the checkbox changes.\n // Since the checkbox uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this._changeDetectorRef.markForCheck();\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 this._changeDetectorRef.markForCheck();\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 }\n\n private _emitChangeEvent() {\n let 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 /** Function is called whenever the focus changes for the input element. */\n private _onInputFocusChange(focusOrigin: FocusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this.ripple.launch(0, 0, {persistent: true});\n } else if (!focusOrigin) {\n this._removeFocusRipple();\n this._onTouched();\n }\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(): void {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\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 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 /** Fades out the focus state ripple. */\n private _removeFocusRipple(): void {\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\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 {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 {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Directive,\n Input,\n} from '@angular/core';\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-card'}\n})\nexport class MatCard {}\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 preserveWhitespaces: false,\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 preserveWhitespaces: false,\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {\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} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\n\n/** Acceptable types for a button toggle. */\nexport type ToggleType = 'checkbox' | 'radio';\n\n// Boilerplate for applying mixins to MatButtonToggleGroup and MatButtonToggleGroupMultiple\n/** @docs-private */\nexport class MatButtonToggleGroupBase {}\nexport const _MatButtonToggleGroupMixinBase = mixinDisabled(MatButtonToggleGroupBase);\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\nlet _uniqueIdCounter = 0;\n\n/** Change event object emitted by MatButtonToggle. */\nexport class MatButtonToggleChange {\n /** The MatButtonToggle that emits the event. */\n source: MatButtonToggle | null;\n /** The value assigned to the MatButtonToggle. */\n 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:not([multiple])',\n providers: [MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR],\n inputs: ['disabled'],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-button-toggle-group',\n '[class.mat-button-toggle-vertical]': 'vertical'\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup extends _MatButtonToggleGroupMixinBase\n implements ControlValueAccessor, CanDisable {\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 /** `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 this._updateButtonToggleNames();\n }\n private _name: string = `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) { this._vertical = coerceBooleanProperty(value); }\n private _vertical: boolean = false;\n\n /** Value of the toggle group. */\n @Input()\n get value(): any { return this._value; }\n set value(value: any) {\n if (this._value != value) {\n this._value = value;\n this.valueChange.emit(value);\n this._updateSelectedButtonToggleFromValue();\n }\n }\n private _value: any = null;\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 /** The currently selected button toggle, should match the value. */\n @Input()\n get selected(): MatButtonToggle | null { return this._selected; }\n set selected(selected: MatButtonToggle | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n\n if (selected && !selected.checked) {\n selected.checked = true;\n }\n }\n private _selected: MatButtonToggle | null = null;\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor(private _changeDetector: ChangeDetectorRef) {\n super();\n }\n\n private _updateButtonToggleNames(): void {\n if (this._buttonToggles) {\n this._buttonToggles.forEach((toggle) => {\n toggle.name = this._name;\n });\n }\n }\n\n // TODO: Refactor into shared code with radio.\n private _updateSelectedButtonToggleFromValue(): void {\n let isAlreadySelected = this._selected != null && this._selected.value == this._value;\n\n if (this._buttonToggles != null && !isAlreadySelected) {\n let matchingButtonToggle = this._buttonToggles.filter(\n buttonToggle => buttonToggle.value == this._value)[0];\n\n if (matchingButtonToggle) {\n this.selected = matchingButtonToggle;\n } else if (this.value == null) {\n this.selected = null;\n this._buttonToggles.forEach(buttonToggle => {\n buttonToggle.checked = false;\n });\n }\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(): void {\n let event = new MatButtonToggleChange();\n event.source = this._selected;\n event.value = this._value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n // Implemented as part of ControlValueAccessor.\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 this._markButtonTogglesForCheck();\n }\n\n private _markButtonTogglesForCheck() {\n if (this._buttonToggles) {\n this._buttonToggles.forEach((toggle) => toggle._markForCheck());\n }\n }\n}\n\n/** Multiple selection button-toggle group. `ngModel` is not supported in this mode. */\n@Directive({\n selector: 'mat-button-toggle-group[multiple]',\n exportAs: 'matButtonToggleGroup',\n inputs: ['disabled'],\n host: {\n 'class': 'mat-button-toggle-group',\n '[class.mat-button-toggle-vertical]': 'vertical',\n 'role': 'group'\n }\n})\nexport class MatButtonToggleGroupMultiple extends _MatButtonToggleGroupMixinBase\n implements CanDisable {\n /** Whether the toggle group is vertical. */\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\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 preserveWhitespaces: false,\n exportAs: 'matButtonToggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup && !buttonToggleGroupMultiple',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n 'class': 'mat-button-toggle',\n '[attr.id]': 'id',\n }\n})\nexport class MatButtonToggle implements OnInit, OnDestroy {\n /**\n * Attached to the aria-label attribute of the host element. In most cases, arial-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 /** Whether or not the button toggle is a single selection. */\n private _isSingleSelector: boolean = false;\n\n /** Unregister function for _buttonToggleDispatcher */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n @ViewChild('input') _inputElement: ElementRef;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** The parent button toggle group (multiple selection). Optional. */\n buttonToggleGroupMultiple: MatButtonToggleGroupMultiple;\n\n /** Unique ID for the underlying `input` element. */\n get inputId(): string { return `${this.id}-input`; }\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 /** Whether the button is checked. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n if (this._isSingleSelector && value) {\n // Notify all button toggles with the same name (in the same group) to un-check.\n this._buttonToggleDispatcher.notify(this.id, this.name);\n this._changeDetectorRef.markForCheck();\n }\n\n this._checked = value;\n\n if (value && this._isSingleSelector && this.buttonToggleGroup.value != this.value) {\n this.buttonToggleGroup.selected = this;\n }\n }\n private _checked: boolean = false;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input()\n get value(): any { return this._value; }\n set value(value: any) {\n if (this._value != value) {\n if (this.buttonToggleGroup != null && this.checked) {\n this.buttonToggleGroup.value = value;\n }\n this._value = value;\n }\n }\n private _value: any = null;\n\n /** Whether the button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup != null && this.buttonToggleGroup.disabled) ||\n (this.buttonToggleGroupMultiple != null && this.buttonToggleGroupMultiple.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 @Optional() toggleGroupMultiple: MatButtonToggleGroupMultiple,\n private _changeDetectorRef: ChangeDetectorRef,\n private _buttonToggleDispatcher: UniqueSelectionDispatcher,\n private _elementRef: ElementRef,\n private _focusMonitor: FocusMonitor) {\n\n this.buttonToggleGroup = toggleGroup;\n this.buttonToggleGroupMultiple = toggleGroupMultiple;\n\n if (this.buttonToggleGroup) {\n this._removeUniqueSelectionListener =\n _buttonToggleDispatcher.listen((id: string, name: string) => {\n if (id != this.id && name == this.name) {\n this.checked = false;\n this._changeDetectorRef.markForCheck();\n }\n });\n\n this._type = 'radio';\n this.name = this.buttonToggleGroup.name;\n this._isSingleSelector = true;\n } else {\n // Even if there is no group at all, treat the button toggle as a checkbox so it can be\n // toggled on or off.\n this._type = 'checkbox';\n this._isSingleSelector = false;\n }\n }\n\n ngOnInit() {\n if (this.id == null) {\n this.id = `mat-button-toggle-${_uniqueIdCounter++}`;\n }\n\n if (this.buttonToggleGroup && this._value == this.buttonToggleGroup.value) {\n this._checked = true;\n }\n this._focusMonitor.monitor(this._elementRef.nativeElement, true);\n }\n\n /** Focuses the button. */\n focus(): void {\n this._inputElement.nativeElement.focus();\n }\n\n /** Toggle the state of the current button toggle. */\n private _toggle(): void {\n this.checked = !this.checked;\n }\n\n /** Checks the button toggle due to an interaction with the underlying native input. */\n _onInputChange(event: Event) {\n event.stopPropagation();\n\n if (this._isSingleSelector) {\n // Propagate the change one-way via the group, which will in turn mark this\n // button toggle as checked.\n let groupValueChanged = this.buttonToggleGroup.selected != this;\n this.checked = true;\n this.buttonToggleGroup.selected = this;\n this.buttonToggleGroup._onTouched();\n if (groupValueChanged) {\n this.buttonToggleGroup._emitChangeEvent();\n }\n } else {\n this._toggle();\n }\n\n // Emit a change event when the native input does.\n this._emitChangeEvent();\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 `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 /** Dispatch change event with current value. */\n private _emitChangeEvent(): void {\n let event = new MatButtonToggleChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n }\n\n // Unregister buttonToggleDispatcherListener on destroy\n ngOnDestroy() {\n this._removeUniqueSelectionListener();\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 group value changes, the button will not be notified. Use `markForCheck` to explicit\n // 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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {\n MatAnchor,\n MatButton,\n} from './button';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule,\n MatCommonModule,\n A11yModule,\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} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple\n} from '@angular/material/core';\n\n/** Default color palette for round buttons (mat-fab and mat-mini-fab) */\nconst DEFAULT_ROUND_BUTTON_COLOR = 'accent';\n\n/** Default color palette for flat buttons (mat-flat-button) */\nconst DEFAULT_FLAT_BUTTON_COLOR = 'primary';\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 */\nexport class MatButtonBase {\n constructor(public _elementRef: ElementRef) {}\n}\nexport const _MatButtonMixinBase = mixinColor(mixinDisabled(mixinDisableRipple(MatButtonBase)));\n\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 '[disabled]': 'disabled || null',\n },\n templateUrl: 'button.html',\n styleUrls: ['button.css'],\n inputs: ['disabled', 'disableRipple', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatButton extends _MatButtonMixinBase\n implements OnDestroy, CanDisable, CanColor, CanDisableRipple {\n\n /** Whether the button is round. */\n _isRoundButton: boolean = this._hasHostAttributes('mat-fab', 'mat-mini-fab');\n\n /** Whether the button is icon button. */\n _isIconButton: boolean = this._hasHostAttributes('mat-icon-button');\n\n /** Reference to the MatRipple instance of the button. */\n @ViewChild(MatRipple) ripple: MatRipple;\n\n constructor(elementRef: ElementRef,\n private _platform: Platform,\n private _focusMonitor: FocusMonitor) {\n super(elementRef);\n\n // For each of the variant selectors that is prevent 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 (elementRef.nativeElement as HTMLElement).classList.add(attr);\n }\n }\n\n this._focusMonitor.monitor(this._elementRef.nativeElement, true);\n\n if (this._isRoundButton) {\n this.color = DEFAULT_ROUND_BUTTON_COLOR;\n } else if (this._hasHostAttributes('mat-flat-button')) {\n this.color = DEFAULT_FLAT_BUTTON_COLOR;\n }\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n /** Focuses the button. */\n focus(): void {\n this._getHostElement().focus();\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 // If not on the browser, say that there are none of the attributes present.\n // Since these only affect how the ripple displays (and ripples only happen on the client),\n // detecting these attributes isn't necessary when not on the browser.\n if (!this._platform.isBrowser) {\n return false;\n }\n\n return attributes.some(attribute => this._getHostElement().hasAttribute(attribute));\n }\n}\n\n/**\n * Raised Material design 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 '[attr.tabindex]': 'disabled ? -1 : 0',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_haltDisabledEvents($event)',\n },\n inputs: ['disabled', 'disableRipple', 'color'],\n templateUrl: 'button.html',\n styleUrls: ['button.css'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatAnchor extends MatButton {\n constructor(\n platform: Platform,\n focusMonitor: FocusMonitor,\n elementRef: ElementRef) {\n super(elementRef, platform, focusMonitor);\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 */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {DOWN_ARROW, ENTER, ESCAPE, UP_ARROW, TAB} from '@angular/cdk/keycodes';\nimport {\n ConnectedPositionStrategy,\n Overlay,\n OverlayRef,\n OverlayConfig,\n PositionStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {filter} from 'rxjs/operators/filter';\nimport {take} from 'rxjs/operators/take';\nimport {switchMap} from 'rxjs/operators/switchMap';\nimport {tap} from 'rxjs/operators/tap';\nimport {delay} from 'rxjs/operators/delay';\nimport {\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} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n MatOption,\n MatOptionSelectionChange,\n _getOptionScrollPosition,\n _countGroupLabelsBeforeOption,\n} from '@angular/material/core';\nimport {MatFormField} from '@angular/material/form-field';\nimport {DOCUMENT} from '@angular/common';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {defer} from 'rxjs/observable/defer';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {Subscription} from 'rxjs/Subscription';\nimport {MatAutocomplete} from './autocomplete';\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_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_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 */\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@Directive({\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'aria-autocomplete': 'list',\n '[attr.aria-activedescendant]': 'activeOption?.id',\n '[attr.aria-expanded]': 'panelOpen.toString()',\n '[attr.aria-owns]': 'autocomplete?.id',\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, OnDestroy {\n private _overlayRef: OverlayRef | null;\n private _portal: TemplatePortal;\n private _componentDestroyed = false;\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: ConnectedPositionStrategy;\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 /** Stream of keyboard events that can close the panel. */\n private readonly _closeKeyEventStream = new Subject<void>();\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 constructor(private _element: ElementRef, private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n private _zone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY) private _scrollStrategy,\n @Optional() private _dir: Directionality,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any) {}\n\n ngOnDestroy() {\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 { return this._panelOpen && this.autocomplete.showPanel; }\n private _panelOpen: 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._panelOpen) {\n this.autocomplete._isOpen = this._panelOpen = 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 /**\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> {\n return merge(\n this.optionSelections,\n this.autocomplete._keyManager.tabOut.pipe(filter(() => this._panelOpen)),\n this._closeKeyEventStream,\n this._outsideClickStream,\n this._overlayRef ?\n this._overlayRef.detachments().pipe(filter(() => this._panelOpen)) :\n observableOf()\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 });\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 get _outsideClickStream(): Observable<any> {\n if (!this._document) {\n return observableOf(null);\n }\n\n return merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'touchend')\n )\n .pipe(filter((event: MouseEvent | TouchEvent) => {\n const clickTarget = event.target as HTMLElement;\n const formField = this._formField ?\n this._formField._elementRef.nativeElement : null;\n\n return this._panelOpen &&\n 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 // 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 (this.panelOpen && (keyCode === ESCAPE || (keyCode === UP_ARROW && event.altKey))) {\n this._resetActiveItem();\n this._closeKeyEventStream.next();\n event.stopPropagation();\n } else if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n } else {\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._canOpen() && this._previousValue !== value &&\n document.activeElement === event.target) {\n this._previousValue = value;\n this._onChange(value);\n this.openPanel();\n }\n }\n\n _handleFocus(): void {\n 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 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 * 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.recalculateLastPosition()),\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 this._resetActiveItem();\n this.autocomplete._setVisibility();\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\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\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 if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n } else {\n /** Update the panel width, in case the host width has changed */\n this._overlayRef.updateSize({width: this._getHostWidth()});\n }\n\n if (this._overlayRef && !this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._panelOpen = true;\n }\n\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getHostWidth(),\n direction: this._dir ? this._dir.value : 'ltr'\n });\n }\n\n private _getOverlayPosition(): PositionStrategy {\n this._positionStrategy = this._overlay.position().connectedTo(\n this._getConnectedElement(),\n {originX: 'start', originY: 'bottom'}, {overlayX: 'start', overlayY: 'top'})\n .withFallbackPosition(\n {originX: 'start', originY: 'top'}, {overlayX: 'start', overlayY: 'bottom'}\n );\n return this._positionStrategy;\n }\n\n private _getConnectedElement(): ElementRef {\n return this._formField ? this._formField._connectionContainerRef : this._element;\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: HTMLInputElement = this._element.nativeElement;\n return !element.readOnly && !element.disabled;\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 AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n InjectionToken,\n Inject,\n Optional,\n} from '@angular/core';\nimport {\n MatOption,\n MatOptgroup,\n MAT_OPTION_PARENT_COMPONENT,\n mixinDisableRipple,\n CanDisableRipple,\n} from '@angular/material/core';\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\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// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nexport class MatAutocompleteBase {}\nexport const _MatAutocompleteMixinBase = 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\n\n@Component({\n moduleId: module.id,\n selector: 'mat-autocomplete',\n templateUrl: 'autocomplete.html',\n styleUrls: ['autocomplete.css'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\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 /** @docs-private */\n @ViewChild(TemplateRef) template: TemplateRef<any>;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild('panel') 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 /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<MatAutocompleteSelectedEvent> =\n new EventEmitter<MatAutocompleteSelectedEvent>();\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 value.split(' ').forEach(className => this._classList[className.trim()] = true);\n this._elementRef.nativeElement.className = '';\n }\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,\n\n // @deletion-target Turn into required param in 6.0.0\n @Optional() @Inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS)\n defaults?: MatAutocompleteDefaultOptions) {\n super();\n\n this._autoActiveFirstOption = defaults &&\n typeof defaults.autoActiveFirstOption !== 'undefined' ?\n defaults.autoActiveFirstOption :\n false;\n }\n\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options).withWrap();\n // Set the initial visibiity 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._classList['mat-autocomplete-visible'] = this.showPanel;\n this._classList['mat-autocomplete-hidden'] = !this.showPanel;\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\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 {PlatformModule} from '@angular/cdk/platform';\nimport {MatError} from './error';\nimport {MatFormField} from './form-field';\nimport {MatHint} from './hint';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\nimport {MatLabel} from './label';\n\n\n@NgModule({\n declarations: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n MatLabel,\n ],\n imports: [\n CommonModule,\n PlatformModule,\n ],\n exports: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n MatLabel,\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 {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 Input,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanColor,\n FloatLabelType,\n LabelOptions,\n MAT_LABEL_GLOBAL_OPTIONS,\n mixinColor,\n ThemePalette\n} from '@angular/material/core';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {startWith} from 'rxjs/operators/startWith';\nimport {take} from 'rxjs/operators/take';\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';\n\n\n// Boilerplate for applying mixins to MatFormField.\n/** @docs-private */\nexport class MatFormFieldBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\nexport const _MatFormFieldMixinBase = mixinColor(MatFormFieldBase, 'primary');\n\n\nlet nextUniqueId = 0;\n\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n moduleId: module.id,\n // TODO(mmalerba): the input-container selectors and classes are deprecated and will be removed.\n selector: 'mat-input-container, 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 // The MatInput styles are fairly minimal so it shouldn't be a big deal for people who\n // aren't using MatInput.\n styleUrls: ['form-field.css', '../input/input.css'],\n animations: [matFormFieldAnimations.transitionMessages],\n host: {\n 'class': 'mat-input-container mat-form-field',\n '[class.mat-input-invalid]': '_control.errorState',\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-hide-placeholder]': '_hideControlPlaceholder()',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-focused]': '_control.focused',\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 },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class MatFormField extends _MatFormFieldMixinBase\n implements AfterContentInit, AfterContentChecked, AfterViewInit, CanColor {\n private _labelOptions: LabelOptions;\n\n /**\n * @deprecated Use `color` instead.\n * @deletion-target 6.0.0\n */\n @Input()\n get dividerColor(): ThemePalette { return this.color; }\n set dividerColor(value: ThemePalette) { this.color = value; }\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 /**\n * Whether the placeholder should always float, never float or float as the user types.\n * @deprecated Use floatLabel instead.\n * @deletion-target 6.0.0\n */\n @Input()\n get floatPlaceholder(): FloatLabelType { return this._floatLabel; }\n set floatPlaceholder(value: FloatLabelType) { this.floatLabel = value; }\n\n /** Whether the label should always float, never float or float as the user types. */\n @Input()\n get floatLabel(): FloatLabelType { return this._floatLabel; }\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 /** Reference to the form field's underline element. */\n @ViewChild('underline') underlineRef: ElementRef;\n @ViewChild('connectionContainer') _connectionContainerRef: ElementRef;\n @ViewChild('inputContainer') _inputContainerRef: ElementRef;\n @ViewChild('label') private _label: ElementRef;\n @ContentChild(MatFormFieldControl) _control: MatFormFieldControl<any>;\n @ContentChild(MatPlaceholder) _placeholderChild: MatPlaceholder;\n @ContentChild(MatLabel) _labelChild: MatLabel;\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,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_LABEL_GLOBAL_OPTIONS) labelOptions: LabelOptions) {\n super(_elementRef);\n\n this._labelOptions = labelOptions ? labelOptions : {};\n this.floatLabel = this._labelOptions.float || 'auto';\n }\n\n ngAfterContentInit() {\n this._validateControlChild();\n if (this._control.controlType) {\n this._elementRef.nativeElement.classList\n .add(`mat-form-field-type-${this._control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this._control.stateChanges.pipe(startWith(null!)).subscribe(() => {\n this._validatePlaceholders();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n let ngControl = this._control.ngControl;\n if (ngControl && ngControl.valueChanges) {\n ngControl.valueChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\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\n ngAfterContentChecked() {\n this._validateControlChild();\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n _shouldForward(prop: string): boolean {\n let ngControl = this._control ? this._control.ngControl : null;\n return ngControl && (ngControl as any)[prop];\n }\n\n _hasPlaceholder() {\n return !!(this._control.placeholder || this._placeholderChild);\n }\n\n _hasLabel() {\n return !!this._labelChild;\n }\n\n _shouldLabelFloat() {\n return this._canLabelFloat && (this._control.shouldLabelFloat ||\n this._control.shouldPlaceholderFloat || this._shouldAlwaysFloat);\n }\n\n _hideControlPlaceholder() {\n return !this._hasLabel() || !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel() {\n return this._hasLabel() || 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 this._showAlwaysAnimate = true;\n this._floatLabel = 'always';\n\n fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(() => {\n this._showAlwaysAnimate = false;\n });\n\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 let startHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'start') : null;\n let 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 the the 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/** The placeholder text for an `MatFormField`. */\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/Observable';\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 /**\n * Whether the `MatFormField` placeholder should try to float.\n * @deprecated Use `shouldLabelFloat` instead.\n * @deletion-target 6.0.0\n */\n readonly shouldPlaceholderFloat?: 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 /** 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/** Animations used by the MatFormField. */\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","import { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { ArrayObservable } from '../observable/ArrayObservable';\nimport { ScalarObservable } from '../observable/ScalarObservable';\nimport { EmptyObservable } from '../observable/EmptyObservable';\nimport { concat as concatStatic } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function startWith<T>(v1: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(v1: T, v2: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(v1: T, v2: T, v3: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(v1: T, v2: T, v3: T, v4: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(v1: T, v2: T, v3: T, v4: T, v5: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(v1: T, v2: T, v3: T, v4: T, v5: T, v6: T, scheduler?: IScheduler): MonoTypeOperatorFunction<T>;\nexport function startWith<T>(...array: Array<T | IScheduler>): MonoTypeOperatorFunction<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith<T>(...array: Array<T | IScheduler>): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n let scheduler = <IScheduler>array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n } else {\n scheduler = null;\n }\n\n const len = array.length;\n if (len === 1) {\n return concatStatic(new ScalarObservable<T>(<T>array[0], scheduler), source);\n } else if (len > 1) {\n return concatStatic(new ArrayObservable<T>(<T[]>array, scheduler), source);\n } else {\n return concatStatic(new EmptyObservable<T>(scheduler), source);\n }\n };\n}\n","import { Observable, ObservableInput } from '../Observable';\nimport { IScheduler } from '../Scheduler';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\nexport function concat<T>(v1: ObservableInput<T>, scheduler?: IScheduler): Observable<T>;\nexport function concat<T, T2>(v1: ObservableInput<T>, v2: ObservableInput<T2>, scheduler?: IScheduler): Observable<T | T2>;\nexport function concat<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, scheduler?: IScheduler): Observable<T | T2 | T3>;\nexport function concat<T, T2, T3, T4>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, scheduler?: IScheduler): Observable<T | T2 | T3 | T4>;\nexport function concat<T, T2, T3, T4, T5>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, scheduler?: IScheduler): Observable<T | T2 | T3 | T4 | T5>;\nexport function concat<T, T2, T3, T4, T5, T6>(v1: ObservableInput<T>, v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>, scheduler?: IScheduler): Observable<T | T2 | T3 | T4 | T5 | T6>;\nexport function concat<T>(...observables: (ObservableInput<T> | IScheduler)[]): Observable<T>;\nexport function concat<T, R>(...observables: (ObservableInput<any> | IScheduler)[]): Observable<R>;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat<T, R>(...observables: Array<ObservableInput<any> | IScheduler>): Observable<R> {\n if (observables.length === 1 || (observables.length === 2 && isScheduler(observables[1]))) {\n return from(<any>observables[0]);\n }\n return concatAll()(of(...observables)) as Observable<R>;\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll<T>(): MonoTypeOperatorFunction<T> {\n return mergeAll(1);\n}\n","\nimport { ObservableInput } from '../Observable';\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll<T>(concurrent: number = Number.POSITIVE_INFINITY): MonoTypeOperatorFunction<T> {\n return mergeMap(identity as (value: T, index: number) => ObservableInput<{}>, null, concurrent);\n}","export function identity<T>(x: T): T {\n return x;\n}\n","import { Observable, ObservableInput } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OperatorFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, R>(project: (value: T, index: number) => ObservableInput<R>, concurrent?: number): OperatorFunction<T, R>;\nexport function mergeMap<T, I, R>(project: (value: T, index: number) => ObservableInput<I>, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nexport function mergeMap<T, I, R>(project: (value: T, index: number) => ObservableInput<I>,\n resultSelector?: ((outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction<T, I|R> {\n return function mergeMapOperatorFunction(source: Observable<T>) {\n if (typeof resultSelector === 'number') {\n concurrent = <number>resultSelector;\n resultSelector = null;\n }\n return source.lift(new MergeMapOperator(project, <any>resultSelector, concurrent));\n };\n}\n\nexport class MergeMapOperator<T, I, R> implements Operator<T, I> {\n constructor(private project: (value: T, index: number) => ObservableInput<I>,\n private resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber<I>, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.resultSelector, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber<T, I, R> extends OuterSubscriber<T, I> {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber<I>,\n private project: (value: T, index: number) => ObservableInput<I>,\n private resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput<I>;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n }\n\n private _innerSub(ish: ObservableInput<I>, value: T, index: number): void {\n this.add(subscribeToResult<T, I>(this, ish, value, index));\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n }\n\n notifyNext(outerValue: T, innerValue: I,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber<T, I>): void {\n if (this.resultSelector) {\n this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n } else {\n this.destination.next(innerValue);\n }\n }\n\n private _notifyResultSelector(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) {\n let result: R;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n\n notifyComplete(innerSub: Subscription): void {\n const buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\n","import { FromObservable } from './FromObservable';\n\nexport const from = FromObservable.create;","import { isArray } from '../util/isArray';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { PromiseObservable } from './PromiseObservable';\nimport { IteratorObservable } from'./IteratorObservable';\nimport { ArrayObservable } from './ArrayObservable';\nimport { ArrayLikeObservable } from './ArrayLikeObservable';\n\nimport { IScheduler } from '../Scheduler';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { Observable, ObservableInput } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObserveOnSubscriber } from '../operators/observeOn';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class FromObservable<T> extends Observable<T> {\n constructor(private ish: ObservableInput<T>, private scheduler?: IScheduler) {\n super(null);\n }\n\n static create<T>(ish: ObservableInput<T>, scheduler?: IScheduler): Observable<T>;\n static create<T, R>(ish: ArrayLike<T>, scheduler?: IScheduler): Observable<R>;\n\n /**\n * Creates an Observable from an Array, an array-like object, a Promise, an\n * iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * <img src=\"./img/from.png\" width=\"100%\">\n *\n * Convert various other objects and data types into Observables. `from`\n * converts a Promise or an array-like or an\n * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * object into an Observable that emits the items in that promise or array or\n * iterable. A String, in this context, is treated as an array of characters.\n * Observable-like objects (contains a function named with the ES2015 Symbol\n * for Observable) can also be converted through this operator.\n *\n * @example <caption>Converts an array to an Observable</caption>\n * var array = [10, 20, 30];\n * var result = Rx.Observable.from(array);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 10 20 30\n *\n * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>\n * function* generateDoubles(seed) {\n * var i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * var iterator = generateDoubles(3);\n * var result = Rx.Observable.from(iterator).take(10);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 3 6 12 24 48 96 192 384 768 1536\n *\n * @see {@link create}\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n * @see {@link fromPromise}\n *\n * @param {ObservableInput<T>} ish A subscribable object, a Promise, an\n * Observable-like, an Array, an iterable or an array-like object to be\n * converted.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * emissions of values.\n * @return {Observable<T>} The Observable whose values are originally from the\n * input object that was converted.\n * @static true\n * @name from\n * @owner Observable\n */\n static create<T>(ish: ObservableInput<T>, scheduler?: IScheduler): Observable<T> {\n if (ish != null) {\n if (typeof ish[Symbol_observable] === 'function') {\n if (ish instanceof Observable && !scheduler) {\n return ish;\n }\n return new FromObservable<T>(ish, scheduler);\n } else if (isArray(ish)) {\n return new ArrayObservable<T>(ish, scheduler);\n } else if (isPromise<T>(ish)) {\n return new PromiseObservable<T>(ish, scheduler);\n } else if (typeof ish[Symbol_iterator] === 'function' || typeof ish === 'string') {\n return new IteratorObservable<T>(ish, scheduler);\n } else if (isArrayLike(ish)) {\n return new ArrayLikeObservable(ish, scheduler);\n }\n }\n\n throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n }\n\n protected _subscribe(subscriber: Subscriber<T>) {\n const ish = this.ish;\n const scheduler = this.scheduler;\n if (scheduler == null) {\n return ish[Symbol_observable]().subscribe(subscriber);\n } else {\n return ish[Symbol_observable]().subscribe(new ObserveOnSubscriber(subscriber, scheduler, 0));\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { IScheduler } from '../Scheduler';\nimport { Operator } from '../Operator';\nimport { PartialObserver } from '../Observer';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { TeardownLogic } from '../Subscription';\nimport { Action } from '../scheduler/Action';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame\n * .subscribe(val => { // scheduler to ensure smooth animation.\n * someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn<T>(scheduler: IScheduler, delay: number = 0): MonoTypeOperatorFunction<T> {\n return function observeOnOperatorFunction(source: Observable<T>): Observable<T> {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator<T> implements Operator<T, T> {\n constructor(private scheduler: IScheduler, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber<T> extends Subscriber<T> {\n static dispatch(this: Action<ObserveOnMessage>, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber<T>,\n private scheduler: IScheduler,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification<any>): void {\n this.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification<any>,\n public destination: PartialObserver<any>) {\n }\n}\n","import { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { ScalarObservable } from './ScalarObservable';\nimport { EmptyObservable } from './EmptyObservable';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic } from '../Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class ArrayLikeObservable<T> extends Observable<T> {\n\n static create<T>(arrayLike: ArrayLike<T>, scheduler?: IScheduler): Observable<T> {\n const length = arrayLike.length;\n if (length === 0) {\n return new EmptyObservable<T>();\n } else if (length === 1) {\n return new ScalarObservable<T>(<any>arrayLike[0], scheduler);\n } else {\n return new ArrayLikeObservable(arrayLike, scheduler);\n }\n }\n\n static dispatch(state: any) {\n const { arrayLike, index, length, subscriber } = state;\n\n if (subscriber.closed) {\n return;\n }\n\n if (index >= length) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(arrayLike[index]);\n\n state.index = index + 1;\n\n (<any> this).schedule(state);\n }\n\n // value used if Array has one value and _isScalar\n private value: any;\n\n constructor(private arrayLike: ArrayLike<T>, private scheduler?: IScheduler) {\n super();\n if (!scheduler && arrayLike.length === 1) {\n this._isScalar = true;\n this.value = arrayLike[0];\n }\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n let index = 0;\n const { arrayLike, scheduler } = this;\n const length = arrayLike.length;\n\n if (scheduler) {\n return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n arrayLike, index, length, subscriber\n });\n } else {\n for (let i = 0; i < length && !subscriber.closed; i++) {\n subscriber.next(arrayLike[i]);\n }\n subscriber.complete();\n }\n }\n}\n","import { root } from '../util/root';\nimport { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { TeardownLogic } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class IteratorObservable<T> extends Observable<T> {\n private iterator: any;\n\n static create<T>(iterator: any, scheduler?: IScheduler): IteratorObservable<T> {\n return new IteratorObservable(iterator, scheduler);\n }\n\n static dispatch(state: any) {\n\n const { index, hasError, iterator, subscriber } = state;\n\n if (hasError) {\n subscriber.error(state.error);\n return;\n }\n\n let result = iterator.next();\n if (result.done) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(result.value);\n state.index = index + 1;\n\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n return;\n }\n\n (<any> this).schedule(state);\n }\n\n constructor(iterator: any, private scheduler?: IScheduler) {\n super();\n\n if (iterator == null) {\n throw new Error('iterator cannot be null.');\n }\n\n this.iterator = getIterator(iterator);\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n\n let index = 0;\n const { iterator, scheduler } = this;\n\n if (scheduler) {\n return scheduler.schedule(IteratorObservable.dispatch, 0, {\n index, iterator, subscriber\n });\n } else {\n do {\n let result = iterator.next();\n if (result.done) {\n subscriber.complete();\n break;\n } else {\n subscriber.next(result.value);\n }\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n break;\n }\n } while (true);\n }\n }\n}\n\nclass StringIterator {\n constructor(private str: string,\n private idx: number = 0,\n private len: number = str.length) {\n }\n [Symbol_iterator]() { return (this); }\n next() {\n return this.idx < this.len ? {\n done: false,\n value: this.str.charAt(this.idx++)\n } : {\n done: true,\n value: undefined\n };\n }\n}\n\nclass ArrayIterator {\n constructor(private arr: Array<any>,\n private idx: number = 0,\n private len: number = toLength(arr)) {\n }\n [Symbol_iterator]() { return this; }\n next() {\n return this.idx < this.len ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n }\n}\n\nfunction getIterator(obj: any) {\n const i = obj[Symbol_iterator];\n if (!i && typeof obj === 'string') {\n return new StringIterator(obj);\n }\n if (!i && obj.length !== undefined) {\n return new ArrayIterator(obj);\n }\n if (!i) {\n throw new TypeError('object is not iterable');\n }\n return obj[Symbol_iterator]();\n}\n\nconst maxSafeInteger = Math.pow(2, 53) - 1;\n\nfunction toLength(o: any) {\n let len = +o.length;\n if (isNaN(len)) {\n return 0;\n }\n if (len === 0 || !numberIsFinite(len)) {\n return len;\n }\n len = sign(len) * Math.floor(Math.abs(len));\n if (len <= 0) {\n return 0;\n }\n if (len > maxSafeInteger) {\n return maxSafeInteger;\n }\n return len;\n}\n\nfunction numberIsFinite(value: any) {\n return typeof value === 'number' && root.isFinite(value);\n}\n\nfunction sign(value: any) {\n let valueAsNumber = +value;\n if (valueAsNumber === 0) {\n return valueAsNumber;\n }\n if (isNaN(valueAsNumber)) {\n return valueAsNumber;\n }\n return valueAsNumber < 0 ? -1 : 1;\n}\n","import { root } from '../util/root';\nimport { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic } from '../Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class PromiseObservable<T> extends Observable<T> {\n\n public value: T;\n\n /**\n * Converts a Promise to an Observable.\n *\n * <span class=\"informal\">Returns an Observable that just emits the Promise's\n * resolved value, then completes.</span>\n *\n * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n * Observable. If the Promise resolves with a value, the output Observable\n * emits that resolved value as a `next`, and then completes. If the Promise\n * is rejected, then the output Observable emits the corresponding Error.\n *\n * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>\n * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {PromiseLike<T>} promise The promise to be converted.\n * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n * the delivery of the resolved value (or the rejection).\n * @return {Observable<T>} An Observable which wraps the Promise.\n * @static true\n * @name fromPromise\n * @owner Observable\n */\n static create<T>(promise: PromiseLike<T>, scheduler?: IScheduler): Observable<T> {\n return new PromiseObservable(promise, scheduler);\n }\n\n constructor(private promise: PromiseLike<T>, private scheduler?: IScheduler) {\n super();\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n const promise = this.promise;\n const scheduler = this.scheduler;\n\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.closed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n } else {\n promise.then(\n (value) => {\n this.value = value;\n this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err) => {\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n }\n )\n .then(null, err => {\n // escape the promise trap, throw unhandled errors\n root.setTimeout(() => { throw err; });\n });\n }\n } else {\n if (this._isScalar) {\n if (!subscriber.closed) {\n return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber });\n }\n } else {\n promise.then(\n (value) => {\n this.value = value;\n this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, { value, subscriber }));\n }\n },\n (err) => {\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, { err, subscriber }));\n }\n })\n .then(null, (err) => {\n // escape the promise trap, throw unhandled errors\n root.setTimeout(() => { throw err; });\n });\n }\n }\n }\n}\n\ninterface DispatchNextArg<T> {\n subscriber: Subscriber<T>;\n value: T;\n}\nfunction dispatchNext<T>(arg: DispatchNextArg<T>) {\n const { value, subscriber } = arg;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\n\ninterface DispatchErrorArg<T> {\n subscriber: Subscriber<T>;\n err: any;\n}\nfunction dispatchError<T>(arg: DispatchErrorArg<T>) {\n const { err, subscriber } = arg;\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n}\n","import { ArrayObservable } from './ArrayObservable';\n\nexport const of = ArrayObservable.of;","import { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { ScalarObservable } from './ScalarObservable';\nimport { EmptyObservable } from './EmptyObservable';\nimport { Subscriber } from '../Subscriber';\nimport { isScheduler } from '../util/isScheduler';\nimport { TeardownLogic } from '../Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class ArrayObservable<T> extends Observable<T> {\n\n static create<T>(array: T[], scheduler?: IScheduler): Observable<T> {\n return new ArrayObservable(array, scheduler);\n }\n\n static of<T>(item1: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(item1: T, item2: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(item1: T, item2: T, item3: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(item1: T, item2: T, item3: T, item4: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(item1: T, item2: T, item3: T, item4: T, item5: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(item1: T, item2: T, item3: T, item4: T, item5: T, item6: T, scheduler?: IScheduler): Observable<T>;\n static of<T>(...array: Array<T | IScheduler>): Observable<T>;\n /**\n * Creates an Observable that emits some values you specify as arguments,\n * immediately one after the other, and then emits a complete notification.\n *\n * <span class=\"informal\">Emits the arguments you provide, then completes.\n * </span>\n *\n * <img src=\"./img/of.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the arguments given, and the complete notification thereafter. It can\n * be used for composing with other Observables, such as with {@link concat}.\n * By default, it uses a `null` IScheduler, which means the `next`\n * notifications are sent synchronously, although with a different IScheduler\n * it is possible to determine when those notifications will be delivered.\n *\n * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n * var numbers = Rx.Observable.of(10, 20, 30);\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var interval = Rx.Observable.interval(1000);\n * var result = numbers.concat(letters).concat(interval);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link throw}\n *\n * @param {...T} values Arguments that represent `next` values to be emitted.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable<T>} An Observable that emits each given input value.\n * @static true\n * @name of\n * @owner Observable\n */\n static of<T>(...array: Array<T | IScheduler>): Observable<T> {\n let scheduler = <IScheduler>array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n } else {\n scheduler = null;\n }\n\n const len = array.length;\n if (len > 1) {\n return new ArrayObservable<T>(<any>array, scheduler);\n } else if (len === 1) {\n return new ScalarObservable<T>(<any>array[0], scheduler);\n } else {\n return new EmptyObservable<T>(scheduler);\n }\n }\n\n static dispatch(state: any) {\n\n const { array, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(array[index]);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n\n (<any> this).schedule(state);\n }\n\n // value used if Array has one value and _isScalar\n value: any;\n\n constructor(private array: T[], private scheduler?: IScheduler) {\n super();\n if (!scheduler && array.length === 1) {\n this._isScalar = true;\n this.value = array[0];\n }\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n let index = 0;\n const array = this.array;\n const count = array.length;\n const scheduler = this.scheduler;\n\n if (scheduler) {\n return scheduler.schedule(ArrayObservable.dispatch, 0, {\n array, index, count, subscriber\n });\n } else {\n for (let i = 0; i < count && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n }\n }\n}\n","import { Scheduler } from '../Scheduler';\nexport function isScheduler(value: any): value is Scheduler {\n return value && typeof (<any>value).schedule === 'function';\n}\n","import { IScheduler } from '../Scheduler';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic } from '../Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class ScalarObservable<T> extends Observable<T> {\n static create<T>(value: T, scheduler?: IScheduler): ScalarObservable<T> {\n return new ScalarObservable(value, scheduler);\n }\n\n static dispatch(state: any): void {\n const { done, value, subscriber } = state;\n\n if (done) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n\n state.done = true;\n (<any> this).schedule(state);\n }\n\n _isScalar: boolean = true;\n\n constructor(public value: T, private scheduler?: IScheduler) {\n super();\n if (scheduler) {\n this._isScalar = false;\n }\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n const value = this.value;\n const scheduler = this.scheduler;\n\n if (scheduler) {\n return scheduler.schedule(ScalarObservable.dispatch, 0, {\n done: false, value, subscriber\n });\n } else {\n subscriber.next(value);\n if (!subscriber.closed) {\n subscriber.complete();\n }\n }\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { IScheduler } from '../Scheduler';\nimport { Subscriber } from '../Subscriber';\nimport { Action } from '../scheduler/Action';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { PartialObserver } from '../Observer';\nimport { TeardownLogic } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * <img src=\"./img/delay.png\" width=\"100%\">\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * @example <caption>Delay each click by one second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var delayedClicks = clicks.delay(1000); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @example <caption>Delay all clicks until a future date happens</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var date = new Date('March 15, 2050 12:00:00'); // in the future\n * var delayedClicks = clicks.delay(date); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {Scheduler} [scheduler=async] The IScheduler to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay<T>(delay: number|Date,\n scheduler: IScheduler = async): MonoTypeOperatorFunction<T> {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(<number>delay);\n return (source: Observable<T>) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator<T> implements Operator<T, T> {\n constructor(private delay: number,\n private scheduler: IScheduler) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState<T> {\n source: DelaySubscriber<T>;\n destination: PartialObserver<T>;\n scheduler: IScheduler;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber<T> extends Subscriber<T> {\n private queue: Array<DelayMessage<T>> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch<T>(this: Action<DelayState<T>>, state: DelayState<T>): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber<T>,\n private delay: number,\n private scheduler: IScheduler) {\n super(destination);\n }\n\n private _schedule(scheduler: IScheduler): void {\n this.active = true;\n this.add(scheduler.schedule<DelayState<T>>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification<T>): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n }\n}\n\nclass DelayMessage<T> {\n constructor(public readonly time: number,\n public readonly notification: Notification<T>) {\n }\n}\n","import { PartialObserver } from './Observer';\nimport { Observable } from './Observable';\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nexport class Notification<T> {\n hasValue: boolean;\n\n constructor(public kind: string, public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver<T>): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver<T> | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (<PartialObserver<T>>nextOrObserver).next === 'function') {\n return this.observe(<PartialObserver<T>>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable<T> {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable.of(this.value);\n case 'E':\n return Observable.throw(this.error);\n case 'C':\n return Observable.empty<T>();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification<any> = new Notification('C');\n private static undefinedValueNotification: Notification<any> = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification<T>} The \"next\" Notification representing the\n * argument.\n */\n static createNext<T>(value: T): Notification<T> {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification<T>} The \"error\" Notification representing the\n * argument.\n */\n static createError<T>(err?: any): Notification<T> {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification<any>} The valueless \"complete\" Notification.\n */\n static createComplete(): Notification<any> {\n return Notification.completeNotification;\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\n\nexport const async = new AsyncScheduler(AsyncAction);\n","import { Scheduler } from '../Scheduler';\nimport { AsyncAction } from './AsyncAction';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array<AsyncAction<any>> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n */\n public scheduled: any = undefined;\n\n public flush(action: AsyncAction<any>): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\n\nexport interface IScheduler {\n now(): number;\n schedule<T>(work: (this: Action<T>, state?: T) => void, delay?: number, state?: T): Subscription;\n}\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nexport class Scheduler implements IScheduler {\n\n public static now: () => number = Date.now ? Date.now : () => +new Date();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule<T>(work: (this: Action<T>, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction<T>(this, work).schedule(state, delay);\n }\n}\n","import { root } from '../util/root';\nimport { Action } from './Action';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction<T> extends Action<T> {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: AsyncAction<T>, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n return root.clearInterval(id) && undefined || undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n protected _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\n\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nexport class Action<T> extends Subscription {\n constructor(scheduler: Scheduler, work: (this: Action<T>, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent Scheduler for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { PartialObserver } from '../Observer';\nimport { TeardownLogic } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function tap<T>(next: (x: T) => void, error?: (e: any) => void, complete?: () => void): MonoTypeOperatorFunction<T>;\nexport function tap<T>(observer: PartialObserver<T>): MonoTypeOperatorFunction<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * <span class=\"informal\">Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.</span>\n *\n * <img src=\"./img/do.png\" width=\"100%\">\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `do` is not subscribed, the side effects specified by the\n * Observer will never happen. `do` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * @example <caption>Map every click to the clientX position of that click, while also logging the click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks\n * .do(ev => console.log(ev))\n * .map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link map}\n * @see {@link subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap<T>(nextOrObserver?: PartialObserver<T> | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void): MonoTypeOperatorFunction<T> {\n return function tapOperatorFunction(source: Observable<T>): Observable<T> {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\n\nclass DoOperator<T> implements Operator<T, T> {\n constructor(private nextOrObserver?: PartialObserver<T> | ((x: T) => void),\n private error?: (e: any) => void,\n private complete?: () => void) {\n }\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new DoSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DoSubscriber<T> extends Subscriber<T> {\n\n private safeSubscriber: Subscriber<T>;\n\n constructor(destination: Subscriber<T>,\n nextOrObserver?: PartialObserver<T> | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void) {\n super(destination);\n\n const safeSubscriber = new Subscriber<T>(nextOrObserver, error, complete);\n safeSubscriber.syncErrorThrowable = true;\n this.add(safeSubscriber);\n this.safeSubscriber = safeSubscriber;\n }\n\n protected _next(value: T): void {\n const { safeSubscriber } = this;\n safeSubscriber.next(value);\n if (safeSubscriber.syncErrorThrown) {\n this.destination.error(safeSubscriber.syncErrorValue);\n } else {\n this.destination.next(value);\n }\n }\n\n protected _error(err: any): void {\n const { safeSubscriber } = this;\n safeSubscriber.error(err);\n if (safeSubscriber.syncErrorThrown) {\n this.destination.error(safeSubscriber.syncErrorValue);\n } else {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n const { safeSubscriber } = this;\n safeSubscriber.complete();\n if (safeSubscriber.syncErrorThrown) {\n this.destination.error(safeSubscriber.syncErrorValue);\n } else {\n this.destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable, ObservableInput } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, R>(project: (value: T, index: number) => ObservableInput<R>): OperatorFunction<T, R>;\nexport function switchMap<T, I, R>(project: (value: T, index: number) => ObservableInput<I>, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.</span>\n *\n * <img src=\"./img/switchMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap<T, I, R>(\n project: (value: T, index: number) => ObservableInput<I>,\n resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, I | R> {\n return function switchMapOperatorFunction(source: Observable<T>): Observable<I | R> {\n return source.lift(new SwitchMapOperator(project, resultSelector));\n };\n}\n\nclass SwitchMapOperator<T, I, R> implements Operator<T, I> {\n constructor(private project: (value: T, index: number) => ObservableInput<I>,\n private resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R) {\n }\n\n call(subscriber: Subscriber<I>, source: any): any {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchMapSubscriber<T, I, R> extends OuterSubscriber<T, I> {\n private index: number = 0;\n private innerSubscription: Subscription;\n\n constructor(destination: Subscriber<I>,\n private project: (value: T, index: number) => ObservableInput<I>,\n private resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R) {\n super(destination);\n }\n\n protected _next(value: T) {\n let result: ObservableInput<I>;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n }\n\n private _innerSub(result: ObservableInput<I>, value: T, index: number) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n this.add(this.innerSubscription = subscribeToResult(this, result, value, index));\n }\n\n protected _complete(): void {\n const {innerSubscription} = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n }\n\n protected _unsubscribe() {\n this.innerSubscription = null;\n }\n\n notifyComplete(innerSub: Subscription): void {\n this.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n super._complete();\n }\n }\n\n notifyNext(outerValue: T, innerValue: I,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber<T, I>): void {\n if (this.resultSelector) {\n this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex);\n } else {\n this.destination.next(innerValue);\n }\n }\n\n private _tryNotifyNext(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): void {\n let result: R;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { root } from './root';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { Subscriber } from '../Subscriber';\nimport { Observable, ObservableInput } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function subscribeToResult<T, R>(outerSubscriber: OuterSubscriber<T, R>,\n result: any,\n outerValue?: T,\n outerIndex?: number): Subscription;\nexport function subscribeToResult<T>(outerSubscriber: OuterSubscriber<any, any>,\n result: ObservableInput<T>,\n outerValue?: T,\n outerIndex?: number): Subscription {\n let destination: Subscriber<any> = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n\n if (destination.closed) {\n return null;\n }\n\n if (result instanceof Observable) {\n if (result._isScalar) {\n destination.next((<any>result).value);\n destination.complete();\n return null;\n } else {\n destination.syncErrorThrowable = true;\n return result.subscribe(destination);\n }\n } else if (isArrayLike(result)) {\n for (let i = 0, len = result.length; i < len && !destination.closed; i++) {\n destination.next(result[i]);\n }\n if (!destination.closed) {\n destination.complete();\n }\n } else if (isPromise(result)) {\n result.then(\n (value) => {\n if (!destination.closed) {\n destination.next(<any>value);\n destination.complete();\n }\n },\n (err: any) => destination.error(err)\n )\n .then(null, (err: any) => {\n // Escaping the Promise trap: globally throw unhandled errors\n root.setTimeout(() => { throw err; });\n });\n return destination;\n } else if (result && typeof result[Symbol_iterator] === 'function') {\n const iterator = <any>result[Symbol_iterator]();\n do {\n let item = iterator.next();\n if (item.done) {\n destination.complete();\n break;\n }\n destination.next(item.value);\n if (destination.closed) {\n break;\n }\n } while (true);\n } else if (result && typeof result[Symbol_observable] === 'function') {\n const obs = result[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n } else {\n return obs.subscribe(new InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n }\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n destination.error(new TypeError(msg));\n }\n return null;\n}\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber<T, R> extends Subscriber<R> {\n private index: number = 0;\n\n constructor(private parent: OuterSubscriber<T, R>, private outerValue: T, private outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { root } from '../util/root';\n\nexport function symbolIteratorPonyfill(root: any) {\n const Symbol: any = root.Symbol;\n\n if (typeof Symbol === 'function') {\n if (!Symbol.iterator) {\n Symbol.iterator = Symbol('iterator polyfill');\n }\n return Symbol.iterator;\n } else {\n // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n const { Set } = root;\n if (Set && typeof new Set()['@@iterator'] === 'function') {\n return '@@iterator';\n }\n const { Map } = root;\n // required for compatability with es6-shim\n if (Map) {\n let keys = Object.getOwnPropertyNames(Map.prototype);\n for (let i = 0; i < keys.length; ++i) {\n let key = keys[i];\n // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n if (key !== 'entries' && key !== 'size' && Map.prototype[key] === Map.prototype['entries']) {\n return key;\n }\n }\n }\n return '@@iterator';\n }\n}\n\nexport const iterator = symbolIteratorPonyfill(root);\n\n/**\n * @deprecated use iterator instead\n */\nexport const $$iterator = iterator;\n","export function isPromise<T>(value: any | Promise<T>): value is Promise<T> {\n return value && typeof (<any>value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number');","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber<T, R> extends Subscriber<T> {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber<T, R>): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber<T, R>): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber<T, R>): void {\n this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { EmptyObservable } from '../observable/EmptyObservable';\nimport { Observable } from '../Observable';\nimport { TeardownLogic } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../interfaces';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * <img src=\"./img/take.png\" width=\"100%\">\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * @example <caption>Take the first 5 seconds of an infinite 1-second interval Observable</caption>\n * var interval = Rx.Observable.interval(1000);\n * var five = interval.take(5);\n * five.subscribe(x => console.log(x));\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable<T>} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take<T>(count: number): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n if (count === 0) {\n return new EmptyObservable<T>();\n } else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\n\nclass TakeOperator<T> implements Operator<T, T> {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeSubscriber<T> extends Subscriber<T> {\n private count: number = 0;\n\n constructor(destination: Subscriber<T>, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { IScheduler } from '../Scheduler';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TeardownLogic } from '../Subscription';\n\nexport interface DispatchArg<T> {\n subscriber: Subscriber<T>;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class EmptyObservable<T> extends Observable<T> {\n\n /**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.\n * </span>\n *\n * <img src=\"./img/empty.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then complete.</caption>\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n */\n static create<T>(scheduler?: IScheduler): Observable<T> {\n return new EmptyObservable<T>(scheduler);\n }\n\n static dispatch<T>(arg: DispatchArg<T>) {\n const { subscriber } = arg;\n subscriber.complete();\n }\n\n constructor(private scheduler?: IScheduler) {\n super();\n }\n\n protected _subscribe(subscriber: Subscriber<T>): TeardownLogic {\n\n const scheduler = this.scheduler;\n\n if (scheduler) {\n return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber });\n } else {\n subscriber.complete();\n }\n }\n}\n","import { PartialObserver } from './Observer';\nimport { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, AnonymousSubscription, TeardownLogic } from './Subscription';\nimport { root } from './util/root';\nimport { toSubscriber } from './util/toSubscriber';\nimport { IfObservable } from './observable/IfObservable';\nimport { ErrorObservable } from './observable/ErrorObservable';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { OperatorFunction } from './interfaces';\nimport { pipeFromArray } from './util/pipe';\n\nexport interface Subscribable<T> {\n subscribe(observerOrNext?: PartialObserver<T> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): AnonymousSubscription;\n}\n\nexport type SubscribableOrPromise<T> = Subscribable<T> | PromiseLike<T>;\nexport type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T>;\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n\n public _isScalar: boolean = false;\n\n protected source: Observable<any>;\n protected operator: Operator<any, T>;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n static create: Function = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver<T>): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example <caption>Subscribe with an Observer</caption>\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Subscribe with functions</caption>\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Cancel a subscription</caption>\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver<T> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n operator.call(sink, this.source);\n } else {\n sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n\n return sink;\n }\n\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, PromiseCtor?: typeof Promise): Promise<void> {\n if (!PromiseCtor) {\n if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n PromiseCtor = root.Rx.config.Promise;\n } else if (root.Promise) {\n PromiseCtor = root.Promise;\n }\n }\n\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return new PromiseCtor<void>((resolve, reject) => {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n } else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n }\n\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words\n static if: typeof IfObservable.create;\n static throw: typeof ErrorObservable.create;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D>\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E>\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F>\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G>\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H>\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I>\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n pipe<R>(...operations: OperatorFunction<T, R>[]): Observable<R> {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise<T>(this: Observable<T>): Promise<T>;\n toPromise<T>(this: Observable<T>, PromiseCtor: typeof Promise): Promise<T>;\n toPromise<T>(this: Observable<T>, PromiseCtor: PromiseConstructorLike): Promise<T>;\n /* tslint:enable:max-line-length */\n\n toPromise(PromiseCtor?: PromiseConstructorLike) {\n if (!PromiseCtor) {\n if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n PromiseCtor = root.Rx.config.Promise;\n } else if (root.Promise) {\n PromiseCtor = root.Promise;\n }\n }\n\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return new PromiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise<T>;\n }\n}\n","import { noop } from './noop';\nimport { UnaryFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function pipe<T>(): UnaryFunction<T, T>;\nexport function pipe<T, A>(op1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>, op9: UnaryFunction<H, I>): UnaryFunction<T, I>;\n/* tslint:enable:max-line-length */\n\nexport function pipe<T, R>(...fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n return pipeFromArray(fns);\n}\n\n/* @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (!fns) {\n return noop as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input);\n };\n}\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { root } from '../util/root';\n\nexport function getSymbolObservable(context: any) {\n let $$observable: any;\n let Symbol = context.Symbol;\n\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n $$observable = Symbol.observable;\n } else {\n $$observable = Symbol('observable');\n Symbol.observable = $$observable;\n }\n } else {\n $$observable = '@@observable';\n }\n\n return $$observable;\n}\n\nexport const observable = getSymbolObservable(root);\n\n/**\n * @deprecated use observable instead\n */\nexport const $$observable = observable;\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { PartialObserver, empty as emptyObserver } from '../Observer';\n\nexport function toSubscriber<T>(\n nextOrObserver?: PartialObserver<T> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber<T> {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (<Subscriber<T>> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport class ArgumentOutOfRangeError extends Error {\n constructor() {\n const err: any = super('argument out of range');\n (<any> this).name = err.name = 'ArgumentOutOfRangeError';\n (<any> this).stack = err.stack;\n (<any> this).message = err.message;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TeardownLogic } from '../Subscription';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../interfaces';\n\n/* tslint:disable:max-line-length */\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction<T, S>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction<T> {\n return function filterOperatorFunction(source: Observable<T>): Observable<T> {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator<T> implements Operator<T, T> {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber<T>, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber<T> extends Subscriber<T> {\n\n count: number = 0;\n\n constructor(destination: Subscriber<T>,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}","import { isFunction } from './util/isFunction';\nimport { Observer, PartialObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { empty as emptyObserver } from './Observer';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n static create<T>(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber<T> {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n public syncErrorValue: any = null;\n public syncErrorThrown: boolean = false;\n public syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver<any> | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = (<Subscriber<any>> destinationOrNext);\n (<any> this.destination).add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber<T>(this, <PartialObserver<any>> destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber<T>(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n protected _unsubscribeAndRecycle(): Subscriber<T> {\n const { _parent, _parents } = this;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SafeSubscriber<T> extends Subscriber<T> {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber<T>,\n observerOrNext?: PartialObserver<T> | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (<PartialObserver<T>> observerOrNext).next;\n error = (<PartialObserver<T>> observerOrNext).error;\n complete = (<PartialObserver<T>> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n } else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n throw err;\n }\n }\n\n private __tryOrSetError(parent: Subscriber<T>, fn: Function, value?: any): boolean {\n try {\n fn.call(this._context, value);\n } catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n }\n\n protected _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { root } from '../util/root';\n\nconst Symbol: any = root.Symbol;\n\nexport const rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n Symbol.for('rxSubscriber') : '@@rxSubscriber';\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","declare let global: any;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\ndeclare var WorkerGlobalScope: any;\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\n\nconst __window = typeof window !== 'undefined' && window;\nconst __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nconst __global = typeof global !== 'undefined' && global;\nconst _root: any = __window || __global || __self;\n\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n if (!_root) {\n throw new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\n\nexport { _root as root };","export interface NextObserver<T> {\n closed?: boolean;\n next: (value: T) => void;\n error?: (err: any) => void;\n complete?: () => void;\n}\n\nexport interface ErrorObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error: (err: any) => void;\n complete?: () => void;\n}\n\nexport interface CompletionObserver<T> {\n closed?: boolean;\n next?: (value: T) => void;\n error?: (err: any) => void;\n complete: () => void;\n}\n\nexport type PartialObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T>;\n\nexport interface Observer<T> {\n closed?: boolean;\n next: (value: T) => void;\n error: (err: any) => void;\n complete: () => void;\n}\n\nexport const empty: Observer<any> = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void { throw err; },\n complete(): void { /*noop*/ }\n};\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { tryCatch } from './util/tryCatch';\nimport { errorObject } from './util/errorObject';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\n\nexport interface AnonymousSubscription {\n unsubscribe(): void;\n}\n\nexport type TeardownLogic = AnonymousSubscription | Function | void;\n\nexport interface ISubscription extends AnonymousSubscription {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements ISubscription {\n public static EMPTY: Subscription = (function(empty: any){\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n protected _parent: Subscription = null;\n protected _parents: Subscription[] = null;\n private _subscriptions: ISubscription[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (<any> this)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let hasErrors = false;\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parent, _parents, _unsubscribe, _subscriptions } = (<any> this);\n\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n let index = -1;\n let len = _parents ? _parents.length : 0;\n\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n\n if (isFunction(_unsubscribe)) {\n let trial = tryCatch(_unsubscribe).call(this);\n if (trial === errorObject) {\n hasErrors = true;\n errors = errors || (\n errorObject.e instanceof UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject.e.errors) : [errorObject.e]\n );\n }\n }\n\n if (isArray(_subscriptions)) {\n\n index = -1;\n len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n let trial = tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject) {\n hasErrors = true;\n errors = errors || [];\n let err = errorObject.e;\n if (err instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n }\n }\n\n if (hasErrors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n\n if (teardown === this) {\n return this;\n }\n\n let subscription = (<Subscription> teardown);\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void) > teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n\n const subscriptions = this._subscriptions || (this._subscriptions = []);\n\n subscriptions.push(subscription);\n subscription._addParent(this);\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n\n private _addParent(parent: Subscription) {\n let { _parent, _parents } = this;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n } else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n } else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport class UnsubscriptionError extends Error {\n constructor(public errors: any[]) {\n super();\n const err: any = Error.call(this, errors ?\n `${errors.length} errors occurred during unsubscription:\n ${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '');\n (<any> this).name = err.name = 'UnsubscriptionError';\n (<any> this).stack = err.stack;\n (<any> this).message = err.message;\n }\n}\n","import { errorObject } from './errorObject';\n\nlet tryCatchTarget: Function;\n\nfunction tryCatcher(this: any): any {\n try {\n return tryCatchTarget.apply(this, arguments);\n } catch (e) {\n errorObject.e = e;\n return errorObject;\n }\n}\n\nexport function tryCatch<T extends Function>(fn: T): T {\n tryCatchTarget = fn;\n return <any>tryCatcher;\n};\n","// typeof any so that it we don't have to cast when comparing a result to the error object\nexport const errorObject: any = { e: {} };","export function isObject(x: any): x is Object {\n return x != null && typeof x === 'object';\n}\n","export const isArray = Array.isArray || (<T>(x: any): x is T[] => x && typeof x.length === 'number');\n","export function isFunction(x: any): x is Function {\n return typeof x === '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 {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} from '@angular/cdk/keycodes';\nimport {Subject} from 'rxjs/Subject';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n InjectionToken,\n Inject,\n AfterViewChecked,\n} from '@angular/core';\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]': 'selected.toString()',\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 preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption implements AfterViewChecked {\n private _selected = false;\n private _active = false;\n private _disabled = false;\n private _id = `mat-option-${_uniqueIdCounter++}`;\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 /** The unique ID of the option. */\n get id(): string { return this._id; }\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 /** 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 @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,\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 this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n\n /** Deselects the option. */\n deselect(): void {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n\n /** Sets focus onto this option. */\n focus(): void {\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus();\n }\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event: KeyboardEvent): void {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\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 /** 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 /** 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 {Component, ViewEncapsulation, Input, ChangeDetectionStrategy} from '@angular/core';\nimport {mixinDisabled, CanDisable} from '../common-behaviors/disabled';\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nexport class MatOptgroupBase { }\nexport const _MatOptgroupMixinBase = 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 preserveWhitespaces: false,\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 {Component, ViewEncapsulation, Input, ChangeDetectionStrategy} from '@angular/core';\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 preserveWhitespaces: false,\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 },\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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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';\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.\n * There are two phases with different durations for the ripples.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * If set, the default duration of the fade-in animation is divided by this value. For example,\n * setting it to 0.5 will cause the ripple fade-in animation to take twice as long.\n * A changed speedFactor will not affect the fade-out duration of the ripples.\n * @deprecated Use the `animation` global option instead.\n * @deletion-target 7.0.0\n */\n baseSpeedFactor?: number;\n\n /**\n * Whether ripples should start fading out immediately after the mouse our touch is released. By\n * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n */\n terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded'\n }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n /** Custom color for all ripples. */\n @Input('matRippleColor') color: string;\n\n /** Whether the ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean;\n\n /**\n * Whether the ripple always originates from the center of the host element's bounds, rather\n * than originating from the location of the click event.\n */\n @Input('matRippleCentered') centered: boolean;\n\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n @Input('matRippleRadius') radius: number = 0;\n\n /**\n * If set, the normal duration of ripple animations is divided by this value. For example,\n * setting it to 0.5 will cause the animations to take twice as long.\n * A changed speedFactor will not modify the fade-out duration of the ripples.\n * @deprecated Use the [matRippleAnimation] binding instead.\n * @deletion-target 7.0.0\n */\n @Input('matRippleSpeedFactor') speedFactor: number = 1;\n\n /**\n * Configuration for the ripple animation. Allows modifying the enter and exit animation\n * duration of the ripples.\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,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions: RippleGlobalOptions) {\n\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Ripple configuration from the directive's input values. */\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 speedFactor: this.speedFactor * (this._globalOptions.baseSpeedFactor || 1),\n };\n }\n\n /** Whether ripples on pointer-down are disabled or not. */\n get rippleDisabled(): boolean {\n return this.disabled || !!this._globalOptions.disabled;\n }\n\n /** Sets up the 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, supportsPassiveEventListeners} from '@angular/cdk/platform';\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 * @deprecated Use the `animation` property instead.\n * @deletion-target 7.0.0\n */\n speedFactor?: number;\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/**\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\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 /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent: number;\n\n /** Options that apply to all the event listeners that are bound by the renderer. */\n private _eventOptions = supportsPassiveEventListeners() ? ({passive: true} as any) : false;\n\n constructor(private _target: RippleTarget,\n private _ngZone: NgZone,\n elementRef: ElementRef,\n platform: Platform) {\n\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = elementRef.nativeElement;\n\n // Specify events which need to be registered on the trigger.\n this._triggerEvents.set('mousedown', this.onMousedown);\n this._triggerEvents.set('mouseup', this.onPointerUp);\n this._triggerEvents.set('mouseleave', this.onPointerUp);\n\n this._triggerEvents.set('touchstart', this.onTouchStart);\n this._triggerEvents.set('touchend', 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._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 / (config.speedFactor || 1);\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 // 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 rippleRef.state = RippleState.VISIBLE;\n\n if (!config.persistent && !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 // For ripples that are not active anymore, don't re-un the fade-out animation.\n if (!this._activeRipples.delete(rippleRef)) {\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\n rippleRef.state = RippleState.FADING_OUT;\n\n // Once the ripple faded out, the ripple can be safely removed from the DOM.\n this.runTimeoutOutsideZone(() => {\n rippleRef.state = RippleState.HIDDEN;\n rippleEl.parentNode!.removeChild(rippleEl);\n }, animationConfig.exitDuration);\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._activeRipples.forEach(ripple => ripple.fadeOut());\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(element: HTMLElement) {\n if (!element || element === this._triggerElement) {\n return;\n }\n\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n\n this._ngZone.runOutsideAngular(() => {\n this._triggerEvents.forEach((fn, type) =>\n element.addEventListener(type, fn, this._eventOptions));\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 const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !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 this.fadeInRipple(\n event.touches[0].clientX, event.touches[0].clientY, this._target.rippleConfig);\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, this._eventOptions);\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 reference. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: RippleRenderer,\n public element: HTMLElement,\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 {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 class MatLineSetter {\n constructor(private _lines: QueryList<MatLine>, private _element: ElementRef) {\n this._setLineClass(this._lines.length);\n\n this._lines.changes.subscribe(() => {\n this._setLineClass(this._lines.length);\n });\n }\n\n private _setLineClass(count: number): void {\n this._resetClasses();\n if (count === 2 || count === 3) {\n this._setClass(`mat-${count}-line`, true);\n } else if (count > 3) {\n this._setClass(`mat-multi-line`, true);\n }\n }\n\n private _resetClasses(): void {\n this._setClass('mat-2-line', false);\n this._setClass('mat-3-line', false);\n this._setClass('mat-multi-line', false);\n }\n\n private _setClass(className: string, isAdd: boolean): void {\n if (isAdd) {\n this._element.nativeElement.classList.add(className);\n } else {\n this._element.nativeElement.classList.remove(className);\n }\n }\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\n/** Adjusts configuration of our gesture library, Hammer. */\n@Injectable()\nexport class GestureConfig extends HammerGestureConfig {\n private _hammer: HammerStatic = typeof window !== 'undefined' ? (window as any).Hammer : null;\n\n /** List of new event names to add to the gesture support list */\n events: string[] = this._hammer ? [\n 'longpress',\n 'slide',\n 'slidestart',\n 'slideend',\n 'slideright',\n 'slideleft'\n ] : [];\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://www.google.com/design/spec/patterns/gestures.html#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 mc = new this._hammer(element, this._hammerOptions || undefined);\n\n // Default Hammer Recognizers.\n const pan = new this._hammer.Pan();\n const swipe = new this._hammer.Swipe();\n const press = new this._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 // 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()\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 {NgModule} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE_PROVIDER} 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 providers: [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n MAT_DATE_LOCALE_PROVIDER\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 {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. */\nconst SUPPORTS_INTL_API = typeof Intl != 'undefined';\n\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n *\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n * getting the string representation of a Date object from it's utc representation. We're keeping\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\n * though.\n */\n useUtcForDisplay: boolean;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string) {\n super();\n super.setLocale(matDateLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n // TODO(mmalerba): replace with checks from PLATFORM, logic currently duplicated to avoid\n // breaking change from injecting the Platform.\n const isBrowser = typeof document === 'object' && !!document;\n const isIE = isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n this.useUtcForDisplay = !isIE;\n this._clampDate = isIE || (isBrowser && /(edge)/i.test(navigator.userAgent));\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 this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date));\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 {InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\n\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\n/** Provider for MAT_DATE_LOCALE injection token. */\nexport const MAT_DATE_LOCALE_PROVIDER = {provide: MAT_DATE_LOCALE, useExisting: LOCALE_ID};\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n /** The locale to use for all dates. */\n protected locale: any;\n\n /** A stream that emits when the locale changes. */\n get localeChanges(): Observable<void> { return this._localeChanges; }\n protected _localeChanges = new Subject<void>();\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Constructor} from './constructor';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs/Subject';\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n updateErrorState();\n readonly stateChanges: Subject<void>;\n errorState: boolean;\n errorStateMatcher: ErrorStateMatcher;\n}\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: Constructor<CanUpdateErrorState> & 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/** @docs-private */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n}\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(base: T, defaultTabIndex = 0)\n : Constructor<HasTabIndex> & 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/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T)\n : Constructor<CanDisableRipple> & 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 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>>(base: T,\n defaultColor?: ThemePalette): Constructor<CanColor> & 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/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): Constructor<CanDisable> & 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} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\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\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 providers: [{\n provide: MATERIAL_SANITY_CHECKS, useValue: true,\n }],\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(@Optional() @Inject(MATERIAL_SANITY_CHECKS) private _sanityChecksEnabled: boolean) {\n if (this._areChecksEnabled() && !this._hasDoneGlobalChecks) {\n this._checkDoctypeIsDefined();\n this._checkThemeIsPresent();\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 return this._window && (this._window['__karma__'] || this._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 if (this._document && typeof getComputedStyle === 'function') {\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\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['Hammer']) {\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","/*! *****************************************************************************\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 = 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\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 = 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\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 = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, 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) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\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];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\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":["FormsModule","HttpClientModule","CommonModule","NgModule","Component","ViewChild","HttpClient","Injectable","http","Inject","Version","DOCUMENT","ViewEncapsulation","ChangeDetectionStrategy","isDevMode","tslib_1.__extends","Directive","Attribute","Optional","Platform","NgZone","Input","ViewportRuler","ChangeDetectorRef","merge","takeUntil","observableOf","coerceBooleanProperty","Subject","Output","Directionality","SPACE","ENTER","END","HOME","LEFT_ARROW","RIGHT_ARROW","coerceNumberProperty","EventEmitter","Subscription","ElementRef","nextId","CdkPortalOutlet","forwardRef","ViewContainerRef","ComponentFactoryResolver","animate","style","transition","state","trigger","TemplatePortal","CdkPortal","TemplateRef","DataSource","combineLatest","startWith","map","empty","BehaviorSubject","_isNumberValue","CdkTableModule","CDK_ROW_TEMPLATE","CdkRowDef","CdkHeaderRowDef","CdkCell","CdkColumnDef","CdkHeaderCell","CdkHeaderCellDef","CdkCellDef","CdkTable","CDK_TABLE_TEMPLATE","__extends","isArray_1","CdkStepperPrevious","CdkStepper","CdkStepperNext","ContentChildren","stepper","CdkStepLabel","query","animateChild","keyframes","SkipSelf","tslib_1.__assign","Injector","LiveAnnouncer","Overlay","PortalInjector","OverlayConfig","take","portal","ComponentPortal","_applyConfigDefaults","BasePortalOutlet","InjectionToken","DOWN_ARROW","UP_ARROW","PAGE_DOWN","PAGE_UP","NG_VALUE_ACCESSOR","FocusMonitor","nextUniqueId","PlatformModule","ScrollDispatchModule","OverlayModule","A11yModule","ContentChild","debounceTime","dispatchNext","async_1","UniqueSelectionDispatcher","platform","ɵ0","ARIA_DESCRIBER_PROVIDER","AriaDescriber","ScrollDispatcher","overlay","ESCAPE","fromEventPattern","coerceArray","CdkConnectedOverlay","NgControl","Self","FormGroupDirective","NgForm","filter","ActiveDescendantKeyManager","SelectionModel","switchMap","defer","isFakeMousedownFromScreenReader","FocusKeyManager","ApplicationRef","DomPortalOutlet","DomSanitizer","finalize","share","SecurityContext","forkJoin","catchError","tap","observableThrow","RefCountSubscriber","RefCountOperator","observers","rxSubscriber_1","uniqueId","Validators","NG_VALIDATORS","getSupportedInputTypes","auditTime","fromEvent","timer_1","errorObject_1","PortalModule","OverlayContainer","Location","BACKSPACE","DELETE","ObserversModule","CheckboxRequiredValidator","_uniqueIdCounter","Host","delay","TAB","of_1","from_1","observable_1","isArrayLike_1","iterator_1","root_1","iterator","root","Observable","observable","Observer_1","global","supportsPassiveEventListeners","HammerGestureConfig","LOCALE_ID","BidiModule"],"mappings":"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"}