UNPKG

1.57 MBSource Map (JSON)View Raw
1{"version":3,"file":"base-with-mat.es5.js","sources":["ts/base-with-mat.ts","ts/src/app/base-mat-test/base-mat-test.module.ts","ts/src/app/base-mat-test/components/first-mat/first-mat.component.ts","../../node_modules/@angular/src/material-moment-adapter/adapter/moment-date-formats.ts","../../node_modules/@angular/src/material-moment-adapter/adapter/moment-date-adapter.ts","../../node_modules/@angular/src/lib/version.ts","../../node_modules/src/lib/toolbar/toolbar-module.ts","../../node_modules/src/lib/toolbar/toolbar.ts","../../node_modules/src/lib/tabs/tabs-module.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/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-module.ts","../../node_modules/src/lib/stepper/stepper-button.ts","../../node_modules/src/lib/stepper/stepper.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-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-module.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-config.ts","../../node_modules/src/lib/snack-bar/snack-bar-ref.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/slider/slider-module.ts","../../node_modules/src/lib/slider/slider.ts","../../node_modules/src/lib/slide-toggle/slide-toggle-module.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/operators/debounceTime.ts","../../node_modules/src/lib/radio/radio-module.ts","../../node_modules/src/lib/radio/radio.ts","../../node_modules/src/lib/progress-spinner/progress-spinner-module.ts","../../node_modules/src/lib/progress-spinner/progress-spinner.ts","../../node_modules/src/lib/progress-bar/progress-bar-module.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/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-module.ts","../../node_modules/src/lib/menu/menu-trigger.ts","../../node_modules/src/lib/menu/menu-directive.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/list-module.ts","../../node_modules/src/lib/list/selection-list.ts","../../node_modules/src/lib/list/list.ts","../../node_modules/src/lib/grid-list/grid-list-module.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-module.ts","../../node_modules/src/lib/expansion/expansion-panel-header.ts","../../node_modules/src/lib/expansion/expansion-panel.ts","../../node_modules/src/lib/expansion/expansion-panel-content.ts","../../node_modules/src/lib/expansion/accordion.ts","../../node_modules/src/cdk/accordion/accordion-module.ts","../../node_modules/src/cdk/accordion/accordion-item.ts","../../node_modules/src/cdk/accordion/accordion.ts","../../node_modules/src/lib/divider/divider-module.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/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/icon/icon-module.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/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-config.ts","../../node_modules/src/lib/chips/chips-module.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-module.ts","../../node_modules/src/lib/card/card.ts","../../node_modules/src/lib/button-toggle/button-toggle-module.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-module.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/label.ts","../../node_modules/src/lib/form-field/placeholder.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/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/style/apply-transform.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":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {BaseMatTestModule} from './public_api';\n\nexport {FirstMatComponent as ɵa} from './src/app/base-mat-test/components/first-mat/first-mat.component';","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FirstMatComponent } from './components/first-mat/first-mat.component';\n\nimport {\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatStepperModule,\n MatFormFieldModule\n} from '@angular/material';\nimport {ReactiveFormsModule} from '@angular/forms';\nexport class BaseMatTestModule { static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [\n CommonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatStepperModule\n ],\n declarations: [FirstMatComponent],\n exports: [FirstMatComponent]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction BaseMatTestModule_tsickle_Closure_declarations() {\n/** @type {?} */\nBaseMatTestModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nBaseMatTestModule.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","import { Component, OnInit } from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {MAT_MOMENT_DATE_FORMATS, MomentDateAdapter} from '@angular/material-moment-adapter';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\n\nimport * as momentImported from 'moment';\nconst /** @type {?} */ moment = momentImported;\nexport class FirstMatComponent implements OnInit {\n\n myControl: FormControl = new FormControl();\n\n options = [\n 'One',\n 'Two',\n 'Three'\n ];\n\n\n date = new FormControl(moment([2017, 0, 1]));\nconstructor() { }\n/**\n * @return {?}\n */\nngOnInit() {\n }\n\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'app-first-mat',\n template: `\n <mat-form-field class=\"example-full-width\">\n <input type=\"text\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\">\n </mat-form-field>\n\n <mat-autocomplete class=\"example-full-width\" #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n\n <mat-form-field>\n <input matInput [matDatepicker]=\"picker\" placeholder=\"Choose a date\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n\n\n <mat-form-field>\n <input matInput [matDatepicker]=\"dp\" placeholder=\"Moment.js datepicker\" [formControl]=\"date\">\n <mat-datepicker-toggle matSuffix [for]=\"dp\"></mat-datepicker-toggle>\n <mat-datepicker #dp></mat-datepicker>\n </mat-form-field>\n `,\n styles: [`\n .example-form {\n min-width: 150px;\n max-width: 500px;\n width: 100%;\n }\n\n .example-full-width {\n width: 100%;\n }\n `],\n providers: [\n // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing\n // `MatMomentDateModule` in your applications root module. We provide it at the component level\n // here, due to limitations of our example generation script.\n {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},\n {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},\n ],\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction FirstMatComponent_tsickle_Closure_declarations() {\n/** @type {?} */\nFirstMatComponent.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nFirstMatComponent.ctorParameters;\n/** @type {?} */\nFirstMatComponent.prototype.myControl;\n/** @type {?} */\nFirstMatComponent.prototype.options;\n/** @type {?} */\nFirstMatComponent.prototype.date;\n}\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 {MatDateFormats} from '@angular/material';\n\n\nexport const MAT_MOMENT_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'l',\n },\n display: {\n dateInput: 'l',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\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 '@angular/material';\n// Depending on whether rollup is used, moment needs to be imported differently.\n// Since Moment.js doesn't have a default export, we normally need to import using the `* as`\n// syntax. However, rollup creates a synthetic default module and we thus need to import it using\n// the `default as` syntax.\n// TODO(mmalerba): See if we can clean this up at some point.\nimport * as _moment from 'moment';\nimport {default as _rollupMoment, Moment} from 'moment';\n\nconst moment = _rollupMoment || _moment;\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\n/** Adapts Moment.js Dates for use with Angular Material. */\n@Injectable()\nexport class MomentDateAdapter extends DateAdapter<Moment> {\n // Note: all of the methods that accept a `Moment` input parameter immediately call `this.clone`\n // on it. This is to ensure that we're working with a `Moment` that has the correct locale setting\n // while avoiding mutating the original object passed to us. Just calling `.locale(...)` on the\n // input would mutate the object.\n\n private _localeData: {\n firstDayOfWeek: number,\n longMonths: string[],\n shortMonths: string[],\n dates: string[],\n longDaysOfWeek: string[],\n shortDaysOfWeek: string[],\n narrowDaysOfWeek: string[]\n };\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string) {\n super();\n this.setLocale(dateLocale || moment.locale());\n }\n\n setLocale(locale: string) {\n super.setLocale(locale);\n\n let momentLocaleData = moment.localeData(locale);\n this._localeData = {\n firstDayOfWeek: momentLocaleData.firstDayOfWeek(),\n longMonths: momentLocaleData.months(),\n shortMonths: momentLocaleData.monthsShort(),\n dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\n longDaysOfWeek: momentLocaleData.weekdays(),\n shortDaysOfWeek: momentLocaleData.weekdaysShort(),\n narrowDaysOfWeek: momentLocaleData.weekdaysMin(),\n };\n }\n\n getYear(date: Moment): number {\n return this.clone(date).year();\n }\n\n getMonth(date: Moment): number {\n return this.clone(date).month();\n }\n\n getDate(date: Moment): number {\n return this.clone(date).date();\n }\n\n getDayOfWeek(date: Moment): number {\n return this.clone(date).day();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Moment.js doesn't support narrow month names, so we just use short if narrow is requested.\n return style == 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\n }\n\n getDateNames(): string[] {\n return this._localeData.dates;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (style == 'long') {\n return this._localeData.longDaysOfWeek;\n }\n if (style == 'short') {\n return this._localeData.shortDaysOfWeek;\n }\n return this._localeData.narrowDaysOfWeek;\n }\n\n getYearName(date: Moment): string {\n return this.clone(date).format('YYYY');\n }\n\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Moment): number {\n return this.clone(date).daysInMonth();\n }\n\n clone(date: Moment): Moment {\n return date.clone().locale(this.locale);\n }\n\n createDate(year: number, month: number, date: number): Moment {\n // Moment.js will create an invalid date if any of the components are out of bounds, but we\n // explicitly check each case so we can throw more descriptive errors.\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 = moment({year, month, date}).locale(this.locale);\n\n // If the result isn't valid, the date must have been out of bounds for this month.\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Moment {\n return moment().locale(this.locale);\n }\n\n parse(value: any, parseFormat: string | string[]): Moment | null {\n if (value && typeof value == 'string') {\n return moment(value, parseFormat, this.locale);\n }\n return value ? moment(value).locale(this.locale) : null;\n }\n\n format(date: Moment, displayFormat: string): string {\n date = this.clone(date);\n if (!this.isValid(date)) {\n throw Error('MomentDateAdapter: Cannot format invalid date.');\n }\n return date.format(displayFormat);\n }\n\n addCalendarYears(date: Moment, years: number): Moment {\n return this.clone(date).add({years});\n }\n\n addCalendarMonths(date: Moment, months: number): Moment {\n return this.clone(date).add({months});\n }\n\n addCalendarDays(date: Moment, days: number): Moment {\n return this.clone(date).add({days});\n }\n\n toIso8601(date: Moment): string {\n return this.clone(date).format();\n }\n\n /**\n * Returns the given value if given a valid Moment or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty\n * string into null. Returns an invalid date for all other values.\n */\n deserialize(value: any): Moment | null {\n let date;\n if (value instanceof Date) {\n date = moment(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = moment(value, moment.ISO_8601).locale(this.locale);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return moment.isMoment(obj);\n }\n\n isValid(date: Moment): boolean {\n return this.clone(date).isValid();\n }\n\n invalid(): Moment {\n return moment.invalid();\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 {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('5.0.3');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatToolbar, MatToolbarRow} from './toolbar';\n\n@NgModule({\n imports: [MatCommonModule, PlatformModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n})\nexport class MatToolbarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n isDevMode,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanColor, mixinColor} from '@angular/material/core';\nimport {Platform} from '@angular/cdk/platform';\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\n /** Reference to all toolbar row elements that have been projected. */\n @ContentChildren(MatToolbarRow) _toolbarRows: QueryList<MatToolbarRow>;\n\n constructor(elementRef: ElementRef, private _platform: Platform) {\n super(elementRef);\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 !== Node.COMMENT_NODE)\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 */\n\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {ScrollDispatchModule, VIEWPORT_RULER_PROVIDER} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatInkBar} from './ink-bar';\nimport {MatTab} from './tab';\nimport {MatTabBody, MatTabBodyPortal} from './tab-body';\nimport {MatTabGroup} from './tab-group';\nimport {MatTabHeader} from './tab-header';\nimport {MatTabLabel} from './tab-label';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {MatTabLink, MatTabNav} from './tab-nav-bar/tab-nav-bar';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n ScrollDispatchModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader\n ],\n providers: [VIEWPORT_RULER_PROVIDER],\n})\nexport class MatTabsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {takeUntil} from 'rxjs/operators/takeUntil';\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 MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n RippleGlobalOptions,\n ThemePalette,\n} from '@angular/material/core';\nimport {merge} from 'rxjs/observable/merge';\nimport {of as observableOf} from 'rxjs/observable/of';\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 = mixinDisableRipple(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', 'disableRipple'],\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 CanDisableRipple, OnDestroy {\n\n /** Subject that emits when the component has been destroyed. */\n private _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 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 = mixinTabIndex(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', '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 }\n})\nexport class MatTabLink extends _MatTabLinkMixinBase\n implements OnDestroy, CanDisable, HasTabIndex {\n\n /** Whether the tab link is active or not. */\n private _isActive: boolean = false;\n\n /** Whether the ripples for this tab should be disabled or not. */\n private _disableRipple: boolean = false;\n\n /** Reference to the instance of the ripple for the tab link. */\n private _tabLinkRipple: MatRipple;\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 /** Whether ripples should be disabled or not. */\n get disableRipple(): boolean { return this.disabled || this._disableRipple; }\n set disableRipple(value: boolean) {\n this._disableRipple = value;\n this._tabLinkRipple.disabled = this.disableRipple;\n this._tabLinkRipple._updateRippleRenderer();\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 // Manually create a ripple instance that uses the tab link element as trigger element.\n // Notice that the lifecycle hooks for the ripple config won't be called anymore.\n this._tabLinkRipple = new MatRipple(_elementRef, ngZone, platform, globalOptions);\n\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngOnDestroy() {\n // Manually call the ngOnDestroy lifecycle hook of the ripple instance because it won't be\n // called automatically since its instance is not created by Angular.\n this._tabLinkRipple.ngOnDestroy();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} 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() selectFocusedIndex = new EventEmitter();\n\n /** Event emitted when a label is focused. */\n @Output() 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 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 /** 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 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 get scrollDistance(): number { return this._scrollDistance; }\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 /** @deprecated */\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 set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n get selectedIndex(): number | null { return this._selectedIndex; }\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() selectedIndexChange: EventEmitter<number> = new EventEmitter();\n\n /** Event emitted when focus has changed within a tab group. */\n @Output() focusChange: EventEmitter<MatTabChangeEvent> = new EventEmitter<MatTabChangeEvent>();\n\n /** Event emitted when the body animation has completed */\n @Output() animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab selection has changed. */\n @Output() 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 */\n @Output() 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(): void {\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 {\n trigger,\n state,\n style,\n animate,\n transition,\n AnimationEvent,\n} from '@angular/animations';\nimport {TemplatePortal, CdkPortalOutlet} from '@angular/cdk/portal';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {Subscription} from 'rxjs/Subscription';\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 host: {\n 'class': 'mat-tab-body',\n },\n animations: [\n 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})\nexport class MatTabBody implements OnInit {\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n @Output() _onCentering: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() _afterLeavingCenter: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the tab completes its animation towards the center. */\n @Output() _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\n\n /** The tab body content to display. */\n @Input('content') _content: TemplatePortal<any>;\n\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n _position: MatTabBodyPositionState;\n @Input('position') 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\n /** The origin position from which this tab should appear when it is centered into view. */\n _origin: MatTabBodyOriginState;\n\n /** The origin position from which this tab should appear when it is centered into view. */\n @Input('origin') 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\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 */\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<any> | null = null;\n\n /** @docs-private */\n get content(): TemplatePortal<any> | null {\n return this._contentPortal;\n }\n\n /** Emits whenever the label changes. */\n _labelChange = new Subject<void>();\n\n /** Emits whenever the disable changes */\n _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';\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> implements DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private _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 set data(data: T[]) { this._data.next(data); }\n get data() { return this._data.value; }\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 set filter(filter: string) { this._filter.next(filter); }\n get filter(): string { return this._filter.value; }\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 set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n get sort(): MatSort|null { return this._sort; }\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 set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n get paginator(): MatPaginator|null { return this._paginator; }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting.\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\n // If the value is a string and only whitespace, return the value.\n // Otherwise +value will convert it to 0.\n if (typeof value === 'string' && !value.trim()) {\n return value;\n }\n\n return isNaN(+value) ? value : +value;\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 overriden 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 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 overriden 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 || !this.sort.active || this.sort.direction == '') { return data; }\n\n const active = this.sort.active;\n const direction = this.sort.direction;\n\n return data.slice().sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n return (valueA < valueB ? -1 : 1) * (direction == 'asc' ? 1 : -1);\n });\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 {A11yModule} from '@angular/cdk/a11y';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCommonModule, MatRippleModule, ErrorStateMatcher} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIntl} from './stepper-intl';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n A11yModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader\n ],\n declarations: [MatHorizontalStepper, MatVerticalStepper, MatStep, MatStepLabel, MatStepper,\n MatStepperNext, MatStepperPrevious, MatStepHeader],\n providers: [MatStepperIntl, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {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: {'(click)': '_stepper.next()'},\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: {'(click)': '_stepper.previous()'},\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 {animate, state, style, transition, trigger} from '@angular/animations';\nimport {CdkStep, CdkStepper} from '@angular/cdk/stepper';\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 ChangeDetectionStrategy,\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';\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@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 ngAfterContentInit() {\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: [\n 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 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: [\n 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 providers: [{provide: MatStepper, useExisting: MatVerticalStepper}],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatVerticalStepper extends MatStepper { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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} 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 /** Icon for the given step. */\n @Input() icon: string;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Index of the given step. */\n @Input()\n get index() { return this._index; }\n set index(value: any) {\n this._index = coerceNumberProperty(value);\n }\n private _index: number;\n\n /** Whether the given step is selected. */\n @Input()\n get selected() { return this._selected; }\n set selected(value: any) {\n this._selected = coerceBooleanProperty(value);\n }\n private _selected: boolean;\n\n /** Whether the given step label is active. */\n @Input()\n get active() { return this._active; }\n set active(value: any) {\n this._active = coerceBooleanProperty(value);\n }\n private _active: boolean;\n\n /** Whether the given step is optional. */\n @Input()\n get optional() { return this._optional; }\n set optional(value: any) {\n this._optional = coerceBooleanProperty(value);\n }\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 changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel = '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 {\n trigger,\n state,\n style,\n animate,\n transition,\n keyframes,\n} from '@angular/animations';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {Subscription} from 'rxjs/Subscription';\nimport {merge} from 'rxjs/observable/merge';\nimport {MatSort, MatSortable} from './sort';\nimport {MatSortHeaderIntl} from './sort-header-intl';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\n\n\nconst SORT_ANIMATION_TRANSITION =\n AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nexport class MatSortHeaderBase {}\nexport const _MatSortHeaderMixinBase = mixinDisabled(MatSortHeaderBase);\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 '[class.mat-sort-header-sorted]': '_isSorted()',\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 trigger('indicator', [\n state('asc', style({transform: 'translateY(0px)'})),\n // 10px is the height of the sort indicator, minus the width of the pointers\n state('desc', style({transform: 'translateY(10px)'})),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('leftPointer', [\n state('asc', style({transform: 'rotate(-45deg)'})),\n state('desc', style({transform: 'rotate(45deg)'})),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('rightPointer', [\n state('asc', style({transform: 'rotate(45deg)'})),\n state('desc', style({transform: 'rotate(-45deg)'})),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('indicatorToggle', [\n transition('void => asc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(25%)', opacity: 0}),\n style({transform: 'none', opacity: 1})\n ]))),\n transition('asc => void', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'none', opacity: 1}),\n style({transform: 'translateY(-25%)', opacity: 0})\n ]))),\n transition('void => desc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'translateY(-25%)', opacity: 0}),\n style({transform: 'none', opacity: 1})\n ]))),\n transition('desc => void', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({transform: 'none', opacity: 1}),\n style({transform: 'translateY(25%)', opacity: 0})\n ]))),\n ])\n ]\n})\nexport class MatSortHeader extends _MatSortHeaderMixinBase implements MatSortable, CanDisable {\n private _rerenderSubscription: Subscription;\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') 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(() => changeDetectorRef.markForCheck());\n }\n\n ngOnInit() {\n if (!this.id && this._cdkColumnDef) {\n this.id = this._cdkColumnDef.name;\n }\n\n this._sort.register(this);\n }\n\n ngOnDestroy() {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Handles click events on the header. */\n _handleClick() {\n if (!this._isDisabled()) {\n this._sort.sort(this);\n }\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 _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 */\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 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 _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 set direction(direction: SortDirection) {\n if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n get direction(): SortDirection { return this._direction; }\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() { 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 = 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) {\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) {\n this.sortables.delete(sortable.id);\n }\n\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable: MatSortable) {\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.next({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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {LIVE_ANNOUNCER_PROVIDER} from '@angular/cdk/a11y';\nimport {LayoutModule} from '@angular/cdk/layout';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatSnackBar} from './snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {SimpleSnackBar} from './simple-snack-bar';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatCommonModule,\n LayoutModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n providers: [MatSnackBar, LIVE_ANNOUNCER_PROVIDER]\n})\nexport class MatSnackBarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {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 {\n trigger,\n state,\n style,\n transition,\n animate,\n AnimationEvent,\n} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {take} from 'rxjs/operators/take';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n\nexport const SHOW_ANIMATION =\n `${AnimationDurations.ENTERING} ${AnimationCurves.DECELERATION_CURVE}`;\nexport const HIDE_ANIMATION =\n `${AnimationDurations.EXITING} ${AnimationCurves.ACCELERATION_CURVE}`;\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 host: {\n 'role': 'alert',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n animations: [\n 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})\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 _onExit: Subject<any> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n _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 {trigger, style, transition, animate} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\n\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n moduleId: module.id,\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrls: ['simple-snack-bar.css'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('contentFade', [\n transition(':enter', [\n style({opacity: '0'}),\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.STANDARD_CURVE}`)\n ])\n ])\n ],\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.closeWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\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 {\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 */\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?: any = 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/**\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 closed. */\n private _afterClosed = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private _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 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._afterClosed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n closeWithAction(): void {\n if (!this._onAction.closed) {\n this._onAction.next();\n this._onAction.complete();\n }\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._afterClosed.next();\n this._afterClosed.complete();\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterClosed.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 */\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 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 ?\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 */\n\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {GestureConfig, MatCommonModule} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\nimport {MatSlider} from './slider';\n\n\n@NgModule({\n imports: [CommonModule, MatCommonModule, BidiModule, A11yModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n providers: [{provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}]\n})\nexport class MatSliderModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n DOWN_ARROW,\n END,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n} 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() { return this._invert; }\n set invert(value: any) {\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() { 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() { 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() { 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) { this._thumbLabel = coerceBooleanProperty(value); }\n private _thumbLabel: boolean = false;\n\n /** @deprecated */\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 /** @deprecated */\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() {\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, this._value || 0);\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() { return this._vertical; }\n set vertical(value: any) {\n this._vertical = coerceBooleanProperty(value);\n }\n private _vertical = false;\n\n /** Event emitted when the slider value has changed. */\n @Output() change = new EventEmitter<MatSliderChange>();\n\n /** Event emitted when the slider thumb moves. */\n @Output() input = 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 /** 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) {\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 /**\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 {ObserversModule} from '@angular/cdk/observers';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {\n GestureConfig,\n MatCommonModule,\n MatRippleModule,\n} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatSlideToggle} from './slide-toggle';\n\n\n@NgModule({\n imports: [MatRippleModule, MatCommonModule, PlatformModule, ObserversModule, A11yModule],\n exports: [MatSlideToggle, MatCommonModule],\n declarations: [MatSlideToggle],\n providers: [\n {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}\n ],\n})\nexport class MatSlideToggleModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {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 applyCssTransform,\n CanColor,\n CanDisable,\n CanDisableRipple,\n HammerInput,\n HasTabIndex,\n MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n RippleConfig,\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 source: MatSlideToggle;\n 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() change: EventEmitter<MatSlideToggleChange> = 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 /** Ripple configuration for the mouse ripples and focus indicators. */\n _rippleConfig: RippleConfig = {centered: true, radius: 23, speedFactor: 1.5};\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, false)\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() {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle() {\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, ...this._rippleConfig});\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 let event = new MatSlideToggleChange();\n event.source = this;\n event.checked = this.checked;\n this.onChange(this.checked);\n this.change.emit(event);\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) {\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 applyCssTransform(this._thumbEl, '');\n\n return this.dragPercentage > 50;\n }\n\n /** Updates the thumb containers position from the specified distance. */\n updateThumbPosition(distance: number) {\n this.dragPercentage = this._getDragPercentage(distance);\n // Calculate the moved distance based on the thumb bar width.\n let dragX = (this.dragPercentage / 100) * this._thumbBarWidth;\n applyCssTransform(this._thumbEl, `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, ChangeDetectorRef,\n Component, ContentChild,\n ContentChildren, forwardRef, Inject, Input,\n ViewEncapsulation\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {animate, state, style, transition, trigger} from '@angular/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: [\n 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 host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($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;\n\n @ContentChild(MatSidenavContent) _content;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this 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 {animate, AnimationEvent, state, style, transition, trigger} 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} 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 {Subject} from 'rxjs/Subject';\nimport {Observable} from 'rxjs/Observable';\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 */\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: [\n 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 host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($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) {\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 /** @deprecated */\n @Input()\n get align(): 'start' | 'end' { return this.position; }\n set align(value) { 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) {\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 /** Whether the drawer is opened. */\n private _opened: 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() 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 */\n @Output('open') onOpen = this._openedStream;\n\n /**\n * Event emitted when the drawer is fully closed.\n * @deprecated Use `closed` instead.\n */\n @Output('close') onClose = this._closedStream;\n\n /** Event emitted when the drawer's position changes. */\n @Output('positionChanged') onPositionChanged = new EventEmitter<void>();\n\n /** @deprecated */\n @Output('align-changed') onAlignChanged = 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 _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 @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 /** 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(v: boolean) {\n this.toggle(coerceBooleanProperty(v));\n }\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 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 /**\n * Handles the keyboard events.\n * @docs-private\n */\n handleKeydown(event: KeyboardEvent) {\n if (event.keyCode === ESCAPE && !this.disableClose) {\n this.close();\n event.stopPropagation();\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() {\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() backdropClick = 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 _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private _doCheckSubject = new Subject<void>();\n\n _contentMargins = new Subject<{left: number|null, right: number|null}>();\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 // If a `Dir` directive exists up the tree, listen direction changes and update the left/right\n // properties to point to the proper start/end.\n if (_dir != null) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._validateDrawers());\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 == null || 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","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 {A11yModule} from '@angular/cdk/a11y';\nimport {UNIQUE_SELECTION_DISPATCHER_PROVIDER} from '@angular/cdk/collections';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatRadioButton, MatRadioGroup} from './radio';\n\n@NgModule({\n imports: [CommonModule, MatRippleModule, MatCommonModule, A11yModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER],\n declarations: [MatRadioGroup, MatRadioButton],\n})\nexport class MatRadioModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusMonitor, 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 MatRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n RippleConfig,\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 /** The MatRadioButton that emits the change event. */\n source: MatRadioButton | null;\n /** The value of the MatRadioButton. */\n 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() 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 */\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\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\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 const event = new MatRadioChange();\n event.source = this._selected;\n event.value = this._value;\n this.change.emit(event);\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 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(MatRadioButtonBase), 'accent');\n\n/**\n * A radio-button. May be inside of\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-radio-button',\n templateUrl: 'radio.html',\n styleUrls: ['radio.css'],\n inputs: ['color', 'disableRipple'],\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 {\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 /** 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 {\n return this._value;\n }\n\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 */\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\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\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() 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 /** Ripple configuration for the mouse ripples and focus indicators. */\n _rippleConfig: RippleConfig = {centered: true, radius: 23, speedFactor: 1.5};\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, false)\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 const event = new MatRadioChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\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, ...this._rippleConfig});\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 */\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatProgressSpinner, MatSpinner} from './progress-spinner';\n\n@NgModule({\n imports: [MatCommonModule, PlatformModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ],\n})\nclass MatProgressSpinnerModule {}\n\nexport {MatProgressSpinnerModule};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\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\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.51% { 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.1% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\n 37.51% { 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.01% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\n 62.51% { 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.01% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\n 87.51% { 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 {\n return this._diameter;\n }\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 }\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\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._elementSize = this._diameter + Math.max(this.strokeWidth - BASE_STROKE_WIDTH, 0);\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\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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatProgressBar} from './progress-bar';\n\n\n@NgModule({\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar],\n})\nexport class MatProgressBarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Component, ChangeDetectionStrategy, Input, ViewEncapsulation} from '@angular/core';\n\n// TODO(josephperrott): Benchpress tests.\n// TODO(josephperrott): Add ARIA attributes for progressbar \"for\".\n\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-primary]': 'color == \"primary\"',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n 'class': 'mat-progress-bar',\n },\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 {\n /** Color of the progress bar. */\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary';\n\n private _value: number = 0;\n\n /** Value of the progressbar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input()\n get value() { return this._value; }\n set value(v: number) { this._value = clamp(v || 0); }\n\n private _bufferValue: number = 0;\n\n /** Buffer value of the progress bar. Defaults to zero. */\n @Input()\n get bufferValue() { return this._bufferValue; }\n set bufferValue(v: number) { this._bufferValue = clamp(v || 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 /** Gets the current transform value for the progress bar's primary indicator. */\n _primaryTransform() {\n let 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 let 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} 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(pageIndex: number) {\n this._pageIndex = coerceNumberProperty(pageIndex);\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(length: number) {\n this._length = coerceNumberProperty(length);\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(pageSize: number) {\n this._pageSize = coerceNumberProperty(pageSize);\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(pageSizeOptions: number[]) {\n this._pageSizeOptions = (pageSizeOptions || []).map(p => coerceNumberProperty(p));\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions: number[] = [];\n\n /** Event emitted when the paginator changes the page size or page index. */\n @Output() page = 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() {\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() {\n if (!this.hasPreviousPage()) { return; }\n this.pageIndex--;\n this._emitPageEvent();\n }\n\n /** Whether there is a previous page. */\n hasPreviousPage() {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n /** Whether there is a next page. */\n hasNextPage() {\n const numberOfPages = Math.ceil(this.length / this.pageSize) - 1;\n return this.pageIndex < numberOfPages && this.pageSize != 0;\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.next({\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 changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel = 'Items per page:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel = 'Next page';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel = 'Previous 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 {\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 ],\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 {animate, AnimationEvent, state, style, transition, trigger} 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';\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 /** @deprecated */\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\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, false).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: [\n 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 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 _onHide: Subject<any> = new Subject();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\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 // Note: as of Angular 4.3, the animations module seems to fire the `start` callback before\n // the end if animations are disabled. Make this call async to ensure that it still fires\n // at the appropriate time.\n Promise.resolve().then(() => 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 {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 {DOWN_ARROW, END, ENTER, HOME, SPACE, UP_ARROW} 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} 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 {fadeInContent, transformPanel} 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]': '_optionIds',\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 transformPanel,\n 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 _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 = 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() { 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() { return this._required; }\n set required(value: any) {\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() { 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() { 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 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 has been opened. */\n @Output() 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 */\n @Output() onOpen: Observable<void> = this._openedStream;\n\n /**\n * Event emitted when the select has been closed.\n * @deprecated Use `openedChange` instead.\n */\n @Output() onClose: Observable<void> = this._closedStream;\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() selectionChange: EventEmitter<MatSelectChange> = new EventEmitter<MatSelectChange>();\n\n /**\n * Event emitted when the selected value has been changed by the user.\n * @deprecated Use `selectionChange` instead.\n */\n @Output() 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() valueChange = 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 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._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._changeDetectorRef.markForCheck();\n this.focus();\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 const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\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\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? this._keyManager.setFirstItemActive() :\n this._keyManager.setLastItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this._keyManager.activeItem) {\n event.preventDefault();\n this._keyManager.activeItem._selectViaInteraction();\n } else {\n this._keyManager.onKeydown(event);\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 if (!this.disabled && !this.panelOpen) {\n this.focused = false;\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).withTypeAhead();\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => this.close());\n\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n /** Drops current option subscriptions and IDs and resets from scratch. */\n private _resetOptions(): void {\n this.optionSelectionChanges.pipe(\n takeUntil(merge(this._destroy, this.options.changes)),\n filter(event => event.isUserInput)\n ).subscribe(event => {\n this._onSelect(event.source);\n\n if (!this.multiple) {\n this.close();\n }\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._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 itemHeight = this._getItemHeight();\n const activeOptionIndex = this._keyManager.activeItemIndex || 0;\n const labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex,\n this.options, this.optionGroups);\n const scrollOffset = (activeOptionIndex + labelCount) * itemHeight;\n const panelTop = this.panel.nativeElement.scrollTop;\n\n if (scrollOffset < panelTop) {\n this.panel.nativeElement.scrollTop = scrollOffset;\n } else if (scrollOffset + itemHeight > panelTop + SELECT_PANEL_MAX_HEIGHT) {\n this.panel.nativeElement.scrollTop =\n Math.max(0, scrollOffset - SELECT_PANEL_MAX_HEIGHT + itemHeight);\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 += MatOption.countGroupLabelsBeforeOption(selectedOptionOffset,\n this.options, 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 // Implemented as part of MatFormFieldControl.\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n // Implemented as part of MatFormFieldControl.\n onContainerClick() {\n this.focus();\n this.open();\n }\n\n // Implemented as part of MatFormFieldControl.\n get shouldLabelFloat(): boolean {\n return this._panelOpen || !this.empty;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nexport function getMatSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nexport function getMatSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getMatSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n animate,\n 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 */\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 */\nexport const transformPanel: AnimationTriggerMetadata = 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 */\nexport const fadeInContent: AnimationTriggerMetadata = 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {MatMenu, MAT_MENU_DEFAULT_OPTIONS} from './menu-directive';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuTrigger, MAT_MENU_SCROLL_STRATEGY_PROVIDER} from './menu-trigger';\nimport {MatRippleModule} from '@angular/material/core';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n CommonModule,\n MatRippleModule,\n MatCommonModule,\n ],\n exports: [MatMenu, MatMenuItem, MatMenuTrigger, MatCommonModule],\n declarations: [MatMenu, MatMenuItem, MatMenuTrigger],\n providers: [\n MAT_MENU_SCROLL_STRATEGY_PROVIDER,\n {\n provide: MAT_MENU_DEFAULT_OPTIONS,\n useValue: {\n overlapTrigger: true,\n xPosition: 'after',\n yPosition: 'below',\n },\n }\n ],\n})\nexport class MatMenuModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {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';\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<any>;\n private _overlayRef: OverlayRef | null = null;\n private _menuOpen: boolean = false;\n private _closeSubscription = Subscription.EMPTY;\n private _positionSubscription = 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 /** @deprecated */\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 /** Event emitted when the associated menu is opened. */\n @Output() menuOpened = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n */\n @Output() onMenuOpen = this.menuOpened;\n\n /** Event emitted when the associated menu is closed. */\n @Output() menuClosed = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n */\n @Output() onMenuClose = 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\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 this._createOverlay().attach(this._portal);\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\n /** Closes the menu. */\n closeMenu(): void {\n this.menu.close.emit();\n }\n\n /** Focuses the menu trigger. */\n focus() {\n this._element.nativeElement.focus();\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\n // If the menu was opened by mouse, we focus the root node, which allows for the keyboard\n // interactions to work. Otherwise, if the menu was opened by keyboard, we focus the first item.\n if (this._openedByMouse) {\n let rootNode = this._overlayRef!.overlayElement.firstElementChild as HTMLElement;\n\n if (rootNode) {\n this.menu.resetActiveItem();\n rootNode.focus();\n }\n } else {\n this.menu.focusFirstItem();\n }\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 || !this.triggersSubmenu()) {\n this.focus();\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 this._positionSubscription = 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._positionSubscription.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 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 {fadeInItems, transformMenu} from './menu-animations';\nimport {throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\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 transformMenu,\n 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() { 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() { 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 /** Whether the menu should overlap its trigger. */\n @Input()\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n get overlapTrigger(): boolean {\n return this._overlapTrigger;\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 */\n @Input()\n set classList(classes: string) { this.panelClass = classes; }\n get classList(): string { return this.panelClass; }\n\n /** Event emitted when the menu is closed. */\n @Output() closed = new EventEmitter<void | 'click' | 'keydown'>();\n\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\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. This method is used by the menu trigger\n * to focus the first item when the menu is opened by the ENTER key.\n */\n focusFirstItem() {\n this._keyManager.setFirstItemActive();\n }\n\n /**\n * Resets the active item in the menu. This is used when the menu is opened by mouse,\n * allowing 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 {FocusableOption} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableRipple,\n mixinDisabled,\n mixinDisableRipple\n} from '@angular/material/core';\nimport {Subject} from 'rxjs/Subject';\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 /** Stream that emits when the menu item is hovered. */\n _hovered: Subject<MatMenuItem> = new Subject();\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(private _elementRef: ElementRef) {\n super();\n }\n\n /** Focuses the menu item. */\n focus(): void {\n this._getHostElement().focus();\n }\n\n ngOnDestroy() {\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 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 === Node.TEXT_NODE) {\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 * Below are all the animations for the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n */\n\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\n// TODO(kara): switch to :enter and :leave once Mobile Safari is sorted out.\nexport const transformMenu: AnimationTriggerMetadata = trigger('transformMenu', [\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 */\nexport const fadeInItems: AnimationTriggerMetadata = 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n MatCommonModule,\n MatLineModule,\n MatPseudoCheckboxModule,\n MatRippleModule,\n} from '@angular/material/core';\nimport {\n MatList,\n MatNavList,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListItem,\n MatListSubheaderCssMatStyler,\n} from './list';\nimport {MatListOption, MatSelectionList} from './selection-list';\nimport {MatDividerModule} from '@angular/material/divider';\n\n\n@NgModule({\n imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n exports: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatLineModule,\n MatCommonModule,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatPseudoCheckboxModule,\n MatSelectionList,\n MatListOption,\n MatDividerModule\n ],\n declarations: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatSelectionList,\n MatListOption\n ],\n})\nexport class MatListModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {SPACE, ENTER} 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 Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MatLine,\n MatLineSetter,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\n\n/** @docs-private */\nexport class MatSelectionListBase {}\nexport const _MatSelectionListMixinBase =\n mixinTabIndex(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 */\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 _lineSetter: MatLineSetter;\n private _selected: boolean = false;\n private _disabled: boolean = false;\n\n /** Whether the option has focus. */\n _hasFocus: boolean = false;\n\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\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.selectionList && this.selectionList.disabled) || this._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 */\n @Output() selectionChange: EventEmitter<MatListOptionChange> =\n new EventEmitter<MatListOptionChange>();\n\n constructor(private _element: ElementRef,\n private _changeDetector: ChangeDetectorRef,\n @Optional() @Inject(forwardRef(() => MatSelectionList))\n public selectionList: MatSelectionList) {\n super();\n }\n\n ngOnInit() {\n if (this.selected) {\n // List options that are selected at initialization can't be reported properly to the form\n // control. This is because it takes some time until the selection-list knows about all\n // available options. Also it can happen that the ControlValueAccessor has an initial value\n // that should be used instead. Deferring the value change report to the next tick ensures\n // that the form control value is not being overwritten.\n Promise.resolve(() => this.selected && this.selectionList._reportValueChange());\n }\n }\n\n ngAfterContentInit() {\n this._lineSetter = new MatLineSetter(this._lines, this._element);\n }\n\n ngOnDestroy(): void {\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 /** 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 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, HasTabIndex, AfterContentInit, ControlValueAccessor {\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() selectionChange: EventEmitter<MatSelectionListChange> =\n new EventEmitter<MatSelectionListChange>();\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 /** 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).withWrap();\n }\n\n /** Focus the selection-list. */\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 this._toggleSelectOnFocusedOption();\n // Always prevent space from scrolling the page since the list has focus\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 }\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 '(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 _lineSetter: MatLineSetter;\n private _isNavList: boolean = false;\n\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n @ContentChild(MatListAvatarCssMatStyler)\n set _hasAvatar(avatar: MatListAvatarCssMatStyler) {\n if (avatar != null) {\n this._element.nativeElement.classList.add('mat-list-item-avatar');\n } else {\n this._element.nativeElement.classList.remove('mat-list-item-avatar');\n }\n }\n\n constructor(private _element: ElementRef,\n @Optional() private _navList: MatNavList) {\n super();\n this._isNavList = !!_navList;\n }\n\n ngAfterContentInit() {\n this._lineSetter = 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 {NgModule} from '@angular/core';\nimport {MatLineModule, MatCommonModule} from '@angular/material/core';\nimport {\n MatGridTile, MatGridTileText, MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler, MatGridAvatarCssMatStyler\n} from './grid-tile';\nimport {MatGridList} from './grid-list';\n\n\n@NgModule({\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n})\nexport class MatGridListModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n Optional,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {TileStyler, FitTileStyler, RatioTileStyler, FixedTileStyler} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\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() { return this._cols; }\n set cols(value: any) { this._cols = coerceToNumber(value); }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize() { return this._gutter; }\n set gutterSize(value: any) { 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 === 'ltr' ? 'left' : 'right';\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('margin-top', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('padding-top', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'padding-bottom', calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['padding-bottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('margin-top', null);\n tile._setStyle('padding-top', 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 /** 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 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 return gapStartIndex;\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) { 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) { 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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {UNIQUE_SELECTION_DISPATCHER_PROVIDER} from '@angular/cdk/collections';\nimport {CdkAccordionModule} from '@angular/cdk/accordion';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {MatAccordion} from './accordion';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelBase\n} from './expansion-panel';\nimport {\n MatExpansionPanelDescription,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from './expansion-panel-header';\n\n\n@NgModule({\n imports: [CommonModule, A11yModule, CdkAccordionModule, PortalModule],\n exports: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n declarations: [\n MatExpansionPanelBase,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER]\n})\nexport class MatExpansionModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {animate, state, style, transition, trigger} from '@angular/animations';\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 {EXPANSION_PANEL_ANIMATION_TIMING, MatExpansionPanel} from './expansion-panel';\n\n\n/**\n * <mat-expansion-panel-header> component.\n *\n * This component corresponds to the header element of an <mat-expansion-panel>.\n *\n * Please refer to README.md for examples on how to use it.\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 host: {\n 'class': 'mat-expansion-panel-header',\n 'role': 'button',\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 '(keyup)': '_keyup($event)',\n '[@expansionHeight]': `{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }`,\n },\n animations: [\n 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 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})\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, false);\n }\n\n /** Height of the header while the panel is expanded. */\n @Input() expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n @Input() collapsedHeight: string;\n\n /** Toggles the expanded state of the panel. */\n _toggle(): void {\n if (!this.panel.disabled) {\n this.panel.toggle();\n }\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 keyup event calling to toggle() if appropriate. */\n _keyup(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> directive.\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> directive.\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 {animate, state, style, transition, trigger} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n forwardRef,\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 {CanDisable, mixinDisabled} from '@angular/material/core';\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';\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// Boilerplate for applying mixins to MatExpansionPanel.\n/** @docs-private */\n@Component({\n template: '',\n moduleId: module.id,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatExpansionPanelBase extends CdkAccordionItem {\n constructor(accordion: MatAccordion,\n _changeDetectorRef: ChangeDetectorRef,\n _uniqueSelectionDispatcher: UniqueSelectionDispatcher) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n }\n}\nexport const _MatExpansionPanelMixinBase = mixinDisabled(MatExpansionPanelBase);\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/**\n * <mat-expansion-panel> component.\n *\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n *\n * Please refer to README.md for examples on how to use it.\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'],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n },\n providers: [\n {provide: _MatExpansionPanelMixinBase, useExisting: forwardRef(() => MatExpansionPanel)}\n ],\n animations: [\n 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})\nexport class MatExpansionPanel extends _MatExpansionPanelMixinBase\n implements CanDisable, AfterContentInit, OnChanges, OnDestroy {\n\n /** Whether the toggle indicator should be hidden. */\n @Input()\n get hideToggle(): boolean {\n return this._hideToggle;\n }\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 _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<any>;\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<any>(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\n@Directive({\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n})\nexport class MatExpansionPanelActionRow {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, TemplateRef} from '@angular/core';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n selector: 'ng-template[matExpansionPanelContent]'\n})\nexport class MatExpansionPanelContent {\n constructor(public _template: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\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() 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 {NgModule} from '@angular/core';\nimport {UNIQUE_SELECTION_DISPATCHER_PROVIDER} from '@angular/cdk/collections';\nimport {CdkAccordion} from './accordion';\nimport {CdkAccordionItem} from './accordion-item';\n\n@NgModule({\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER],\n})\nexport class CdkAccordionModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 = new EventEmitter<void>();\n /** Event emitted every time the AccordionItem is opened. */\n @Output() opened = new EventEmitter<void>();\n /** Event emitted when the AccordionItem is destroyed. */\n @Output() destroyed = new EventEmitter<void>();\n /** The unique AccordionItem id. */\n readonly id = `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 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: boolean;\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 this.expanded = !this.expanded;\n }\n\n /** Sets the expanded state of the accordion item to false. */\n close(): void {\n this.expanded = false;\n }\n\n /** Sets the expanded state of the accordion item to true. */\n open(): void {\n this.expanded = 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\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 simulateously. */\n @Input() 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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDivider} from './divider';\n\n\n@NgModule({\n imports: [MatCommonModule, CommonModule],\n exports: [\n MatDivider,\n MatCommonModule,\n ],\n declarations: [\n MatDivider,\n ],\n})\nexport class MatDividerModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-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() 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() 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 {MatIconModule} from '@angular/material/icon';\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} from './datepicker-toggle';\nimport {MatMonthView} from './month-view';\nimport {MatYearView} from './year-view';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n OverlayModule,\n A11yModule,\n ],\n exports: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\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} 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@Component({\n moduleId: module.id,\n selector: 'mat-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n host: {\n 'class': 'mat-datepicker-toggle',\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 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\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled)\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(filter: (date: D | null) => boolean) {\n this._dateFilter = filter;\n this._validatorOnChange();\n }\n _dateFilter: (date: D | null) => boolean;\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._value;\n }\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() { return !!this._disabled; }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n }\n private _disabled: boolean;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() dateChange = new EventEmitter<MatDatepickerInputEvent<D>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() dateInput = 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 registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\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(disabled: boolean): void {\n this.disabled = disabled;\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 {\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 {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 '(keydown)': '_handleKeydown($event)',\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 * Handles keydown event on datepicker content.\n * @param event The event.\n */\n _handleKeydown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE) {\n this.datepicker.close();\n event.preventDefault();\n event.stopPropagation();\n }\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(date: D | null) {\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(date));\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 {\n return this._touchUi;\n }\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 */\n @Output() selectedChanged = 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(shouldOpen: boolean) { shouldOpen ? this.open() : this.close(); }\n private _opened = false;\n\n /** The id for the datepicker calendar. */\n id = `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 _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 this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\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 this._popupRef.backdropClick().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 OnDestroy,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild,\n OnChanges,\n SimpleChanges,\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 {MatYearView} from './year-view';\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' = '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() selectedChange = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() _userSelection = 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 /** Date filter for the month and year views. */\n _dateFilterForViews = (date: D) => {\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 * 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 _monthView: boolean;\n\n /** The label for the current calendar view. */\n get _periodButtonText(): string {\n return this._monthView ?\n this._dateAdapter.format(this._activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase() :\n this._dateAdapter.getYearName(this._activeDate);\n }\n\n get _periodButtonLabel(): string {\n return this._monthView ? this._intl.switchToYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n\n /** The label for the the previous button. */\n get _prevButtonLabel(): string {\n return this._monthView ? this._intl.prevMonthLabel : this._intl.prevYearLabel;\n }\n\n /** The label for the the next button. */\n get _nextButtonLabel(): string {\n return this._monthView ? this._intl.nextMonthLabel : this._intl.nextYearLabel;\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\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._monthView = this.startView != 'year';\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;\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 year view. */\n _monthSelected(month: D): void {\n this._activeDate = month;\n this._monthView = true;\n }\n\n /** Handles user clicks on the period label. */\n _currentPeriodClicked(): void {\n this._monthView = !this._monthView;\n }\n\n /** Handles user clicks on the previous button. */\n _previousClicked(): void {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, -1) :\n this._dateAdapter.addCalendarYears(this._activeDate, -1);\n }\n\n /** Handles user clicks on the next button. */\n _nextClicked(): void {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, 1) :\n this._dateAdapter.addCalendarYears(this._activeDate, 1);\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._monthView) {\n this._handleCalendarBodyKeydownInMonthView(event);\n } else {\n this._handleCalendarBodyKeydownInYearView(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 return this._monthView ?\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2) :\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n private _handleCalendarBodyKeydownInMonthView(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 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._dateFilterForViews(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 switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case UP_ARROW:\n this._activeDate = this._prevMonthInSameCol(this._activeDate);\n break;\n case DOWN_ARROW:\n this._activeDate = this._nextMonthInSameCol(this._activeDate);\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._monthSelected(this._activeDate);\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /**\n * Determine the date for the month that comes before the given month in the same column in the\n * calendar table.\n */\n private _prevMonthInSameCol(date: D): D {\n // Decrement by 4 since there are 4 months per row.\n return this._dateAdapter.addCalendarMonths(date, -4);\n }\n\n /**\n * Determine the date for the month that comes after the given month in the same column in the\n * calendar table.\n */\n private _nextMonthInSameCol(date: D): D {\n // Increment by 4 since there are 4 months per row.\n return this._dateAdapter.addCalendarMonths(date, 4);\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\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 /** 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() selectedChange = 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 month 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._isMonthEnabled(month));\n }\n\n /** Whether the given month is enabled. */\n private _isMonthEnabled(month: number) {\n if (!this.dateFilter) {\n return true;\n }\n\n let firstOfMonth = this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate), 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 * @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: 'matMonthVeiw',\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 /** 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() selectedChange = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() _userSelection = 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(): void {\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 let daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n let 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 let date = this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate),\n this._dateAdapter.getMonth(this.activeDate), i + 1);\n let enabled = !this.dateFilter ||\n this.dateFilter(date);\n let 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 /**\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 },\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() selectedValueChange = 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 changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel = 'Next year';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToYearViewLabel = 'Change to year view';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 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 /** Variables used as cache for getters and setters. */\n protected _type = 'text';\n protected _disabled = false;\n protected _required = false;\n protected _id: string;\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _readonly = false;\n private _inputValueAccessor: {value: any};\n\n /** Whether the input is focused. */\n focused = false;\n\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 * Stream that emits whenever the state of the input changes such that the wrapping `MatFormField`\n * needs to run change detection.\n */\n stateChanges = new Subject<void>();\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mat-input';\n\n /** Whether the element is disabled. */\n @Input()\n get disabled() { return this.ngControl ? this.ngControl.disabled : this._disabled; }\n set disabled(value: any) {\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\n /** Unique id of the element. */\n @Input()\n get id() { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n\n /** Placeholder attribute of the element. */\n @Input() placeholder: string = '';\n\n /** Whether the element is required. */\n @Input()\n get required() { return this._required; }\n set required(value: any) { this._required = coerceBooleanProperty(value); }\n\n /** Input type of the element. */\n @Input()\n get type() { 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\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /** The input element's value. */\n @Input()\n get value(): any { return this._inputValueAccessor.value; }\n set value(value: any) {\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() { return this._readonly; }\n set readonly(value: any) { this._readonly = coerceBooleanProperty(value); }\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 @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 } else {\n // When the input isn't used together with `@angular/forms`, we need to check manually for\n // changes to the native `value` property in order to update the floating label.\n this._dirtyCheckNativeValue();\n }\n }\n\n focus() { 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 // Implemented as part of MatFormFieldControl.\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput();\n }\n\n // Implemented as part of MatFormFieldControl.\n get shouldLabelFloat(): boolean { return this.focused || !this.empty; }\n\n // Implemented as part of MatFormFieldControl.\n setDescribedByIds(ids: string[]) { this._ariaDescribedby = ids.join(' '); }\n\n // Implemented as part of MatFormFieldControl.\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 _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 get minRows() { return this._minRows; }\n set minRows(value: number) {\n this._minRows = value;\n this._setMinHeight();\n }\n\n /** Maximum amount of rows in the textarea. */\n @Input('matAutosizeMaxRows')\n get maxRows() { 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 {MatCommonModule} from '@angular/material/core';\nimport {MatIcon} from './icon';\nimport {ICON_REGISTRY_PROVIDER} from './icon-registry';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n providers: [ICON_REGISTRY_PROVIDER],\n})\nexport class MatIconModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {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() fontSet: string;\n\n /** Name of an icon within a font set. */\n @Input() 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 {Injectable, Optional, SecurityContext, SkipSelf} 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';\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 /**\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(@Optional() private _httpClient: HttpClient, private _sanitizer: DomSanitizer) {}\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 tap(svg => {\n // Cache the SVG element.\n if (svg) {\n iconSetConfig.svgElement = svg;\n }\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 // TODO: Document that icons should only be loaded from trusted sources.\n return this._fetchUrl(config.url).pipe(map(svgText => this._svgElementFromString(svgText)));\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 const div = 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 /**\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 === Node.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, httpClient: HttpClient, sanitizer: DomSanitizer) {\n return parentRegistry || new MatIconRegistry(httpClient, sanitizer);\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 ],\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 {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 {MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER} 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 {Directive, Input, OnChanges, OnInit, Optional, SimpleChanges} from '@angular/core';\nimport {MatDialogRef} from './dialog-ref';\nimport {MatDialogContainer} from './dialog-container';\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 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(public dialogRef: MatDialogRef<any>) { }\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(@Optional() private _container: MatDialogContainer) { }\n\n ngOnInit() {\n if (this._container && !this._container._ariaLabelledBy) {\n Promise.resolve().then(() => this._container._ariaLabelledBy = this.id);\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 {ESCAPE} from '@angular/cdk/keycodes';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n 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 {filter} from 'rxjs/operators/filter';\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\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\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 () => BlockScrollStrategy {\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 _afterAllClosedAtThisLevel = new Subject<void>();\n private _afterOpenAtThisLevel = new Subject<MatDialogRef<any>>();\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 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() location: Location,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) private _scrollStrategy,\n @Optional() @SkipSelf() private _parentDialog: MatDialog) {\n\n // Close all of the dialogs when the user goes forwards/backwards in history or when the\n // location hash changes. Note that this usually doesn't include clicking on links (unless\n // the user is using the `HashLocationStrategy`).\n if (!_parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param componentOrTemplateRef Type of the component to load into the dialog,\n * or a TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T> {\n\n config = _applyConfigDefaults(config);\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 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: 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, 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 // Close when escape keydown event occurs\n overlayRef.keydownEvents().pipe(\n filter(event => event.keyCode === ESCAPE && !dialogRef.disableClose)\n ).subscribe(() => dialogRef.close());\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 injectionTokens.set(MatDialogRef, dialogRef);\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.set(MatDialogContainer, dialogContainer);\n injectionTokens.set(MAT_DIALOG_DATA, config.data);\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\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 // no open dialogs are left, call next on afterAllClosed Subject\n if (!this.openDialogs.length) {\n this._afterAllClosed.next();\n }\n }\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(config?: MatDialogConfig): MatDialogConfig {\n return {...new MatDialogConfig(), ...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 {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 {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 = this._containerInstance._config.disableClose;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private _afterOpen = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has finished closing. */\n private _afterClosed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private _beforeClose = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n constructor(\n private _overlayRef: OverlayRef,\n private _containerInstance: MatDialogContainer,\n readonly id: string = `mat-dialog-${uniqueId++}`) {\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._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\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<void> {\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 {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations';\nimport {DOCUMENT} from '@angular/common';\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: [\n 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 host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\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 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 // 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 /** 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 */\n\nimport {ViewContainerRef} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\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 // 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 {NgModule} from '@angular/core';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatChipList} from './chip-list';\nimport {MatBasicChip, MatChip, MatChipRemove} from './chip';\nimport {MatChipInput} from './chip-input';\n\n\n@NgModule({\n imports: [],\n exports: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip],\n declarations: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip],\n providers: [ErrorStateMatcher]\n})\nexport class MatChipsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {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 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() { 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 = 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 {\n let value: string | null = this._inputElement.value;\n return (value == null || value === '');\n }\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 focus() { 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, LEFT_ARROW, RIGHT_ARROW} 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 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 readonly controlType = '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 /** Whether or not the chip is selectable. */\n protected _selectable: boolean = true;\n\n /** Whether the component is in multiple selection mode. */\n private _multiple: boolean = false;\n\n /** The chip input to add more chips */\n protected _chipInput: MatChipInput;\n\n /** Id of the chip list */\n protected _id: string;\n\n /** Uid of the chip list */\n protected _uid: string = `mat-chip-list-${nextUniqueId++}`;\n\n /** Whether this is required */\n protected _required: boolean = false;\n\n /** Whether this is disabled */\n protected _disabled: boolean = false;\n\n protected _value: any;\n\n /** Placeholder for the chip list. Alternatively, placeholder can be set on MatChipInput */\n protected _placeholder: string;\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 /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\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 get role(): string|null {\n return this.empty ? null : 'listbox';\n }\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\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 this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n\n /** Required for FormFieldControl */\n @Input()\n get value() { return this._value; }\n set value(newValue: any) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n\n /** Required for FormFieldControl. The ID of the chip list */\n @Input()\n set id(value: string) {\n this._id = value;\n this.stateChanges.next();\n }\n get id() { return this._id || this._uid; }\n\n /** Required for FormFieldControl. Whether the chip list is required. */\n @Input()\n set required(value: any) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n get required() {\n return this._required;\n }\n\n /** For FormFieldControl. Use chip input's placholder if there's a chip input */\n @Input()\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n get placeholder() {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\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 /** Whether this chip-list contains no chips and no matChipInput. */\n get empty(): boolean {\n return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n }\n\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /** Whether this chip-list is disabled. */\n @Input()\n get disabled() { return this.ngControl ? this.ngControl.disabled : this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\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\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() change: EventEmitter<MatChipListChange> = 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() valueChange = 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 @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(): void {\n\n this._keyManager = new FocusKeyManager<MatChip>(this.chips).withWrap();\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 }\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(): void {\n this._tabOutSubscription.unsubscribe();\n\n if (this._changeSubscription) {\n this._changeSubscription.unsubscribe();\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) {\n this._chipInput = inputElement;\n }\n\n // Implemented as part of MatFormFieldControl.\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(disabled: boolean): void {\n this.disabled = disabled;\n this._elementRef.nativeElement.disabled = disabled;\n this.stateChanges.next();\n }\n\n onContainerClick() {\n this.focus();\n }\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() {\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 let code = event.keyCode;\n let target = event.target as HTMLElement;\n let isInputEmpty = this._isInputEmpty(target);\n let isRtl = this._dir && this._dir.value == 'rtl';\n\n let isPrevKey = (code === (isRtl ? RIGHT_ARROW : LEFT_ARROW));\n let isNextKey = (code === (isRtl ? LEFT_ARROW : RIGHT_ARROW));\n let isBackKey = code === BACKSPACE;\n // If they are on an empty input and hit backspace, focus the last chip\n if (isInputEmpty && isBackKey) {\n this._keyManager.setLastItemActive();\n event.preventDefault();\n return;\n }\n\n // If they are on a chip, check for space/left/right, otherwise pass to our key manager (like\n // up/down keys)\n if (target && target.classList.contains('mat-chip')) {\n if (isPrevKey) {\n this._keyManager.setPreviousItemActive();\n event.preventDefault();\n } else if (isNextKey) {\n this._keyManager.setNextItemActive();\n event.preventDefault();\n } else {\n this._keyManager.onKeydown(event);\n }\n }\n this.stateChanges.next();\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 'tabindex': '-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\n protected _value: any;\n\n protected _selected: boolean = false;\n\n protected _selectable: boolean = true;\n\n protected _removable: boolean = true;\n\n /** Whether the chip has focus. */\n _hasFocus: boolean = false;\n\n /** Whether the chip is selected. */\n @Input()\n get selected(): boolean {\n return this._selected;\n }\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 /** 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(newValue: any) {\n this._value = newValue;\n }\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() get selectable(): boolean {\n return this._selectable;\n }\n\n\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n }\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (remove) events.\n */\n @Input() get removable(): boolean {\n return this._removable;\n }\n\n\n set removable(value: boolean) {\n this._removable = coerceBooleanProperty(value);\n }\n\n /** Emits when the chip is focused. */\n _onFocus = new Subject<MatChipEvent>();\n\n /** Emits when the chip is blured. */\n _onBlur = new Subject<MatChipEvent>();\n\n /** Emitted when the chip is selected or deselected. */\n @Output() selectionChange = new EventEmitter<MatChipSelectionChange>();\n\n /** Emitted when the chip is destroyed. */\n @Output() destroyed = new EventEmitter<MatChipEvent>();\n\n /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n */\n @Output() destroy = this.destroyed;\n\n /** Emitted when a chip is to be removed. */\n @Output() removed = new EventEmitter<MatChipEvent>();\n\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n */\n @Output('remove') onRemove = this.removed;\n\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(): void {\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 RippleConfig,\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 private _required: boolean;\n\n /** Whether the checkbox is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value) { this._required = coerceBooleanProperty(value); }\n\n /**\n * Whether or not the checkbox should appear before or after the label.\n * @deprecated\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\n set align(v) {\n this.labelPosition = (v == '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() change: EventEmitter<MatCheckboxChange> = new EventEmitter<MatCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() 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 /** Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor. */\n @ViewChild(MatRipple) _ripple: MatRipple;\n\n /** Ripple configuration for the mouse ripples and focus indicators. */\n _rippleConfig: RippleConfig = {centered: true, radius: 25, speedFactor: 1.5};\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 _checked: boolean = false;\n\n private _indeterminate: boolean = false;\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, false)\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() get checked() {\n return this._checked;\n }\n\n set checked(checked: boolean) {\n if (checked != this.checked) {\n this._checked = checked;\n this._changeDetectorRef.markForCheck();\n }\n }\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() get indeterminate() {\n return this._indeterminate;\n }\n\n set indeterminate(indeterminate: boolean) {\n let changed = indeterminate != this._indeterminate;\n this._indeterminate = indeterminate;\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\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 /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n /**\n * Registers a callback to be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param fn Function to be called on change.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control has been touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be triggered when the checkbox is touched.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the checkbox's disabled state. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the checkbox should be disabled.\n */\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, ...this._rippleConfig});\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 {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n} from './card';\n\n\n@NgModule({\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle,\n MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage,\n MatCardXlImage, MatCardAvatar,\n ],\n})\nexport class MatCardModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Directive,\n Input,\n} 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 {NgModule} from '@angular/core';\nimport {MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle} from './button-toggle';\nimport {MatCommonModule} from '@angular/material/core';\nimport {UNIQUE_SELECTION_DISPATCHER_PROVIDER} from '@angular/cdk/collections';\nimport {A11yModule} from '@angular/cdk/a11y';\n\n\n@NgModule({\n imports: [MatCommonModule, A11yModule],\n exports: [\n MatButtonToggleGroup,\n MatButtonToggleGroupMultiple,\n MatButtonToggle,\n MatCommonModule,\n ],\n declarations: [MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER]\n})\nexport class MatButtonToggleModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {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 value for the button toggle group. Should match currently selected button toggle. */\n private _value: any = null;\n\n /** The HTML name attribute applied to toggles in this group. */\n private _name: string = `mat-button-toggle-group-${_uniqueIdCounter++}`;\n\n /** Whether the button toggle group should be vertical. */\n private _vertical: boolean = false;\n\n /** The currently selected button toggle, should match the value. */\n private _selected: MatButtonToggle | null = null;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle)) _buttonToggles: QueryList<MatButtonToggle>;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n this._updateButtonToggleNames();\n }\n\n /** Whether the toggle group is vertical. */\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n if (this._value != newValue) {\n this._value = newValue;\n this.valueChange.emit(newValue);\n this._updateSelectedButtonToggleFromValue();\n }\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() valueChange = new EventEmitter<any>();\n\n /** Whether the toggle group is selected. */\n @Input()\n get selected() {\n return this._selected;\n }\n\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\n /** Event emitted when the group's value changes. */\n @Output() change: EventEmitter<MatButtonToggleChange> = 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 /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /**\n * Registers a callback that will be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param fn On change callback function.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback that will be triggered when the control has been touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn On touch callback function.\n */\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n /**\n * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.\n * @param isDisabled Whether the component should be disabled.\n */\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\n /** Whether the button toggle group should be vertical. */\n private _vertical: boolean = false;\n\n /** Whether the toggle group is vertical. */\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\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 /** Whether or not this button toggle is checked. */\n private _checked: boolean = false;\n\n /** Type of the button toggle. Either 'radio' or 'checkbox'. */\n _type: ToggleType;\n\n /** Whether or not this button toggle is disabled. */\n private _disabled: boolean = false;\n\n /** Value assigned to this button toggle. */\n private _value: any = null;\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 {\n return `${this.id}-input`;\n }\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(newCheckedState: boolean) {\n if (this._isSingleSelector && newCheckedState) {\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 = newCheckedState;\n\n if (newCheckedState && this._isSingleSelector && this.buttonToggleGroup.value != this.value) {\n this.buttonToggleGroup.selected = this;\n }\n }\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input()\n get value(): any {\n return this._value;\n }\n\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\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\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /** Event emitted when the group value changes. */\n @Output() change: EventEmitter<MatButtonToggleChange> = 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() {\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(): void {\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 MatMiniFab,\n MatButtonCssMatStyler,\n MatFab,\n MatIconButtonCssMatStyler,\n MatRaisedButtonCssMatStyler\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 MatMiniFab,\n MatFab,\n MatCommonModule,\n MatButtonCssMatStyler,\n MatRaisedButtonCssMatStyler,\n MatIconButtonCssMatStyler,\n ],\n declarations: [\n MatButton,\n MatAnchor,\n MatMiniFab,\n MatFab,\n MatButtonCssMatStyler,\n MatRaisedButtonCssMatStyler,\n MatIconButtonCssMatStyler,\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 Directive,\n ElementRef,\n forwardRef,\n Inject,\n OnDestroy,\n Optional,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple\n} from '@angular/material/core';\n\n\n// TODO(kara): Convert attribute selectors to classes when attr maps become available\n\n/** Default color palette for round buttons (mat-fab and mat-mini-fab) */\nconst DEFAULT_ROUND_BUTTON_COLOR = 'accent';\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: 'button[mat-button], a[mat-button]',\n host: {'class': 'mat-button'}\n})\nexport class MatButtonCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'button[mat-raised-button], a[mat-raised-button]',\n host: {'class': 'mat-raised-button'}\n})\nexport class MatRaisedButtonCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'button[mat-icon-button], a[mat-icon-button]',\n host: {'class': 'mat-icon-button'}\n})\nexport class MatIconButtonCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'button[mat-fab], a[mat-fab]',\n host: {'class': 'mat-fab'}\n})\nexport class MatFab {\n constructor(@Self() @Optional() @Inject(forwardRef(() => MatButton)) button: MatButton,\n @Self() @Optional() @Inject(forwardRef(() => MatAnchor)) anchor: MatAnchor) {\n // Set the default color palette for the mat-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n}\n\n/**\n * Directive that targets mini-fab buttons and anchors. It's used to apply the `mat-` class\n * to all mini-fab buttons and also is responsible for setting the default color palette.\n * @docs-private\n */\n@Directive({\n selector: 'button[mat-mini-fab], a[mat-mini-fab]',\n host: {'class': 'mat-mini-fab'}\n})\nexport class MatMiniFab {\n constructor(@Self() @Optional() @Inject(forwardRef(() => MatButton)) button: MatButton,\n @Self() @Optional() @Inject(forwardRef(() => MatAnchor)) anchor: MatAnchor) {\n // Set the default color palette for the mat-mini-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n}\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]`,\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 constructor(elementRef: ElementRef,\n private _platform: Platform,\n private _focusMonitor: FocusMonitor) {\n super(elementRef);\n this._focusMonitor.monitor(this._elementRef.nativeElement, true);\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], a[mat-mini-fab]`,\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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {MatOptionModule, MatCommonModule} from '@angular/material/core';\nimport {MatAutocomplete} from './autocomplete';\nimport {\n MatAutocompleteTrigger,\n MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER,\n} from './autocomplete-trigger';\n\n@NgModule({\n imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n exports: [MatAutocomplete, MatOptionModule, MatAutocompleteTrigger, MatCommonModule],\n declarations: [MatAutocomplete, MatAutocompleteTrigger],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER],\n})\nexport class MatAutocompleteModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {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 {MatOption, MatOptionSelectionChange} 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 {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 providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class MatAutocompleteTrigger implements ControlValueAccessor, OnDestroy {\n private _overlayRef: OverlayRef | null;\n private _portal: TemplatePortal<any>;\n private _panelOpen: boolean = false;\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 escape keyboard events. */\n private _escapeEventStream = 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._destroyPanel();\n this._escapeEventStream.complete();\n }\n\n /* Whether or not the autocomplete panel is open. */\n get panelOpen(): boolean {\n return this._panelOpen && this.autocomplete.showPanel;\n }\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 // 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 * 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._escapeEventStream,\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 get optionSelections(): Observable<MatOptionSelectionChange> {\n return merge(...this.autocomplete.options.map(option => option.onSelectionChange));\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 /**\n * Sets the autocomplete'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 Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n /**\n * Saves a callback function to be invoked when the autocomplete'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 {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the autocomplete is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n /**\n * Disables the input. Implemented as a part of `ControlValueAccessor`.\n * @param isDisabled Whether the component should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._element.nativeElement.disabled = isDisabled;\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (keyCode === ESCAPE && this.panelOpen) {\n this._resetActiveItem();\n this._escapeEventStream.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) {\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 // We need to ensure that the input is focused, because IE will fire the `input`\n // event on focus/blur/load if the input has a placeholder. See:\n // https://connect.microsoft.com/IE/feedback/details/885747/\n if (document.activeElement === event.target) {\n this._onChange((event.target as HTMLInputElement).value);\n this.openPanel();\n }\n }\n\n _handleFocus(): void {\n if (!this._element.nativeElement.readOnly) {\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 activeOptionIndex = this.autocomplete._keyManager.activeItemIndex || 0;\n const labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex,\n this.autocomplete.options, this.autocomplete.optionGroups);\n const optionOffset = (activeOptionIndex + labelCount) * AUTOCOMPLETE_OPTION_HEIGHT;\n const panelTop = this.autocomplete._getScrollTop();\n\n if (optionOffset < panelTop) {\n // Scroll up to reveal selected option scrolled above the panel top\n this.autocomplete._setScrollTop(optionOffset);\n } else if (optionOffset + AUTOCOMPLETE_OPTION_HEIGHT > panelTop + AUTOCOMPLETE_PANEL_HEIGHT) {\n // Scroll down to reveal selected option scrolled below the panel bottom\n const newScrollTop = optionOffset - AUTOCOMPLETE_PANEL_HEIGHT + AUTOCOMPLETE_OPTION_HEIGHT;\n this.autocomplete._setScrollTop(Math.max(0, newScrollTop));\n }\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private _subscribeToClosingActions(): Subscription {\n const firstStable = this._zone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(\n tap(() => this._positionStrategy.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 /** Reset active item to -1 so arrow events will activate the correct options.*/\n private _resetActiveItem(): void {\n this.autocomplete._keyManager.setActiveItem(-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 {\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} from '@angular/core';\nimport {MatOption, MatOptgroup} from '@angular/material/core';\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\n\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n\n/** Event object that is emitted when an autocomplete option is selected */\nexport class MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n public source: MatAutocomplete,\n /** Option that was selected. */\n public option: MatOption) { }\n}\n\n\n@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 host: {\n 'class': 'mat-autocomplete'\n }\n})\nexport class MatAutocomplete implements AfterContentInit {\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 = false;\n\n /** Whether the autocomplete panel is open. */\n get isOpen(): boolean {\n return this._isOpen && this.showPanel;\n }\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 /** Event that is emitted whenever an option from the list is selected. */\n @Output() 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(classList: string) {\n if (classList && classList.length) {\n classList.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(private _changeDetectorRef: ChangeDetectorRef, private _elementRef: ElementRef) { }\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 {animate, state, style, transition, trigger} from '@angular/animations';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {take} from 'rxjs/operators/take';\nimport {startWith} from 'rxjs/operators/startWith';\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 {FloatLabelType, MAT_LABEL_GLOBAL_OPTIONS, LabelOptions} from '@angular/material/core';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {MatError} from './error';\nimport {MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n getMatFormFieldPlaceholderConflictError,\n} from './form-field-errors';\nimport {MatHint} from './hint';\nimport {MatPlaceholder} from './placeholder';\nimport {MatLabel} from './label';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\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: [\n // TODO(mmalerba): Use angular animations for label animation as well.\n trigger('transitionMessages', [\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 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.mat-primary]': 'color == \"primary\"',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class MatFormField implements AfterViewInit, AfterContentInit, AfterContentChecked {\n private _labelOptions: LabelOptions;\n\n /** Color of the form field underline, based on the theme. */\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary';\n\n /** @deprecated Use `color` instead. */\n @Input()\n get dividerColor(): 'primary' | 'accent' | 'warn' { return this.color; }\n set dividerColor(value) { this.color = value; }\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker() { return this._hideRequiredMarker; }\n set hideRequiredMarker(value: any) {\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() {\n return this._floatLabel === 'always' && !this._showAlwaysAnimate;\n }\n\n /** Whether the label can float or not. */\n get _canLabelFloat() { 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() { 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 */\n @Input()\n get floatPlaceholder() { 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() { 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 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 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} 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, 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 */\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 */\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\n/**\n * Applies a CSS transform to an element, including browser-prefixed properties.\n * @param element\n * @param transformValue\n */\nexport function applyCssTransform(element: HTMLElement, transformValue: string) {\n // It's important to trim the result, because the browser will ignore the set operation\n // if the string contains only whitespace.\n let value = transformValue.trim();\n\n element.style.transform = value;\n element.style.webkitTransform = 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 {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 {\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} 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 templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption {\n private _selected = false;\n private _active = false;\n private _disabled = false;\n private _id = `mat-option-${_uniqueIdCounter++}`;\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() onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\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 /** Emits the selection change event. */\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\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 */\n static 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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 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 interact\n * with the checkbox. The pseudo-checkbox should only be used as an implementation detail of\n * 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 {MatRipple, RippleGlobalOptions, MAT_RIPPLE_GLOBAL_OPTIONS} from './ripple';\nexport {RippleRef, RippleState} from './ripple-ref';\nexport {RippleConfig, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from './ripple-renderer';\n\n@NgModule({\n imports: [MatCommonModule, PlatformModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n ElementRef,\n Input,\n Inject,\n NgZone,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n InjectionToken,\n Optional,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {RippleConfig, RippleRenderer} from './ripple-renderer';\nimport {RippleRef} from './ripple-ref';\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 * 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 */\n baseSpeedFactor?: number;\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 OnChanges, OnDestroy {\n\n /**\n * The element that triggers the ripple when click events are received. Defaults to the\n * directive's host element.\n */\n // Prevent TS metadata emit from referencing HTMLElement in ripple.js\n // Otherwise running this code in a Node environment (e.g Universal) will not work.\n @Input('matRippleTrigger') trigger: HTMLElement|HTMLElement;\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 * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n @Input('matRippleDisabled') disabled: 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 */\n @Input('matRippleSpeedFactor') speedFactor: number = 1;\n\n /** Custom color for ripples. */\n @Input('matRippleColor') color: string;\n\n /** Whether foreground ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean;\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 constructor(\n elementRef: ElementRef,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions: RippleGlobalOptions\n ) {\n this._rippleRenderer = new RippleRenderer(elementRef, ngZone, platform);\n this._globalOptions = globalOptions ? globalOptions : {};\n\n this._updateRippleRenderer();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['trigger'] && this.trigger) {\n this._rippleRenderer.setTriggerElement(this.trigger);\n }\n\n this._updateRippleRenderer();\n }\n\n ngOnDestroy() {\n // Set the trigger element to null to cleanup all listeners.\n this._rippleRenderer.setTriggerElement(null);\n }\n\n /** Launches a manual ripple at the specified position. */\n launch(x: number, y: number, config: RippleConfig = this.rippleConfig): RippleRef {\n return this._rippleRenderer.fadeInRipple(x, y, config);\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 speedFactor: this.speedFactor * (this._globalOptions.baseSpeedFactor || 1),\n radius: this.radius,\n color: this.color\n };\n }\n\n /** Updates the ripple renderer with the latest ripple configuration. */\n _updateRippleRenderer() {\n this._rippleRenderer.rippleDisabled = this._globalOptions.disabled || this.disabled;\n this._rippleRenderer.rippleConfig = this.rippleConfig;\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\n\n/** Fade-in duration for the ripples. Can be modified with the speedFactor option. */\nexport const RIPPLE_FADE_IN_DURATION = 450;\n\n/** Fade-out duration for the ripples in milliseconds. This can't be modified by the speedFactor. */\nexport const RIPPLE_FADE_OUT_DURATION = 400;\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 IGNORE_MOUSE_EVENTS_TIMEOUT = 800;\n\nexport type RippleConfig = {\n color?: string;\n centered?: boolean;\n radius?: number;\n speedFactor?: number;\n persistent?: boolean;\n};\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 /** Ripple config for all ripples created by events. */\n rippleConfig: RippleConfig = {};\n\n /** Whether mouse ripples should be created or not. */\n rippleDisabled: boolean = false;\n\n constructor(elementRef: ElementRef, private _ngZone: NgZone, platform: Platform) {\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 // By default use the host element as trigger element.\n this.setTriggerElement(this._containerElement);\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\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 duration = RIPPLE_FADE_IN_DURATION / (config.speedFactor || 1);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\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\n rippleEl.style.transitionDuration = `${RIPPLE_FADE_OUT_DURATION}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 }, RIPPLE_FADE_OUT_DURATION);\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._activeRipples.forEach(ripple => ripple.fadeOut());\n }\n\n /** Sets the trigger element and registers the mouse events. */\n setTriggerElement(element: HTMLElement | null) {\n // Remove all previously register event listeners from the trigger element.\n if (this._triggerElement) {\n this._triggerEvents.forEach((fn, type) => {\n this._triggerElement!.removeEventListener(type, fn, this._eventOptions);\n });\n }\n\n if (element) {\n // If the element is not null, register all event listeners on the trigger element.\n this._ngZone.runOutsideAngular(() => {\n this._triggerEvents.forEach((fn, type) =>\n element.addEventListener(type, fn, this._eventOptions));\n });\n }\n\n this._triggerElement = element;\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private onMousedown = (event: MouseEvent) => {\n const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + IGNORE_MOUSE_EVENTS_TIMEOUT;\n\n if (!this.rippleDisabled && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private onTouchStart = (event: TouchEvent) => {\n if (!this.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(event.touches[0].clientX, event.touches[0].clientY, this.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 completely visible and not persistent.\n this._activeRipples.forEach(ripple => {\n if (!ripple.config.persistent && ripple.state === RippleState.VISIBLE) {\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}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\n// TODO(devversion): Move into global utility function.\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 /**\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 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 !platform.TRIDENT, logic currently duplicated to avoid breaking\n // change from injecting the Platform.\n this.useUtcForDisplay = !(typeof document === 'object' && !!document &&\n /(msie|trident)/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 let dtf = new Intl.DateTimeFormat(this.locale, {month: style});\n return range(12, i => this._stripDirectionalityCharacters(dtf.format(new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n let dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric'});\n return range(31, i => this._stripDirectionalityCharacters(\n dtf.format(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 let dtf = new Intl.DateTimeFormat(this.locale, {weekday: style});\n return range(7, i => this._stripDirectionalityCharacters(\n dtf.format(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 let dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric'});\n return this._stripDirectionalityCharacters(dtf.format(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\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 if (SUPPORTS_INTL_API) {\n if (this.useUtcForDisplay) {\n date = new Date(Date.UTC(\n date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(),\n date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n displayFormat = {...displayFormat, timeZone: 'utc'};\n }\n let dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(dtf.format(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 let 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code 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 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 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: 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 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 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 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"],"names":["moment","style","tslib_1.__extends","_rollupMoment","_moment","platform","ViewportRuler","merge","takeUntil","observableOf","Subject","Subscription","nextId","combineLatest","startWith","map","empty","BehaviorSubject","__extends","isArray_1","stepper","tslib_1.__assign","state","take","portal","_applyConfigDefaults","fromEventPattern","nextUniqueId","debounceTime","dispatchNext","async_1","ɵ0","overlay","filter","switchMap","defer","auditTime","fromEvent","timer_1","errorObject_1","finalize","share","forkJoin","tap","catchError","observableThrow","RefCountSubscriber","RefCountOperator","observers","rxSubscriber_1","_uniqueIdCounter","delay","of_1","from_1","observable_1","isArrayLike_1","iterator_1","root_1","iterator","root","Observable","observable","Observer_1","global","range"],"mappings":"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"}