UNPKG

1.55 MBSource Map (JSON)View Raw
1{"version":3,"file":"material.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","material/core.es5.js","material/form-field.es5.js","material/autocomplete.es5.js","material/button.es5.js","material/button-toggle.es5.js","material/card.es5.js","material/checkbox.es5.js","material/chips.es5.js","material/dialog.es5.js","material/icon.es5.js","material/datepicker.es5.js","material/expansion.es5.js","material/grid-list.es5.js","material/input.es5.js","material/list.es5.js","material/menu.es5.js","material/select.es5.js","material/tooltip.es5.js","material/paginator.es5.js","material/progress-bar.es5.js","material/progress-spinner.es5.js","material/radio.es5.js","material/sidenav.es5.js","material/slide-toggle.es5.js","material/slider.es5.js","material/snack-bar.es5.js","material/sort.es5.js","material/stepper.es5.js","material/table.es5.js","material/tabs.es5.js","material/toolbar.es5.js","material.es5.js"],"sourcesContent":["/*! *****************************************************************************\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}","/**\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Input, LOCALE_ID, NgModule, NgZone, Optional, Output, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs/Subject';\nimport { HammerGestureConfig } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\n\n/**\n * \\@docs-private\n */\nvar AnimationCurves = (function () {\n function AnimationCurves() {\n }\n AnimationCurves.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n AnimationCurves.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n AnimationCurves.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n AnimationCurves.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n return AnimationCurves;\n}());\n/**\n * \\@docs-private\n */\nvar AnimationDurations = (function () {\n function AnimationDurations() {\n }\n AnimationDurations.COMPLEX = '375ms';\n AnimationDurations.ENTERING = '225ms';\n AnimationDurations.EXITING = '195ms';\n return AnimationDurations;\n}());\n\nvar MATERIAL_COMPATIBILITY_MODE = new InjectionToken('md-compatibility-mode');\n/**\n * Selector that matches all elements that may have style collisions with AngularJS Material.\n */\nvar MAT_ELEMENTS_SELECTOR = \"\\n [mat-button],\\n [mat-fab],\\n [mat-icon-button],\\n [mat-mini-fab],\\n [mat-raised-button],\\n [matCardSubtitle],\\n [matCardTitle],\\n [matCellDef],\\n [matColumnDef],\\n [matDialogActions],\\n [matDialogClose],\\n [matDialogContent],\\n [matDialogTitle],\\n [matHeaderCellDef],\\n [matHeaderRowDef],\\n [matLine],\\n [matRowDef],\\n [matStepLabel],\\n [matStepperNext],\\n [matStepperPrevious],\\n [matTabLabel],\\n [matTabLink],\\n [matTabNav],\\n [matTooltip],\\n [matInput],\\n [matPrefix],\\n [matSuffix],\\n mat-autocomplete,\\n mat-button-toggle,\\n mat-button-toggle,\\n mat-button-toggle-group,\\n mat-card,\\n mat-card-actions,\\n mat-card-content,\\n mat-card-footer,\\n mat-card-header,\\n mat-card-subtitle,\\n mat-card-title,\\n mat-card-title-group,\\n mat-cell,\\n mat-checkbox,\\n mat-chip,\\n mat-dialog-actions,\\n mat-dialog-container,\\n mat-dialog-content,\\n mat-divider,\\n mat-error,\\n mat-grid-list,\\n mat-grid-tile,\\n mat-grid-tile-footer,\\n mat-grid-tile-header,\\n mat-header-cell,\\n mat-header-row,\\n mat-hint,\\n mat-horizontal-stepper,\\n mat-icon,\\n mat-input-container,\\n mat-form-field,\\n mat-list,\\n mat-list-item,\\n mat-menu,\\n mat-nav-list,\\n mat-option,\\n mat-placeholder,\\n mat-progress-bar,\\n mat-pseudo-checkbox,\\n mat-radio-button,\\n mat-radio-group,\\n mat-row,\\n mat-select,\\n mat-sidenav,\\n mat-sidenav-container,\\n mat-slider,\\n mat-spinner,\\n mat-step,\\n mat-tab,\\n mat-table,\\n mat-tab-group,\\n mat-toolbar,\\n mat-vertical-stepper\";\n/**\n * Selector that matches all elements that may have style collisions with AngularJS Material.\n */\nvar MD_ELEMENTS_SELECTOR = \"\\n [md-button],\\n [md-fab],\\n [md-icon-button],\\n [md-mini-fab],\\n [md-raised-button],\\n [mdCardSubtitle],\\n [mdCardTitle],\\n [mdCellDef],\\n [mdColumnDef],\\n [mdDialogActions],\\n [mdDialogClose],\\n [mdDialogContent],\\n [mdDialogTitle],\\n [mdHeaderCellDef],\\n [mdHeaderRowDef],\\n [mdLine],\\n [mdRowDef],\\n [mdStepLabel],\\n [mdStepperNext],\\n [mdStepperPrevious],\\n [mdTabLabel],\\n [mdTabLink],\\n [mdTabNav],\\n [mdTooltip],\\n [mdInput],\\n [mdPrefix],\\n [mdSuffix],\\n md-autocomplete,\\n md-button-toggle,\\n md-button-toggle,\\n md-button-toggle-group,\\n md-card,\\n md-card-actions,\\n md-card-content,\\n md-card-footer,\\n md-card-header,\\n md-card-subtitle,\\n md-card-title,\\n md-card-title-group,\\n md-cell,\\n md-checkbox,\\n md-chip,\\n md-dialog-actions,\\n md-dialog-container,\\n md-dialog-content,\\n md-divider,\\n md-error,\\n md-grid-list,\\n md-grid-tile,\\n md-grid-tile-footer,\\n md-grid-tile-header,\\n md-header-cell,\\n md-header-row,\\n md-hint,\\n md-horizontal-stepper,\\n md-icon,\\n md-input-container,\\n md-form-field,\\n md-list,\\n md-list-item,\\n md-menu,\\n md-nav-list,\\n md-option,\\n md-placeholder,\\n md-progress-bar,\\n md-pseudo-checkbox,\\n md-radio-button,\\n md-radio-group,\\n md-row,\\n md-select,\\n md-sidenav,\\n md-sidenav-container,\\n md-slider,\\n md-spinner,\\n md-step,\\n md-tab,\\n md-table,\\n md-tab-group,\\n md-toolbar,\\n md-vertical-stepper\";\n/**\n * Directive that enforces that the `mat-` prefix cannot be used.\n */\nvar MatPrefixRejector = (function () {\n function MatPrefixRejector() {\n }\n MatPrefixRejector.decorators = [\n { type: Directive, args: [{ selector: MAT_ELEMENTS_SELECTOR },] },\n ];\n /**\n * @nocollapse\n */\n MatPrefixRejector.ctorParameters = function () { return []; };\n return MatPrefixRejector;\n}());\n/**\n * Directive that enforces that the `md-` prefix cannot be used.\n */\nvar MdPrefixRejector = (function () {\n function MdPrefixRejector() {\n }\n MdPrefixRejector.decorators = [\n { type: Directive, args: [{ selector: MD_ELEMENTS_SELECTOR },] },\n ];\n /**\n * @nocollapse\n */\n MdPrefixRejector.ctorParameters = function () { return []; };\n return MdPrefixRejector;\n}());\n/**\n * Module that enforces the default compatibility mode settings. When this module is loaded\n * without NoConflictStyleCompatibilityMode also being imported, it will throw an error if\n * there are any uses of the `mat-` prefix.\n */\nvar CompatibilityModule = (function () {\n function CompatibilityModule() {\n }\n CompatibilityModule.decorators = [\n { type: NgModule, args: [{\n declarations: [MatPrefixRejector, MdPrefixRejector],\n exports: [MatPrefixRejector, MdPrefixRejector],\n },] },\n ];\n /**\n * @nocollapse\n */\n CompatibilityModule.ctorParameters = function () { return []; };\n return CompatibilityModule;\n}());\n/**\n * Module that enforces \"no-conflict\" compatibility mode settings. When this module is loaded,\n * it will throw an error if there are any uses of the `md-` prefix.\n */\nvar NoConflictStyleCompatibilityMode = (function () {\n function NoConflictStyleCompatibilityMode() {\n }\n NoConflictStyleCompatibilityMode.decorators = [\n { type: NgModule },\n ];\n /**\n * @nocollapse\n */\n NoConflictStyleCompatibilityMode.ctorParameters = function () { return []; };\n return NoConflictStyleCompatibilityMode;\n}());\n\n/**\n * Injection token that configures whether the Material sanity checks are enabled.\n */\nvar MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks');\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, compatibility mode, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nvar MatCommonModule = (function () {\n /**\n * @param {?} sanityChecksEnabled\n */\n function MatCommonModule(sanityChecksEnabled) {\n /**\n * Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype).\n */\n this._hasDoneGlobalChecks = false;\n /**\n * Reference to the global `document` object.\n */\n this._document = typeof document === 'object' && document ? document : null;\n if (sanityChecksEnabled && !this._hasDoneGlobalChecks && isDevMode()) {\n this._checkDoctype();\n this._checkTheme();\n this._hasDoneGlobalChecks = true;\n }\n }\n /**\n * @return {?}\n */\n MatCommonModule.prototype._checkDoctype = function () {\n if (this._document && !this._document.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n };\n /**\n * @return {?}\n */\n MatCommonModule.prototype._checkTheme = function () {\n if (this._document && typeof getComputedStyle === 'function') {\n var /** @type {?} */ testElement = this._document.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n this._document.body.appendChild(testElement);\n var /** @type {?} */ computedStyle = getComputedStyle(testElement);\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('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 this._document.body.removeChild(testElement);\n }\n };\n MatCommonModule.decorators = [\n { type: NgModule, args: [{\n imports: [CompatibilityModule, BidiModule],\n exports: [CompatibilityModule, BidiModule],\n providers: [{\n provide: MATERIAL_SANITY_CHECKS, useValue: true,\n }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCommonModule.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MATERIAL_SANITY_CHECKS,] },] },\n ]; };\n return MatCommonModule;\n}());\n\n/**\n * Mixin to augment a directive with a `disabled` property.\n * @template T\n * @param {?} base\n * @return {?}\n */\nfunction mixinDisabled(base) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._disabled = false;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"disabled\", {\n /**\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `color` property.\n * @template T\n * @param {?} base\n * @param {?=} defaultColor\n * @return {?}\n */\nfunction mixinColor(base, defaultColor) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n // Set the default color that can be specified from the mixin.\n _this.color = defaultColor;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"color\", {\n /**\n * @return {?}\n */\n get: function () { return this._color; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ colorPalette = value || defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._renderer.removeClass(this._elementRef.nativeElement, \"mat-\" + this._color);\n }\n if (colorPalette) {\n this._renderer.addClass(this._elementRef.nativeElement, \"mat-\" + colorPalette);\n }\n this._color = colorPalette;\n }\n },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `disableRipple` property.\n * @template T\n * @param {?} base\n * @return {?}\n */\nfunction mixinDisableRipple(base) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"disableRipple\", {\n /**\n * Whether the ripple effect is disabled or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disableRipple = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `tabIndex` property.\n * @template T\n * @param {?} base\n * @param {?=} defaultTabIndex\n * @return {?}\n */\nfunction mixinTabIndex(base, defaultTabIndex) {\n if (defaultTabIndex === void 0) { defaultTabIndex = 0; }\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._tabIndex = defaultTabIndex;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"tabIndex\", {\n /**\n * @return {?}\n */\n get: function () { return this.disabled ? -1 : this._tabIndex; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\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 enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * InjectionToken for datepicker that can be used to override default locale code.\n */\nvar MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE');\n/**\n * Provider for MAT_DATE_LOCALE injection token.\n */\nvar 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.\n * @abstract\n */\nvar DateAdapter = (function () {\n function DateAdapter() {\n this._localeChanges = new Subject();\n }\n Object.defineProperty(DateAdapter.prototype, \"localeChanges\", {\n /**\n * A stream that emits when the locale changes.\n * @return {?}\n */\n get: function () { return this._localeChanges; },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the year component of the given date.\n * @abstract\n * @param {?} date The date to extract the year from.\n * @return {?} The year component.\n */\n DateAdapter.prototype.getYear = function (date) { };\n /**\n * Gets the month component of the given date.\n * @abstract\n * @param {?} date The date to extract the month from.\n * @return {?} The month component (0-indexed, 0 = January).\n */\n DateAdapter.prototype.getMonth = function (date) { };\n /**\n * Gets the date of the month component of the given date.\n * @abstract\n * @param {?} date The date to extract the date of the month from.\n * @return {?} The month component (1-indexed, 1 = first of month).\n */\n DateAdapter.prototype.getDate = function (date) { };\n /**\n * Gets the day of the week component of the given date.\n * @abstract\n * @param {?} date The date to extract the day of the week from.\n * @return {?} The month component (0-indexed, 0 = Sunday).\n */\n DateAdapter.prototype.getDayOfWeek = function (date) { };\n /**\n * Gets a list of names for the months.\n * @abstract\n * @param {?} style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @return {?} An ordered list of all month names, starting with January.\n */\n DateAdapter.prototype.getMonthNames = function (style) { };\n /**\n * Gets a list of names for the dates of the month.\n * @abstract\n * @return {?} An ordered list of all date of the month names, starting with '1'.\n */\n DateAdapter.prototype.getDateNames = function () { };\n /**\n * Gets a list of names for the days of the week.\n * @abstract\n * @param {?} style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @return {?} An ordered list of all weekday names, starting with Sunday.\n */\n DateAdapter.prototype.getDayOfWeekNames = function (style) { };\n /**\n * Gets the name for the year of the given date.\n * @abstract\n * @param {?} date The date to get the year name for.\n * @return {?} The name of the given year (e.g. '2017').\n */\n DateAdapter.prototype.getYearName = function (date) { };\n /**\n * Gets the first day of the week.\n * @abstract\n * @return {?} The first day of the week (0-indexed, 0 = Sunday).\n */\n DateAdapter.prototype.getFirstDayOfWeek = function () { };\n /**\n * Gets the number of days in the month of the given date.\n * @abstract\n * @param {?} date The date whose month should be checked.\n * @return {?} The number of days in the month of the given date.\n */\n DateAdapter.prototype.getNumDaysInMonth = function (date) { };\n /**\n * Clones the given date.\n * @abstract\n * @param {?} date The date to clone\n * @return {?} A new date equal to the given date.\n */\n DateAdapter.prototype.clone = function (date) { };\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 * @abstract\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 * @return {?} The new date, or null if invalid.\n */\n DateAdapter.prototype.createDate = function (year, month, date) { };\n /**\n * Gets today's date.\n * @abstract\n * @return {?} Today's date.\n */\n DateAdapter.prototype.today = function () { };\n /**\n * Parses a date from a value.\n * @abstract\n * @param {?} value The value to parse.\n * @param {?} parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @return {?} The parsed date.\n */\n DateAdapter.prototype.parse = function (value, parseFormat) { };\n /**\n * Formats a date as a string.\n * @abstract\n * @param {?} date The value to format.\n * @param {?} displayFormat The format to use to display the date as a string.\n * @return {?} The formatted date string.\n */\n DateAdapter.prototype.format = function (date, displayFormat) { };\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 * @abstract\n * @param {?} date The date to add years to.\n * @param {?} years The number of years to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of years added.\n */\n DateAdapter.prototype.addCalendarYears = function (date, years) { };\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 * @abstract\n * @param {?} date The date to add months to.\n * @param {?} months The number of months to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of months added.\n */\n DateAdapter.prototype.addCalendarMonths = function (date, months) { };\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 * @abstract\n * @param {?} date The date to add days to.\n * @param {?} days The number of days to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of days added.\n */\n DateAdapter.prototype.addCalendarDays = function (date, days) { };\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * @abstract\n * @param {?} date The date to get the ISO date string for.\n * @return {?} The ISO date string date string.\n */\n DateAdapter.prototype.toIso8601 = function (date) { };\n /**\n * Creates a date from an RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339).\n * @abstract\n * @param {?} iso8601String The ISO date string to create a date from\n * @return {?} The date created from the ISO date string.\n */\n DateAdapter.prototype.fromIso8601 = function (iso8601String) { };\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @abstract\n * @param {?} obj The object to check\n * @return {?} Whether the object is a date instance.\n */\n DateAdapter.prototype.isDateInstance = function (obj) { };\n /**\n * Checks whether the given date is valid.\n * @abstract\n * @param {?} date The date to check.\n * @return {?} Whether the date is valid.\n */\n DateAdapter.prototype.isValid = function (date) { };\n /**\n * Sets the locale used for all dates.\n * @param {?} locale The new locale.\n * @return {?}\n */\n DateAdapter.prototype.setLocale = function (locale) {\n this.locale = locale;\n this._localeChanges.next();\n };\n /**\n * Compares two dates.\n * @param {?} first The first date to compare.\n * @param {?} second The second date to compare.\n * @return {?} 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 DateAdapter.prototype.compareDate = function (first, second) {\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 * Checks if two dates are equal.\n * @param {?} first The first date to check.\n * @param {?} second The second date to check.\n * Null dates are considered equal to other null dates.\n * @return {?}\n */\n DateAdapter.prototype.sameDate = function (first, second) {\n return first && second ? !this.compareDate(first, second) : first == second;\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 * @return {?} `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n DateAdapter.prototype.clampDate = function (date, min, max) {\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 return DateAdapter;\n}());\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param {?} dest The object which will have properties copied to it.\n * @param {...?} sources The source objects from which properties will be copied.\n * @return {?}\n */\nfunction extendObject(dest) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n if (source != null) {\n for (var /** @type {?} */ key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n return dest;\n}\n\n/**\n * Whether the browser supports the Intl API.\n */\nvar SUPPORTS_INTL_API = typeof Intl != 'undefined';\n/**\n * The default month names to use if Intl API is not available.\n */\nvar 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 * The default date names to use if Intl API is not available.\n */\nvar DEFAULT_DATE_NAMES = range(31, function (i) { return String(i + 1); });\n/**\n * The default day of the week names to use if Intl API is not available.\n */\nvar 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 * 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 */\nvar ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/**\n * Creates an array and fills it with values.\n * @template T\n * @param {?} length\n * @param {?} valueFunction\n * @return {?}\n */\nfunction range(length, valueFunction) {\n var /** @type {?} */ valuesArray = Array(length);\n for (var /** @type {?} */ 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 */\nvar NativeDateAdapter = (function (_super) {\n __extends(NativeDateAdapter, _super);\n /**\n * @param {?} matDateLocale\n */\n function NativeDateAdapter(matDateLocale) {\n var _this = _super.call(this) || this;\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 _this.useUtcForDisplay = true;\n _super.prototype.setLocale.call(_this, matDateLocale);\n return _this;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getYear = function (date) {\n return date.getFullYear();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getMonth = function (date) {\n return date.getMonth();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getDate = function (date) {\n return date.getDate();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getDayOfWeek = function (date) {\n return date.getDay();\n };\n /**\n * @param {?} style\n * @return {?}\n */\n NativeDateAdapter.prototype.getMonthNames = function (style) {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_1 = new Intl.DateTimeFormat(this.locale, { month: style });\n return range(12, function (i) { return _this._stripDirectionalityCharacters(dtf_1.format(new Date(2017, i, 1))); });\n }\n return DEFAULT_MONTH_NAMES[style];\n };\n /**\n * @return {?}\n */\n NativeDateAdapter.prototype.getDateNames = function () {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_2 = new Intl.DateTimeFormat(this.locale, { day: 'numeric' });\n return range(31, function (i) { return _this._stripDirectionalityCharacters(dtf_2.format(new Date(2017, 0, i + 1))); });\n }\n return DEFAULT_DATE_NAMES;\n };\n /**\n * @param {?} style\n * @return {?}\n */\n NativeDateAdapter.prototype.getDayOfWeekNames = function (style) {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_3 = new Intl.DateTimeFormat(this.locale, { weekday: style });\n return range(7, function (i) { return _this._stripDirectionalityCharacters(dtf_3.format(new Date(2017, 0, i + 1))); });\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getYearName = function (date) {\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ 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 * @return {?}\n */\n NativeDateAdapter.prototype.getFirstDayOfWeek = function () {\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 * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getNumDaysInMonth = function (date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.clone = function (date) {\n return this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date));\n };\n /**\n * @param {?} year\n * @param {?} month\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.createDate = function (year, month, 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 if (date < 1) {\n throw Error(\"Invalid date \\\"\" + date + \"\\\". Date has to be greater than 0.\");\n }\n var /** @type {?} */ result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month) {\n throw Error(\"Invalid date \\\"\" + date + \"\\\" for month with index \\\"\" + month + \"\\\".\");\n }\n return result;\n };\n /**\n * @return {?}\n */\n NativeDateAdapter.prototype.today = function () {\n return new Date();\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NativeDateAdapter.prototype.parse = function (value) {\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 * @param {?} date\n * @param {?} displayFormat\n * @return {?}\n */\n NativeDateAdapter.prototype.format = function (date, displayFormat) {\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(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n displayFormat = extendObject({}, displayFormat, { timeZone: 'utc' });\n }\n var /** @type {?} */ dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(dtf.format(date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n };\n /**\n * @param {?} date\n * @param {?} years\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarYears = function (date, years) {\n return this.addCalendarMonths(date, years * 12);\n };\n /**\n * @param {?} date\n * @param {?} months\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarMonths = function (date, months) {\n var /** @type {?} */ newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\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 return newDate;\n };\n /**\n * @param {?} date\n * @param {?} days\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarDays = function (date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.toIso8601 = function (date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n };\n /**\n * @param {?} iso8601String\n * @return {?}\n */\n NativeDateAdapter.prototype.fromIso8601 = function (iso8601String) {\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(iso8601String)) {\n var /** @type {?} */ d = new Date(iso8601String);\n if (this.isValid(d)) {\n return d;\n }\n }\n return null;\n };\n /**\n * @param {?} obj\n * @return {?}\n */\n NativeDateAdapter.prototype.isDateInstance = function (obj) {\n return obj instanceof Date;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.isValid = function (date) {\n return !isNaN(date.getTime());\n };\n /**\n * Creates a date but allows the month and date to overflow.\n * @param {?} year\n * @param {?} month\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype._createDateWithOverflow = function (year, month, date) {\n var /** @type {?} */ result = new Date(year, month, date);\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 * Pads a number to make it two digits.\n * @param {?} n The number to pad.\n * @return {?} The padded number.\n */\n NativeDateAdapter.prototype._2digit = function (n) {\n return ('00' + n).slice(-2);\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 * @return {?} The stripped string.\n */\n NativeDateAdapter.prototype._stripDirectionalityCharacters = function (str) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n };\n NativeDateAdapter.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n NativeDateAdapter.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_LOCALE,] },] },\n ]; };\n return NativeDateAdapter;\n}(DateAdapter));\n\nvar MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\nvar MAT_NATIVE_DATE_FORMATS = {\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\nvar NativeDateModule = (function () {\n function NativeDateModule() {\n }\n NativeDateModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n { provide: DateAdapter, useClass: NativeDateAdapter },\n MAT_DATE_LOCALE_PROVIDER\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n NativeDateModule.ctorParameters = function () { return []; };\n return NativeDateModule;\n}());\nvar MatNativeDateModule = (function () {\n function MatNativeDateModule() {\n }\n MatNativeDateModule.decorators = [\n { type: NgModule, args: [{\n imports: [NativeDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatNativeDateModule.ctorParameters = function () { return []; };\n return MatNativeDateModule;\n}());\n\n/**\n * Error state matcher that matches when a control is invalid and dirty.\n */\nvar ShowOnDirtyErrorStateMatcher = (function () {\n function ShowOnDirtyErrorStateMatcher() {\n }\n /**\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n ShowOnDirtyErrorStateMatcher.prototype.isErrorState = function (control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n };\n ShowOnDirtyErrorStateMatcher.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n ShowOnDirtyErrorStateMatcher.ctorParameters = function () { return []; };\n return ShowOnDirtyErrorStateMatcher;\n}());\n/**\n * Provider that defines how form controls behave with regards to displaying error messages.\n */\nvar ErrorStateMatcher = (function () {\n function ErrorStateMatcher() {\n }\n /**\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n ErrorStateMatcher.prototype.isErrorState = function (control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n };\n ErrorStateMatcher.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n ErrorStateMatcher.ctorParameters = function () { return []; };\n return ErrorStateMatcher;\n}());\n\nvar GestureConfig = (function (_super) {\n __extends(GestureConfig, _super);\n function GestureConfig() {\n var _this = _super.call(this) || this;\n _this._hammer = typeof window !== 'undefined' ? ((window)).Hammer : null;\n /* List of new event names to add to the gesture support list */\n _this.events = _this._hammer ? [\n 'longpress',\n 'slide',\n 'slidestart',\n 'slideend',\n 'slideright',\n 'slideleft'\n ] : [];\n if (!_this._hammer && isDevMode()) {\n console.warn('Could not find HammerJS. Certain Angular Material ' +\n 'components may not work correctly.');\n }\n return _this;\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 * @return {?} Newly-created HammerJS instance.\n */\n GestureConfig.prototype.buildHammer = function (element) {\n var /** @type {?} */ mc = new this._hammer(element);\n // Default Hammer Recognizers.\n var /** @type {?} */ pan = new this._hammer.Pan();\n var /** @type {?} */ swipe = new this._hammer.Swipe();\n var /** @type {?} */ press = new this._hammer.Press();\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 var /** @type {?} */ slide = this._createRecognizer(pan, { event: 'slide', threshold: 0 }, swipe);\n var /** @type {?} */ longpress = this._createRecognizer(press, { event: 'longpress', time: 500 });\n // Overwrite the default `pan` event to use the swipe event.\n pan.recognizeWith(swipe);\n // Add customized gestures to Hammer manager\n mc.add([swipe, press, pan, slide, longpress]);\n return (mc);\n };\n /**\n * Creates a new recognizer, without affecting the default recognizers of HammerJS\n * @param {?} base\n * @param {?} options\n * @param {...?} inheritances\n * @return {?}\n */\n GestureConfig.prototype._createRecognizer = function (base, options) {\n var inheritances = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n inheritances[_i - 2] = arguments[_i];\n }\n var /** @type {?} */ recognizer = new ((base.constructor))(options);\n inheritances.push(base);\n inheritances.forEach(function (item) { return recognizer.recognizeWith(item); });\n return recognizer;\n };\n GestureConfig.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n GestureConfig.ctorParameters = function () { return []; };\n return GestureConfig;\n}(HammerGestureConfig));\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 */\nvar MatLine = (function () {\n function MatLine() {\n }\n MatLine.decorators = [\n { type: Directive, args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatLine.ctorParameters = function () { return []; };\n return MatLine;\n}());\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * \\@docs-private\n */\nvar MatLineSetter = (function () {\n /**\n * @param {?} _lines\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatLineSetter(_lines, _renderer, _element) {\n var _this = this;\n this._lines = _lines;\n this._renderer = _renderer;\n this._element = _element;\n this._setLineClass(this._lines.length);\n this._lines.changes.subscribe(function () {\n _this._setLineClass(_this._lines.length);\n });\n }\n /**\n * @param {?} count\n * @return {?}\n */\n MatLineSetter.prototype._setLineClass = function (count) {\n this._resetClasses();\n if (count === 2 || count === 3) {\n this._setClass(\"mat-\" + count + \"-line\", true);\n }\n else if (count > 3) {\n this._setClass(\"mat-multi-line\", true);\n }\n };\n /**\n * @return {?}\n */\n MatLineSetter.prototype._resetClasses = function () {\n this._setClass('mat-2-line', false);\n this._setClass('mat-3-line', false);\n this._setClass('mat-multi-line', false);\n };\n /**\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n MatLineSetter.prototype._setClass = function (className, isAdd) {\n if (isAdd) {\n this._renderer.addClass(this._element.nativeElement, className);\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, className);\n }\n };\n return MatLineSetter;\n}());\nvar MatLineModule = (function () {\n function MatLineModule() {\n }\n MatLineModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatLineModule.ctorParameters = function () { return []; };\n return MatLineModule;\n}());\n\nvar RippleState = {};\nRippleState.FADING_IN = 0;\nRippleState.VISIBLE = 1;\nRippleState.FADING_OUT = 2;\nRippleState.HIDDEN = 3;\nRippleState[RippleState.FADING_IN] = \"FADING_IN\";\nRippleState[RippleState.VISIBLE] = \"VISIBLE\";\nRippleState[RippleState.FADING_OUT] = \"FADING_OUT\";\nRippleState[RippleState.HIDDEN] = \"HIDDEN\";\n/**\n * Reference to a previously launched ripple element.\n */\nvar RippleRef = (function () {\n /**\n * @param {?} _renderer\n * @param {?} element\n * @param {?} config\n */\n function RippleRef(_renderer, element, config) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n /**\n * Current state of the ripple reference.\n */\n this.state = RippleState.HIDDEN;\n }\n /**\n * Fades out the ripple element.\n * @return {?}\n */\n RippleRef.prototype.fadeOut = function () {\n this._renderer.fadeOutRipple(this);\n };\n return RippleRef;\n}());\n\n/**\n * Fade-in duration for the ripples. Can be modified with the speedFactor option.\n */\nvar RIPPLE_FADE_IN_DURATION = 450;\n/**\n * Fade-out duration for the ripples in milliseconds. This can't be modified by the speedFactor.\n */\nvar RIPPLE_FADE_OUT_DURATION = 400;\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 */\nvar RippleRenderer = (function () {\n /**\n * @param {?} elementRef\n * @param {?} _ngZone\n * @param {?} platform\n */\n function RippleRenderer(elementRef, _ngZone, platform) {\n this._ngZone = _ngZone;\n /**\n * Whether the pointer is currently being held on the trigger or not.\n */\n this._isPointerDown = false;\n /**\n * Events to be registered on the trigger element.\n */\n this._triggerEvents = new Map();\n /**\n * Set of currently active ripple references.\n */\n this._activeRipples = new Set();\n /**\n * Ripple config for all ripples created by events.\n */\n this.rippleConfig = {};\n /**\n * Whether mouse ripples should be created or not.\n */\n this.rippleDisabled = false;\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = elementRef.nativeElement;\n // Specify events which need to be registered on the trigger.\n this._triggerEvents.set('mousedown', this.onMousedown.bind(this));\n this._triggerEvents.set('touchstart', this.onTouchstart.bind(this));\n this._triggerEvents.set('mouseup', this.onPointerUp.bind(this));\n this._triggerEvents.set('touchend', this.onPointerUp.bind(this));\n this._triggerEvents.set('mouseleave', this.onPointerLeave.bind(this));\n // By default use the host element as trigger element.\n this.setTriggerElement(this._containerElement);\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\n * @param {?=} config Extra ripple options.\n * @return {?}\n */\n RippleRenderer.prototype.fadeInRipple = function (x, y, config) {\n var _this = this;\n if (config === void 0) { config = {}; }\n var /** @type {?} */ containerRect = this._containerElement.getBoundingClientRect();\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n var /** @type {?} */ radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n var /** @type {?} */ duration = RIPPLE_FADE_IN_DURATION * (1 / (config.speedFactor || 1));\n var /** @type {?} */ offsetX = x - containerRect.left;\n var /** @type {?} */ offsetY = y - containerRect.top;\n var /** @type {?} */ ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\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 // 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 this._containerElement.appendChild(ripple);\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 ripple.style.transform = 'scale(1)';\n // Exposed reference to the ripple that will be returned.\n var /** @type {?} */ rippleRef = new RippleRef(this, ripple, config);\n rippleRef.state = RippleState.FADING_IN;\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.add(rippleRef);\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(function () {\n rippleRef.state = RippleState.VISIBLE;\n if (!config.persistent && !_this._isPointerDown) {\n rippleRef.fadeOut();\n }\n }, duration);\n return rippleRef;\n };\n /**\n * Fades out a ripple reference.\n * @param {?} rippleRef\n * @return {?}\n */\n RippleRenderer.prototype.fadeOutRipple = function (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 var /** @type {?} */ rippleEl = rippleRef.element;\n rippleEl.style.transitionDuration = RIPPLE_FADE_OUT_DURATION + \"ms\";\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n // Once the ripple faded out, the ripple can be safely removed from the DOM.\n this.runTimeoutOutsideZone(function () {\n rippleRef.state = RippleState.HIDDEN; /** @type {?} */\n ((rippleEl.parentNode)).removeChild(rippleEl);\n }, RIPPLE_FADE_OUT_DURATION);\n };\n /**\n * Fades out all currently active ripples.\n * @return {?}\n */\n RippleRenderer.prototype.fadeOutAll = function () {\n this._activeRipples.forEach(function (ripple) { return ripple.fadeOut(); });\n };\n /**\n * Sets the trigger element and registers the mouse events.\n * @param {?} element\n * @return {?}\n */\n RippleRenderer.prototype.setTriggerElement = function (element) {\n var _this = this;\n // Remove all previously register event listeners from the trigger element.\n if (this._triggerElement) {\n this._triggerEvents.forEach(function (fn, type) {\n ((_this._triggerElement)).removeEventListener(type, fn);\n });\n }\n if (element) {\n // If the element is not null, register all event listeners on the trigger element.\n this._ngZone.runOutsideAngular(function () {\n _this._triggerEvents.forEach(function (fn, type) { return element.addEventListener(type, fn); });\n });\n }\n this._triggerElement = element;\n };\n /**\n * Function being called whenever the trigger is being pressed.\n * @param {?} event\n * @return {?}\n */\n RippleRenderer.prototype.onMousedown = function (event) {\n if (!this.rippleDisabled) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this.rippleConfig);\n }\n };\n /**\n * Function being called whenever the pointer is being released.\n * @return {?}\n */\n RippleRenderer.prototype.onPointerUp = function () {\n this._isPointerDown = false;\n // Fade-out all ripples that are completely visible and not persistent.\n this._activeRipples.forEach(function (ripple) {\n if (!ripple.config.persistent && ripple.state === RippleState.VISIBLE) {\n ripple.fadeOut();\n }\n });\n };\n /**\n * Function being called whenever the pointer leaves the trigger.\n * @return {?}\n */\n RippleRenderer.prototype.onPointerLeave = function () {\n if (this._isPointerDown) {\n this.onPointerUp();\n }\n };\n /**\n * Function being called whenever the trigger is being touched.\n * @param {?} event\n * @return {?}\n */\n RippleRenderer.prototype.onTouchstart = function (event) {\n if (!this.rippleDisabled) {\n var _a = event.touches[0], clientX = _a.clientX, clientY = _a.clientY;\n this._isPointerDown = true;\n this.fadeInRipple(clientX, clientY, this.rippleConfig);\n }\n };\n /**\n * Runs a timeout outside of the Angular zone to avoid triggering the change detection.\n * @param {?} fn\n * @param {?=} delay\n * @return {?}\n */\n RippleRenderer.prototype.runTimeoutOutsideZone = function (fn, delay) {\n if (delay === void 0) { delay = 0; }\n this._ngZone.runOutsideAngular(function () { return setTimeout(fn, delay); });\n };\n return RippleRenderer;\n}());\n/**\n * @param {?} element\n * @return {?}\n */\nfunction enforceStyleRecalculation(element) {\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 * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n * @param {?} x\n * @param {?} y\n * @param {?} rect\n * @return {?}\n */\nfunction distanceToFurthestCorner(x, y, rect) {\n var /** @type {?} */ distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n var /** @type {?} */ distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\n/**\n * Injection token that can be used to specify the global ripple options.\n */\nvar MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken('mat-ripple-global-options');\nvar MatRipple = (function () {\n /**\n * @param {?} elementRef\n * @param {?} ngZone\n * @param {?} platform\n * @param {?} globalOptions\n */\n function MatRipple(elementRef, ngZone, platform, globalOptions) {\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 this.radius = 0;\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 this.speedFactor = 1;\n this._rippleRenderer = new RippleRenderer(elementRef, ngZone, platform);\n this._globalOptions = globalOptions ? globalOptions : {};\n this._updateRippleRenderer();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n MatRipple.prototype.ngOnChanges = function (changes) {\n if ((changes['trigger'] || changes['_matRippleTrigger']) && this.trigger) {\n this._rippleRenderer.setTriggerElement(this.trigger);\n }\n this._updateRippleRenderer();\n };\n /**\n * @return {?}\n */\n MatRipple.prototype.ngOnDestroy = function () {\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 * @param {?} x\n * @param {?} y\n * @param {?=} config\n * @return {?}\n */\n MatRipple.prototype.launch = function (x, y, config) {\n if (config === void 0) { config = this.rippleConfig; }\n return this._rippleRenderer.fadeInRipple(x, y, config);\n };\n /**\n * Fades out all currently showing ripple elements.\n * @return {?}\n */\n MatRipple.prototype.fadeOutAll = function () {\n this._rippleRenderer.fadeOutAll();\n };\n Object.defineProperty(MatRipple.prototype, \"rippleConfig\", {\n /**\n * Ripple configuration from the directive's input values.\n * @return {?}\n */\n get: function () {\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 enumerable: true,\n configurable: true\n });\n /**\n * Updates the ripple renderer with the latest ripple configuration.\n * @return {?}\n */\n MatRipple.prototype._updateRippleRenderer = function () {\n this._rippleRenderer.rippleDisabled = this._globalOptions.disabled || this.disabled;\n this._rippleRenderer.rippleConfig = this.rippleConfig;\n };\n MatRipple.decorators = [\n { type: Directive, args: [{\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRipple.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n ]; };\n MatRipple.propDecorators = {\n 'trigger': [{ type: Input, args: ['matRippleTrigger',] },],\n 'centered': [{ type: Input, args: ['matRippleCentered',] },],\n 'disabled': [{ type: Input, args: ['matRippleDisabled',] },],\n 'radius': [{ type: Input, args: ['matRippleRadius',] },],\n 'speedFactor': [{ type: Input, args: ['matRippleSpeedFactor',] },],\n 'color': [{ type: Input, args: ['matRippleColor',] },],\n 'unbounded': [{ type: Input, args: ['matRippleUnbounded',] },],\n };\n return MatRipple;\n}());\n\nvar MatRippleModule = (function () {\n function MatRippleModule() {\n }\n MatRippleModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule, PlatformModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRippleModule.ctorParameters = function () { return []; };\n return MatRippleModule;\n}());\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 */\nvar MatPseudoCheckbox = (function () {\n function MatPseudoCheckbox() {\n /**\n * Display state of the checkbox.\n */\n this.state = 'unchecked';\n /**\n * Whether the checkbox is disabled.\n */\n this.disabled = false;\n }\n MatPseudoCheckbox.decorators = [\n { type: Component, args: [{encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styles: [\".mat-pseudo-checkbox{width:20px;height:20px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:'';border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:9px;left:2px;width:16px;opacity:1}.mat-pseudo-checkbox-checked::after{top:5px;left:3px;width:12px;height:5px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatPseudoCheckbox.ctorParameters = function () { return []; };\n MatPseudoCheckbox.propDecorators = {\n 'state': [{ type: Input },],\n 'disabled': [{ type: Input },],\n };\n return MatPseudoCheckbox;\n}());\n\nvar MatPseudoCheckboxModule = (function () {\n function MatPseudoCheckboxModule() {\n }\n MatPseudoCheckboxModule.decorators = [\n { type: NgModule, args: [{\n exports: [MatPseudoCheckbox],\n declarations: [MatPseudoCheckbox]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPseudoCheckboxModule.ctorParameters = function () { return []; };\n return MatPseudoCheckboxModule;\n}());\n\n/**\n * \\@docs-private\n */\nvar MatOptgroupBase = (function () {\n function MatOptgroupBase() {\n }\n return MatOptgroupBase;\n}());\nvar _MatOptgroupMixinBase = mixinDisabled(MatOptgroupBase);\n// Counter for unique group ids.\nvar _uniqueOptgroupIdCounter = 0;\n/**\n * Component that is used to group instances of `mat-option`.\n */\nvar MatOptgroup = (function (_super) {\n __extends(MatOptgroup, _super);\n function MatOptgroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Unique id for the underlying label.\n */\n _this._labelId = \"mat-optgroup-label-\" + _uniqueOptgroupIdCounter++;\n return _this;\n }\n MatOptgroup.decorators = [\n { type: Component, args: [{selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n template: \"<label class=\\\"mat-optgroup-label\\\" [id]=\\\"_labelId\\\">{{ label }}</label><ng-content select=\\\"mat-option\\\"></ng-content>\",\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatOptgroup.ctorParameters = function () { return []; };\n MatOptgroup.propDecorators = {\n 'label': [{ type: Input },],\n };\n return MatOptgroup;\n}(_MatOptgroupMixinBase));\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nvar _uniqueIdCounter = 0;\n/**\n * Event object emitted by MatOption when selected or deselected.\n */\nvar MatOptionSelectionChange = (function () {\n /**\n * @param {?} source\n * @param {?=} isUserInput\n */\n function MatOptionSelectionChange(source, isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.source = source;\n this.isUserInput = isUserInput;\n }\n return MatOptionSelectionChange;\n}());\n/**\n * Single option inside of a `<mat-select>` element.\n */\nvar MatOption = (function () {\n /**\n * @param {?} _element\n * @param {?} _changeDetectorRef\n * @param {?} group\n */\n function MatOption(_element, _changeDetectorRef, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._multiple = false;\n this._disableRipple = false;\n /**\n * Whether the option is disabled.\n */\n this._disabled = false;\n this._id = \"mat-option-\" + _uniqueIdCounter++;\n /**\n * Event emitted when the option is selected or deselected.\n */\n this.onSelectionChange = new EventEmitter();\n }\n Object.defineProperty(MatOption.prototype, \"multiple\", {\n /**\n * Whether the wrapping component is in multiple selection mode.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._multiple) {\n this._multiple = value;\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"id\", {\n /**\n * The unique ID of the option.\n * @return {?}\n */\n get: function () { return this._id; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"selected\", {\n /**\n * Whether or not the option is currently selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"disabled\", {\n /**\n * Whether the option is disabled.\n * @return {?}\n */\n get: function () { return (this.group && this.group.disabled) || this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"disableRipple\", {\n /**\n * Whether ripples for the option are disabled.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = value;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"active\", {\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 * @return {?}\n */\n get: function () {\n return this._active;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"viewValue\", {\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n * @return {?}\n */\n get: function () {\n // TODO(kara): Add input property alternative for node envs.\n return (this._getHostElement().textContent || '').trim();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Selects the option.\n * @return {?}\n */\n MatOption.prototype.select = function () {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n };\n /**\n * Deselects the option.\n * @return {?}\n */\n MatOption.prototype.deselect = function () {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n };\n /**\n * Sets focus onto this option.\n * @return {?}\n */\n MatOption.prototype.focus = function () {\n var /** @type {?} */ element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus();\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 * @return {?}\n */\n MatOption.prototype.setActiveStyles = function () {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\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 * @return {?}\n */\n MatOption.prototype.setInactiveStyles = function () {\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 * @return {?}\n */\n MatOption.prototype.getLabel = function () {\n return this.viewValue;\n };\n /**\n * Ensures the option is selected when activated from the keyboard.\n * @param {?} event\n * @return {?}\n */\n MatOption.prototype._handleKeydown = function (event) {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\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 * @return {?}\n */\n MatOption.prototype._selectViaInteraction = function () {\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 * @return {?}\n */\n MatOption.prototype._getTabIndex = function () {\n return this.disabled ? '-1' : '0';\n };\n /**\n * Gets the host DOM element.\n * @return {?}\n */\n MatOption.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n /**\n * Emits the selection change event.\n * @param {?=} isUserInput\n * @return {?}\n */\n MatOption.prototype._emitSelectionChangeEvent = function (isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\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 * @return {?}\n */\n MatOption.countGroupLabelsBeforeOption = function (optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n var /** @type {?} */ optionsArray = options.toArray();\n var /** @type {?} */ groups = optionGroups.toArray();\n var /** @type {?} */ groupCounter = 0;\n for (var /** @type {?} */ i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n };\n MatOption.decorators = [\n { type: Component, args: [{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 template: \"<span *ngIf=\\\"multiple\\\"><mat-pseudo-checkbox class=\\\"mat-option-pseudo-checkbox\\\" [state]=\\\"selected ? 'checked' : ''\\\" [disabled]=\\\"disabled\\\"></mat-pseudo-checkbox></span><span class=\\\"mat-option-text\\\"><ng-content></ng-content></span><div class=\\\"mat-option-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\"></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatOption.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: MatOptgroup, decorators: [{ type: Optional },] },\n ]; };\n MatOption.propDecorators = {\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'onSelectionChange': [{ type: Output },],\n };\n return MatOption;\n}());\n\nvar MatOptionModule = (function () {\n function MatOptionModule() {\n }\n MatOptionModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatRippleModule, CommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatOptionModule.ctorParameters = function () { return []; };\n return MatOptionModule;\n}());\n\n/**\n * InjectionToken that can be used to specify the global placeholder options.\n */\nvar MAT_PLACEHOLDER_GLOBAL_OPTIONS = new InjectionToken('mat-placeholder-global-options');\n\n/**\n * Applies a CSS transform to an element, including browser-prefixed properties.\n * @param {?} element\n * @param {?} transformValue\n * @return {?}\n */\nfunction applyCssTransform(element, transformValue) {\n // It's important to trim the result, because the browser will ignore the set operation\n // if the string contains only whitespace.\n var /** @type {?} */ value = transformValue.trim();\n element.style.transform = value;\n element.style.webkitTransform = value;\n}\n\n/**\n * When constructing a Date, the month is zero-based. This can be confusing, since people are\n * used to seeing them one-based. So we create these aliases to make writing the tests easier.\n */\nvar JAN = 0;\nvar FEB = 1;\nvar MAR = 2;\nvar APR = 3;\nvar MAY = 4;\nvar JUN = 5;\nvar JUL = 6;\nvar AUG = 7;\nvar SEP = 8;\nvar OCT = 9;\nvar NOV = 10;\nvar DEC = 11;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, MatCommonModule, MATERIAL_SANITY_CHECKS, mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MATERIAL_COMPATIBILITY_MODE, MAT_ELEMENTS_SELECTOR, MD_ELEMENTS_SELECTOR, MatPrefixRejector, MdPrefixRejector, CompatibilityModule, NoConflictStyleCompatibilityMode, NativeDateModule, MatNativeDateModule, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter, MAT_NATIVE_DATE_FORMATS, ShowOnDirtyErrorStateMatcher, ErrorStateMatcher, GestureConfig, MatLine, MatLineSetter, MatLineModule, MatOptionModule, MatOptionSelectionChange, MatOption, MatOptgroupBase, _MatOptgroupMixinBase, MatOptgroup, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRef, RippleState, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, MatRippleModule, MatPseudoCheckboxModule, MatPseudoCheckbox, applyCssTransform, extendObject, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, RippleRenderer as ɵa0 };\n//# sourceMappingURL=core.es5.js.map\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 */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, Inject, Input, NgModule, Optional, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { first, startWith } from '@angular/cdk/rxjs';\nimport { MAT_PLACEHOLDER_GLOBAL_OPTIONS } from '@angular/material/core';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\n\nvar nextUniqueId = 0;\n/**\n * Single error message to be shown underneath the form field.\n */\nvar MatError = (function () {\n function MatError() {\n this.id = \"mat-error-\" + nextUniqueId++;\n }\n MatError.decorators = [\n { type: Directive, args: [{\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n 'role': 'alert',\n '[attr.id]': 'id',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatError.ctorParameters = function () { return []; };\n MatError.propDecorators = {\n 'id': [{ type: Input },],\n };\n return MatError;\n}());\n\n/**\n * An interface which allows a control to work inside of a `MatFormField`.\n * @abstract\n */\nvar MatFormFieldControl = (function () {\n function MatFormFieldControl() {\n }\n /**\n * Sets the list of element IDs that currently describe this control.\n * @abstract\n * @param {?} ids\n * @return {?}\n */\n MatFormFieldControl.prototype.setDescribedByIds = function (ids) { };\n /**\n * Handles a click on the control's container.\n * @abstract\n * @param {?} event\n * @return {?}\n */\n MatFormFieldControl.prototype.onContainerClick = function (event) { };\n return MatFormFieldControl;\n}());\n\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/**\n * \\@docs-private\n * @param {?} align\n * @return {?}\n */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(\"A hint was already declared for 'align=\\\"\" + align + \"\\\"'.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl. ' +\n 'Did you forget to add matInput to the native input or textarea element?');\n}\n\nvar nextUniqueId$2 = 0;\n/**\n * Hint text to be shown underneath the form field control.\n */\nvar MatHint = (function () {\n function MatHint() {\n /**\n * Whether to align the hint label at the start or end of the line.\n */\n this.align = 'start';\n /**\n * Unique ID for the hint. Used for the aria-describedby on the form field control.\n */\n this.id = \"mat-hint-\" + nextUniqueId$2++;\n }\n MatHint.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatHint.ctorParameters = function () { return []; };\n MatHint.propDecorators = {\n 'align': [{ type: Input },],\n 'id': [{ type: Input },],\n };\n return MatHint;\n}());\n\n/**\n * The floating placeholder for an `MatFormField`.\n */\nvar MatPlaceholder = (function () {\n function MatPlaceholder() {\n }\n MatPlaceholder.decorators = [\n { type: Directive, args: [{\n selector: 'mat-placeholder'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPlaceholder.ctorParameters = function () { return []; };\n return MatPlaceholder;\n}());\n\n/**\n * Prefix to be placed the the front of the form field.\n */\nvar MatPrefix = (function () {\n function MatPrefix() {\n }\n MatPrefix.decorators = [\n { type: Directive, args: [{\n selector: '[matPrefix]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPrefix.ctorParameters = function () { return []; };\n return MatPrefix;\n}());\n\n/**\n * Suffix to be placed at the end of the form field.\n */\nvar MatSuffix = (function () {\n function MatSuffix() {\n }\n MatSuffix.decorators = [\n { type: Directive, args: [{\n selector: '[matSuffix]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSuffix.ctorParameters = function () { return []; };\n return MatSuffix;\n}());\n\nvar nextUniqueId$1 = 0;\n/**\n * Container for form controls that applies Material Design styling and behavior.\n */\nvar MatFormField = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _changeDetectorRef\n * @param {?} placeholderOptions\n */\n function MatFormField(_elementRef, _renderer, _changeDetectorRef, placeholderOptions) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Color of the form field underline, based on the theme.\n */\n this.color = 'primary';\n /**\n * Override for the logic that disables the placeholder animation in certain cases.\n */\n this._showAlwaysAnimate = false;\n /**\n * State of the mat-hint and mat-error animations.\n */\n this._subscriptAnimationState = '';\n this._hintLabel = '';\n // Unique id for the hint label.\n this._hintLabelId = \"mat-hint-\" + nextUniqueId$1++;\n this._placeholderOptions = placeholderOptions ? placeholderOptions : {};\n this.floatPlaceholder = this._placeholderOptions.float || 'auto';\n }\n Object.defineProperty(MatFormField.prototype, \"dividerColor\", {\n /**\n * @deprecated Use `color` instead.\n * @return {?}\n */\n get: function () { return this.color; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.color = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"hideRequiredMarker\", {\n /**\n * Whether the required marker should be hidden.\n * @return {?}\n */\n get: function () { return this._hideRequiredMarker; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"_shouldAlwaysFloat\", {\n /**\n * Whether the floating label should always float or not.\n * @return {?}\n */\n get: function () {\n return this._floatPlaceholder === 'always' && !this._showAlwaysAnimate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"_canPlaceholderFloat\", {\n /**\n * Whether the placeholder can float or not.\n * @return {?}\n */\n get: function () { return this._floatPlaceholder !== 'never'; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"hintLabel\", {\n /**\n * Text for the form field hint.\n * @return {?}\n */\n get: function () { return this._hintLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._hintLabel = value;\n this._processHints();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"floatPlaceholder\", {\n /**\n * Whether the placeholder should always float, never float or float as the user types.\n * @return {?}\n */\n get: function () { return this._floatPlaceholder; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._floatPlaceholder) {\n this._floatPlaceholder = value || this._placeholderOptions.float || 'auto';\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._validateControlChild();\n if (this._control.controlType) {\n this._renderer.addClass(this._elementRef.nativeElement, \"mat-form-field-type-\" + this._control.controlType);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n startWith.call(this._control.stateChanges, null).subscribe(function () {\n _this._validatePlaceholders();\n _this._syncDescribedByIds();\n _this._changeDetectorRef.markForCheck();\n });\n var /** @type {?} */ ngControl = this._control.ngControl;\n if (ngControl && ngControl.valueChanges) {\n ngControl.valueChanges.subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n }\n // Re-validate when the number of hints changes.\n startWith.call(this._hintChildren.changes, null).subscribe(function () {\n _this._processHints();\n _this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n startWith.call(this._errorChildren.changes, null).subscribe(function () {\n _this._syncDescribedByIds();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterContentChecked = function () {\n this._validateControlChild();\n };\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterViewInit = function () {\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 * @param {?} prop\n * @return {?}\n */\n MatFormField.prototype._shouldForward = function (prop) {\n var /** @type {?} */ ngControl = this._control ? this._control.ngControl : null;\n return ngControl && ((ngControl))[prop];\n };\n /**\n * Whether the form field has a placeholder.\n * @return {?}\n */\n MatFormField.prototype._hasPlaceholder = function () {\n return !!(this._control.placeholder || this._placeholderChild);\n };\n /**\n * Determines whether to display hints or errors.\n * @return {?}\n */\n MatFormField.prototype._getDisplayedMessages = function () {\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 * @return {?}\n */\n MatFormField.prototype._animateAndLockPlaceholder = function () {\n var _this = this;\n if (this._placeholder && this._canPlaceholderFloat) {\n this._showAlwaysAnimate = true;\n this._floatPlaceholder = 'always';\n first.call(fromEvent(this._placeholder.nativeElement, 'transitionend')).subscribe(function () {\n _this._showAlwaysAnimate = false;\n });\n this._changeDetectorRef.markForCheck();\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 * @return {?}\n */\n MatFormField.prototype._validatePlaceholders = function () {\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 * @return {?}\n */\n MatFormField.prototype._processHints = function () {\n this._validateHints();\n this._syncDescribedByIds();\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 * @return {?}\n */\n MatFormField.prototype._validateHints = function () {\n var _this = this;\n if (this._hintChildren) {\n var /** @type {?} */ startHint_1;\n var /** @type {?} */ endHint_1;\n this._hintChildren.forEach(function (hint) {\n if (hint.align == 'start') {\n if (startHint_1 || _this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint_1 = hint;\n }\n else if (hint.align == 'end') {\n if (endHint_1) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint_1 = hint;\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 * @return {?}\n */\n MatFormField.prototype._syncDescribedByIds = function () {\n if (this._control) {\n var /** @type {?} */ ids = [];\n if (this._getDisplayedMessages() === 'hint') {\n var /** @type {?} */ startHint = this._hintChildren ?\n this._hintChildren.find(function (hint) { return hint.align === 'start'; }) : null;\n var /** @type {?} */ endHint = this._hintChildren ?\n this._hintChildren.find(function (hint) { return hint.align === 'end'; }) : null;\n if (startHint) {\n ids.push(startHint.id);\n }\n else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n }\n else if (this._errorChildren) {\n ids = this._errorChildren.map(function (error) { return error.id; });\n }\n this._control.setDescribedByIds(ids);\n }\n };\n /**\n * Throws an error if the form field's control is missing.\n * @return {?}\n */\n MatFormField.prototype._validateControlChild = function () {\n if (!this._control) {\n throw getMatFormFieldMissingControlError();\n }\n };\n MatFormField.decorators = [\n { type: Component, args: [{// 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 template: \"<div class=\\\"mat-input-wrapper mat-form-field-wrapper\\\"><div class=\\\"mat-input-flex mat-form-field-flex\\\" #connectionContainer (click)=\\\"_control.onContainerClick && _control.onContainerClick($event)\\\"><div class=\\\"mat-input-prefix mat-form-field-prefix\\\" *ngIf=\\\"_prefixChildren.length\\\"><ng-content select=\\\"[matPrefix]\\\"></ng-content></div><div class=\\\"mat-input-infix mat-form-field-infix\\\"><ng-content></ng-content><span class=\\\"mat-input-placeholder-wrapper mat-form-field-placeholder-wrapper\\\"><label class=\\\"mat-input-placeholder mat-form-field-placeholder\\\" [attr.for]=\\\"_control.id\\\" [attr.aria-owns]=\\\"_control.id\\\" [class.mat-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-form-field-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\" #placeholder *ngIf=\\\"_hasPlaceholder()\\\"><ng-content select=\\\"mat-placeholder\\\"></ng-content>{{_control.placeholder}} <span class=\\\"mat-placeholder-required mat-form-field-required-marker\\\" aria-hidden=\\\"true\\\" *ngIf=\\\"!hideRequiredMarker && _control.required\\\">*</span></label></span></div><div class=\\\"mat-input-suffix mat-form-field-suffix\\\" *ngIf=\\\"_suffixChildren.length\\\"><ng-content select=\\\"[matSuffix]\\\"></ng-content></div></div><div class=\\\"mat-input-underline mat-form-field-underline\\\" #underline [class.mat-disabled]=\\\"_control.disabled\\\"><span class=\\\"mat-input-ripple mat-form-field-ripple\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\"></span></div><div class=\\\"mat-input-subscript-wrapper mat-form-field-subscript-wrapper\\\" [ngSwitch]=\\\"_getDisplayedMessages()\\\"><div *ngSwitchCase=\\\"'error'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><ng-content select=\\\"mat-error\\\"></ng-content></div><div class=\\\"mat-input-hint-wrapper mat-form-field-hint-wrapper\\\" *ngSwitchCase=\\\"'hint'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><div *ngIf=\\\"hintLabel\\\" [id]=\\\"_hintLabelId\\\" class=\\\"mat-hint\\\">{{hintLabel}}</div><ng-content select=\\\"mat-hint:not([align='end'])\\\"></ng-content><div class=\\\"mat-input-hint-spacer mat-form-field-hint-spacer\\\"></div><ng-content select=\\\"mat-hint[align='end']\\\"></ng-content></div></div></div>\",\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 styles: [\".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0}.mat-form-field-placeholder-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}.mat-form-field-placeholder{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform:perspective(100px);-ms-transform:none;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1);display:none}[dir=rtl] .mat-form-field-placeholder{transform-origin:100% 0;left:auto;right:0}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-placeholder,.mat-form-field-empty.mat-form-field-placeholder{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder{display:block;transition:none}.mat-form-field-placeholder:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;height:1px;width:100%}.mat-form-field-underline.mat-disabled{background-position:0;background-color:transparent}.mat-form-field-underline .mat-form-field-ripple{position:absolute;height:1px;top:0;left:0;width:100%;transform-origin:50%;transform:scaleX(.5);visibility:hidden;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}.mat-focused .mat-form-field-underline .mat-form-field-ripple{height:2px}.mat-focused .mat-form-field-underline .mat-form-field-ripple,.mat-form-field-invalid .mat-form-field-underline .mat-form-field-ripple{visibility:visible;transform:scaleX(1);transition:transform 150ms linear,background-color .3s cubic-bezier(.55,0,.55,.2)}.mat-form-field-subscript-wrapper{position:absolute;width:100%;overflow:hidden}.mat-form-field-placeholder-wrapper .mat-icon,.mat-form-field-subscript-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block} .mat-input-element{font:inherit;background:0 0;color:currentColor;border:none;outline:0;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element::placeholder{color:transparent!important}.mat-input-element::-moz-placeholder{color:transparent!important}.mat-input-element::-webkit-input-placeholder{color:transparent!important}.mat-input-element:-ms-input-placeholder{color:transparent!important}textarea.mat-input-element{resize:vertical;overflow:auto}\"],\n animations: [\n // TODO(mmalerba): Use angular animations for placeholder 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]': '_canPlaceholderFloat',\n '[class.mat-form-field-should-float]': '_control.shouldPlaceholderFloat || _shouldAlwaysFloat',\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 ];\n /**\n * @nocollapse\n */\n MatFormField.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_PLACEHOLDER_GLOBAL_OPTIONS,] },] },\n ]; };\n MatFormField.propDecorators = {\n 'color': [{ type: Input },],\n 'dividerColor': [{ type: Input },],\n 'hideRequiredMarker': [{ type: Input },],\n 'hintLabel': [{ type: Input },],\n 'floatPlaceholder': [{ type: Input },],\n 'underlineRef': [{ type: ViewChild, args: ['underline',] },],\n '_connectionContainerRef': [{ type: ViewChild, args: ['connectionContainer',] },],\n '_placeholder': [{ type: ViewChild, args: ['placeholder',] },],\n '_control': [{ type: ContentChild, args: [MatFormFieldControl,] },],\n '_placeholderChild': [{ type: ContentChild, args: [MatPlaceholder,] },],\n '_errorChildren': [{ type: ContentChildren, args: [MatError,] },],\n '_hintChildren': [{ type: ContentChildren, args: [MatHint,] },],\n '_prefixChildren': [{ type: ContentChildren, args: [MatPrefix,] },],\n '_suffixChildren': [{ type: ContentChildren, args: [MatSuffix,] },],\n };\n return MatFormField;\n}());\n\nvar MatFormFieldModule = (function () {\n function MatFormFieldModule() {\n }\n MatFormFieldModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n imports: [\n CommonModule,\n PlatformModule,\n ],\n exports: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatFormFieldModule.ctorParameters = function () { return []; };\n return MatFormFieldModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatFormFieldModule, MatError, MatFormField, MatFormFieldControl, getMatFormFieldPlaceholderConflictError, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, MatHint, MatPlaceholder, MatPrefix, MatSuffix };\n//# sourceMappingURL=form-field.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Host, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule, MatOptgroup, MatOption, MatOptionModule } from '@angular/material/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { RxChain, delay, doOperator, filter, first, switchMap } from '@angular/cdk/rxjs';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { merge } from 'rxjs/observable/merge';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nvar _uniqueAutocompleteIdCounter = 0;\n/**\n * Event object that is emitted when an autocomplete option is selected\n */\nvar MatAutocompleteSelectedEvent = (function () {\n /**\n * @param {?} source\n * @param {?} option\n */\n function MatAutocompleteSelectedEvent(source, option) {\n this.source = source;\n this.option = option;\n }\n return MatAutocompleteSelectedEvent;\n}());\nvar MatAutocomplete = (function () {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _elementRef\n */\n function MatAutocomplete(_changeDetectorRef, _elementRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /**\n * Whether the autocomplete panel should be visible, depending on option length.\n */\n this.showPanel = false;\n this._isOpen = false;\n /**\n * Function that maps an option's control value to its display value in the trigger.\n */\n this.displayWith = null;\n /**\n * Event that is emitted whenever an option from the list is selected.\n */\n this.optionSelected = new EventEmitter();\n this._classList = {};\n /**\n * Unique ID to be used by autocomplete trigger's \"aria-owns\" property.\n */\n this.id = \"mat-autocomplete-\" + _uniqueAutocompleteIdCounter++;\n }\n Object.defineProperty(MatAutocomplete.prototype, \"isOpen\", {\n /**\n * Whether the autocomplete panel is open.\n * @return {?}\n */\n get: function () {\n return this._isOpen && this.showPanel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocomplete.prototype, \"classList\", {\n /**\n * Takes classes set on the host md-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n * @param {?} classList\n * @return {?}\n */\n set: function (classList) {\n var _this = this;\n if (classList && classList.length) {\n classList.split(' ').forEach(function (className) { return _this._classList[className.trim()] = true; });\n this._elementRef.nativeElement.className = '';\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatAutocomplete.prototype.ngAfterContentInit = function () {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n // Set the initial visibiity state.\n this._setVisibility();\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 * @param {?} scrollTop\n * @return {?}\n */\n MatAutocomplete.prototype._setScrollTop = function (scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n };\n /**\n * Returns the panel's scrollTop.\n * @return {?}\n */\n MatAutocomplete.prototype._getScrollTop = function () {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n };\n /**\n * Panel should hide itself when the option list is empty.\n * @return {?}\n */\n MatAutocomplete.prototype._setVisibility = function () {\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 * @param {?} option\n * @return {?}\n */\n MatAutocomplete.prototype._emitSelectEvent = function (option) {\n var /** @type {?} */ event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n };\n MatAutocomplete.decorators = [\n { type: Component, args: [{selector: 'mat-autocomplete',\n template: \"<ng-template><div class=\\\"mat-autocomplete-panel\\\" role=\\\"listbox\\\" [id]=\\\"id\\\" [ngClass]=\\\"_classList\\\" #panel><ng-content></ng-content></div></ng-template>\",\n styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n host: {\n 'class': 'mat-autocomplete'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocomplete.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: ElementRef, },\n ]; };\n MatAutocomplete.propDecorators = {\n 'template': [{ type: ViewChild, args: [TemplateRef,] },],\n 'panel': [{ type: ViewChild, args: ['panel',] },],\n 'options': [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n 'optionGroups': [{ type: ContentChildren, args: [MatOptgroup,] },],\n 'displayWith': [{ type: Input },],\n 'optionSelected': [{ type: Output },],\n 'classList': [{ type: Input, args: ['class',] },],\n };\n return MatAutocomplete;\n}());\n\n/**\n * The height of each autocomplete option.\n */\nvar AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n */\nvar AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/**\n * Injection token that determines the scroll handling while the autocomplete panel is open.\n */\nvar MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar 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 * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * \\@docs-private\n */\nvar MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatAutocompleteTrigger; }),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @return {?}\n */\nfunction getMatAutocompleteMissingPanelError() {\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}\nvar MatAutocompleteTrigger = (function () {\n /**\n * @param {?} _element\n * @param {?} _overlay\n * @param {?} _viewContainerRef\n * @param {?} _zone\n * @param {?} _changeDetectorRef\n * @param {?} _scrollStrategy\n * @param {?} _dir\n * @param {?} _formField\n * @param {?} _document\n */\n function MatAutocompleteTrigger(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, _scrollStrategy, _dir, _formField, _document) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._panelOpen = false;\n /**\n * Whether or not the placeholder state is being overridden.\n */\n this._manuallyFloatingPlaceholder = false;\n /**\n * Stream of escape keyboard events.\n */\n this._escapeEventStream = new Subject();\n /**\n * View -> model callback called when value changes\n */\n this._onChange = function () { };\n /**\n * View -> model callback called when autocomplete has been touched\n */\n this._onTouched = function () { };\n }\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.ngOnDestroy = function () {\n this._destroyPanel();\n this._escapeEventStream.complete();\n };\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelOpen\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._panelOpen && this.autocomplete.showPanel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.openPanel = function () {\n this._attachOverlay();\n this._floatPlaceholder();\n };\n /**\n * Closes the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.closePanel = function () {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._resetPlaceholder();\n if (this._panelOpen) {\n this.autocomplete._isOpen = this._panelOpen = false;\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 placeholder is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n };\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelClosingActions\", {\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 * @return {?}\n */\n get: function () {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut, this._escapeEventStream, this._outsideClickStream);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"optionSelections\", {\n /**\n * Stream of autocomplete option selections.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.autocomplete.options.map(function (option) { return option.onSelectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"activeOption\", {\n /**\n * The currently active option, coerced to MatOption type.\n * @return {?}\n */\n get: function () {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"_outsideClickStream\", {\n /**\n * Stream of clicks outside of the autocomplete panel.\n * @return {?}\n */\n get: function () {\n var _this = this;\n if (!this._document) {\n return of(null);\n }\n return RxChain.from(merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'touchend'))).call(filter, function (event) {\n var /** @type {?} */ clickTarget = (event.target);\n var /** @type {?} */ formField = _this._formField ?\n _this._formField._elementRef.nativeElement : null;\n return _this._panelOpen &&\n clickTarget !== _this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!!_this._overlayRef && !_this._overlayRef.overlayElement.contains(clickTarget));\n }).result();\n },\n enumerable: true,\n configurable: true\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype.writeValue = function (value) {\n var _this = this;\n Promise.resolve(null).then(function () { return _this._setTriggerValue(value); });\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleKeydown = function (event) {\n var /** @type {?} */ keyCode = event.keyCode;\n if (keyCode === ESCAPE && this.panelOpen) {\n this._resetActiveItem();\n this._escapeEventStream.next();\n event.stopPropagation();\n }\n else if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else {\n var /** @type {?} */ prevActiveItem = this.autocomplete._keyManager.activeItem;\n var /** @type {?} */ isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption();\n }\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleInput = function (event) {\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)).value);\n this.openPanel();\n }\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleFocus = function () {\n if (!this._element.nativeElement.readOnly) {\n this._attachOverlay();\n this._floatPlaceholder(true);\n }\n };\n /**\n * In \"auto\" mode, the placeholder 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 placeholder until the panel can be closed.\n * @param {?=} shouldAnimate Whether the placeholder should be animated when it is floated.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._floatPlaceholder = function (shouldAnimate) {\n if (shouldAnimate === void 0) { shouldAnimate = false; }\n if (this._formField && this._formField.floatPlaceholder === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockPlaceholder();\n }\n else {\n this._formField.floatPlaceholder = 'always';\n }\n this._manuallyFloatingPlaceholder = true;\n }\n };\n /**\n * If the placeholder has been manually elevated, return it to its normal state.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._resetPlaceholder = function () {\n if (this._manuallyFloatingPlaceholder) {\n this._formField.floatPlaceholder = 'auto';\n this._manuallyFloatingPlaceholder = false;\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype._scrollToOption = function () {\n var /** @type {?} */ activeOptionIndex = this.autocomplete._keyManager.activeItemIndex || 0;\n var /** @type {?} */ labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex, this.autocomplete.options, this.autocomplete.optionGroups);\n var /** @type {?} */ optionOffset = (activeOptionIndex + labelCount) * AUTOCOMPLETE_OPTION_HEIGHT;\n var /** @type {?} */ panelTop = this.autocomplete._getScrollTop();\n if (optionOffset < panelTop) {\n // Scroll up to reveal selected option scrolled above the panel top\n this.autocomplete._setScrollTop(optionOffset);\n }\n else if (optionOffset + AUTOCOMPLETE_OPTION_HEIGHT > panelTop + AUTOCOMPLETE_PANEL_HEIGHT) {\n // Scroll down to reveal selected option scrolled below the panel bottom\n var /** @type {?} */ newScrollTop = optionOffset - AUTOCOMPLETE_PANEL_HEIGHT + AUTOCOMPLETE_OPTION_HEIGHT;\n this.autocomplete._setScrollTop(Math.max(0, newScrollTop));\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype._subscribeToClosingActions = function () {\n var _this = this;\n var /** @type {?} */ firstStable = first.call(this._zone.onStable.asObservable());\n var /** @type {?} */ optionChanges = RxChain.from(this.autocomplete.options.changes)\n .call(doOperator, function () { return _this._positionStrategy.recalculateLastPosition(); })\n .call(delay, 0)\n .result();\n // When the zone is stable initially, and when the option list changes...\n return RxChain.from(merge(firstStable, optionChanges))\n .call(switchMap, function () {\n _this._resetActiveItem();\n _this.autocomplete._setVisibility();\n return _this.panelClosingActions;\n })\n .call(first)\n .subscribe(function (event) { return _this._setValueAndClose(event); });\n };\n /**\n * Destroys the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._destroyPanel = function () {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._setTriggerValue = function (value) {\n var /** @type {?} */ toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\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 var /** @type {?} */ inputValue = toDisplay != null ? toDisplay : '';\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 }\n else {\n this._element.nativeElement.value = inputValue;\n }\n };\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._setValueAndClose = function (event) {\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 this.closePanel();\n };\n /**\n * Clear any previous selected option and emit a selection change event for this option\n * @param {?} skip\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._clearPreviousSelectedOption = function (skip) {\n this.autocomplete.options.forEach(function (option) {\n if (option != skip && option.selected) {\n option.deselect();\n }\n });\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._attachOverlay = function () {\n if (!this.autocomplete) {\n throw getMatAutocompleteMissingPanelError();\n }\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n }\n else {\n /** Update the panel width, in case the host width has changed */\n this._overlayRef.getConfig().width = this._getHostWidth();\n this._overlayRef.updateSize();\n }\n if (this._overlayRef && !this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._panelOpen = true;\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getOverlayConfig = function () {\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype._getOverlayPosition = function () {\n this._positionStrategy = this._overlay.position().connectedTo(this._getConnectedElement(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' });\n return this._positionStrategy;\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getConnectedElement = function () {\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 * @return {?}\n */\n MatAutocompleteTrigger.prototype._getHostWidth = function () {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n };\n /**\n * Reset active item to -1 so arrow events will activate the correct options.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._resetActiveItem = function () {\n this.autocomplete._keyManager.setActiveItem(-1);\n };\n MatAutocompleteTrigger.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocompleteTrigger.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Overlay, },\n { type: ViewContainerRef, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Host },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatAutocompleteTrigger.propDecorators = {\n 'autocomplete': [{ type: Input, args: ['matAutocomplete',] },],\n };\n return MatAutocompleteTrigger;\n}());\n\nvar MatAutocompleteModule = (function () {\n function MatAutocompleteModule() {\n }\n MatAutocompleteModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n exports: [MatAutocomplete, MatOptionModule, MatAutocompleteTrigger, MatCommonModule],\n declarations: [MatAutocomplete, MatAutocompleteTrigger],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocompleteModule.ctorParameters = function () { return []; };\n return MatAutocompleteModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatAutocompleteSelectedEvent, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger };\n//# sourceMappingURL=autocomplete.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, Inject, NgModule, Optional, Renderer2, Self, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * Default color palette for round buttons (mat-fab and mat-mini-fab)\n */\nvar DEFAULT_ROUND_BUTTON_COLOR = 'accent';\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatButtonCssMatStyler = (function () {\n function MatButtonCssMatStyler() {\n }\n MatButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-button], a[mat-button]',\n host: { 'class': 'mat-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatRaisedButtonCssMatStyler = (function () {\n function MatRaisedButtonCssMatStyler() {\n }\n MatRaisedButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-raised-button], a[mat-raised-button]',\n host: { 'class': 'mat-raised-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRaisedButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatRaisedButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatIconButtonCssMatStyler = (function () {\n function MatIconButtonCssMatStyler() {\n }\n MatIconButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-icon-button], a[mat-icon-button]',\n host: { 'class': 'mat-icon-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatIconButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatIconButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatFab = (function () {\n /**\n * @param {?} button\n * @param {?} anchor\n */\n function MatFab(button, anchor) {\n // Set the default color palette for the mat-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n MatFab.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-fab], a[mat-fab]',\n host: { 'class': 'mat-fab' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatFab.ctorParameters = function () { return [\n { type: MatButton, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatButton; }),] },] },\n { type: MatAnchor, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatAnchor; }),] },] },\n ]; };\n return MatFab;\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 */\nvar MatMiniFab = (function () {\n /**\n * @param {?} button\n * @param {?} anchor\n */\n function MatMiniFab(button, anchor) {\n // Set the default color palette for the mat-mini-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n MatMiniFab.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-mini-fab], a[mat-mini-fab]',\n host: { 'class': 'mat-mini-fab' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMiniFab.ctorParameters = function () { return [\n { type: MatButton, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatButton; }),] },] },\n { type: MatAnchor, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatAnchor; }),] },] },\n ]; };\n return MatMiniFab;\n}());\n/**\n * \\@docs-private\n */\nvar MatButtonBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatButtonBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatButtonBase;\n}());\nvar _MatButtonMixinBase = mixinColor(mixinDisabled(mixinDisableRipple(MatButtonBase)));\n/**\n * Material design button.\n */\nvar MatButton = (function (_super) {\n __extends(MatButton, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _platform\n * @param {?} _focusMonitor\n */\n function MatButton(renderer, elementRef, _platform, _focusMonitor) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._platform = _platform;\n _this._focusMonitor = _focusMonitor;\n /**\n * Whether the button is round.\n */\n _this._isRoundButton = _this._hasAttributeWithPrefix('fab', 'mini-fab');\n /**\n * Whether the button is icon button.\n */\n _this._isIconButton = _this._hasAttributeWithPrefix('icon-button');\n _this._focusMonitor.monitor(_this._elementRef.nativeElement, _this._renderer, true);\n return _this;\n }\n /**\n * @return {?}\n */\n MatButton.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n };\n /**\n * Focuses the button.\n * @return {?}\n */\n MatButton.prototype.focus = function () {\n this._getHostElement().focus();\n };\n /**\n * @return {?}\n */\n MatButton.prototype._getHostElement = function () {\n return this._elementRef.nativeElement;\n };\n /**\n * @return {?}\n */\n MatButton.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * Gets whether the button has one of the given attributes with a 'mat-' prefix.\n * @param {...?} unprefixedAttributeNames\n * @return {?}\n */\n MatButton.prototype._hasAttributeWithPrefix = function () {\n var _this = this;\n var unprefixedAttributeNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n unprefixedAttributeNames[_i] = arguments[_i];\n }\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 return unprefixedAttributeNames.some(function (suffix) {\n return _this._getHostElement().hasAttribute('mat-' + suffix);\n });\n };\n MatButton.decorators = [\n { type: Component, args: [{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 template: \"<span class=\\\"mat-button-wrapper\\\"><ng-content></ng-content></span><div matRipple class=\\\"mat-button-ripple\\\" [class.mat-button-ripple-round]=\\\"_isRoundButton || _isIconButton\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"_isIconButton\\\" [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div class=\\\"mat-button-focus-overlay\\\"></div>\",\n styles: [\".mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:88px;line-height:36px;padding:0 16px;border-radius:2px}[disabled].mat-button,[disabled].mat-fab,[disabled].mat-icon-button,[disabled].mat-mini-fab,[disabled].mat-raised-button{cursor:default}.cdk-keyboard-focused.mat-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-icon-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-mini-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-raised-button .mat-button-focus-overlay{opacity:1}.mat-button::-moz-focus-inner,.mat-fab::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-mini-fab::-moz-focus-inner,.mat-raised-button::-moz-focus-inner{border:0}.mat-fab,.mat-mini-fab,.mat-raised-button{transform:translate3d(0,0,0);transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1)}.mat-fab:not([class*=mat-elevation-z]),.mat-mini-fab:not([class*=mat-elevation-z]),.mat-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}[disabled].mat-fab,[disabled].mat-mini-fab,[disabled].mat-raised-button{box-shadow:none}.mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{transition:none;opacity:0}.mat-button:hover .mat-button-focus-overlay{opacity:1}.mat-fab{min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button .mat-icon,.mat-icon-button i{line-height:24px}.mat-button,.mat-icon-button,.mat-raised-button{color:currentColor}.mat-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*{vertical-align:middle}.mat-button-focus-overlay,.mat-button-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-focus-overlay{background-color:rgba(0,0,0,.12);border-radius:inherit;opacity:0;transition:opacity .2s cubic-bezier(.35,0,.25,1),background-color .2s cubic-bezier(.35,0,.25,1)}@media screen and (-ms-high-contrast:active){.mat-button-focus-overlay{background-color:rgba(255,255,255,.5)}}.mat-button-ripple-round{border-radius:50%;z-index:1}@media screen and (-ms-high-contrast:active){.mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{outline:solid 1px}}\"],\n inputs: ['disabled', 'disableRipple', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButton.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: FocusMonitor, },\n ]; };\n return MatButton;\n}(_MatButtonMixinBase));\n/**\n * Raised Material design button.\n */\nvar MatAnchor = (function (_super) {\n __extends(MatAnchor, _super);\n /**\n * @param {?} platform\n * @param {?} focusMonitor\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatAnchor(platform, focusMonitor, elementRef, renderer) {\n return _super.call(this, renderer, elementRef, platform, focusMonitor) || this;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n MatAnchor.prototype._haltDisabledEvents = function (event) {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n MatAnchor.decorators = [\n { type: Component, args: [{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 template: \"<span class=\\\"mat-button-wrapper\\\"><ng-content></ng-content></span><div matRipple class=\\\"mat-button-ripple\\\" [class.mat-button-ripple-round]=\\\"_isRoundButton || _isIconButton\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"_isIconButton\\\" [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div class=\\\"mat-button-focus-overlay\\\"></div>\",\n styles: [\".mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:88px;line-height:36px;padding:0 16px;border-radius:2px}[disabled].mat-button,[disabled].mat-fab,[disabled].mat-icon-button,[disabled].mat-mini-fab,[disabled].mat-raised-button{cursor:default}.cdk-keyboard-focused.mat-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-icon-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-mini-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-raised-button .mat-button-focus-overlay{opacity:1}.mat-button::-moz-focus-inner,.mat-fab::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-mini-fab::-moz-focus-inner,.mat-raised-button::-moz-focus-inner{border:0}.mat-fab,.mat-mini-fab,.mat-raised-button{transform:translate3d(0,0,0);transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1)}.mat-fab:not([class*=mat-elevation-z]),.mat-mini-fab:not([class*=mat-elevation-z]),.mat-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}[disabled].mat-fab,[disabled].mat-mini-fab,[disabled].mat-raised-button{box-shadow:none}.mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{transition:none;opacity:0}.mat-button:hover .mat-button-focus-overlay{opacity:1}.mat-fab{min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button .mat-icon,.mat-icon-button i{line-height:24px}.mat-button,.mat-icon-button,.mat-raised-button{color:currentColor}.mat-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*{vertical-align:middle}.mat-button-focus-overlay,.mat-button-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-focus-overlay{background-color:rgba(0,0,0,.12);border-radius:inherit;opacity:0;transition:opacity .2s cubic-bezier(.35,0,.25,1),background-color .2s cubic-bezier(.35,0,.25,1)}@media screen and (-ms-high-contrast:active){.mat-button-focus-overlay{background-color:rgba(255,255,255,.5)}}.mat-button-ripple-round{border-radius:50%;z-index:1}@media screen and (-ms-high-contrast:active){.mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{outline:solid 1px}}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAnchor.ctorParameters = function () { return [\n { type: Platform, },\n { type: FocusMonitor, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatAnchor;\n}(MatButton));\n\nvar MatButtonModule = (function () {\n function MatButtonModule() {\n }\n MatButtonModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonModule.ctorParameters = function () { return []; };\n return MatButtonModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatButtonModule, MatButtonCssMatStyler, MatRaisedButtonCssMatStyler, MatIconButtonCssMatStyler, MatFab, MatMiniFab, MatButtonBase, _MatButtonMixinBase, MatButton, MatAnchor };\n//# sourceMappingURL=button.es5.js.map\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 */\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule, mixinDisabled } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\n\n/**\n * \\@docs-private\n */\nvar MatButtonToggleGroupBase = (function () {\n function MatButtonToggleGroupBase() {\n }\n return MatButtonToggleGroupBase;\n}());\nvar _MatButtonToggleGroupMixinBase = mixinDisabled(MatButtonToggleGroupBase);\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 */\nvar MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatButtonToggleGroup; }),\n multi: true\n};\nvar _uniqueIdCounter = 0;\n/**\n * Change event object emitted by MatButtonToggle.\n */\nvar MatButtonToggleChange = (function () {\n function MatButtonToggleChange() {\n }\n return MatButtonToggleChange;\n}());\n/**\n * Exclusive selection button toggle group that behaves like a radio-button group.\n */\nvar MatButtonToggleGroup = (function (_super) {\n __extends(MatButtonToggleGroup, _super);\n /**\n * @param {?} _changeDetector\n */\n function MatButtonToggleGroup(_changeDetector) {\n var _this = _super.call(this) || this;\n _this._changeDetector = _changeDetector;\n /**\n * The value for the button toggle group. Should match currently selected button toggle.\n */\n _this._value = null;\n /**\n * The HTML name attribute applied to toggles in this group.\n */\n _this._name = \"mat-button-toggle-group-\" + _uniqueIdCounter++;\n /**\n * Whether the button toggle group should be vertical.\n */\n _this._vertical = false;\n /**\n * The currently selected button toggle, should match the value.\n */\n _this._selected = null;\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 _this._controlValueAccessorChangeFn = function () { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n */\n _this._onTouched = function () { };\n /**\n * Event emitted when the group's value changes.\n */\n _this.change = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatButtonToggleGroup.prototype, \"name\", {\n /**\n * `name` attribute for the underlying `input` element.\n * @return {?}\n */\n get: function () {\n return this._name;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._name = value;\n this._updateButtonToggleNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"vertical\", {\n /**\n * Whether the toggle group is vertical.\n * @return {?}\n */\n get: function () {\n return this._vertical;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"value\", {\n /**\n * Value of the toggle group.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (this._value != newValue) {\n this._value = newValue;\n this._updateSelectedButtonToggleFromValue();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"selected\", {\n /**\n * Whether the toggle group is selected.\n * @return {?}\n */\n get: function () {\n return this._selected;\n },\n /**\n * @param {?} selected\n * @return {?}\n */\n set: function (selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n if (selected && !selected.checked) {\n selected.checked = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._updateButtonToggleNames = function () {\n var _this = this;\n if (this._buttonToggles) {\n this._buttonToggles.forEach(function (toggle) {\n toggle.name = _this._name;\n });\n }\n };\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._updateSelectedButtonToggleFromValue = function () {\n var _this = this;\n var /** @type {?} */ isAlreadySelected = this._selected != null && this._selected.value == this._value;\n if (this._buttonToggles != null && !isAlreadySelected) {\n var /** @type {?} */ matchingButtonToggle = this._buttonToggles.filter(function (buttonToggle) { return buttonToggle.value == _this._value; })[0];\n if (matchingButtonToggle) {\n this.selected = matchingButtonToggle;\n }\n else if (this.value == null) {\n this.selected = null;\n this._buttonToggles.forEach(function (buttonToggle) {\n buttonToggle.checked = false;\n });\n }\n }\n };\n /**\n * Dispatch change event with current selection and group value.\n * @return {?}\n */\n MatButtonToggleGroup.prototype._emitChangeEvent = function () {\n var /** @type {?} */ 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 * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value Value to be set to the model.\n * @return {?}\n */\n MatButtonToggleGroup.prototype.writeValue = function (value) {\n this.value = value;\n this._changeDetector.markForCheck();\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 * @return {?}\n */\n MatButtonToggleGroup.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\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 * @return {?}\n */\n MatButtonToggleGroup.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\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 * @return {?}\n */\n MatButtonToggleGroup.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._markButtonTogglesForCheck();\n };\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._markButtonTogglesForCheck = function () {\n if (this._buttonToggles) {\n this._buttonToggles.forEach(function (toggle) { return toggle._markForCheck(); });\n }\n };\n MatButtonToggleGroup.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleGroup.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n MatButtonToggleGroup.propDecorators = {\n '_buttonToggles': [{ type: ContentChildren, args: [forwardRef(function () { return MatButtonToggle; }),] },],\n 'name': [{ type: Input },],\n 'vertical': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'change': [{ type: Output },],\n };\n return MatButtonToggleGroup;\n}(_MatButtonToggleGroupMixinBase));\n/**\n * Multiple selection button-toggle group. `ngModel` is not supported in this mode.\n */\nvar MatButtonToggleGroupMultiple = (function (_super) {\n __extends(MatButtonToggleGroupMultiple, _super);\n function MatButtonToggleGroupMultiple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Whether the button toggle group should be vertical.\n */\n _this._vertical = false;\n return _this;\n }\n Object.defineProperty(MatButtonToggleGroupMultiple.prototype, \"vertical\", {\n /**\n * Whether the toggle group is vertical.\n * @return {?}\n */\n get: function () {\n return this._vertical;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n MatButtonToggleGroupMultiple.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleGroupMultiple.ctorParameters = function () { return []; };\n MatButtonToggleGroupMultiple.propDecorators = {\n 'vertical': [{ type: Input },],\n };\n return MatButtonToggleGroupMultiple;\n}(_MatButtonToggleGroupMixinBase));\n/**\n * Single button inside of a toggle group.\n */\nvar MatButtonToggle = (function () {\n /**\n * @param {?} toggleGroup\n * @param {?} toggleGroupMultiple\n * @param {?} _changeDetectorRef\n * @param {?} _buttonToggleDispatcher\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _focusMonitor\n */\n function MatButtonToggle(toggleGroup, toggleGroupMultiple, _changeDetectorRef, _buttonToggleDispatcher, _renderer, _elementRef, _focusMonitor) {\n var _this = this;\n this._changeDetectorRef = _changeDetectorRef;\n this._buttonToggleDispatcher = _buttonToggleDispatcher;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\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 this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n /**\n * Whether or not this button toggle is checked.\n */\n this._checked = false;\n /**\n * Whether or not this button toggle is disabled.\n */\n this._disabled = false;\n /**\n * Value assigned to this button toggle.\n */\n this._value = null;\n /**\n * Whether or not the button toggle is a single selection.\n */\n this._isSingleSelector = false;\n /**\n * Unregister function for _buttonToggleDispatcher *\n */\n this._removeUniqueSelectionListener = function () { };\n /**\n * Event emitted when the group value changes.\n */\n this.change = new EventEmitter();\n this.buttonToggleGroup = toggleGroup;\n this.buttonToggleGroupMultiple = toggleGroupMultiple;\n if (this.buttonToggleGroup) {\n this._removeUniqueSelectionListener =\n _buttonToggleDispatcher.listen(function (id, name) {\n if (id != _this.id && name == _this.name) {\n _this.checked = false;\n _this._changeDetectorRef.markForCheck();\n }\n });\n this._type = 'radio';\n this.name = this.buttonToggleGroup.name;\n this._isSingleSelector = true;\n }\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 Object.defineProperty(MatButtonToggle.prototype, \"inputId\", {\n /**\n * Unique ID for the underlying `input` element.\n * @return {?}\n */\n get: function () {\n return this.id + \"-input\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"checked\", {\n /**\n * Whether the button is checked.\n * @return {?}\n */\n get: function () { return this._checked; },\n /**\n * @param {?} newCheckedState\n * @return {?}\n */\n set: function (newCheckedState) {\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 this._checked = newCheckedState;\n if (newCheckedState && this._isSingleSelector && this.buttonToggleGroup.value != this.value) {\n this.buttonToggleGroup.selected = this;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"value\", {\n /**\n * MatButtonToggleGroup reads this to assign its own value.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"disabled\", {\n /**\n * Whether the button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled || (this.buttonToggleGroup != null && this.buttonToggleGroup.disabled) ||\n (this.buttonToggleGroupMultiple != null && this.buttonToggleGroupMultiple.disabled);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatButtonToggle.prototype.ngOnInit = function () {\n if (this.id == null) {\n this.id = \"mat-button-toggle-\" + _uniqueIdCounter++;\n }\n if (this.buttonToggleGroup && this._value == this.buttonToggleGroup.value) {\n this._checked = true;\n }\n this._focusMonitor.monitor(this._elementRef.nativeElement, this._renderer, true);\n };\n /**\n * Focuses the button.\n * @return {?}\n */\n MatButtonToggle.prototype.focus = function () {\n this._inputElement.nativeElement.focus();\n };\n /**\n * Toggle the state of the current button toggle.\n * @return {?}\n */\n MatButtonToggle.prototype._toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Checks the button toggle due to an interaction with the underlying native input.\n * @param {?} event\n * @return {?}\n */\n MatButtonToggle.prototype._onInputChange = function (event) {\n event.stopPropagation();\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 var /** @type {?} */ 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 }\n else {\n this._toggle();\n }\n // Emit a change event when the native input does.\n this._emitChangeEvent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatButtonToggle.prototype._onInputClick = function (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 * @return {?}\n */\n MatButtonToggle.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatButtonToggleChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatButtonToggle.prototype.ngOnDestroy = function () {\n this._removeUniqueSelectionListener();\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 * @return {?}\n */\n MatButtonToggle.prototype._markForCheck = function () {\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 MatButtonToggle.decorators = [\n { type: Component, args: [{selector: 'mat-button-toggle',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-button-toggle-label\\\"><input #input class=\\\"mat-button-toggle-input cdk-visually-hidden\\\" [type]=\\\"_type\\\" [id]=\\\"inputId\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled || null\\\" [name]=\\\"name\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInputChange($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-button-toggle-label-content\\\"><ng-content></ng-content></div></label><div class=\\\"mat-button-toggle-focus-overlay\\\"></div>\",\n styles: [\".mat-button-toggle-group,.mat-button-toggle-standalone{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);position:relative;display:inline-flex;flex-direction:row;border-radius:2px;cursor:pointer;white-space:nowrap;overflow:hidden}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle-disabled .mat-button-toggle-label-content{cursor:default}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.mat-button-toggle-label-content{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;cursor:pointer}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggle.ctorParameters = function () { return [\n { type: MatButtonToggleGroup, decorators: [{ type: Optional },] },\n { type: MatButtonToggleGroupMultiple, decorators: [{ type: Optional },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: FocusMonitor, },\n ]; };\n MatButtonToggle.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n 'id': [{ type: Input },],\n 'name': [{ type: Input },],\n 'checked': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'change': [{ type: Output },],\n };\n return MatButtonToggle;\n}());\n\nvar MatButtonToggleModule = (function () {\n function MatButtonToggleModule() {\n }\n MatButtonToggleModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleModule.ctorParameters = function () { return []; };\n return MatButtonToggleModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatButtonToggleGroupBase, _MatButtonToggleGroupMixinBase, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle, MatButtonToggleModule };\n//# sourceMappingURL=button-toggle.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, Directive, Input, NgModule, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardContent = (function () {\n function MatCardContent() {\n }\n MatCardContent.decorators = [\n { type: Directive, args: [{\n selector: 'mat-card-content',\n host: { 'class': 'mat-card-content' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardContent.ctorParameters = function () { return []; };\n return MatCardContent;\n}());\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardTitle = (function () {\n function MatCardTitle() {\n }\n MatCardTitle.decorators = [\n { type: Directive, args: [{\n selector: \"mat-card-title, [mat-card-title], [matCardTitle]\",\n host: {\n 'class': 'mat-card-title'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardTitle.ctorParameters = function () { return []; };\n return MatCardTitle;\n}());\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardSubtitle = (function () {\n function MatCardSubtitle() {\n }\n MatCardSubtitle.decorators = [\n { type: Directive, args: [{\n selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\",\n host: {\n 'class': 'mat-card-subtitle'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardSubtitle.ctorParameters = function () { return []; };\n return MatCardSubtitle;\n}());\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardActions = (function () {\n function MatCardActions() {\n /**\n * Position of the actions inside the card.\n */\n this.align = 'start';\n }\n MatCardActions.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatCardActions.ctorParameters = function () { return []; };\n MatCardActions.propDecorators = {\n 'align': [{ type: Input },],\n };\n return MatCardActions;\n}());\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardFooter = (function () {\n function MatCardFooter() {\n }\n MatCardFooter.decorators = [\n { type: Directive, args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-card-footer' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardFooter.ctorParameters = function () { return []; };\n return MatCardFooter;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardImage = (function () {\n function MatCardImage() {\n }\n MatCardImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-card-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardImage.ctorParameters = function () { return []; };\n return MatCardImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardSmImage = (function () {\n function MatCardSmImage() {\n }\n MatCardSmImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-card-sm-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardSmImage.ctorParameters = function () { return []; };\n return MatCardSmImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardMdImage = (function () {\n function MatCardMdImage() {\n }\n MatCardMdImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-card-md-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardMdImage.ctorParameters = function () { return []; };\n return MatCardMdImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardLgImage = (function () {\n function MatCardLgImage() {\n }\n MatCardLgImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-card-lg-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardLgImage.ctorParameters = function () { return []; };\n return MatCardLgImage;\n}());\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardXlImage = (function () {\n function MatCardXlImage() {\n }\n MatCardXlImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-card-xl-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardXlImage.ctorParameters = function () { return []; };\n return MatCardXlImage;\n}());\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardAvatar = (function () {\n function MatCardAvatar() {\n }\n MatCardAvatar.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-card-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardAvatar.ctorParameters = function () { return []; };\n return MatCardAvatar;\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 */\nvar MatCard = (function () {\n function MatCard() {\n }\n MatCard.decorators = [\n { type: Component, args: [{selector: 'mat-card',\n exportAs: 'matCard',\n template: \"<ng-content></ng-content><ng-content select=\\\"mat-card-footer\\\"></ng-content>\",\n styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:24px;border-radius:2px}.mat-card:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-card{outline:solid 1px}}.mat-card-flat{box-shadow:none}.mat-card-actions,.mat-card-content,.mat-card-subtitle,.mat-card-title{display:block;margin-bottom:16px}.mat-card-actions{margin-left:-16px;margin-right:-16px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 48px);margin:0 -24px 16px -24px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-footer{display:block;margin:0 -24px -24px -24px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button{margin:0 4px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header-text{margin:0 8px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0}.mat-card-lg-image,.mat-card-md-image,.mat-card-sm-image{margin:-8px 0}.mat-card-title-group{display:flex;justify-content:space-between;margin:0 -8px}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}@media (max-width:600px){.mat-card{padding:24px 16px}.mat-card-actions{margin-left:-8px;margin-right:-8px}.mat-card-image{width:calc(100% + 32px);margin:16px -16px}.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}.mat-card-header{margin:-8px 0 0 0}.mat-card-footer{margin-left:-16px;margin-right:-16px}}.mat-card-content>:first-child,.mat-card>:first-child{margin-top:0}.mat-card-content>:last-child:not(.mat-card-footer),.mat-card>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-24px}.mat-card>.mat-card-actions:last-child{margin-bottom:-16px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child{margin-left:0;margin-right:0}.mat-card-subtitle:not(:first-child),.mat-card-title:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCard.ctorParameters = function () { return []; };\n return MatCard;\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 */\nvar MatCardHeader = (function () {\n function MatCardHeader() {\n }\n MatCardHeader.decorators = [\n { type: Component, args: [{selector: 'mat-card-header',\n template: \"<ng-content select=\\\"[mat-card-avatar], [matCardAvatar]\\\"></ng-content><div class=\\\"mat-card-header-text\\\"><ng-content select=\\\"mat-card-title, mat-card-subtitle, [mat-card-title], [mat-card-subtitle]\\\"></ng-content></div><ng-content></ng-content>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-header' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardHeader.ctorParameters = function () { return []; };\n return MatCardHeader;\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 */\nvar MatCardTitleGroup = (function () {\n function MatCardTitleGroup() {\n }\n MatCardTitleGroup.decorators = [\n { type: Component, args: [{selector: 'mat-card-title-group',\n template: \"<div><ng-content select=\\\"mat-card-title, mat-card-subtitle, [mat-card-title], [mat-card-subtitle]\\\"></ng-content></div><ng-content select=\\\"img\\\"></ng-content><ng-content></ng-content>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-title-group' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardTitleGroup.ctorParameters = function () { return []; };\n return MatCardTitleGroup;\n}());\n\nvar MatCardModule = (function () {\n function MatCardModule() {\n }\n MatCardModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatCardModule.ctorParameters = function () { return []; };\n return MatCardModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardImage, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardXlImage, MatCardAvatar, MatCard, MatCardHeader, MatCardTitleGroup, MatCardModule };\n//# sourceMappingURL=card.es5.js.map\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 */\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Input, NgModule, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n// Increasing integer for generating unique ids for checkbox components.\nvar nextUniqueId = 0;\n/**\n * Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * \\@docs-private\n */\nvar MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatCheckbox; }),\n multi: true\n};\nvar TransitionCheckState = {};\nTransitionCheckState.Init = 0;\nTransitionCheckState.Checked = 1;\nTransitionCheckState.Unchecked = 2;\nTransitionCheckState.Indeterminate = 3;\nTransitionCheckState[TransitionCheckState.Init] = \"Init\";\nTransitionCheckState[TransitionCheckState.Checked] = \"Checked\";\nTransitionCheckState[TransitionCheckState.Unchecked] = \"Unchecked\";\nTransitionCheckState[TransitionCheckState.Indeterminate] = \"Indeterminate\";\n/**\n * Change event object emitted by MatCheckbox.\n */\nvar MatCheckboxChange = (function () {\n function MatCheckboxChange() {\n }\n return MatCheckboxChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatCheckboxBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatCheckboxBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatCheckboxBase;\n}());\nvar _MatCheckboxMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatCheckboxBase)), 'accent'));\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 */\nvar MatCheckbox = (function (_super) {\n __extends(MatCheckbox, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _changeDetectorRef\n * @param {?} _focusMonitor\n * @param {?} tabIndex\n */\n function MatCheckbox(renderer, elementRef, _changeDetectorRef, _focusMonitor, tabIndex) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._focusMonitor = _focusMonitor;\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 _this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n _this.ariaLabelledby = null;\n _this._uniqueId = \"mat-checkbox-\" + ++nextUniqueId;\n /**\n * A unique id for the checkbox input. If none is supplied, it will be auto-generated.\n */\n _this.id = _this._uniqueId;\n /**\n * Whether the label should appear after or before the checkbox. Defaults to 'after'\n */\n _this.labelPosition = 'after';\n /**\n * Name value will be applied to the input element if present\n */\n _this.name = null;\n /**\n * Event emitted when the checkbox's `checked` value changes.\n */\n _this.change = new EventEmitter();\n /**\n * Event emitted when the checkbox's `indeterminate` value changes.\n */\n _this.indeterminateChange = new EventEmitter();\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * \\@docs-private\n */\n _this.onTouched = function () { };\n _this._currentAnimationClass = '';\n _this._currentCheckState = TransitionCheckState.Init;\n _this._checked = false;\n _this._indeterminate = false;\n _this._controlValueAccessorChangeFn = function () { };\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatCheckbox.prototype, \"inputId\", {\n /**\n * Returns the unique id for the visual hidden input.\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"required\", {\n /**\n * Whether the checkbox is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"align\", {\n /**\n * Whether or not the checkbox should appear before or after the label.\n * @deprecated\n * @return {?}\n */\n get: function () {\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 * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCheckbox.prototype.ngAfterViewInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatCheckbox.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n };\n Object.defineProperty(MatCheckbox.prototype, \"checked\", {\n /**\n * Whether the checkbox is checked.\n * @return {?}\n */\n get: function () {\n return this._checked;\n },\n /**\n * @param {?} checked\n * @return {?}\n */\n set: function (checked) {\n if (checked != this.checked) {\n this._checked = checked;\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"indeterminate\", {\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 * @return {?}\n */\n get: function () {\n return this._indeterminate;\n },\n /**\n * @param {?} indeterminate\n * @return {?}\n */\n set: function (indeterminate) {\n var /** @type {?} */ changed = indeterminate != this._indeterminate;\n this._indeterminate = indeterminate;\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n }\n else {\n this._transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCheckbox.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * Method being called whenever the label text changes.\n * @return {?}\n */\n MatCheckbox.prototype._onLabelTextChange = function () {\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 * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value Value to be set to the model.\n * @return {?}\n */\n MatCheckbox.prototype.writeValue = function (value) {\n this.checked = !!value;\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 * @return {?}\n */\n MatCheckbox.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\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 * @return {?}\n */\n MatCheckbox.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\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 * @return {?}\n */\n MatCheckbox.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @param {?} newState\n * @return {?}\n */\n MatCheckbox.prototype._transitionCheckState = function (newState) {\n var /** @type {?} */ oldState = this._currentCheckState;\n var /** @type {?} */ renderer = this._renderer;\n var /** @type {?} */ elementRef = this._elementRef;\n if (oldState === newState) {\n return;\n }\n if (this._currentAnimationClass.length > 0) {\n renderer.removeClass(elementRef.nativeElement, this._currentAnimationClass);\n }\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\n this._currentCheckState = newState;\n if (this._currentAnimationClass.length > 0) {\n renderer.addClass(elementRef.nativeElement, this._currentAnimationClass);\n }\n };\n /**\n * @return {?}\n */\n MatCheckbox.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatCheckboxChange();\n event.source = this;\n event.checked = this.checked;\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 * @param {?} focusOrigin\n * @return {?}\n */\n MatCheckbox.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n this._removeFocusRipple();\n this.onTouched();\n }\n };\n /**\n * Toggles the `checked` state of the checkbox.\n * @return {?}\n */\n MatCheckbox.prototype.toggle = function () {\n this.checked = !this.checked;\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 * @return {?}\n */\n MatCheckbox.prototype._onInputClick = function (event) {\n var _this = this;\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 this._removeFocusRipple();\n if (!this.disabled) {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this._indeterminate) {\n Promise.resolve().then(function () {\n _this._indeterminate = false;\n _this.indeterminateChange.emit(_this._indeterminate);\n });\n }\n this.toggle();\n this._transitionCheckState(this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\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 }\n };\n /**\n * Focuses the checkbox.\n * @return {?}\n */\n MatCheckbox.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatCheckbox.prototype._onInteractionEvent = function (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 * @param {?} oldState\n * @param {?} newState\n * @return {?}\n */\n MatCheckbox.prototype._getAnimationClassForCheckStateTransition = function (oldState, newState) {\n var /** @type {?} */ animSuffix = '';\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 }\n else if (newState == TransitionCheckState.Indeterminate) {\n animSuffix = 'unchecked-indeterminate';\n }\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 return \"mat-checkbox-anim-\" + animSuffix;\n };\n /**\n * Fades out the focus state ripple.\n * @return {?}\n */\n MatCheckbox.prototype._removeFocusRipple = function () {\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n };\n MatCheckbox.decorators = [\n { type: Component, args: [{selector: 'mat-checkbox',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-checkbox-layout\\\" #label><div class=\\\"mat-checkbox-inner-container\\\" [class.mat-checkbox-inner-container-no-side-margin]=\\\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\\\"><input #input class=\\\"mat-checkbox-input cdk-visually-hidden\\\" type=\\\"checkbox\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [checked]=\\\"checked\\\" [attr.value]=\\\"value\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [tabIndex]=\\\"tabIndex\\\" [indeterminate]=\\\"indeterminate\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInteractionEvent($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div matRipple class=\\\"mat-checkbox-ripple\\\" [matRippleTrigger]=\\\"label\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"true\\\"></div><div class=\\\"mat-checkbox-frame\\\"></div><div class=\\\"mat-checkbox-background\\\"><svg version=\\\"1.1\\\" focusable=\\\"false\\\" class=\\\"mat-checkbox-checkmark\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" xml:space=\\\"preserve\\\"><path class=\\\"mat-checkbox-checkmark-path\\\" fill=\\\"none\\\" stroke=\\\"white\\\" d=\\\"M4.1,12.7 9,17.6 20.3,6.3\\\"/></svg><div class=\\\"mat-checkbox-mixedmark\\\"></div></div></div><span class=\\\"mat-checkbox-label\\\" #checkboxLabel (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><span style=\\\"display:none\\\">&nbsp;</span><ng-content></ng-content></span></label>\",\n styles: [\"@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.91026}50%{animation-timing-function:cubic-bezier(0,0,.2,.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0,0,0,1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(.4,0,1,1);stroke-dashoffset:0}to{stroke-dashoffset:-22.91026}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}100%,32.8%{opacity:0;transform:scaleX(0)}}.mat-checkbox-checkmark,.mat-checkbox-mixedmark{width:calc(100% - 4px)}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);cursor:pointer}.mat-checkbox-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-inner-container{display:inline-block;height:20px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:20px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0,0,.2,.1);border-width:2px;border-style:solid}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0,0,.2,.1),opacity 90ms cubic-bezier(0,0,.2,.1)}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.91026;stroke-dasharray:22.91026;stroke-width:2.66667px}.mat-checkbox-mixedmark{height:2px;opacity:0;transform:scaleX(0) rotate(0)}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0s mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0s mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:.3s linear 0s mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox-ripple{position:absolute;left:-15px;top:-15px;right:-15px;bottom:-15px;border-radius:50%;z-index:1;pointer-events:none}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckbox.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: FocusMonitor, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatCheckbox.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'id': [{ type: Input },],\n 'required': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'name': [{ type: Input },],\n 'change': [{ type: Output },],\n 'indeterminateChange': [{ type: Output },],\n 'value': [{ type: Input },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n 'checked': [{ type: Input },],\n 'indeterminate': [{ type: Input },],\n };\n return MatCheckbox;\n}(_MatCheckboxMixinBase));\n\nvar _MatCheckboxRequiredValidator = CheckboxRequiredValidator;\nvar MAT_CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(function () { return MatCheckboxRequiredValidator; }),\n multi: true\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 */\nvar MatCheckboxRequiredValidator = (function (_super) {\n __extends(MatCheckboxRequiredValidator, _super);\n function MatCheckboxRequiredValidator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatCheckboxRequiredValidator.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckboxRequiredValidator.ctorParameters = function () { return []; };\n return MatCheckboxRequiredValidator;\n}(_MatCheckboxRequiredValidator));\n\nvar MatCheckboxModule = (function () {\n function MatCheckboxModule() {\n }\n MatCheckboxModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatRippleModule, MatCommonModule, ObserversModule, A11yModule],\n exports: [MatCheckbox, MatCheckboxRequiredValidator, MatCommonModule],\n declarations: [MatCheckbox, MatCheckboxRequiredValidator],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckboxModule.ctorParameters = function () { return []; };\n return MatCheckboxModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, TransitionCheckState, MatCheckboxChange, MatCheckboxBase, _MatCheckboxMixinBase, MatCheckbox, MatCheckboxModule, _MatCheckboxRequiredValidator, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckboxRequiredValidator };\n//# sourceMappingURL=checkbox.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, Self, ViewEncapsulation } from '@angular/core';\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, DELETE, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith } from '@angular/cdk/rxjs';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { mixinColor, mixinDisabled } from '@angular/material/core';\n\n/**\n * Event object emitted by MatChip when selected or deselected.\n */\nvar MatChipSelectionChange = (function () {\n /**\n * @param {?} source\n * @param {?} selected\n * @param {?=} isUserInput\n */\n function MatChipSelectionChange(source, selected, isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.source = source;\n this.selected = selected;\n this.isUserInput = isUserInput;\n }\n return MatChipSelectionChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatChipBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatChipBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatChipBase;\n}());\nvar _MatChipMixinBase = mixinColor(mixinDisabled(MatChipBase), 'primary');\n/**\n * Dummy directive to add CSS class to basic chips.\n * \\@docs-private\n */\nvar MatBasicChip = (function () {\n function MatBasicChip() {\n }\n MatBasicChip.decorators = [\n { type: Directive, args: [{\n selector: \"mat-basic-chip, [mat-basic-chip]\",\n host: { 'class': 'mat-basic-chip' },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatBasicChip.ctorParameters = function () { return []; };\n return MatBasicChip;\n}());\n/**\n * Material design styled Chip component. Used inside the MatChipList component.\n */\nvar MatChip = (function (_super) {\n __extends(MatChip, _super);\n /**\n * @param {?} renderer\n * @param {?} _elementRef\n */\n function MatChip(renderer, _elementRef) {\n var _this = _super.call(this, renderer, _elementRef) || this;\n _this._elementRef = _elementRef;\n _this._selected = false;\n _this._selectable = true;\n _this._removable = true;\n /**\n * Whether the chip has focus.\n */\n _this._hasFocus = false;\n /**\n * Emits when the chip is focused.\n */\n _this._onFocus = new Subject();\n /**\n * Emits when the chip is blured.\n */\n _this._onBlur = new Subject();\n /**\n * Emitted when the chip is selected or deselected.\n */\n _this.selectionChange = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n */\n _this.destroyed = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n */\n _this.destroy = _this.destroyed;\n /**\n * Emitted when a chip is to be removed.\n */\n _this.removed = new EventEmitter();\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n */\n _this.onRemove = _this.removed;\n return _this;\n }\n Object.defineProperty(MatChip.prototype, \"selected\", {\n /**\n * Whether the chip is selected.\n * @return {?}\n */\n get: function () {\n return this._selected;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceBooleanProperty(value);\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"value\", {\n /**\n * The value of the chip. Defaults to the content inside <mat-chip> tags.\n * @return {?}\n */\n get: function () {\n return this._value != undefined\n ? this._value\n : this._elementRef.nativeElement.textContent;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n this._value = newValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"selectable\", {\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 * @return {?}\n */\n get: function () {\n return this._selectable;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selectable = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"removable\", {\n /**\n * Determines whether or not the chip displays the remove styling and emits (remove) events.\n * @return {?}\n */\n get: function () {\n return this._removable;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._removable = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"ariaSelected\", {\n /**\n * @return {?}\n */\n get: function () {\n return this.selectable ? this.selected.toString() : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatChip.prototype.ngOnDestroy = function () {\n this.destroyed.emit({ chip: this });\n };\n /**\n * Selects the chip.\n * @return {?}\n */\n MatChip.prototype.select = function () {\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 * @return {?}\n */\n MatChip.prototype.deselect = function () {\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 * @return {?}\n */\n MatChip.prototype.selectViaInteraction = function () {\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 * @param {?=} isUserInput\n * @return {?}\n */\n MatChip.prototype.toggleSelected = function (isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this._selected = !this.selected;\n this.selectionChange.emit({\n source: this,\n isUserInput: isUserInput,\n selected: this._selected\n });\n return this.selected;\n };\n /**\n * Allows for programmatic focusing of the chip.\n * @return {?}\n */\n MatChip.prototype.focus = function () {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({ chip: this });\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 * @return {?}\n */\n MatChip.prototype.remove = function () {\n if (this.removable) {\n this.removed.emit({ chip: this });\n }\n };\n /**\n * Ensures events fire properly upon click.\n * @param {?} event\n * @return {?}\n */\n MatChip.prototype._handleClick = function (event) {\n // Check disabled\n if (this.disabled) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.focus();\n };\n /**\n * Handle custom key presses.\n * @param {?} event\n * @return {?}\n */\n MatChip.prototype._handleKeydown = function (event) {\n if (this.disabled) {\n return;\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 // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n };\n /**\n * @return {?}\n */\n MatChip.prototype._blur = function () {\n this._hasFocus = false;\n this._onBlur.next({ chip: this });\n };\n MatChip.decorators = [\n { type: Directive, args: [{\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 ];\n /**\n * @nocollapse\n */\n MatChip.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatChip.propDecorators = {\n 'selected': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selectable': [{ type: Input },],\n 'removable': [{ type: Input },],\n 'selectionChange': [{ type: Output },],\n 'destroyed': [{ type: Output },],\n 'destroy': [{ type: Output },],\n 'removed': [{ type: Output },],\n 'onRemove': [{ type: Output, args: ['remove',] },],\n };\n return MatChip;\n}(_MatChipMixinBase));\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 */\nvar MatChipRemove = (function () {\n /**\n * @param {?} _parentChip\n */\n function MatChipRemove(_parentChip) {\n this._parentChip = _parentChip;\n }\n /**\n * Calls the parent chip's public `remove()` method if applicable.\n * @return {?}\n */\n MatChipRemove.prototype._handleClick = function () {\n if (this._parentChip.removable) {\n this._parentChip.remove();\n }\n };\n MatChipRemove.decorators = [\n { type: Directive, args: [{\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-chip-remove',\n '(click)': '_handleClick($event)',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipRemove.ctorParameters = function () { return [\n { type: MatChip, },\n ]; };\n return MatChipRemove;\n}());\n\n// Increasing integer for generating unique ids for chip-list components.\nvar nextUniqueId = 0;\n/**\n * Change event object that is emitted when the chip list value has changed.\n */\nvar MatChipListChange = (function () {\n /**\n * @param {?} source\n * @param {?} value\n */\n function MatChipListChange(source, value) {\n this.source = source;\n this.value = value;\n }\n return MatChipListChange;\n}());\n/**\n * A material design chips component (named ChipList for it's similarity to the List component).\n */\nvar MatChipList = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} ngControl\n */\n function MatChipList(_renderer, _elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, ngControl) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n this.controlType = 'mat-chip-list';\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 this.stateChanges = new Subject();\n /**\n * When a chip is destroyed, we track the index so we can focus the appropriate next chip.\n */\n this._lastDestroyedIndex = null;\n /**\n * Track which chips we're listening to for focus/destruction.\n */\n this._chipSet = new WeakMap();\n /**\n * Subscription to tabbing out from the chip list.\n */\n this._tabOutSubscription = Subscription.EMPTY;\n /**\n * Whether or not the chip is selectable.\n */\n this._selectable = true;\n /**\n * Whether the component is in multiple selection mode.\n */\n this._multiple = false;\n /**\n * Uid of the chip list\n */\n this._uid = \"mat-chip-list-\" + nextUniqueId++;\n /**\n * Whether this is required\n */\n this._required = false;\n /**\n * Whether this is disabled\n */\n this._disabled = false;\n /**\n * Tab index for the chip list.\n */\n this._tabIndex = 0;\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n */\n this._userTabIndex = null;\n /**\n * Function when touched\n */\n this._onTouched = function () { };\n /**\n * Function when changed\n */\n this._onChange = function () { };\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n */\n this._compareWith = function (o1, o2) { return o1 === o2; };\n /**\n * Orientation of the chip list.\n */\n this.ariaOrientation = 'horizontal';\n /**\n * Event emitted when the selected chip list value has been changed by the user.\n */\n this.change = new EventEmitter();\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 this.valueChange = new EventEmitter();\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n Object.defineProperty(MatChipList.prototype, \"selected\", {\n /**\n * The array of selected chips inside chip list.\n * @return {?}\n */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"multiple\", {\n /**\n * Whether the user should be allowed to select multiple chips.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._multiple = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"compareWith\", {\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 * @return {?}\n */\n get: function () { return this._compareWith; },\n /**\n * @param {?} fn\n * @return {?}\n */\n set: function (fn) {\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"value\", {\n /**\n * Required for FormFieldControl\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n this.writeValue(newValue);\n this._value = newValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"id\", {\n /**\n * @return {?}\n */\n get: function () { return this._id || this._uid; },\n /**\n * Required for FormFieldControl. The ID of the chip list\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._id = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"required\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._required;\n },\n /**\n * Required for FormFieldControl. Whether the chip list is required.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"placeholder\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n },\n /**\n * For FormFieldControl. Use chip input's placholder if there's a chip input\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"focused\", {\n /**\n * Whether any chips or the matChipInput inside of this chip-list has focus.\n * @return {?}\n */\n get: function () {\n return this.chips.some(function (chip) { return chip._hasFocus; }) ||\n (this._chipInput && this._chipInput.focused);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"empty\", {\n /**\n * Whether this chip-list contains no chips and no matChipInput.\n * @return {?}\n */\n get: function () {\n return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () {\n return this.empty;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"disabled\", {\n /**\n * Whether this chip-list is disabled.\n * @return {?}\n */\n get: function () { return this.ngControl ? this.ngControl.disabled : this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"errorState\", {\n /**\n * Whether the chip list is in an error state.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ isInvalid = this.ngControl && this.ngControl.invalid;\n var /** @type {?} */ isTouched = this.ngControl && this.ngControl.touched;\n var /** @type {?} */ isSubmitted = (this._parentFormGroup && this._parentFormGroup.submitted) ||\n (this._parentForm && this._parentForm.submitted);\n return !!(isInvalid && (isTouched || isSubmitted));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"selectable\", {\n /**\n * Whether or not this chip is selectable. When a chip is not selectable,\n * its selected state is always ignored.\n * @return {?}\n */\n get: function () { return this._selectable; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._selectable = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"tabIndex\", {\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._userTabIndex = value;\n this._tabIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipSelectionChanges\", {\n /**\n * Combined stream of all of the child chips' selection change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip.selectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipFocusChanges\", {\n /**\n * Combined stream of all of the child chips' focus change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip._onFocus; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipBlurChanges\", {\n /**\n * Combined stream of all of the child chips' blur change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip._onBlur; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipRemoveChanges\", {\n /**\n * Combined stream of all of the child chips' remove change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip.destroy; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatChipList.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._keyManager = new FocusKeyManager(this.chips).withWrap();\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(function () {\n _this._tabIndex = -1;\n setTimeout(function () { return _this._tabIndex = _this._userTabIndex || 0; });\n });\n // When the list changes, re-subscribe\n this._changeSubscription = startWith.call(this.chips.changes, null).subscribe(function () {\n _this._resetChips();\n // Reset chips selected/deselected status\n _this._initializeSelection();\n // Check to see if we need to update our tab index\n _this._updateTabIndex();\n // Check to see if we have a destroyed chip and need to refocus\n _this._updateFocusForDestroyedChips();\n });\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.ngOnInit = function () {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.ngOnDestroy = function () {\n this._tabOutSubscription.unsubscribe();\n if (this._changeSubscription) {\n this._changeSubscription.unsubscribe();\n }\n this._dropSubscriptions();\n };\n /**\n * Associates an HTML input element with this chip list.\n * @param {?} inputElement\n * @return {?}\n */\n MatChipList.prototype.registerInput = function (inputElement) {\n this._chipInput = inputElement;\n };\n /**\n * @param {?} ids\n * @return {?}\n */\n MatChipList.prototype.setDescribedByIds = function (ids) { this._ariaDescribedby = ids.join(' '); };\n /**\n * @param {?} value\n * @return {?}\n */\n MatChipList.prototype.writeValue = function (value) {\n if (this.chips) {\n this._setSelectionByValue(value, false);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatChipList.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatChipList.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} disabled\n * @return {?}\n */\n MatChipList.prototype.setDisabledState = function (disabled) {\n this.disabled = disabled;\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.onContainerClick = function () {\n this.focus();\n };\n /**\n * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n * @return {?}\n */\n MatChipList.prototype.focus = function () {\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 }\n else if (this.chips.length > 0) {\n this._keyManager.setFirstItemActive();\n this.stateChanges.next();\n }\n else {\n this._focusInput();\n this.stateChanges.next();\n }\n };\n /**\n * Attempt to focus an input if we have one.\n * @return {?}\n */\n MatChipList.prototype._focusInput = function () {\n if (this._chipInput) {\n this._chipInput.focus();\n }\n };\n /**\n * Pass events to the keyboard manager. Available here for tests.\n * @param {?} event\n * @return {?}\n */\n MatChipList.prototype._keydown = function (event) {\n var /** @type {?} */ code = event.keyCode;\n var /** @type {?} */ target = (event.target);\n var /** @type {?} */ isInputEmpty = this._isInputEmpty(target);\n var /** @type {?} */ isRtl = this._dir && this._dir.value == 'rtl';\n var /** @type {?} */ isPrevKey = (code === (isRtl ? RIGHT_ARROW : LEFT_ARROW));\n var /** @type {?} */ isNextKey = (code === (isRtl ? LEFT_ARROW : RIGHT_ARROW));\n var /** @type {?} */ 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 // 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 }\n else if (isNextKey) {\n this._keyManager.setNextItemActive();\n event.preventDefault();\n }\n else {\n this._keyManager.onKeydown(event);\n }\n }\n this.stateChanges.next();\n };\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n * @return {?}\n */\n MatChipList.prototype._updateTabIndex = function () {\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 * 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 * @param {?} chip\n * @return {?}\n */\n MatChipList.prototype._updateKeyManager = function (chip) {\n var /** @type {?} */ chipIndex = 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 }\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 * Checks to see if a focus chip was recently destroyed so that we can refocus the next closest\n * one.\n * @return {?}\n */\n MatChipList.prototype._updateFocusForDestroyedChips = function () {\n var /** @type {?} */ chipsArray = this.chips;\n if (this._lastDestroyedIndex != null && chipsArray.length > 0) {\n // Check whether the destroyed chip was the last item\n var /** @type {?} */ newFocusIndex = Math.min(this._lastDestroyedIndex, chipsArray.length - 1);\n this._keyManager.setActiveItem(newFocusIndex);\n var /** @type {?} */ focusChip = this._keyManager.activeItem;\n // Focus the chip\n if (focusChip) {\n focusChip.focus();\n }\n }\n // Reset our destroyed index\n this._lastDestroyedIndex = null;\n };\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param {?} index The index to be checked.\n * @return {?} True if the index is valid for our list of chips.\n */\n MatChipList.prototype._isValidIndex = function (index) {\n return index >= 0 && index < this.chips.length;\n };\n /**\n * @param {?} element\n * @return {?}\n */\n MatChipList.prototype._isInputEmpty = function (element) {\n if (element && element.nodeName.toLowerCase() === 'input') {\n var /** @type {?} */ input = (element);\n return !input.value;\n }\n return false;\n };\n /**\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?}\n */\n MatChipList.prototype._setSelectionByValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = true; }\n this._clearSelection();\n this.chips.forEach(function (chip) { return chip.deselect(); });\n if (Array.isArray(value)) {\n value.forEach(function (currentValue) { return _this._selectValue(currentValue, isUserInput); });\n this._sortValues();\n }\n else {\n var /** @type {?} */ correspondingChip = this._selectValue(value, isUserInput);\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 this._keyManager.setActiveItem(this.chips.toArray().indexOf(correspondingChip));\n }\n }\n };\n /**\n * Finds and selects the chip based on its value.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?} Chip that has the corresponding value.\n */\n MatChipList.prototype._selectValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = true; }\n var /** @type {?} */ correspondingChip = this.chips.find(function (chip) {\n return chip.value != null && _this._compareWith(chip.value, value);\n });\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n this._selectionModel.select(correspondingChip);\n }\n return correspondingChip;\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._initializeSelection = function () {\n var _this = this;\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(function () {\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 * Deselects every chip in the list.\n * @param {?=} skip Chip that should not be deselected.\n * @return {?}\n */\n MatChipList.prototype._clearSelection = function (skip) {\n this._selectionModel.clear();\n this.chips.forEach(function (chip) {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n this.stateChanges.next();\n };\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n * @return {?}\n */\n MatChipList.prototype._sortValues = function () {\n var _this = this;\n if (this._multiple) {\n this._selectionModel.clear();\n this.chips.forEach(function (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 * @param {?=} fallbackValue\n * @return {?}\n */\n MatChipList.prototype._propagateChanges = function (fallbackValue) {\n var /** @type {?} */ valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(function (chip) { return chip.value; });\n }\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 * @return {?}\n */\n MatChipList.prototype._blur = function () {\n var _this = this;\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(function () {\n if (!_this.focused) {\n _this._markAsTouched();\n }\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 * @return {?}\n */\n MatChipList.prototype._markAsTouched = function () {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._resetChips = function () {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._dropSubscriptions = function () {\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\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 * @return {?}\n */\n MatChipList.prototype._listenToChipsSelection = function () {\n var _this = this;\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(function (event) {\n event.source.selected\n ? _this._selectionModel.select(event.source)\n : _this._selectionModel.deselect(event.source);\n // For single selection chip list, make sure the deselected value is unselected.\n if (!_this.multiple) {\n _this.chips.forEach(function (chip) {\n if (!_this._selectionModel.isSelected(chip) && chip.selected) {\n chip.deselect();\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 * @return {?}\n */\n MatChipList.prototype._listenToChipsFocus = function () {\n var _this = this;\n this._chipFocusSubscription = this.chipFocusChanges.subscribe(function (event) {\n var /** @type {?} */ chipIndex = _this.chips.toArray().indexOf(event.chip);\n if (_this._isValidIndex(chipIndex)) {\n _this._keyManager.updateActiveItemIndex(chipIndex);\n }\n _this.stateChanges.next();\n });\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(function (_) {\n _this._blur();\n _this.stateChanges.next();\n });\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._listenToChipsRemoved = function () {\n var _this = this;\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(function (event) {\n _this._updateKeyManager(event.chip);\n });\n };\n MatChipList.decorators = [\n { type: Component, args: [{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 '[class.mat-chip-list-disabled]': 'disabled',\n '[class.mat-chip-list-invalid]': 'errorState',\n '[class.mat-chip-list-required]': 'required',\n 'role': 'listbox',\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 styles: [\".mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.mat-chip:not(.mat-basic-chip){transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:24px;align-items:center;cursor:default}.mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 0 3px 8px}[dir=rtl] .mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 8px 3px 0}.mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-right:8px}[dir=rtl] .mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-left:8px}.mat-chip:not(.mat-basic-chip) .mat-chip-remove.mat-icon{width:1em;height:1em}.mat-chip:not(.mat-basic-chip):focus{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);outline:0}@media screen and (-ms-high-contrast:active){.mat-chip:not(.mat-basic-chip){outline:solid 1px}}.mat-chip-list-stacked .mat-chip-list-wrapper{display:block}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){display:block;margin:0;margin-bottom:8px}[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){margin:0;margin-bottom:8px}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child,[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child{margin-bottom:0}.mat-form-field-prefix .mat-chip-list-wrapper{margin-bottom:8px}.mat-chip-remove{margin-right:-4px;margin-left:6px;cursor:pointer}[dir=rtl] .mat-chip-remove{margin-right:6px;margin-left:-4px}input.mat-chip-input{width:150px;margin:3px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipList.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n ]; };\n MatChipList.propDecorators = {\n 'multiple': [{ type: Input },],\n 'compareWith': [{ type: Input },],\n 'value': [{ type: Input },],\n 'id': [{ type: Input },],\n 'required': [{ type: Input },],\n 'placeholder': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'ariaOrientation': [{ type: Input, args: ['aria-orientation',] },],\n 'selectable': [{ type: Input },],\n 'tabIndex': [{ type: Input },],\n 'change': [{ type: Output },],\n 'valueChange': [{ type: Output },],\n 'chips': [{ type: ContentChildren, args: [MatChip,] },],\n };\n return MatChipList;\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 */\nvar MatChipInput = (function () {\n /**\n * @param {?} _elementRef\n */\n function MatChipInput(_elementRef) {\n this._elementRef = _elementRef;\n this.focused = false;\n this._addOnBlur = false;\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 this.separatorKeyCodes = [ENTER];\n /**\n * Emitted when a chip is to be added.\n */\n this.chipEnd = new EventEmitter();\n this.placeholder = '';\n this._inputElement = this._elementRef.nativeElement;\n }\n Object.defineProperty(MatChipInput.prototype, \"chipList\", {\n /**\n * Register input for chip list\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value) {\n this._chipList = value;\n this._chipList.registerInput(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipInput.prototype, \"addOnBlur\", {\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n * @return {?}\n */\n get: function () { return this._addOnBlur; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._addOnBlur = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipInput.prototype, \"empty\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ value = this._inputElement.value;\n return value == null || value === '';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Utility method to make host definition/tests more clear.\n * @param {?=} event\n * @return {?}\n */\n MatChipInput.prototype._keydown = function (event) {\n this._emitChipEnd(event);\n };\n /**\n * Checks to see if the blur should emit the (chipEnd) event.\n * @return {?}\n */\n MatChipInput.prototype._blur = function () {\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 * @return {?}\n */\n MatChipInput.prototype._focus = function () {\n this.focused = true;\n this._chipList.stateChanges.next();\n };\n /**\n * Checks to see if the (chipEnd) event needs to be emitted.\n * @param {?=} event\n * @return {?}\n */\n MatChipInput.prototype._emitChipEnd = function (event) {\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 if (event) {\n event.preventDefault();\n }\n }\n };\n /**\n * @return {?}\n */\n MatChipInput.prototype.focus = function () { this._inputElement.focus(); };\n MatChipInput.decorators = [\n { type: Directive, args: [{\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 }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipInput.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n MatChipInput.propDecorators = {\n 'chipList': [{ type: Input, args: ['matChipInputFor',] },],\n 'addOnBlur': [{ type: Input, args: ['matChipInputAddOnBlur',] },],\n 'separatorKeyCodes': [{ type: Input, args: ['matChipInputSeparatorKeyCodes',] },],\n 'chipEnd': [{ type: Output, args: ['matChipInputTokenEnd',] },],\n 'placeholder': [{ type: Input },],\n };\n return MatChipInput;\n}());\n\nvar MatChipsModule = (function () {\n function MatChipsModule() {\n }\n MatChipsModule.decorators = [\n { type: NgModule, args: [{\n imports: [],\n exports: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip],\n declarations: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipsModule.ctorParameters = function () { return []; };\n return MatChipsModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatChipsModule, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatBasicChip, MatChip, MatChipRemove, MatChipInput };\n//# sourceMappingURL=chips.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Injector, Input, NgModule, Optional, SkipSelf, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalHost, ComponentPortal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { A11yModule, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { MatCommonModule, extendObject } from '@angular/material/core';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { RxChain, filter, first, startWith } from '@angular/cdk/rxjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { defer } from 'rxjs/observable/defer';\nimport { Subject } from 'rxjs/Subject';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nvar MatDialogConfig = (function () {\n function MatDialogConfig() {\n /**\n * The ARIA role of the dialog element.\n */\n this.role = 'dialog';\n /**\n * Custom class for the overlay pane.\n */\n this.panelClass = '';\n /**\n * Whether the dialog has a backdrop.\n */\n this.hasBackdrop = true;\n /**\n * Custom class for the backdrop,\n */\n this.backdropClass = '';\n /**\n * Whether the user can use escape or clicking outside to close a modal.\n */\n this.disableClose = false;\n /**\n * Width of the dialog.\n */\n this.width = '';\n /**\n * Height of the dialog.\n */\n this.height = '';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * Layout direction for the dialog's content.\n */\n this.direction = 'ltr';\n /**\n * ID of the element that describes the dialog.\n */\n this.ariaDescribedBy = null;\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n }\n return MatDialogConfig;\n}());\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalHost without an origin.\n * \\@docs-private\n * @return {?}\n */\nfunction throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\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 */\nvar MatDialogContainer = (function (_super) {\n __extends(MatDialogContainer, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _changeDetectorRef\n * @param {?} _document\n */\n function MatDialogContainer(_elementRef, _focusTrapFactory, _changeDetectorRef, _document) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._focusTrapFactory = _focusTrapFactory;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._document = _document;\n /**\n * Element that was focused before the dialog was opened. Save this to restore upon close.\n */\n _this._elementFocusedBeforeDialogWasOpened = null;\n /**\n * State of the dialog animation.\n */\n _this._state = 'enter';\n /**\n * Emits when an animation state changes.\n */\n _this._animationStateChanged = new EventEmitter();\n /**\n * ID of the element that should be considered as the dialog's label.\n */\n _this._ariaLabelledBy = null;\n /**\n * Whether the container is currently mid-animation.\n */\n _this._isAnimating = false;\n return _this;\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @template T\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n MatDialogContainer.prototype.attachComponentPortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachComponentPortal(portal);\n };\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @template C\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n MatDialogContainer.prototype.attachTemplatePortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachTemplatePortal(portal);\n };\n /**\n * Moves the focus inside the focus trap.\n * @return {?}\n */\n MatDialogContainer.prototype._trapFocus = function () {\n var _this = this;\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\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 this._focusTrap.focusInitialElementWhenReady().then(function (hasMovedFocus) {\n // If we didn't find any focusable elements inside the dialog, focus the\n // container so the user can't tab into other elements behind it.\n if (!hasMovedFocus) {\n _this._elementRef.nativeElement.focus();\n }\n });\n };\n /**\n * Restores focus to the element that was focused before the dialog opened.\n * @return {?}\n */\n MatDialogContainer.prototype._restoreFocus = function () {\n var /** @type {?} */ toFocus = this._elementFocusedBeforeDialogWasOpened;\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 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 * @return {?}\n */\n MatDialogContainer.prototype._savePreviouslyFocusedElement = function () {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = (this._document.activeElement);\n }\n };\n /**\n * Callback, invoked whenever an animation on the host completes.\n * @param {?} event\n * @return {?}\n */\n MatDialogContainer.prototype._onAnimationDone = function (event) {\n if (event.toState === 'enter') {\n this._trapFocus();\n }\n else if (event.toState === 'exit') {\n this._restoreFocus();\n }\n this._animationStateChanged.emit(event);\n this._isAnimating = false;\n };\n /**\n * Callback, invoked when an animation on the host starts.\n * @param {?} event\n * @return {?}\n */\n MatDialogContainer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStateChanged.emit(event);\n };\n /**\n * Starts the dialog exit animation.\n * @return {?}\n */\n MatDialogContainer.prototype._startExitAnimation = function () {\n this._state = 'exit';\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 MatDialogContainer.decorators = [\n { type: Component, args: [{selector: 'mat-dialog-container',\n template: \"<ng-template cdkPortalHost></ng-template>\",\n styles: [\".mat-dialog-container{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);display:block;padding:24px;border-radius:2px;box-sizing:border-box;overflow:auto;max-width:80vw;outline:0;width:100%;height:100%}@media screen and (-ms-high-contrast:active){.mat-dialog-container{outline:solid 1px}}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:12px 0;display:flex;flex-wrap:wrap}.mat-dialog-actions:last-child{margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button+.mat-button,.mat-dialog-actions .mat-button+.mat-raised-button,.mat-dialog-actions .mat-raised-button+.mat-button,.mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-button+.mat-raised-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:0;margin-right:8px}\"],\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]': '_ariaLabelledBy',\n '[attr.aria-describedby]': '_config?.ariaDescribedBy || null',\n '[@slideDialog]': '_state',\n '(@slideDialog.start)': '_onAnimationStart($event)',\n '(@slideDialog.done)': '_onAnimationDone($event)',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogContainer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDialogContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n };\n return MatDialogContainer;\n}(BasePortalHost));\n\n// TODO(jelbourn): resizing\n// Counter for unique dialog ids.\nvar uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nvar MatDialogRef = (function () {\n /**\n * @param {?} _overlayRef\n * @param {?} _containerInstance\n * @param {?=} id\n */\n function MatDialogRef(_overlayRef, _containerInstance, id) {\n if (id === void 0) { id = \"mat-dialog-\" + uniqueId++; }\n var _this = this;\n this._overlayRef = _overlayRef;\n this._containerInstance = _containerInstance;\n this.id = id;\n /**\n * Whether the user is allowed to close the dialog.\n */\n this.disableClose = this._containerInstance._config.disableClose;\n /**\n * Subject for notifying the user that the dialog has finished opening.\n */\n this._afterOpen = new Subject();\n /**\n * Subject for notifying the user that the dialog has finished closing.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the dialog has started closing.\n */\n this._beforeClose = new Subject();\n // Emit when opening animation completes\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'done' && event.toState === 'enter'; })\n .call(first)\n .subscribe(function () {\n _this._afterOpen.next();\n _this._afterOpen.complete();\n });\n // Dispose overlay when closing animation is complete\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })\n .call(first)\n .subscribe(function () {\n _this._overlayRef.dispose();\n _this._afterClosed.next(_this._result);\n _this._afterClosed.complete();\n _this.componentInstance = null;\n });\n }\n /**\n * Close the dialog.\n * @param {?=} dialogResult Optional result to return to the dialog opener.\n * @return {?}\n */\n MatDialogRef.prototype.close = function (dialogResult) {\n var _this = this;\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n RxChain.from(this._containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'start'; })\n .call(first)\n .subscribe(function () {\n _this._beforeClose.next(dialogResult);\n _this._beforeClose.complete();\n _this._overlayRef.detachBackdrop();\n });\n this._containerInstance._startExitAnimation();\n };\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n * @return {?}\n */\n MatDialogRef.prototype.afterOpen = function () {\n return this._afterOpen.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n * @return {?}\n */\n MatDialogRef.prototype.afterClosed = function () {\n return this._afterClosed.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog has started closing.\n * @return {?}\n */\n MatDialogRef.prototype.beforeClose = function () {\n return this._beforeClose.asObservable();\n };\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n * @return {?}\n */\n MatDialogRef.prototype.backdropClick = function () {\n return this._overlayRef.backdropClick();\n };\n /**\n * Updates the dialog's position.\n * @param {?=} position New dialog position.\n * @return {?}\n */\n MatDialogRef.prototype.updatePosition = function (position) {\n var /** @type {?} */ strategy = this._getPositionStrategy();\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n }\n else {\n strategy.centerHorizontally();\n }\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n }\n else {\n strategy.centerVertically();\n }\n this._overlayRef.updatePosition();\n return this;\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 * @return {?}\n */\n MatDialogRef.prototype.updateSize = function (width, height) {\n if (width === void 0) { width = 'auto'; }\n if (height === void 0) { height = 'auto'; }\n this._getPositionStrategy().width(width).height(height);\n this._overlayRef.updatePosition();\n return this;\n };\n /**\n * Returns whether the dialog is animating.\n * @return {?}\n */\n MatDialogRef.prototype._isAnimating = function () {\n return this._containerInstance._isAnimating;\n };\n /**\n * Fetches the position strategy object from the overlay ref.\n * @return {?}\n */\n MatDialogRef.prototype._getPositionStrategy = function () {\n return (this._overlayRef.getConfig().positionStrategy);\n };\n return MatDialogRef;\n}());\n\nvar MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n */\nvar MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-dialog-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.block(); };\n}\n/**\n * \\@docs-private\n */\nvar 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 * Service to open Material Design modal dialogs.\n */\nvar MatDialog = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _injector\n * @param {?} location\n * @param {?} _scrollStrategy\n * @param {?} _parentDialog\n */\n function MatDialog(_overlay, _injector, location, _scrollStrategy, _parentDialog) {\n var _this = this;\n this._overlay = _overlay;\n this._injector = _injector;\n this._scrollStrategy = _scrollStrategy;\n this._parentDialog = _parentDialog;\n this._openDialogsAtThisLevel = [];\n this._afterAllClosedAtThisLevel = new Subject();\n this._afterOpenAtThisLevel = new Subject();\n this._boundKeydown = this._handleKeydown.bind(this);\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 this.afterAllClosed = defer(function () { return _this.openDialogs.length ?\n _this._afterAllClosed :\n startWith.call(_this._afterAllClosed, undefined); });\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(function () { return _this.closeAll(); });\n }\n }\n Object.defineProperty(MatDialog.prototype, \"openDialogs\", {\n /**\n * Keeps track of the currently-open dialogs.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"afterOpen\", {\n /**\n * Stream that emits when a dialog has been opened.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.afterOpen : this._afterOpenAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"_afterAllClosed\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens a modal dialog containing the given component.\n * @template T\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 * @return {?} Reference to the newly-opened dialog.\n */\n MatDialog.prototype.open = function (componentOrTemplateRef, config) {\n var _this = this;\n var /** @type {?} */ inProgressDialog = this.openDialogs.find(function (dialog) { return dialog._isAnimating(); });\n // If there's a dialog that is in the process of being opened, return it instead.\n if (inProgressDialog) {\n return inProgressDialog;\n }\n config = _applyConfigDefaults(config);\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 var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ dialogContainer = this._attachDialogContainer(overlayRef, config);\n var /** @type {?} */ dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);\n if (!this.openDialogs.length) {\n document.addEventListener('keydown', this._boundKeydown);\n }\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(function () { return _this._removeOpenDialog(dialogRef); });\n this.afterOpen.next(dialogRef);\n return dialogRef;\n };\n /**\n * Closes all of the currently-open dialogs.\n * @return {?}\n */\n MatDialog.prototype.closeAll = function () {\n var /** @type {?} */ i = this.openDialogs.length;\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 * Finds an open dialog by its id.\n * @param {?} id ID to use when looking up the dialog.\n * @return {?}\n */\n MatDialog.prototype.getDialogById = function (id) {\n return this.openDialogs.find(function (dialog) { return dialog.id === id; });\n };\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to the OverlayRef for the created overlay.\n */\n MatDialog.prototype._createOverlay = function (config) {\n var /** @type {?} */ overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n };\n /**\n * Creates an overlay config from a dialog config.\n * @param {?} dialogConfig The dialog configuration.\n * @return {?} The overlay configuration.\n */\n MatDialog.prototype._getOverlayConfig = function (dialogConfig) {\n var /** @type {?} */ state$$1 = 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 });\n if (dialogConfig.backdropClass) {\n state$$1.backdropClass = dialogConfig.backdropClass;\n }\n return state$$1;\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 * @return {?} A promise resolving to a ComponentRef for the attached container.\n */\n MatDialog.prototype._attachDialogContainer = function (overlay, config) {\n var /** @type {?} */ containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef);\n var /** @type {?} */ containerRef = overlay.attach(containerPortal);\n containerRef.instance._config = config;\n return containerRef.instance;\n };\n /**\n * Attaches the user-provided component to the already-created MatDialogContainer.\n * @template T\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 * @return {?} A promise resolving to the MatDialogRef that should be returned to the user.\n */\n MatDialog.prototype._attachDialogContent = function (componentOrTemplateRef, dialogContainer, overlayRef, config) {\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 var /** @type {?} */ dialogRef = new MatDialogRef(overlayRef, dialogContainer, config.id);\n // When the dialog backdrop is clicked, we want to close it.\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(function () {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, /** @type {?} */ ((null)), /** @type {?} */ ({ $implicit: config.data, dialogRef: dialogRef })));\n }\n else {\n var /** @type {?} */ injector = this._createInjector(config, dialogRef, dialogContainer);\n var /** @type {?} */ contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n return dialogRef;\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 * @template T\n * @param {?} config Config object that is used to construct the dialog.\n * @param {?} dialogRef Reference to the dialog.\n * @param {?} dialogContainer\n * @return {?} The custom injector that can be used inside the dialog.\n */\n MatDialog.prototype._createInjector = function (config, dialogRef, dialogContainer) {\n var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatDialogRef, dialogRef);\n injectionTokens.set(MatDialogContainer, dialogContainer);\n injectionTokens.set(MAT_DIALOG_DATA, config.data);\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: of()\n });\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n };\n /**\n * Removes a dialog from the array of open dialogs.\n * @param {?} dialogRef Dialog to be removed.\n * @return {?}\n */\n MatDialog.prototype._removeOpenDialog = function (dialogRef) {\n var /** @type {?} */ index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // no open dialogs are left, call next on afterAllClosed Subject\n if (!this.openDialogs.length) {\n this._afterAllClosed.next();\n document.removeEventListener('keydown', this._boundKeydown);\n }\n }\n };\n /**\n * Handles global key presses while there are open dialogs. Closes the\n * top dialog when the user presses escape.\n * @param {?} event\n * @return {?}\n */\n MatDialog.prototype._handleKeydown = function (event) {\n var /** @type {?} */ topDialog = this.openDialogs[this.openDialogs.length - 1];\n var /** @type {?} */ canClose = topDialog ? !topDialog.disableClose : false;\n if (event.keyCode === ESCAPE && canClose) {\n topDialog.close();\n }\n };\n MatDialog.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatDialog.ctorParameters = function () { return [\n { type: Overlay, },\n { type: Injector, },\n { type: Location, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_SCROLL_STRATEGY,] },] },\n { type: MatDialog, decorators: [{ type: Optional }, { type: SkipSelf },] },\n ]; };\n return MatDialog;\n}());\n/**\n * Applies default options to the dialog config.\n * @param {?=} config Config to be modified.\n * @return {?} The new configuration object.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatDialogConfig(), config);\n}\n\n/**\n * Counter used to generate unique IDs for dialog elements.\n */\nvar dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nvar MatDialogClose = (function () {\n /**\n * @param {?} dialogRef\n */\n function MatDialogClose(dialogRef) {\n this.dialogRef = dialogRef;\n /**\n * Screenreader label for the button.\n */\n this.ariaLabel = 'Close dialog';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n MatDialogClose.prototype.ngOnChanges = function (changes) {\n var /** @type {?} */ proxiedChange = changes._matDialogClose || changes._matDialogCloseResult;\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n };\n MatDialogClose.decorators = [\n { type: Directive, args: [{\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',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogClose.ctorParameters = function () { return [\n { type: MatDialogRef, },\n ]; };\n MatDialogClose.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'dialogResult': [{ type: Input, args: ['mat-dialog-close',] },],\n '_matDialogClose': [{ type: Input, args: ['matDialogClose',] },],\n };\n return MatDialogClose;\n}());\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nvar MatDialogTitle = (function () {\n /**\n * @param {?} _container\n */\n function MatDialogTitle(_container) {\n this._container = _container;\n this.id = \"mat-dialog-title-\" + dialogElementUid++;\n }\n /**\n * @return {?}\n */\n MatDialogTitle.prototype.ngOnInit = function () {\n var _this = this;\n if (this._container && !this._container._ariaLabelledBy) {\n Promise.resolve().then(function () { return _this._container._ariaLabelledBy = _this.id; });\n }\n };\n MatDialogTitle.decorators = [\n { type: Directive, args: [{\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogTitle.ctorParameters = function () { return [\n { type: MatDialogContainer, decorators: [{ type: Optional },] },\n ]; };\n MatDialogTitle.propDecorators = {\n 'id': [{ type: Input },],\n };\n return MatDialogTitle;\n}());\n/**\n * Scrollable content container of a dialog.\n */\nvar MatDialogContent = (function () {\n function MatDialogContent() {\n }\n MatDialogContent.decorators = [\n { type: Directive, args: [{\n selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\",\n host: { 'class': 'mat-dialog-content' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogContent.ctorParameters = function () { return []; };\n return MatDialogContent;\n}());\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nvar MatDialogActions = (function () {\n function MatDialogActions() {\n }\n MatDialogActions.decorators = [\n { type: Directive, args: [{\n selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\",\n host: { 'class': 'mat-dialog-actions' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogActions.ctorParameters = function () { return []; };\n return MatDialogActions;\n}());\n\nvar MatDialogModule = (function () {\n function MatDialogModule() {\n }\n MatDialogModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogModule.ctorParameters = function () { return []; };\n return MatDialogModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDialogModule, MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog, throwMatDialogContentAlreadyAttachedError, MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogConfig, MatDialogRef };\n//# sourceMappingURL=dialog.es5.js.map\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 */\nimport { Attribute, ChangeDetectionStrategy, Component, ElementRef, Injectable, Input, NgModule, Optional, Renderer2, SecurityContext, SkipSelf, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { RxChain, catchOperator, doOperator, finallyOperator, first, map, share } from '@angular/cdk/rxjs';\nimport { Http } from '@angular/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Observable } from 'rxjs/Observable';\nimport { forkJoin } from 'rxjs/observable/forkJoin';\nimport { of } from 'rxjs/observable/of';\nimport { _throw } from 'rxjs/observable/throw';\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 * @param {?} iconName\n * @return {?}\n */\nfunction getMatIconNameNotFoundError(iconName) {\n return Error(\"Unable to find icon with the name \\\"\" + iconName + \"\\\"\");\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 * @return {?}\n */\nfunction getMatIconNoHttpProviderError() {\n return Error('Could not find Http provider for use with Angular Material icons. ' +\n 'Please include the HttpModule from @angular/http in your app imports.');\n}\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * \\@docs-private\n * @param {?} url URL that was attempted to be sanitized.\n * @return {?}\n */\nfunction getMatIconFailedToSanitizeError(url) {\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 * Configuration for an icon, including the URL and possibly the cached SVG element.\n * \\@docs-private\n */\nvar SvgIconConfig = (function () {\n /**\n * @param {?} url\n */\n function SvgIconConfig(url) {\n this.url = url;\n this.svgElement = null;\n }\n return SvgIconConfig;\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 */\nvar MatIconRegistry = (function () {\n /**\n * @param {?} _http\n * @param {?} _sanitizer\n */\n function MatIconRegistry(_http, _sanitizer) {\n this._http = _http;\n this._sanitizer = _sanitizer;\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n this._svgIconConfigs = new Map();\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 this._iconSetConfigs = new Map();\n /**\n * Cache for icons loaded by direct URLs.\n */\n this._cachedIconsByUrl = new Map();\n /**\n * In-progress icon fetches. Used to coalesce multiple requests to the same URL.\n */\n this._inProgressUrlFetches = new Map();\n /**\n * Map from font identifiers to their CSS class names. Used for icon fonts.\n */\n this._fontCssClassesByAlias = new Map();\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 this._defaultFontSetClass = 'material-icons';\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 * @return {?}\n */\n MatIconRegistry.prototype.addSvgIcon = function (iconName, url) {\n return this.addSvgIconInNamespace('', iconName, url);\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 * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconInNamespace = function (namespace, iconName, url) {\n var /** @type {?} */ key = iconKey(namespace, iconName);\n this._svgIconConfigs.set(key, new SvgIconConfig(url));\n return this;\n };\n /**\n * Registers an icon set by URL in the default namespace.\n * @param {?} url\n * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconSet = function (url) {\n return this.addSvgIconSetInNamespace('', url);\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 * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconSetInNamespace = function (namespace, url) {\n var /** @type {?} */ config = new SvgIconConfig(url);\n var /** @type {?} */ configNamespace = this._iconSetConfigs.get(namespace);\n if (configNamespace) {\n configNamespace.push(config);\n }\n else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n return this;\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 * @return {?}\n */\n MatIconRegistry.prototype.registerFontClassAlias = function (alias, className) {\n if (className === void 0) { className = alias; }\n this._fontCssClassesByAlias.set(alias, className);\n return this;\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 * @param {?} alias\n * @return {?}\n */\n MatIconRegistry.prototype.classNameForFontAlias = function (alias) {\n return this._fontCssClassesByAlias.get(alias) || alias;\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 * @return {?}\n */\n MatIconRegistry.prototype.setDefaultFontSetClass = function (className) {\n this._defaultFontSetClass = className;\n return this;\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 * @return {?}\n */\n MatIconRegistry.prototype.getDefaultFontSetClass = function () {\n return this._defaultFontSetClass;\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 * @return {?}\n */\n MatIconRegistry.prototype.getSvgIconFromUrl = function (safeUrl) {\n var _this = this;\n var /** @type {?} */ url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n if (!url) {\n throw getMatIconFailedToSanitizeError(safeUrl);\n }\n var /** @type {?} */ cachedIcon = this._cachedIconsByUrl.get(url);\n if (cachedIcon) {\n return of(cloneSvg(cachedIcon));\n }\n return RxChain.from(this._loadSvgIconFromConfig(new SvgIconConfig(url)))\n .call(doOperator, function (svg) { return _this._cachedIconsByUrl.set(/** @type {?} */ ((url)), svg); })\n .call(map, function (svg) { return cloneSvg(svg); })\n .result();\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 * @return {?}\n */\n MatIconRegistry.prototype.getNamedSvgIcon = function (name, namespace) {\n if (namespace === void 0) { namespace = ''; }\n // Return (copy of) cached icon if possible.\n var /** @type {?} */ key = iconKey(namespace, name);\n var /** @type {?} */ config = this._svgIconConfigs.get(key);\n if (config) {\n return this._getSvgFromConfig(config);\n }\n // See if we have any icon sets registered for the namespace.\n var /** @type {?} */ iconSetConfigs = this._iconSetConfigs.get(namespace);\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n return _throw(getMatIconNameNotFoundError(key));\n };\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._getSvgFromConfig = function (config) {\n if (config.svgElement) {\n // We already have the SVG element for this icon, return a copy.\n return of(cloneSvg(config.svgElement));\n }\n else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return RxChain.from(this._loadSvgIconFromConfig(config))\n .call(doOperator, function (svg) { return config.svgElement = svg; })\n .call(map, function (svg) { return cloneSvg(svg); })\n .result();\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 * @param {?} name\n * @param {?} iconSetConfigs\n * @return {?}\n */\n MatIconRegistry.prototype._getSvgFromIconSetConfigs = function (name, iconSetConfigs) {\n var _this = this;\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n var /** @type {?} */ namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\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 of(namedIcon);\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 var /** @type {?} */ iconSetFetchRequests = iconSetConfigs\n .filter(function (iconSetConfig) { return !iconSetConfig.svgElement; })\n .map(function (iconSetConfig) {\n return RxChain.from(_this._loadSvgIconSetFromConfig(iconSetConfig))\n .call(catchOperator, function (err) {\n var /** @type {?} */ url = _this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\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 of(null);\n })\n .call(doOperator, function (svg) {\n // Cache the SVG element.\n if (svg) {\n iconSetConfig.svgElement = svg;\n }\n })\n .result();\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 map.call(forkJoin.call(Observable, iconSetFetchRequests), function () {\n var /** @type {?} */ foundIcon = _this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n return foundIcon;\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 * @param {?} iconName\n * @param {?} iconSetConfigs\n * @return {?}\n */\n MatIconRegistry.prototype._extractIconWithNameFromAnySet = function (iconName, iconSetConfigs) {\n // Iterate backwards, so icon sets added later have precedence.\n for (var /** @type {?} */ i = iconSetConfigs.length - 1; i >= 0; i--) {\n var /** @type {?} */ config = iconSetConfigs[i];\n if (config.svgElement) {\n var /** @type {?} */ foundIcon = this._extractSvgIconFromSet(config.svgElement, iconName);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n };\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._loadSvgIconFromConfig = function (config) {\n var _this = this;\n return map.call(this._fetchUrl(config.url), function (svgText) { return _this._createSvgElementForSingleIcon(svgText); });\n };\n /**\n * Loads the content of the icon set URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._loadSvgIconSetFromConfig = function (config) {\n var _this = this;\n // TODO: Document that icons should only be loaded from trusted sources.\n return map.call(this._fetchUrl(config.url), function (svgText) { return _this._svgElementFromString(svgText); });\n };\n /**\n * Creates a DOM element from the given SVG string, and adds default attributes.\n * @param {?} responseText\n * @return {?}\n */\n MatIconRegistry.prototype._createSvgElementForSingleIcon = function (responseText) {\n var /** @type {?} */ svg = this._svgElementFromString(responseText);\n this._setSvgAttributes(svg);\n return svg;\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 * @param {?} iconSet\n * @param {?} iconName\n * @return {?}\n */\n MatIconRegistry.prototype._extractSvgIconFromSet = function (iconSet, iconName) {\n var /** @type {?} */ iconNode = iconSet.querySelector('#' + iconName);\n if (!iconNode) {\n return null;\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 (iconNode.tagName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(/** @type {?} */ (iconNode.cloneNode(true)));\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 (iconNode.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconNode));\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 var /** @type {?} */ svg = this._svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconNode.cloneNode(true));\n return this._setSvgAttributes(svg);\n };\n /**\n * Creates a DOM element from the given SVG string.\n * @param {?} str\n * @return {?}\n */\n MatIconRegistry.prototype._svgElementFromString = function (str) {\n // TODO: Is there a better way than innerHTML? Renderer doesn't appear to have a method for\n // creating an element from an HTML string.\n var /** @type {?} */ div = document.createElement('DIV');\n div.innerHTML = str;\n var /** @type {?} */ svg = (div.querySelector('svg'));\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n return svg;\n };\n /**\n * Converts an element into an SVG node by cloning all of its children.\n * @param {?} element\n * @return {?}\n */\n MatIconRegistry.prototype._toSvgElement = function (element) {\n var /** @type {?} */ svg = this._svgElementFromString('<svg></svg>');\n for (var /** @type {?} */ 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 return svg;\n };\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n * @param {?} svg\n * @return {?}\n */\n MatIconRegistry.prototype._setSvgAttributes = function (svg) {\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 * 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 * @param {?} safeUrl\n * @return {?}\n */\n MatIconRegistry.prototype._fetchUrl = function (safeUrl) {\n var _this = this;\n if (!this._http) {\n throw getMatIconNoHttpProviderError();\n }\n var /** @type {?} */ url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n if (!url) {\n throw getMatIconFailedToSanitizeError(safeUrl);\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 var /** @type {?} */ inProgressFetch = this._inProgressUrlFetches.get(url);\n if (inProgressFetch) {\n return inProgressFetch;\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 var /** @type {?} */ req = RxChain.from(this._http.get(url))\n .call(map, function (response) { return response.text(); })\n .call(finallyOperator, function () { return _this._inProgressUrlFetches.delete(url); })\n .call(share)\n .result();\n this._inProgressUrlFetches.set(url, req);\n return req;\n };\n MatIconRegistry.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatIconRegistry.ctorParameters = function () { return [\n { type: Http, decorators: [{ type: Optional },] },\n { type: DomSanitizer, },\n ]; };\n return MatIconRegistry;\n}());\n/**\n * \\@docs-private\n * @param {?} parentRegistry\n * @param {?} http\n * @param {?} sanitizer\n * @return {?}\n */\nfunction ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, sanitizer) {\n return parentRegistry || new MatIconRegistry(http, sanitizer);\n}\n/**\n * \\@docs-private\n */\nvar ICON_REGISTRY_PROVIDER = {\n // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one.\n provide: MatIconRegistry,\n deps: [[new Optional(), new SkipSelf(), MatIconRegistry], [new Optional(), Http], DomSanitizer],\n useFactory: ICON_REGISTRY_PROVIDER_FACTORY\n};\n/**\n * Clones an SVGElement while preserving type information.\n * @param {?} svg\n * @return {?}\n */\nfunction cloneSvg(svg) {\n return (svg.cloneNode(true));\n}\n/**\n * Returns the cache key to use for an icon namespace and name.\n * @param {?} namespace\n * @param {?} name\n * @return {?}\n */\nfunction iconKey(namespace, name) {\n return namespace + ':' + name;\n}\n\n/**\n * \\@docs-private\n */\nvar MatIconBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatIconBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatIconBase;\n}());\nvar _MatIconMixinBase = mixinColor(MatIconBase);\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 */\nvar MatIcon = (function (_super) {\n __extends(MatIcon, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _iconRegistry\n * @param {?} ariaHidden\n */\n function MatIcon(renderer, elementRef, _iconRegistry, ariaHidden) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._iconRegistry = _iconRegistry;\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 renderer.setAttribute(elementRef.nativeElement, 'aria-hidden', 'true');\n }\n return _this;\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 * @param {?} iconName\n * @return {?}\n */\n MatIcon.prototype._splitIconName = function (iconName) {\n if (!iconName) {\n return ['', ''];\n }\n var /** @type {?} */ parts = iconName.split(':');\n switch (parts.length) {\n case 1: return ['', parts[0]]; // Use default namespace.\n case 2: return (parts);\n default: throw Error(\"Invalid icon name: \\\"\" + iconName + \"\\\"\");\n }\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatIcon.prototype.ngOnChanges = function (changes) {\n var _this = this;\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 var _a = this._splitIconName(this.svgIcon), namespace = _a[0], iconName = _a[1];\n first.call(this._iconRegistry.getNamedSvgIcon(iconName, namespace)).subscribe(function (svg) { return _this._setSvgElement(svg); }, function (err) { return console.log(\"Error retrieving icon: \" + err.message); });\n }\n else {\n this._clearSvgElement();\n }\n }\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n };\n /**\n * @return {?}\n */\n MatIcon.prototype.ngOnInit = function () {\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 * @return {?}\n */\n MatIcon.prototype._usingFontIcon = function () {\n return !this.svgIcon;\n };\n /**\n * @param {?} svg\n * @return {?}\n */\n MatIcon.prototype._setSvgElement = function (svg) {\n this._clearSvgElement();\n this._renderer.appendChild(this._elementRef.nativeElement, svg);\n };\n /**\n * @return {?}\n */\n MatIcon.prototype._clearSvgElement = function () {\n var /** @type {?} */ layoutElement = this._elementRef.nativeElement;\n var /** @type {?} */ childCount = layoutElement.childNodes.length;\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 (var /** @type {?} */ i = 0; i < childCount; i++) {\n this._renderer.removeChild(layoutElement, layoutElement.childNodes[i]);\n }\n };\n /**\n * @return {?}\n */\n MatIcon.prototype._updateFontIconClasses = function () {\n if (!this._usingFontIcon()) {\n return;\n }\n var /** @type {?} */ elem = this._elementRef.nativeElement;\n var /** @type {?} */ fontSetClass = this.fontSet ?\n this._iconRegistry.classNameForFontAlias(this.fontSet) :\n this._iconRegistry.getDefaultFontSetClass();\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n this._renderer.removeClass(elem, this._previousFontSetClass);\n }\n if (fontSetClass) {\n this._renderer.addClass(elem, fontSetClass);\n }\n this._previousFontSetClass = fontSetClass;\n }\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n this._renderer.removeClass(elem, this._previousFontIconClass);\n }\n if (this.fontIcon) {\n this._renderer.addClass(elem, this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n };\n MatIcon.decorators = [\n { type: Component, args: [{template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styles: [\".mat-icon{background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatIcon.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: MatIconRegistry, },\n { type: undefined, decorators: [{ type: Attribute, args: ['aria-hidden',] },] },\n ]; };\n MatIcon.propDecorators = {\n 'svgIcon': [{ type: Input },],\n 'fontSet': [{ type: Input },],\n 'fontIcon': [{ type: Input },],\n };\n return MatIcon;\n}(_MatIconMixinBase));\n\nvar MatIconModule = (function () {\n function MatIconModule() {\n }\n MatIconModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n providers: [ICON_REGISTRY_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatIconModule.ctorParameters = function () { return []; };\n return MatIconModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatIconModule, MatIconBase, _MatIconMixinBase, MatIcon, getMatIconNameNotFoundError, getMatIconNoHttpProviderError, getMatIconFailedToSanitizeError, MatIconRegistry, ICON_REGISTRY_PROVIDER_FACTORY, ICON_REGISTRY_PROVIDER };\n//# sourceMappingURL=icon.es5.js.map\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 */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Input, NgModule, NgZone, Optional, Output, Renderer2, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { first } from 'rxjs/operator/first';\nimport { Subject } from 'rxjs/Subject';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { first as first$1 } from '@angular/cdk/rxjs';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs/Subscription';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Function that attempts to coerce a value to a date using a DateAdapter. Date instances, null,\n * and undefined will be passed through. Empty strings will be coerced to null. Valid ISO 8601\n * strings (https://www.ietf.org/rfc/rfc3339.txt) will be coerced to dates. All other values will\n * result in an error being thrown.\n * @throws Throws when the value cannot be coerced.\n * @template D\n * @param {?} adapter The date adapter to use for coercion\n * @param {?} value The value to coerce.\n * @return {?} A date object coerced from the value.\n */\nfunction coerceDateProperty(adapter, value) {\n if (typeof value === 'string') {\n if (value == '') {\n value = null;\n }\n else {\n value = adapter.fromIso8601(value) || value;\n }\n }\n if (value == null || adapter.isDateInstance(value)) {\n return value;\n }\n throw Error(\"Datepicker: Value must be either a date object recognized by the DateAdapter or \" +\n (\"an ISO 8601 string. Instead got: \" + value));\n}\n\n/**\n * \\@docs-private\n * @param {?} provider\n * @return {?}\n */\nfunction createMissingDateImplError(provider) {\n return Error(\"MatDatepicker: No provider found for \" + provider + \". You must import one of the following \" +\n \"modules at your application root: MatNativeDateModule, or provide a custom implementation.\");\n}\n\n/**\n * Datepicker data that requires internationalization.\n */\nvar MatDatepickerIntl = (function () {\n function 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 this.changes = new Subject();\n /**\n * A label for the calendar popup (used by screen readers).\n */\n this.calendarLabel = 'Calendar';\n /**\n * A label for the button used to open the calendar popup (used by screen readers).\n */\n this.openCalendarLabel = 'Open calendar';\n /**\n * A label for the previous month button (used by screen readers).\n */\n this.prevMonthLabel = 'Previous month';\n /**\n * A label for the next month button (used by screen readers).\n */\n this.nextMonthLabel = 'Next month';\n /**\n * A label for the previous year button (used by screen readers).\n */\n this.prevYearLabel = 'Previous year';\n /**\n * A label for the next year button (used by screen readers).\n */\n this.nextYearLabel = 'Next year';\n /**\n * A label for the 'switch to month view' button (used by screen readers).\n */\n this.switchToMonthViewLabel = 'Change to month view';\n /**\n * A label for the 'switch to year view' button (used by screen readers).\n */\n this.switchToYearViewLabel = 'Change to year view';\n }\n MatDatepickerIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerIntl.ctorParameters = function () { return []; };\n return MatDatepickerIntl;\n}());\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * \\@docs-private\n */\nvar MatCalendarCell = (function () {\n /**\n * @param {?} value\n * @param {?} displayValue\n * @param {?} ariaLabel\n * @param {?} enabled\n */\n function MatCalendarCell(value, displayValue, ariaLabel, enabled) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n }\n return MatCalendarCell;\n}());\n/**\n * An internal component used to display calendar data in a table.\n * \\@docs-private\n */\nvar MatCalendarBody = (function () {\n function MatCalendarBody() {\n /**\n * The number of columns in the table.\n */\n this.numCols = 7;\n /**\n * Whether to allow selection of disabled cells.\n */\n this.allowDisabledSelection = false;\n /**\n * The cell number of the active cell in the table.\n */\n this.activeCell = 0;\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 this.cellAspectRatio = 1;\n /**\n * Emits when a new value is selected.\n */\n this.selectedValueChange = new EventEmitter();\n }\n /**\n * @param {?} cell\n * @return {?}\n */\n MatCalendarBody.prototype._cellClicked = function (cell) {\n if (!this.allowDisabledSelection && !cell.enabled) {\n return;\n }\n this.selectedValueChange.emit(cell.value);\n };\n Object.defineProperty(MatCalendarBody.prototype, \"_firstRowOffset\", {\n /**\n * The number of blank cells to put at the beginning for the first row.\n * @return {?}\n */\n get: function () {\n return this.rows && this.rows.length && this.rows[0].length ?\n this.numCols - this.rows[0].length : 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} rowIndex\n * @param {?} colIndex\n * @return {?}\n */\n MatCalendarBody.prototype._isActiveCell = function (rowIndex, colIndex) {\n var /** @type {?} */ cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n };\n MatCalendarBody.decorators = [\n { type: Component, args: [{selector: '[mat-calendar-body]',\n template: \"<tr *ngIf=\\\"_firstRowOffset < labelMinRequiredCells\\\" aria-hidden=\\\"true\\\"><td class=\\\"mat-calendar-body-label\\\" [attr.colspan]=\\\"numCols\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\">{{label}}</td></tr><tr *ngFor=\\\"let row of rows; let rowIndex = index\\\" role=\\\"row\\\"><td *ngIf=\\\"rowIndex === 0 && _firstRowOffset\\\" aria-hidden=\\\"true\\\" class=\\\"mat-calendar-body-label\\\" [attr.colspan]=\\\"_firstRowOffset\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\">{{_firstRowOffset >= labelMinRequiredCells ? label : ''}}</td><td *ngFor=\\\"let item of row; let colIndex = index\\\" role=\\\"gridcell\\\" class=\\\"mat-calendar-body-cell\\\" [tabindex]=\\\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\\\" [class.mat-calendar-body-disabled]=\\\"!item.enabled\\\" [class.mat-calendar-body-active]=\\\"_isActiveCell(rowIndex, colIndex)\\\" [attr.aria-label]=\\\"item.ariaLabel\\\" [attr.aria-disabled]=\\\"!item.enabled || null\\\" (click)=\\\"_cellClicked(item)\\\" [style.width.%]=\\\"100 / numCols\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\"><div class=\\\"mat-calendar-body-cell-content\\\" [class.mat-calendar-body-selected]=\\\"selectedValue === item.value\\\" [class.mat-calendar-body-today]=\\\"todayValue === item.value\\\">{{item.displayValue}}</div></td></tr>\",\n styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.71429%;padding-right:4.71429%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:0;cursor:pointer}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}[dir=rtl] .mat-calendar-body-label{text-align:right}\"],\n host: {\n 'class': 'mat-calendar-body',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCalendarBody.ctorParameters = function () { return []; };\n MatCalendarBody.propDecorators = {\n 'label': [{ type: Input },],\n 'rows': [{ type: Input },],\n 'todayValue': [{ type: Input },],\n 'selectedValue': [{ type: Input },],\n 'labelMinRequiredCells': [{ type: Input },],\n 'numCols': [{ type: Input },],\n 'allowDisabledSelection': [{ type: Input },],\n 'activeCell': [{ type: Input },],\n 'cellAspectRatio': [{ type: Input },],\n 'selectedValueChange': [{ type: Output },],\n };\n return MatCalendarBody;\n}());\n\nvar DAYS_PER_WEEK = 7;\n/**\n * An internal component used to display a single month in the datepicker.\n * \\@docs-private\n */\nvar MatMonthView = (function () {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n function MatMonthView(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new date is selected.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n var firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n var narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n var longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n var weekdays = longWeekdays.map(function (long, i) {\n return { long: long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n this._activeDate = this._dateAdapter.today();\n }\n Object.defineProperty(MatMonthView.prototype, \"activeDate\", {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n * @return {?}\n */\n get: function () { return this._activeDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMonthView.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedDate = this._getDateInCurrentMonth(this._selected);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMonthView.prototype.ngAfterContentInit = function () {\n this._init();\n };\n /**\n * Handles when a new date is selected.\n * @param {?} date\n * @return {?}\n */\n MatMonthView.prototype._dateSelected = function (date) {\n if (this._selectedDate != date) {\n var /** @type {?} */ selectedYear = this._dateAdapter.getYear(this.activeDate);\n var /** @type {?} */ selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n var /** @type {?} */ selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit();\n };\n /**\n * Initializes this month view.\n * @return {?}\n */\n MatMonthView.prototype._init = function () {\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 var /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), 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 this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Creates MatCalendarCells for the dates in this month.\n * @return {?}\n */\n MatMonthView.prototype._createWeekCells = function () {\n var /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n var /** @type {?} */ dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (var /** @type {?} */ i = 0, /** @type {?} */ cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n var /** @type {?} */ date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n var /** @type {?} */ enabled = !this.dateFilter ||\n this.dateFilter(date);\n var /** @type {?} */ 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 * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n * @param {?} date\n * @return {?}\n */\n MatMonthView.prototype._getDateInCurrentMonth = function (date) {\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 * @param {?} d1\n * @param {?} d2\n * @return {?}\n */\n MatMonthView.prototype._hasSameMonthAndYear = function (d1, d2) {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n };\n MatMonthView.decorators = [\n { type: Component, args: [{selector: 'mat-month-view',\n template: \"<table class=\\\"mat-calendar-table\\\"><thead class=\\\"mat-calendar-table-header\\\"><tr><th *ngFor=\\\"let day of _weekdays\\\" [attr.aria-label]=\\\"day.long\\\">{{day.narrow}}</th></tr><tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"7\\\" aria-hidden=\\\"true\\\"></th></tr></thead><tbody mat-calendar-body role=\\\"grid\\\" [label]=\\\"_monthLabel\\\" [rows]=\\\"_weeks\\\" [todayValue]=\\\"_todayDate\\\" [selectedValue]=\\\"_selectedDate\\\" [labelMinRequiredCells]=\\\"3\\\" [activeCell]=\\\"_dateAdapter.getDate(activeDate) - 1\\\" (selectedValueChange)=\\\"_dateSelected($event)\\\"></tbody></table>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMonthView.ctorParameters = function () { return [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatMonthView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n };\n return MatMonthView;\n}());\n\n/**\n * An internal component used to display a single year in the datepicker.\n * \\@docs-private\n */\nvar MatYearView = (function () {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n function MatYearView(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new month is selected.\n */\n this.selectedChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._activeDate = this._dateAdapter.today();\n }\n Object.defineProperty(MatYearView.prototype, \"activeDate\", {\n /**\n * The date to display in this year view (everything other than the year is ignored).\n * @return {?}\n */\n get: function () { return this._activeDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (this._dateAdapter.getYear(oldActiveDate) != this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatYearView.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatYearView.prototype.ngAfterContentInit = function () {\n this._init();\n };\n /**\n * Handles when a new month is selected.\n * @param {?} month\n * @return {?}\n */\n MatYearView.prototype._monthSelected = function (month) {\n var /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n };\n /**\n * Initializes this month view.\n * @return {?}\n */\n MatYearView.prototype._init = function () {\n var _this = this;\n this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n var /** @type {?} */ 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(function (row) { return row.map(function (month) { return _this._createCellForMonth(month, monthNames[month]); }); });\n this._changeDetectorRef.markForCheck();\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 * @param {?} date\n * @return {?}\n */\n MatYearView.prototype._getMonthInCurrentYear = function (date) {\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 * @param {?} month\n * @param {?} monthName\n * @return {?}\n */\n MatYearView.prototype._createCellForMonth = function (month, monthName) {\n var /** @type {?} */ ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\n };\n /**\n * Whether the given month is enabled.\n * @param {?} month\n * @return {?}\n */\n MatYearView.prototype._isMonthEnabled = function (month) {\n if (!this.dateFilter) {\n return true;\n }\n var /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (var /** @type {?} */ date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n };\n MatYearView.decorators = [\n { type: Component, args: [{selector: 'mat-year-view',\n template: \"<table class=\\\"mat-calendar-table\\\"><thead class=\\\"mat-calendar-table-header\\\"><tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr></thead><tbody mat-calendar-body role=\\\"grid\\\" allowDisabledSelection=\\\"true\\\" [label]=\\\"_yearLabel\\\" [rows]=\\\"_months\\\" [todayValue]=\\\"_todayMonth\\\" [selectedValue]=\\\"_selectedMonth\\\" [labelMinRequiredCells]=\\\"2\\\" [numCols]=\\\"4\\\" [cellAspectRatio]=\\\"4 / 7\\\" [activeCell]=\\\"_dateAdapter.getMonth(activeDate)\\\" (selectedValueChange)=\\\"_monthSelected($event)\\\"></tbody></table>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatYearView.ctorParameters = function () { return [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatYearView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n };\n return MatYearView;\n}());\n\n/**\n * A calendar that is used as part of the datepicker.\n * \\@docs-private\n */\nvar MatCalendar = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _intl\n * @param {?} _ngZone\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} changeDetectorRef\n */\n function MatCalendar(_elementRef, _intl, _ngZone, _dateAdapter, _dateFormats, changeDetectorRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._intl = _intl;\n this._ngZone = _ngZone;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /**\n * Whether the calendar should be started in month or year view.\n */\n this.startView = 'month';\n /**\n * Emits when the currently selected date changes.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n /**\n * Date filter for the month and year views.\n */\n this._dateFilterForViews = function (date) {\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 if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._intlChanges = _intl.changes.subscribe(function () { return changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatCalendar.prototype, \"startAt\", {\n /**\n * A date representing the period (month or year) to start the calendar in.\n * @return {?}\n */\n get: function () { return this._startAt; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._startAt = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._selected = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"minDate\", {\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get: function () { return this._minDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._minDate = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"maxDate\", {\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get: function () { return this._maxDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._maxDate = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_activeDate\", {\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n * @return {?}\n */\n get: function () { return this._clampedActiveDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_periodButtonText\", {\n /**\n * The label for the current calendar view.\n * @return {?}\n */\n get: function () {\n return this._monthView ?\n this._dateAdapter.format(this._activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase() :\n this._dateAdapter.getYearName(this._activeDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_periodButtonLabel\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.switchToYearViewLabel : this._intl.switchToMonthViewLabel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_prevButtonLabel\", {\n /**\n * The label for the the previous button.\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.prevMonthLabel : this._intl.prevYearLabel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_nextButtonLabel\", {\n /**\n * The label for the the next button.\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.nextMonthLabel : this._intl.nextYearLabel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCalendar.prototype.ngAfterContentInit = function () {\n this._activeDate = this.startAt || this._dateAdapter.today();\n this._focusActiveCell();\n this._monthView = this.startView != 'year';\n };\n /**\n * @return {?}\n */\n MatCalendar.prototype.ngOnDestroy = function () {\n this._intlChanges.unsubscribe();\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatCalendar.prototype.ngOnChanges = function (changes) {\n var /** @type {?} */ change = changes.minDate || changes.maxDate || changes.dateFilter;\n if (change && !change.firstChange) {\n var /** @type {?} */ view = this.monthView || this.yearView;\n if (view) {\n view._init();\n }\n }\n };\n /**\n * Handles date selection in the month view.\n * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._dateSelected = function (date) {\n if (!this._dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n };\n /**\n * @return {?}\n */\n MatCalendar.prototype._userSelected = function () {\n this._userSelection.emit();\n };\n /**\n * Handles month selection in the year view.\n * @param {?} month\n * @return {?}\n */\n MatCalendar.prototype._monthSelected = function (month) {\n this._activeDate = month;\n this._monthView = true;\n };\n /**\n * Handles user clicks on the period label.\n * @return {?}\n */\n MatCalendar.prototype._currentPeriodClicked = function () {\n this._monthView = !this._monthView;\n };\n /**\n * Handles user clicks on the previous button.\n * @return {?}\n */\n MatCalendar.prototype._previousClicked = function () {\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 * @return {?}\n */\n MatCalendar.prototype._nextClicked = function () {\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 * @return {?}\n */\n MatCalendar.prototype._previousEnabled = function () {\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 * @return {?}\n */\n MatCalendar.prototype._nextEnabled = function () {\n return !this.maxDate || !this._isSameView(this._activeDate, this.maxDate);\n };\n /**\n * Handles keydown events on the calendar body.\n * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydown = function (event) {\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 }\n else {\n this._handleCalendarBodyKeydownInYearView(event);\n }\n };\n /**\n * Focuses the active cell after the microtask queue is empty.\n * @return {?}\n */\n MatCalendar.prototype._focusActiveCell = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n first.call(_this._ngZone.onStable.asObservable()).subscribe(function () {\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 * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\n MatCalendar.prototype._isSameView = function (date1, date2) {\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 * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydownInMonthView = function (event) {\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, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, (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 // 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 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 * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydownInYearView = function (event) {\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, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 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 this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\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 * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._prevMonthInSameCol = function (date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n var /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? -5 :\n (this._dateAdapter.getMonth(date) >= 7 ? -7 : -12);\n return this._dateAdapter.addCalendarMonths(date, increment);\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 * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._nextMonthInSameCol = function (date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n var /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? 7 :\n (this._dateAdapter.getMonth(date) >= 7 ? 5 : 12);\n return this._dateAdapter.addCalendarMonths(date, increment);\n };\n MatCalendar.decorators = [\n { type: Component, args: [{selector: 'mat-calendar',\n template: \"<div class=\\\"mat-calendar-header\\\"><div class=\\\"mat-calendar-controls\\\"><button mat-button class=\\\"mat-calendar-period-button\\\" (click)=\\\"_currentPeriodClicked()\\\" [attr.aria-label]=\\\"_periodButtonLabel\\\">{{_periodButtonText}}<div class=\\\"mat-calendar-arrow\\\" [class.mat-calendar-invert]=\\\"!_monthView\\\"></div></button><div class=\\\"mat-calendar-spacer\\\"></div><button mat-icon-button class=\\\"mat-calendar-previous-button\\\" [disabled]=\\\"!_previousEnabled()\\\" (click)=\\\"_previousClicked()\\\" [attr.aria-label]=\\\"_prevButtonLabel\\\"></button> <button mat-icon-button class=\\\"mat-calendar-next-button\\\" [disabled]=\\\"!_nextEnabled()\\\" (click)=\\\"_nextClicked()\\\" [attr.aria-label]=\\\"_nextButtonLabel\\\"></button></div></div><div class=\\\"mat-calendar-content\\\" (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\" [ngSwitch]=\\\"_monthView\\\" cdkMonitorSubtreeFocus><mat-month-view *ngSwitchCase=\\\"true\\\" [activeDate]=\\\"_activeDate\\\" [selected]=\\\"selected\\\" [dateFilter]=\\\"_dateFilterForViews\\\" (selectedChange)=\\\"_dateSelected($event)\\\" (_userSelection)=\\\"_userSelected()\\\"></mat-month-view><mat-year-view *ngSwitchDefault [activeDate]=\\\"_activeDate\\\" [selected]=\\\"selected\\\" [dateFilter]=\\\"_dateFilterForViews\\\" (selectedChange)=\\\"_monthSelected($event)\\\"></mat-year-view></div>\",\n styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:0}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button::after,.mat-calendar-previous-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:'';margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:'';position:absolute;top:0;left:-8px;right:-8px;height:1px}\"],\n host: {\n 'class': 'mat-calendar',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCalendar.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: MatDatepickerIntl, },\n { type: NgZone, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatCalendar.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n 'monthView': [{ type: ViewChild, args: [MatMonthView,] },],\n 'yearView': [{ type: ViewChild, args: [MatYearView,] },],\n };\n return MatCalendar;\n}());\n\n/**\n * Used to generate a unique ID for each datepicker instance.\n */\nvar datepickerUid = 0;\n/**\n * Injection token that determines the scroll handling while the calendar is open.\n */\nvar MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar 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 * 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 */\nvar MatDatepickerContent = (function () {\n function MatDatepickerContent() {\n }\n /**\n * @return {?}\n */\n MatDatepickerContent.prototype.ngAfterContentInit = function () {\n this._calendar._focusActiveCell();\n };\n /**\n * Handles keydown event on datepicker content.\n * @param {?} event The event.\n * @return {?}\n */\n MatDatepickerContent.prototype._handleKeydown = function (event) {\n if (event.keyCode === ESCAPE) {\n this.datepicker.close();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n MatDatepickerContent.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-content',\n template: \"<mat-calendar cdkTrapFocus [id]=\\\"datepicker.id\\\" [startAt]=\\\"datepicker.startAt\\\" [startView]=\\\"datepicker.startView\\\" [minDate]=\\\"datepicker._minDate\\\" [maxDate]=\\\"datepicker._maxDate\\\" [dateFilter]=\\\"datepicker._dateFilter\\\" [selected]=\\\"datepicker._selected\\\" (selectedChange)=\\\"datepicker._select($event)\\\" (_userSelection)=\\\"datepicker.close()\\\"></mat-calendar>\",\n styles: [\".mat-datepicker-content{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);display:block}.mat-calendar{width:296px;height:354px}.mat-datepicker-content-touch{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-calendar{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation:landscape){.mat-datepicker-content-touch .mat-calendar{width:64vh;height:80vh}}@media all and (orientation:portrait){.mat-datepicker-content-touch .mat-calendar{width:80vw;height:100vw}}\"],\n host: {\n 'class': 'mat-datepicker-content',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n '(keydown)': '_handleKeydown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerContent.ctorParameters = function () { return []; };\n MatDatepickerContent.propDecorators = {\n '_calendar': [{ type: ViewChild, args: [MatCalendar,] },],\n };\n return MatDatepickerContent;\n}());\n/**\n * Component responsible for managing the datepicker popup/dialog.\n */\nvar MatDatepicker = (function () {\n /**\n * @param {?} _dialog\n * @param {?} _overlay\n * @param {?} _ngZone\n * @param {?} _viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _dateAdapter\n * @param {?} _dir\n * @param {?} _document\n */\n function MatDatepicker(_dialog, _overlay, _ngZone, _viewContainerRef, _scrollStrategy, _dateAdapter, _dir, _document) {\n this._dialog = _dialog;\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._scrollStrategy = _scrollStrategy;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._document = _document;\n /**\n * The view that the calendar should start in.\n */\n this.startView = 'month';\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 this.touchUi = false;\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 this.selectedChanged = new EventEmitter();\n /**\n * Whether the calendar is open.\n */\n this.opened = false;\n /**\n * The id for the datepicker calendar.\n */\n this.id = \"mat-datepicker-\" + datepickerUid++;\n this._validSelected = null;\n /**\n * The element that was focused before the datepicker was opened.\n */\n this._focusedElementBeforeOpen = null;\n this._inputSubscription = Subscription.EMPTY;\n /**\n * Emits when the datepicker is disabled.\n */\n this._disabledChange = new Subject();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n }\n Object.defineProperty(MatDatepicker.prototype, \"startAt\", {\n /**\n * The date to open the calendar to initially.\n * @return {?}\n */\n get: function () {\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 /**\n * @param {?} date\n * @return {?}\n */\n set: function (date) { this._startAt = coerceDateProperty(this._dateAdapter, date); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"disabled\", {\n /**\n * Whether the datepicker pop-up should be disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : this._disabled;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._validSelected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._validSelected = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_minDate\", {\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_maxDate\", {\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_dateFilter\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput._dateFilter;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDatepicker.prototype.ngOnDestroy = function () {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n if (this._popupRef) {\n this._popupRef.dispose();\n }\n };\n /**\n * Selects the given date\n * @param {?} date\n * @return {?}\n */\n MatDatepicker.prototype._select = function (date) {\n var /** @type {?} */ oldValue = this._selected;\n this._selected = date;\n if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n this.selectedChanged.emit(date);\n }\n };\n /**\n * Register an input with this datepicker.\n * @param {?} input The datepicker input to register with this datepicker.\n * @return {?}\n */\n MatDatepicker.prototype._registerInput = function (input) {\n var _this = this;\n if (this._datepickerInput) {\n throw Error('An MatDatepicker can only be associated with a single input.');\n }\n this._datepickerInput = input;\n this._inputSubscription =\n this._datepickerInput._valueChange.subscribe(function (value) { return _this._selected = value; });\n };\n /**\n * Open the calendar.\n * @return {?}\n */\n MatDatepicker.prototype.open = function () {\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 this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this.opened = true;\n };\n /**\n * Close the calendar.\n * @return {?}\n */\n MatDatepicker.prototype.close = function () {\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 if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n this._focusedElementBeforeOpen.focus();\n this._focusedElementBeforeOpen = null;\n }\n this.opened = false;\n };\n /**\n * Open the calendar as a dialog.\n * @return {?}\n */\n MatDatepicker.prototype._openAsDialog = function () {\n var _this = this;\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(function () { return _this.close(); });\n this._dialogRef.componentInstance.datepicker = this;\n };\n /**\n * Open the calendar as a popup.\n * @return {?}\n */\n MatDatepicker.prototype._openAsPopup = function () {\n var _this = this;\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n }\n if (!this._popupRef) {\n this._createPopup();\n }\n if (!this._popupRef.hasAttached()) {\n var /** @type {?} */ componentRef = this._popupRef.attach(this._calendarPortal);\n componentRef.instance.datepicker = this;\n // Update the position once the calendar has rendered.\n first$1.call(this._ngZone.onStable.asObservable()).subscribe(function () {\n _this._popupRef.updatePosition();\n });\n }\n this._popupRef.backdropClick().subscribe(function () { return _this.close(); });\n };\n /**\n * Create the popup.\n * @return {?}\n */\n MatDatepicker.prototype._createPopup = function () {\n var /** @type {?} */ 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 this._popupRef = this._overlay.create(overlayConfig);\n };\n /**\n * Create the popup PositionStrategy.\n * @return {?}\n */\n MatDatepicker.prototype._createPopupPositionStrategy = function () {\n return this._overlay.position()\n .connectedTo(this._datepickerInput.getPopupConnectionElementRef(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n .withFallbackPosition({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' })\n .withFallbackPosition({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' });\n };\n MatDatepicker.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepicker.ctorParameters = function () { return [\n { type: MatDialog, },\n { type: Overlay, },\n { type: NgZone, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] },] },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDatepicker.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'touchUi': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'selectedChanged': [{ type: Output },],\n };\n return MatDatepicker;\n}());\n\nvar MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatDatepickerInput; }),\n multi: true\n};\nvar MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(function () { return MatDatepickerInput; }),\n multi: true\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 */\nvar MatDatepickerInputEvent = (function () {\n /**\n * @param {?} target\n * @param {?} targetElement\n */\n function MatDatepickerInputEvent(target, targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n return MatDatepickerInputEvent;\n}());\n/**\n * Directive used to connect an input to a MatDatepicker.\n */\nvar MatDatepickerInput = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _formField\n */\n function MatDatepickerInput(_elementRef, _renderer, _dateAdapter, _dateFormats, _formField) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._formField = _formField;\n /**\n * Emits when a `change` event is fired on this `<input>`.\n */\n this.dateChange = new EventEmitter();\n /**\n * Emits when an `input` event is fired on this `<input>`.\n */\n this.dateInput = new EventEmitter();\n /**\n * Emits when the value changes (either due to user input or programmatic change).\n */\n this._valueChange = new EventEmitter();\n /**\n * Emits when the disabled state has changed\n */\n this._disabledChange = new EventEmitter();\n this._onTouched = function () { };\n this._cvaOnChange = function () { };\n this._validatorOnChange = function () { };\n this._datepickerSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /**\n * The form control validator for whether the input parses.\n */\n this._parseValidator = function () {\n return _this._lastValueValid ?\n null : { 'matDatepickerParse': { 'text': _this._elementRef.nativeElement.value } };\n };\n /**\n * The form control validator for the min date.\n */\n this._minValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, 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 */\n this._maxValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, 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 */\n this._filterValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, 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 */\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n /**\n * Whether the last value set on the input was valid.\n */\n this._lastValueValid = false;\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(function () {\n _this.value = _this.value;\n });\n }\n Object.defineProperty(MatDatepickerInput.prototype, \"matDatepicker\", {\n /**\n * The datepicker that this input is associated with.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this.registerDatepicker(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype.registerDatepicker = function (value) {\n if (value) {\n this._datepicker = value;\n this._datepicker._registerInput(this);\n }\n };\n Object.defineProperty(MatDatepickerInput.prototype, \"matDatepickerFilter\", {\n /**\n * @param {?} filter\n * @return {?}\n */\n set: function (filter) {\n this._dateFilter = filter;\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"value\", {\n /**\n * The value of the input.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n value = coerceDateProperty(this._dateAdapter, value);\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\n value = this._getValidDateOrNull(value);\n var /** @type {?} */ oldDate = this.value;\n this._value = value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '');\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"min\", {\n /**\n * The minimum valid date.\n * @return {?}\n */\n get: function () { return this._min; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._min = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"max\", {\n /**\n * The maximum valid date.\n * @return {?}\n */\n get: function () { return this._max; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._max = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"disabled\", {\n /**\n * Whether the datepicker-input is disabled.\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDatepickerInput.prototype.ngAfterContentInit = function () {\n var _this = this;\n if (this._datepicker) {\n this._datepickerSubscription =\n this._datepicker.selectedChanged.subscribe(function (selected) {\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 * @return {?}\n */\n MatDatepickerInput.prototype.ngOnDestroy = function () {\n this._datepickerSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnValidatorChange = function (fn) {\n this._validatorOnChange = fn;\n };\n /**\n * @param {?} c\n * @return {?}\n */\n MatDatepickerInput.prototype.validate = function (c) {\n return this._validator ? this._validator(c) : null;\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 MatDatepickerInput.prototype.getPopupConnectionElementRef = function () {\n return this._formField ? this._formField.underlineRef : this._elementRef;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype.writeValue = function (value) {\n this.value = value;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnChange = function (fn) {\n this._cvaOnChange = fn;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} disabled\n * @return {?}\n */\n MatDatepickerInput.prototype.setDisabledState = function (disabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDatepickerInput.prototype._onKeydown = function (event) {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this._datepicker.open();\n event.preventDefault();\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype._onInput = function (value) {\n var /** @type {?} */ 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 * @return {?}\n */\n MatDatepickerInput.prototype._onChange = function () {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n };\n /**\n * @param {?} obj The object to check.\n * @return {?} The given object if it is both a date instance and valid, otherwise null.\n */\n MatDatepickerInput.prototype._getValidDateOrNull = function (obj) {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n };\n MatDatepickerInput.decorators = [\n { type: Directive, args: [{\n selector: 'input[matDatepicker]',\n providers: [MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerInput.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: MatFormField, decorators: [{ type: Optional },] },\n ]; };\n MatDatepickerInput.propDecorators = {\n 'matDatepicker': [{ type: Input },],\n 'matDatepickerFilter': [{ type: Input },],\n 'value': [{ type: Input },],\n 'min': [{ type: Input },],\n 'max': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'dateChange': [{ type: Output },],\n 'dateInput': [{ type: Output },],\n };\n return MatDatepickerInput;\n}());\n\nvar MatDatepickerToggle = (function () {\n /**\n * @param {?} _intl\n * @param {?} _changeDetectorRef\n */\n function MatDatepickerToggle(_intl, _changeDetectorRef) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n }\n Object.defineProperty(MatDatepickerToggle.prototype, \"disabled\", {\n /**\n * Whether the toggle button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatDatepickerToggle.prototype.ngOnChanges = function (changes) {\n var _this = this;\n if (changes.datepicker) {\n var /** @type {?} */ datepicker = changes.datepicker.currentValue;\n var /** @type {?} */ datepickerDisabled = datepicker ? datepicker._disabledChange : of();\n var /** @type {?} */ inputDisabled = datepicker && datepicker._datepickerInput ?\n datepicker._datepickerInput._disabledChange :\n of();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled)\n .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n }\n };\n /**\n * @return {?}\n */\n MatDatepickerToggle.prototype.ngOnDestroy = function () {\n this._stateChanges.unsubscribe();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDatepickerToggle.prototype._open = function (event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n };\n MatDatepickerToggle.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-toggle',\n template: \"<button mat-icon-button type=\\\"button\\\" [attr.aria-label]=\\\"_intl.openCalendarLabel\\\" [disabled]=\\\"disabled\\\" (click)=\\\"_open($event)\\\"><mat-icon><svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"currentColor\\\" style=\\\"vertical-align: top\\\" focusable=\\\"false\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/><path d=\\\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\\\"/></svg></mat-icon></button>\",\n host: {\n 'class': 'mat-datepicker-toggle',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerToggle.ctorParameters = function () { return [\n { type: MatDatepickerIntl, },\n { type: ChangeDetectorRef, },\n ]; };\n MatDatepickerToggle.propDecorators = {\n 'datepicker': [{ type: Input, args: ['for',] },],\n 'disabled': [{ type: Input },],\n };\n return MatDatepickerToggle;\n}());\n\nvar MatDatepickerModule = (function () {\n function MatDatepickerModule() {\n }\n MatDatepickerModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerModule.ctorParameters = function () { return []; };\n return MatDatepickerModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDatepickerModule, MatCalendar, MatCalendarCell, MatCalendarBody, coerceDateProperty, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepickerContent, MatDatepicker, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, MatDatepickerInputEvent, MatDatepickerInput, MatDatepickerIntl, MatDatepickerToggle, MatMonthView, MatYearView };\n//# sourceMappingURL=datepicker.es5.js.map\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 */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Host, Injectable, Input, NgModule, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { mixinDisabled } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { filter } from '@angular/cdk/rxjs';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subscription } from 'rxjs/Subscription';\n\n/**\n * Unique ID counter\n */\nvar nextId = 0;\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nvar CdkAccordion = (function () {\n function CdkAccordion() {\n /**\n * A readonly id value to use for unique selection coordination.\n */\n this.id = \"cdk-accordion-\" + nextId++;\n this._multi = false;\n this._hideToggle = false;\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 this.displayMode = 'default';\n }\n Object.defineProperty(CdkAccordion.prototype, \"multi\", {\n /**\n * Whether the accordion should allow multiple expanded accordion items simulateously.\n * @return {?}\n */\n get: function () { return this._multi; },\n /**\n * @param {?} multi\n * @return {?}\n */\n set: function (multi) { this._multi = coerceBooleanProperty(multi); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CdkAccordion.prototype, \"hideToggle\", {\n /**\n * Whether the expansion indicator should be hidden.\n * @return {?}\n */\n get: function () { return this._hideToggle; },\n /**\n * @param {?} show\n * @return {?}\n */\n set: function (show) { this._hideToggle = coerceBooleanProperty(show); },\n enumerable: true,\n configurable: true\n });\n CdkAccordion.decorators = [\n { type: Directive, args: [{\n selector: 'cdk-accordion, [cdk-accordion]',\n exportAs: 'cdkAccordion',\n },] },\n ];\n /**\n * @nocollapse\n */\n CdkAccordion.ctorParameters = function () { return []; };\n CdkAccordion.propDecorators = {\n 'multi': [{ type: Input },],\n 'hideToggle': [{ type: Input },],\n 'displayMode': [{ type: Input },],\n };\n return CdkAccordion;\n}());\n/**\n * Directive for a Material Design Accordion.\n */\nvar MatAccordion = (function (_super) {\n __extends(MatAccordion, _super);\n function MatAccordion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatAccordion.decorators = [\n { type: Directive, args: [{\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n host: {\n class: 'mat-accordion'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAccordion.ctorParameters = function () { return []; };\n return MatAccordion;\n}(CdkAccordion));\n\n/**\n * Used to generate unique ID for each expansion panel.\n */\nvar nextId$1 = 0;\n/**\n * An abstract class to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nvar AccordionItem = (function () {\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _expansionDispatcher\n */\n function AccordionItem(accordion, _changeDetectorRef, _expansionDispatcher) {\n var _this = this;\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /**\n * Event emitted every time the AccordionItem is closed.\n */\n this.closed = new EventEmitter();\n /**\n * Event emitted every time the AccordionItem is opened.\n */\n this.opened = new EventEmitter();\n /**\n * Event emitted when the AccordionItem is destroyed.\n */\n this.destroyed = new EventEmitter();\n /**\n * The unique AccordionItem id.\n */\n this.id = \"cdk-accordion-child-\" + nextId$1++;\n /**\n * Unregister function for _expansionDispatcher *\n */\n this._removeUniqueSelectionListener = function () { };\n this._removeUniqueSelectionListener =\n _expansionDispatcher.listen(function (id, accordionId) {\n if (_this.accordion && !_this.accordion.multi &&\n _this.accordion.id === accordionId && _this.id !== id) {\n _this.expanded = false;\n }\n });\n }\n Object.defineProperty(AccordionItem.prototype, \"expanded\", {\n /**\n * Whether the AccordionItem is expanded.\n * @return {?}\n */\n get: function () { return this._expanded; },\n /**\n * @param {?} expanded\n * @return {?}\n */\n set: function (expanded) {\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 var accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\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 enumerable: true,\n configurable: true\n });\n /**\n * Emits an event for the accordion item being destroyed.\n * @return {?}\n */\n AccordionItem.prototype.ngOnDestroy = function () {\n this.destroyed.emit();\n this._removeUniqueSelectionListener();\n };\n /**\n * Toggles the expanded state of the accordion item.\n * @return {?}\n */\n AccordionItem.prototype.toggle = function () {\n this.expanded = !this.expanded;\n };\n /**\n * Sets the expanded state of the accordion item to false.\n * @return {?}\n */\n AccordionItem.prototype.close = function () {\n this.expanded = false;\n };\n /**\n * Sets the expanded state of the accordion item to true.\n * @return {?}\n */\n AccordionItem.prototype.open = function () {\n this.expanded = true;\n };\n AccordionItem.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n AccordionItem.ctorParameters = function () { return [\n { type: CdkAccordion, decorators: [{ type: Optional },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n AccordionItem.propDecorators = {\n 'closed': [{ type: Output },],\n 'opened': [{ type: Output },],\n 'destroyed': [{ type: Output },],\n 'expanded': [{ type: Input },],\n };\n return AccordionItem;\n}());\n\n/**\n * \\@docs-private\n */\nvar MatExpansionPanelBase = (function (_super) {\n __extends(MatExpansionPanelBase, _super);\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _uniqueSelectionDispatcher\n */\n function MatExpansionPanelBase(accordion, _changeDetectorRef, _uniqueSelectionDispatcher) {\n return _super.call(this, accordion, _changeDetectorRef, _uniqueSelectionDispatcher) || this;\n }\n return MatExpansionPanelBase;\n}(AccordionItem));\nvar _MatExpansionPanelMixinBase = mixinDisabled(MatExpansionPanelBase);\n/**\n * Time and timing curve for expansion panel animations.\n */\nvar EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\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 CdkAccordion directive attached.\n *\n * Please refer to README.md for examples on how to use it.\n */\nvar MatExpansionPanel = (function (_super) {\n __extends(MatExpansionPanel, _super);\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _uniqueSelectionDispatcher\n */\n function MatExpansionPanel(accordion, _changeDetectorRef, _uniqueSelectionDispatcher) {\n var _this = _super.call(this, accordion, _changeDetectorRef, _uniqueSelectionDispatcher) || this;\n /**\n * Whether the toggle indicator should be hidden.\n */\n _this.hideToggle = false;\n /**\n * Stream that emits for changes in `\\@Input` properties.\n */\n _this._inputChanges = new Subject();\n _this.accordion = accordion;\n return _this;\n }\n /**\n * Whether the expansion indicator should be hidden.\n * @return {?}\n */\n MatExpansionPanel.prototype._getHideToggle = function () {\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 * @return {?}\n */\n MatExpansionPanel.prototype._hasSpacing = function () {\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 * @return {?}\n */\n MatExpansionPanel.prototype._getExpandedState = function () {\n return this.expanded ? 'expanded' : 'collapsed';\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatExpansionPanel.prototype.ngOnChanges = function (changes) {\n this._inputChanges.next(changes);\n };\n /**\n * @return {?}\n */\n MatExpansionPanel.prototype.ngOnDestroy = function () {\n this._inputChanges.complete();\n };\n MatExpansionPanel.decorators = [\n { type: Component, args: [{styles: [\".mat-expansion-panel{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);box-sizing:content-box;display:block;margin:0;transition:margin 225ms cubic-bezier(.4,0,.2,1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-expansion-panel-content{overflow:hidden}.mat-expansion-panel-body{margin:0 24px 16px;overflow:auto}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion .mat-expansion-panel-spacing:first-child{margin-top:0}.mat-accordion .mat-expansion-panel-spacing:last-child{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row button.mat-button{margin-left:8px}[dir=rtl] .mat-action-row button.mat-button{margin-left:0;margin-right:8px}\"],\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n template: \"<ng-content select=\\\"mat-expansion-panel-header\\\"></ng-content><div [class.mat-expanded]=\\\"expanded\\\" class=\\\"mat-expansion-panel-content\\\" [@bodyExpansion]=\\\"_getExpandedState()\\\" [id]=\\\"id\\\"><div class=\\\"mat-expansion-panel-body\\\"><ng-content></ng-content></div><ng-content select=\\\"mat-action-row\\\"></ng-content></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled', 'expanded'],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n },\n providers: [\n { provide: AccordionItem, useExisting: forwardRef(function () { return 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 },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanel.ctorParameters = function () { return [\n { type: MatAccordion, decorators: [{ type: Optional }, { type: Host },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n MatExpansionPanel.propDecorators = {\n 'hideToggle': [{ type: Input },],\n };\n return MatExpansionPanel;\n}(_MatExpansionPanelMixinBase));\nvar MatExpansionPanelActionRow = (function () {\n function MatExpansionPanelActionRow() {\n }\n MatExpansionPanelActionRow.decorators = [\n { type: Directive, args: [{\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelActionRow.ctorParameters = function () { return []; };\n return MatExpansionPanelActionRow;\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 */\nvar MatExpansionPanelHeader = (function () {\n /**\n * @param {?} renderer\n * @param {?} panel\n * @param {?} _element\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n */\n function MatExpansionPanelHeader(renderer, panel, _element, _focusMonitor, _changeDetectorRef) {\n var _this = this;\n this.panel = panel;\n this._element = _element;\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._parentChangeSubscription = Subscription.EMPTY;\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(panel.opened, panel.closed, filter.call(panel._inputChanges, function (changes) { return !!(changes.hideToggle || changes.disabled); }))\n .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n _focusMonitor.monitor(_element.nativeElement, renderer, false);\n }\n /**\n * Toggles the expanded state of the panel.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._toggle = function () {\n if (!this.panel.disabled) {\n this.panel.toggle();\n }\n };\n /**\n * Gets whether the panel is expanded.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._isExpanded = function () {\n return this.panel.expanded;\n };\n /**\n * Gets the expanded state string of the panel.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._getExpandedState = function () {\n return this.panel._getExpandedState();\n };\n /**\n * Gets the panel id.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._getPanelId = function () {\n return this.panel.id;\n };\n /**\n * Gets whether the expand indicator should be shown.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._showToggle = function () {\n return !this.panel.hideToggle && !this.panel.disabled;\n };\n /**\n * Handle keyup event calling to toggle() if appropriate.\n * @param {?} event\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._keyup = function (event) {\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 * @return {?}\n */\n MatExpansionPanelHeader.prototype.ngOnDestroy = function () {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element.nativeElement);\n };\n MatExpansionPanelHeader.decorators = [\n { type: Component, args: [{selector: 'mat-expansion-panel-header',\n styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:0}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-description,.mat-expansion-panel-header-title{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-description,[dir=rtl] .mat-expansion-panel-header-title{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:'';display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}\"],\n template: \"<span class=\\\"mat-content\\\"><ng-content select=\\\"mat-panel-title\\\"></ng-content><ng-content select=\\\"mat-panel-description\\\"></ng-content><ng-content></ng-content></span><span [@indicatorRotate]=\\\"_getExpandedState()\\\" *ngIf=\\\"_showToggle()\\\" class=\\\"mat-expansion-indicator\\\"></span>\",\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelHeader.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: MatExpansionPanel, decorators: [{ type: Host },] },\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n ]; };\n MatExpansionPanelHeader.propDecorators = {\n 'expandedHeight': [{ type: Input },],\n 'collapsedHeight': [{ type: Input },],\n };\n return MatExpansionPanelHeader;\n}());\n/**\n * <mat-panel-description> directive.\n *\n * This direction is to be used inside of the MatExpansionPanelHeader component.\n */\nvar MatExpansionPanelDescription = (function () {\n function MatExpansionPanelDescription() {\n }\n MatExpansionPanelDescription.decorators = [\n { type: Directive, args: [{\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelDescription.ctorParameters = function () { return []; };\n return MatExpansionPanelDescription;\n}());\n/**\n * <mat-panel-title> directive.\n *\n * This direction is to be used inside of the MatExpansionPanelHeader component.\n */\nvar MatExpansionPanelTitle = (function () {\n function MatExpansionPanelTitle() {\n }\n MatExpansionPanelTitle.decorators = [\n { type: Directive, args: [{\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelTitle.ctorParameters = function () { return []; };\n return MatExpansionPanelTitle;\n}());\n\nvar MatExpansionModule = (function () {\n function MatExpansionModule() {\n }\n MatExpansionModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, A11yModule],\n exports: [\n CdkAccordion,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription\n ],\n declarations: [\n CdkAccordion,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription\n ],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionModule.ctorParameters = function () { return []; };\n return MatExpansionModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, MatAccordion, AccordionItem, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelDescription, MatExpansionPanelTitle, MatExpansionModule, EXPANSION_PANEL_ANIMATION_TIMING as ɵc15, MatExpansionPanelBase as ɵa15, _MatExpansionPanelMixinBase as ɵb15 };\n//# sourceMappingURL=expansion.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, ContentChildren, Directive, ElementRef, Input, NgModule, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, MatLine, MatLineModule, MatLineSetter } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\n\n/**\n * Converts values into strings. Falsy values become empty strings.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nfunction coerceToString(value) {\n return \"\" + (value || '');\n}\n/**\n * Converts a value that might be a string into a number.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nfunction coerceToNumber(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n\nvar MatGridTile = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTile(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n this._rowspan = 1;\n this._colspan = 1;\n }\n Object.defineProperty(MatGridTile.prototype, \"rowspan\", {\n /**\n * Amount of rows that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._rowspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._rowspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridTile.prototype, \"colspan\", {\n /**\n * Amount of columns that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._colspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._colspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\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 * @param {?} property\n * @param {?} value\n * @return {?}\n */\n MatGridTile.prototype._setStyle = function (property, value) {\n this._renderer.setStyle(this._element.nativeElement, property, value);\n };\n MatGridTile.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n template: \"<figure class=\\\"mat-figure\\\"><ng-content></ng-content></figure>\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTile.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTile.propDecorators = {\n 'rowspan': [{ type: Input },],\n 'colspan': [{ type: Input },],\n };\n return MatGridTile;\n}());\nvar MatGridTileText = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTileText(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n }\n /**\n * @return {?}\n */\n MatGridTileText.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n };\n MatGridTileText.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n template: \"<ng-content select=\\\"[mat-grid-avatar], [matGridAvatar]\\\"></ng-content><div class=\\\"mat-grid-list-text\\\"><ng-content select=\\\"[mat-line], [matLine]\\\"></ng-content></div><ng-content></ng-content>\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileText.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTileText.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n };\n return MatGridTileText;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridAvatarCssMatStyler = (function () {\n function MatGridAvatarCssMatStyler() {\n }\n MatGridAvatarCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: { 'class': 'mat-grid-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridAvatarCssMatStyler.ctorParameters = function () { return []; };\n return MatGridAvatarCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileHeaderCssMatStyler = (function () {\n function MatGridTileHeaderCssMatStyler() {\n }\n MatGridTileHeaderCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-header',\n host: { 'class': 'mat-grid-tile-header' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileHeaderCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileHeaderCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileFooterCssMatStyler = (function () {\n function MatGridTileFooterCssMatStyler() {\n }\n MatGridTileFooterCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-footer',\n host: { 'class': 'mat-grid-tile-footer' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileFooterCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileFooterCssMatStyler;\n}());\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 */\nvar TileCoordinator = (function () {\n /**\n * @param {?} numColumns\n * @param {?} tiles\n */\n function TileCoordinator(numColumns, tiles) {\n var _this = this;\n /**\n * Index at which the search for the next gap will start.\n */\n this.columnIndex = 0;\n /**\n * The current row index.\n */\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(function (tile) { return _this._trackTile(tile); });\n }\n Object.defineProperty(TileCoordinator.prototype, \"rowCount\", {\n /**\n * Gets the total number of rows occupied by tiles\n * @return {?}\n */\n get: function () { return this.rowIndex + 1; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TileCoordinator.prototype, \"rowspan\", {\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 * @return {?}\n */\n get: function () {\n var /** @type {?} */ lastRowMax = Math.max.apply(Math, 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 enumerable: true,\n configurable: true\n });\n /**\n * Calculates the row and col position of a tile.\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._trackTile = function (tile) {\n // Find a gap large enough for this tile.\n var /** @type {?} */ gapStartIndex = this._findMatchingGap(tile.colspan);\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\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 return new TilePosition(this.rowIndex, gapStartIndex);\n };\n /**\n * Finds the next available space large enough to fit the tile.\n * @param {?} tileCols\n * @return {?}\n */\n TileCoordinator.prototype._findMatchingGap = function (tileCols) {\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 // Start index is inclusive, end index is exclusive.\n var /** @type {?} */ gapStartIndex = -1;\n var /** @type {?} */ gapEndIndex = -1;\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 gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\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 gapEndIndex = this._findGapEndIndex(gapStartIndex);\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 // 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 * @return {?}\n */\n TileCoordinator.prototype._nextRow = function () {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (var /** @type {?} */ i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\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 * @param {?} gapStartIndex\n * @return {?}\n */\n TileCoordinator.prototype._findGapEndIndex = function (gapStartIndex) {\n for (var /** @type {?} */ i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\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 * @param {?} start\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._markTilePosition = function (start, tile) {\n for (var /** @type {?} */ i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n };\n return TileCoordinator;\n}());\n/**\n * Simple data structure for tile position (row, col).\n * \\@docs-private\n */\nvar TilePosition = (function () {\n /**\n * @param {?} row\n * @param {?} col\n */\n function TilePosition(row, col) {\n this.row = row;\n this.col = col;\n }\n return TilePosition;\n}());\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * \\@docs-private\n * @abstract\n */\nvar TileStyler = (function () {\n function TileStyler() {\n this._rows = 0;\n this._rowspan = 0;\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 * @return {?}\n */\n TileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\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 * 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 TileStyler.prototype.getBaseTileSize = function (sizePercent, gutterFraction) {\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 * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param {?} baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param {?} offset Number of tiles that have already been rendered in the row/column.\n * @return {?} Position of the tile as a CSS calc() expression.\n */\n TileStyler.prototype.getTilePosition = function (baseSize, offset) {\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 * 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 TileStyler.prototype.getTileSize = function (baseSize, span) {\n return \"(\" + baseSize + \" * \" + span + \") + (\" + (span - 1) + \" * \" + this._gutterSize + \")\";\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 * @return {?}\n */\n TileStyler.prototype.setStyle = function (tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n var /** @type {?} */ percentWidthPerTile = 100 / this._cols;\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 var /** @type {?} */ gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\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 * @param {?} tile\n * @param {?} colIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setColStyles = function (tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n var /** @type {?} */ baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\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 var /** @type {?} */ 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 * Calculates the total size taken up by gutters across one axis of a list.\n * @return {?}\n */\n TileStyler.prototype.getGutterSpan = function () {\n return this._gutterSize + \" * (\" + this._rowspan + \" - 1)\";\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 * @return {?}\n */\n TileStyler.prototype.getTileSpan = function (tileHeight) {\n return this._rowspan + \" * \" + this.getTileSize(tileHeight, 1);\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 * @abstract\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) { };\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 * @return {?}\n */\n TileStyler.prototype.getComputedHeight = function () { return null; };\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * \\@docs-private\n * @abstract\n * @param {?} list Grid list that the styler was attached to.\n * @return {?}\n */\n TileStyler.prototype.reset = function (list) { };\n return TileStyler;\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 */\nvar FixedTileStyler = (function (_super) {\n __extends(FixedTileStyler, _super);\n /**\n * @param {?} fixedRowHeight\n */\n function FixedTileStyler(fixedRowHeight) {\n var _this = _super.call(this) || this;\n _this.fixedRowHeight = fixedRowHeight;\n return _this;\n }\n /**\n * @param {?} gutterSize\n * @param {?} tracker\n * @param {?} cols\n * @param {?} direction\n * @return {?}\n */\n FixedTileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\n _super.prototype.init.call(this, gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n };\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FixedTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n };\n /**\n * @return {?}\n */\n FixedTileStyler.prototype.getComputedHeight = function () {\n return [\n 'height', calc(this.getTileSpan(this.fixedRowHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FixedTileStyler.prototype.reset = function (list) {\n list._setListStyle(['height', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FixedTileStyler;\n}(TileStyler));\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 */\nvar RatioTileStyler = (function (_super) {\n __extends(RatioTileStyler, _super);\n /**\n * @param {?} value\n */\n function RatioTileStyler(value) {\n var _this = _super.call(this) || this;\n _this._parseRatio(value);\n return _this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n RatioTileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) {\n var /** @type {?} */ percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\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 * @return {?}\n */\n RatioTileStyler.prototype.getComputedHeight = function () {\n return [\n 'padding-bottom', calc(this.getTileSpan(this.baseTileHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n RatioTileStyler.prototype.reset = function (list) {\n list._setListStyle(['padding-bottom', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('margin-top', null);\n tile._setStyle('padding-top', null);\n });\n };\n /**\n * @param {?} value\n * @return {?}\n */\n RatioTileStyler.prototype._parseRatio = function (value) {\n var /** @type {?} */ ratioParts = value.split(':');\n if (ratioParts.length !== 2) {\n throw Error(\"mat-grid-list: invalid ratio given for row-height: \\\"\" + value + \"\\\"\");\n }\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n };\n return RatioTileStyler;\n}(TileStyler));\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 */\nvar FitTileStyler = (function (_super) {\n __extends(FitTileStyler, _super);\n function FitTileStyler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FitTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n var /** @type {?} */ percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n var /** @type {?} */ gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n var /** @type {?} */ baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FitTileStyler.prototype.reset = function (list) {\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FitTileStyler;\n}(TileStyler));\n/**\n * Wraps a CSS string in a calc function\n * @param {?} exp\n * @return {?}\n */\nfunction calc(exp) { return \"calc(\" + exp + \")\"; }\n/**\n * Appends pixels to a CSS string if no units are given.\n * @param {?} value\n * @return {?}\n */\nfunction normalizeUnits(value) {\n return (value.match(/px|em|rem/)) ? value : value + 'px';\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.\nvar MAT_FIT_MODE = 'fit';\nvar MatGridList = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _dir\n */\n function MatGridList(_renderer, _element, _dir) {\n this._renderer = _renderer;\n this._element = _element;\n this._dir = _dir;\n /**\n * The amount of space between tiles. This will be something like '5px' or '2em'.\n */\n this._gutter = '1px';\n }\n Object.defineProperty(MatGridList.prototype, \"cols\", {\n /**\n * Amount of columns in the grid list.\n * @return {?}\n */\n get: function () { return this._cols; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._cols = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"gutterSize\", {\n /**\n * Size of the grid list's gutter in pixels.\n * @return {?}\n */\n get: function () { return this._gutter; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._gutter = coerceToString(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"rowHeight\", {\n /**\n * Set internal representation of row height from the user-provided value.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceToString(value);\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatGridList.prototype.ngOnInit = function () {\n this._checkCols();\n this._checkRowHeight();\n };\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n * @return {?}\n */\n MatGridList.prototype.ngAfterContentChecked = function () {\n this._layoutTiles();\n };\n /**\n * Throw a friendly error if cols property is missing\n * @return {?}\n */\n MatGridList.prototype._checkCols = function () {\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 * @return {?}\n */\n MatGridList.prototype._checkRowHeight = function () {\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 * @param {?} rowHeight\n * @return {?}\n */\n MatGridList.prototype._setTileStyler = function (rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n }\n else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n }\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 * @return {?}\n */\n MatGridList.prototype._layoutTiles = function () {\n var _this = this;\n var /** @type {?} */ tracker = new TileCoordinator(this.cols, this._tiles);\n var /** @type {?} */ direction = this._dir ? this._dir.value : 'ltr';\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n this._tiles.forEach(function (tile, index) {\n var /** @type {?} */ pos = tracker.positions[index];\n _this._tileStyler.setStyle(tile, pos.row, pos.col);\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 * @param {?} style\n * @return {?}\n */\n MatGridList.prototype._setListStyle = function (style) {\n if (style) {\n this._renderer.setStyle(this._element.nativeElement, style[0], style[1]);\n }\n };\n MatGridList.decorators = [\n { type: Component, args: [{selector: 'mat-grid-list',\n exportAs: 'matGridList',\n template: \"<div><ng-content></ng-content></div>\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n host: {\n 'class': 'mat-grid-list',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridList.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatGridList.propDecorators = {\n '_tiles': [{ type: ContentChildren, args: [MatGridTile,] },],\n 'cols': [{ type: Input },],\n 'gutterSize': [{ type: Input },],\n 'rowHeight': [{ type: Input },],\n };\n return MatGridList;\n}());\n\nvar MatGridListModule = (function () {\n function MatGridListModule() {\n }\n MatGridListModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatGridListModule.ctorParameters = function () { return []; };\n return MatGridListModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatGridTile, MatGridListModule, MatGridList, MatGridAvatarCssMatStyler as ɵb13, MatGridTileFooterCssMatStyler as ɵd13, MatGridTileHeaderCssMatStyler as ɵc13, MatGridTileText as ɵa13 };\n//# sourceMappingURL=grid-list.es5.js.map\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 */\nimport { Platform, PlatformModule, getSupportedInputTypes } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { Directive, ElementRef, Input, NgModule, Optional, Renderer2, Self } from '@angular/core';\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n */\nvar MatTextareaAutosize = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _platform\n */\n function MatTextareaAutosize(_elementRef, _platform) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n }\n Object.defineProperty(MatTextareaAutosize.prototype, \"minRows\", {\n /**\n * @return {?}\n */\n get: function () { return this._minRows; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._minRows = value;\n this._setMinHeight();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTextareaAutosize.prototype, \"maxRows\", {\n /**\n * @return {?}\n */\n get: function () { return this._maxRows; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._maxRows = value;\n this._setMaxHeight();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the minimum height of the textarea as determined by minRows.\n * @return {?}\n */\n MatTextareaAutosize.prototype._setMinHeight = function () {\n var /** @type {?} */ minHeight = this.minRows && this._cachedLineHeight ?\n this.minRows * this._cachedLineHeight + \"px\" : null;\n if (minHeight) {\n this._setTextareaStyle('minHeight', minHeight);\n }\n };\n /**\n * Sets the maximum height of the textarea as determined by maxRows.\n * @return {?}\n */\n MatTextareaAutosize.prototype._setMaxHeight = function () {\n var /** @type {?} */ maxHeight = this.maxRows && this._cachedLineHeight ?\n this.maxRows * this._cachedLineHeight + \"px\" : null;\n if (maxHeight) {\n this._setTextareaStyle('maxHeight', maxHeight);\n }\n };\n /**\n * @return {?}\n */\n MatTextareaAutosize.prototype.ngAfterViewInit = function () {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n };\n /**\n * Sets a style property on the textarea element.\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n MatTextareaAutosize.prototype._setTextareaStyle = function (property, value) {\n var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n textarea.style[property] = value;\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 * @return {?}\n */\n MatTextareaAutosize.prototype._cacheTextareaLineHeight = function () {\n if (this._cachedLineHeight) {\n return;\n }\n var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n // Use a clone element because we have to override some styles.\n var /** @type {?} */ textareaClone = (textarea.cloneNode(false));\n textareaClone.rows = 1;\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 // 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'; /** @type {?} */\n ((textarea.parentNode)).appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight; /** @type {?} */\n ((textarea.parentNode)).removeChild(textareaClone);\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 * @return {?}\n */\n MatTextareaAutosize.prototype.ngDoCheck = function () {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n };\n /**\n * Resize the textarea to fit its content.\n * @return {?}\n */\n MatTextareaAutosize.prototype.resizeToFitContent = function () {\n this._cacheTextareaLineHeight();\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 var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n var /** @type {?} */ value = textarea.value;\n // Only resize of the value changed since these calculations can be expensive.\n if (value === this._previousValue) {\n return;\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 textarea.style.height = 'auto';\n textarea.style.overflow = 'hidden';\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 this._previousValue = value;\n };\n MatTextareaAutosize.decorators = [\n { type: Directive, args: [{\n selector: \"textarea[mat-autosize], textarea[matTextareaAutosize]\",\n exportAs: 'matTextareaAutosize',\n host: {\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatTextareaAutosize.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Platform, },\n ]; };\n MatTextareaAutosize.propDecorators = {\n 'minRows': [{ type: Input, args: ['matAutosizeMinRows',] },],\n 'maxRows': [{ type: Input, args: ['matAutosizeMaxRows',] },],\n };\n return MatTextareaAutosize;\n}());\n\n/**\n * \\@docs-private\n * @param {?} type\n * @return {?}\n */\nfunction getMatInputUnsupportedTypeError(type) {\n return Error(\"Input type \\\"\" + type + \"\\\" isn't supported by matInput.\");\n}\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nvar MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'color',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\nvar nextUniqueId = 0;\n/**\n * Directive that allows a native input to work inside a `MatFormField`.\n */\nvar MatInput = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _platform\n * @param {?} ngControl\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} _defaultErrorStateMatcher\n */\n function MatInput(_elementRef, _renderer, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._platform = _platform;\n this.ngControl = ngControl;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n /**\n * Variables used as cache for getters and setters.\n */\n this._type = 'text';\n this._disabled = false;\n this._required = false;\n this._uid = \"mat-input-\" + nextUniqueId++;\n this._previousNativeValue = this.value;\n this._readonly = false;\n /**\n * Whether the input is focused.\n */\n this.focused = false;\n /**\n * Whether the input is in an error state.\n */\n this.errorState = false;\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 this.stateChanges = new Subject();\n /**\n * A name for this control that can be used by `mat-form-field`.\n */\n this.controlType = 'mat-input';\n /**\n * Placeholder attribute of the element.\n */\n this.placeholder = '';\n this._neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(function (t) { return getSupportedInputTypes().has(t); });\n // Force setter to be called in case id was not specified.\n this.id = this.id;\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 _renderer.listen(_elementRef.nativeElement, 'keyup', function (event) {\n var el = event.target;\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 Object.defineProperty(MatInput.prototype, \"disabled\", {\n /**\n * Whether the element is disabled.\n * @return {?}\n */\n get: function () { return this.ngControl ? this.ngControl.disabled : this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"id\", {\n /**\n * Unique id of the element.\n * @return {?}\n */\n get: function () { return this._id; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._id = value || this._uid; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"required\", {\n /**\n * Whether the element is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"type\", {\n /**\n * Input type of the element.\n * @return {?}\n */\n get: function () { return this._type; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._type = value || 'text';\n this._validateType();\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._renderer.setProperty(this._elementRef.nativeElement, 'type', this._type);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"value\", {\n /**\n * The input element's value.\n * @return {?}\n */\n get: function () { return this._elementRef.nativeElement.value; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this.value) {\n this._elementRef.nativeElement.value = value;\n this.stateChanges.next();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"readonly\", {\n /**\n * Whether the element is readonly.\n * @return {?}\n */\n get: function () { return this._readonly; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._readonly = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatInput.prototype.ngOnChanges = function () {\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatInput.prototype.ngOnDestroy = function () {\n this.stateChanges.complete();\n };\n /**\n * @return {?}\n */\n MatInput.prototype.ngDoCheck = function () {\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 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 * @return {?}\n */\n MatInput.prototype.focus = function () { this._elementRef.nativeElement.focus(); };\n /**\n * Callback for the cases where the focused state of the input changes.\n * @param {?} isFocused\n * @return {?}\n */\n MatInput.prototype._focusChanged = function (isFocused) {\n if (isFocused !== this.focused && !this.readonly) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n };\n /**\n * @return {?}\n */\n MatInput.prototype._onInput = function () {\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 * Re-evaluates the error state. This is only relevant with \\@angular/forms.\n * @return {?}\n */\n MatInput.prototype._updateErrorState = function () {\n var /** @type {?} */ oldState = this.errorState;\n var /** @type {?} */ parent = this._parentFormGroup || this._parentForm;\n var /** @type {?} */ matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n var /** @type {?} */ control = this.ngControl ? (this.ngControl.control) : null;\n var /** @type {?} */ newState = matcher.isErrorState(control, parent);\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n };\n /**\n * Does some manual dirty checking on the native input `value` property.\n * @return {?}\n */\n MatInput.prototype._dirtyCheckNativeValue = function () {\n var /** @type {?} */ newValue = this.value;\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 * @return {?}\n */\n MatInput.prototype._validateType = function () {\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 * @return {?}\n */\n MatInput.prototype._isNeverEmpty = function () {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n };\n /**\n * Checks whether the input is invalid based on the native validation.\n * @return {?}\n */\n MatInput.prototype._isBadInput = function () {\n // The `validity` property won't be present on platform-server.\n var /** @type {?} */ validity = ((this._elementRef.nativeElement)).validity;\n return validity && validity.badInput;\n };\n /**\n * Determines if the component host is a textarea. If not recognizable it returns false.\n * @return {?}\n */\n MatInput.prototype._isTextarea = function () {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\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 var /** @type {?} */ nodeName = this._platform.isBrowser ? nativeElement.nodeName : nativeElement.name;\n return nodeName ? nodeName.toLowerCase() === 'textarea' : false;\n };\n Object.defineProperty(MatInput.prototype, \"empty\", {\n /**\n * @return {?}\n */\n get: function () {\n return !this._isNeverEmpty() &&\n (this.value == null || this.value === '') &&\n // Check if the input contains bad input. If so, we know that it only appears empty because\n // the value failed to parse. From the user's perspective it is not empty.\n // TODO(mmalerba): Add e2e test for bad input case.\n !this._isBadInput();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () { return this.focused || !this.empty; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} ids\n * @return {?}\n */\n MatInput.prototype.setDescribedByIds = function (ids) { this._ariaDescribedby = ids.join(' '); };\n /**\n * @return {?}\n */\n MatInput.prototype.onContainerClick = function () { this.focus(); };\n MatInput.decorators = [\n { type: Directive, args: [{\n selector: \"input[matInput], textarea[matInput]\",\n exportAs: 'matInput',\n host: {\n 'class': 'mat-input-element mat-form-field-autofill-control',\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 '(blur)': '_focusChanged(false)',\n '(focus)': '_focusChanged(true)',\n '(input)': '_onInput()',\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInput.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: Platform, },\n { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: ErrorStateMatcher, },\n ]; };\n MatInput.propDecorators = {\n 'disabled': [{ type: Input },],\n 'id': [{ type: Input },],\n 'placeholder': [{ type: Input },],\n 'required': [{ type: Input },],\n 'type': [{ type: Input },],\n 'errorStateMatcher': [{ type: Input },],\n 'value': [{ type: Input },],\n 'readonly': [{ type: Input },],\n };\n return MatInput;\n}());\n\nvar MatInputModule = (function () {\n function MatInputModule() {\n }\n MatInputModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatInputModule.ctorParameters = function () { return []; };\n return MatInputModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatInputModule, MatTextareaAutosize, MatInput, getMatInputUnsupportedTypeError };\n//# sourceMappingURL=input.es5.js.map\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 */\nimport { CommonModule } from '@angular/common';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgModule, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule, MatLine, MatLineModule, MatLineSetter, MatPseudoCheckboxModule, MatRippleModule, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { SPACE } from '@angular/cdk/keycodes';\n\n/**\n * \\@docs-private\n */\nvar MatListBase = (function () {\n function MatListBase() {\n }\n return MatListBase;\n}());\nvar _MatListMixinBase = mixinDisableRipple(MatListBase);\n/**\n * \\@docs-private\n */\nvar MatListItemBase = (function () {\n function MatListItemBase() {\n }\n return MatListItemBase;\n}());\nvar _MatListItemMixinBase = mixinDisableRipple(MatListItemBase);\n/**\n * Divider between items within a list.\n */\nvar MatListDivider = (function () {\n function MatListDivider() {\n }\n MatListDivider.decorators = [\n { type: Directive, args: [{\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n 'aria-orientation': 'horizontal'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListDivider.ctorParameters = function () { return []; };\n return MatListDivider;\n}());\n/**\n * A Material Design list component.\n */\nvar MatList = (function (_super) {\n __extends(MatList, _super);\n function MatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatList.decorators = [\n { type: Component, args: [{selector: 'mat-list, mat-nav-list',\n exportAs: 'matList, matNavList',\n host: { 'role': 'list' },\n template: '<ng-content></ng-content>',\n styles: [\".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{margin:0}.mat-list,.mat-nav-list,.mat-selection-list{padding-top:8px;display:block}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{height:48px;line-height:16px}.mat-list .mat-subheader:first-child,.mat-nav-list .mat-subheader:first-child,.mat-selection-list .mat-subheader:first-child{margin-top:-8px}.mat-list .mat-list-item,.mat-nav-list .mat-list-item,.mat-selection-list .mat-list-item{display:block}.mat-list .mat-list-item .mat-list-item-content,.mat-nav-list .mat-list-item .mat-list-item-content,.mat-selection-list .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-item .mat-list-item-content-reverse,.mat-nav-list .mat-list-item .mat-list-item-content-reverse,.mat-selection-list .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-item .mat-list-item-ripple,.mat-nav-list .mat-list-item .mat-list-item-ripple,.mat-selection-list .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-item .mat-list-text,.mat-nav-list .mat-list-item .mat-list-text,.mat-selection-list .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-item .mat-list-text>*,.mat-nav-list .mat-list-item .mat-list-text>*,.mat-selection-list .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-item .mat-list-text:empty,.mat-nav-list .mat-list-item .mat-list-text:empty,.mat-selection-list .mat-list-item .mat-list-text:empty{display:none}.mat-list .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-item .mat-list-avatar,.mat-nav-list .mat-list-item .mat-list-avatar,.mat-selection-list .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-item .mat-list-icon,.mat-nav-list .mat-list-item .mat-list-icon,.mat-selection-list .mat-list-item .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list .mat-list-option,.mat-nav-list .mat-list-option,.mat-selection-list .mat-list-option{display:block}.mat-list .mat-list-option .mat-list-item-content,.mat-nav-list .mat-list-option .mat-list-item-content,.mat-selection-list .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-option .mat-list-item-content-reverse,.mat-nav-list .mat-list-option .mat-list-item-content-reverse,.mat-selection-list .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-option .mat-list-item-ripple,.mat-nav-list .mat-list-option .mat-list-item-ripple,.mat-selection-list .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-option .mat-list-text,.mat-nav-list .mat-list-option .mat-list-text,.mat-selection-list .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-option .mat-list-text>*,.mat-nav-list .mat-list-option .mat-list-text>*,.mat-selection-list .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-option .mat-list-text:empty,.mat-nav-list .mat-list-option .mat-list-text:empty,.mat-selection-list .mat-list-option .mat-list-text:empty{display:none}.mat-list .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-option .mat-list-avatar,.mat-nav-list .mat-list-option .mat-list-avatar,.mat-selection-list .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-option .mat-list-icon,.mat-nav-list .mat-list-option .mat-list-icon,.mat-selection-list .mat-list-option .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense],.mat-nav-list[dense],.mat-selection-list[dense]{padding-top:4px;display:block}.mat-list[dense] .mat-subheader,.mat-nav-list[dense] .mat-subheader,.mat-selection-list[dense] .mat-subheader{height:40px;line-height:8px}.mat-list[dense] .mat-subheader:first-child,.mat-nav-list[dense] .mat-subheader:first-child,.mat-selection-list[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list[dense] .mat-list-item,.mat-nav-list[dense] .mat-list-item,.mat-selection-list[dense] .mat-list-item{display:block}.mat-list[dense] .mat-list-item .mat-list-item-content,.mat-nav-list[dense] .mat-list-item .mat-list-item-content,.mat-selection-list[dense] .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-item .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-item .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-item .mat-list-text,.mat-nav-list[dense] .mat-list-item .mat-list-text,.mat-selection-list[dense] .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-item .mat-list-text>*,.mat-nav-list[dense] .mat-list-item .mat-list-text>*,.mat-selection-list[dense] .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-item .mat-list-text:empty,.mat-nav-list[dense] .mat-list-item .mat-list-text:empty,.mat-selection-list[dense] .mat-list-item .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-item .mat-list-avatar,.mat-nav-list[dense] .mat-list-item .mat-list-avatar,.mat-selection-list[dense] .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-item .mat-list-icon,.mat-nav-list[dense] .mat-list-item .mat-list-icon,.mat-selection-list[dense] .mat-list-item .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense] .mat-list-option,.mat-nav-list[dense] .mat-list-option,.mat-selection-list[dense] .mat-list-option{display:block}.mat-list[dense] .mat-list-option .mat-list-item-content,.mat-nav-list[dense] .mat-list-option .mat-list-item-content,.mat-selection-list[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-option .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-option .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-option .mat-list-text,.mat-nav-list[dense] .mat-list-option .mat-list-text,.mat-selection-list[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-option .mat-list-text>*,.mat-nav-list[dense] .mat-list-option .mat-list-text>*,.mat-selection-list[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-option .mat-list-text:empty,.mat-nav-list[dense] .mat-list-option .mat-list-text:empty,.mat-selection-list[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-option .mat-list-avatar,.mat-nav-list[dense] .mat-list-option .mat-list-avatar,.mat-selection-list[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-option .mat-list-icon,.mat-nav-list[dense] .mat-list-option .mat-list-icon,.mat-selection-list[dense] .mat-list-option .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-divider{display:block;border-top-style:solid;border-top-width:1px;margin:0}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item-content{cursor:pointer}.mat-nav-list .mat-list-item-content.mat-list-item-focus,.mat-nav-list .mat-list-item-content:hover{outline:0}.mat-list-option:not([disabled]){cursor:pointer}\"],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatList.ctorParameters = function () { return []; };\n return MatList;\n}(_MatListMixinBase));\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListCssMatStyler = (function () {\n function MatListCssMatStyler() {\n }\n MatListCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-list',\n host: { 'class': 'mat-list' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListCssMatStyler.ctorParameters = function () { return []; };\n return MatListCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatNavListCssMatStyler = (function () {\n function MatNavListCssMatStyler() {\n }\n MatNavListCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-nav-list',\n host: { 'class': 'mat-nav-list' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatNavListCssMatStyler.ctorParameters = function () { return []; };\n return MatNavListCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatDividerCssMatStyler = (function () {\n function MatDividerCssMatStyler() {\n }\n MatDividerCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-divider',\n host: { 'class': 'mat-divider' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDividerCssMatStyler.ctorParameters = function () { return []; };\n return MatDividerCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListAvatarCssMatStyler = (function () {\n function MatListAvatarCssMatStyler() {\n }\n MatListAvatarCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-list-avatar], [matListAvatar]',\n host: { 'class': 'mat-list-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListAvatarCssMatStyler.ctorParameters = function () { return []; };\n return MatListAvatarCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListIconCssMatStyler = (function () {\n function MatListIconCssMatStyler() {\n }\n MatListIconCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-list-icon], [matListIcon]',\n host: { 'class': 'mat-list-icon' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListIconCssMatStyler.ctorParameters = function () { return []; };\n return MatListIconCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListSubheaderCssMatStyler = (function () {\n function MatListSubheaderCssMatStyler() {\n }\n MatListSubheaderCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-subheader], [matSubheader]',\n host: { 'class': 'mat-subheader' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListSubheaderCssMatStyler.ctorParameters = function () { return []; };\n return MatListSubheaderCssMatStyler;\n}());\n/**\n * An item within a Material Design list.\n */\nvar MatListItem = (function (_super) {\n __extends(MatListItem, _super);\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _list\n * @param {?} navList\n */\n function MatListItem(_renderer, _element, _list, navList) {\n var _this = _super.call(this) || this;\n _this._renderer = _renderer;\n _this._element = _element;\n _this._list = _list;\n _this._isNavList = false;\n _this._isNavList = !!navList;\n return _this;\n }\n Object.defineProperty(MatListItem.prototype, \"_hasAvatar\", {\n /**\n * @param {?} avatar\n * @return {?}\n */\n set: function (avatar) {\n if (avatar != null) {\n this._renderer.addClass(this._element.nativeElement, 'mat-list-item-avatar');\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, 'mat-list-item-avatar');\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatListItem.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n };\n /**\n * Whether this list item should show a ripple effect when clicked.\n * @return {?}\n */\n MatListItem.prototype._isRippleDisabled = function () {\n return !this._isNavList || this.disableRipple || this._list.disableRipple;\n };\n /**\n * @return {?}\n */\n MatListItem.prototype._handleFocus = function () {\n this._renderer.addClass(this._element.nativeElement, 'mat-list-item-focus');\n };\n /**\n * @return {?}\n */\n MatListItem.prototype._handleBlur = function () {\n this._renderer.removeClass(this._element.nativeElement, 'mat-list-item-focus');\n };\n /**\n * Retrieves the DOM element of the component host.\n * @return {?}\n */\n MatListItem.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatListItem.decorators = [\n { type: Component, args: [{selector: 'mat-list-item, a[mat-list-item]',\n exportAs: 'matListItem',\n host: {\n 'role': 'listitem',\n 'class': 'mat-list-item',\n '(focus)': '_handleFocus()',\n '(blur)': '_handleBlur()',\n },\n inputs: ['disableRipple'],\n template: \"<div class=\\\"mat-list-item-content\\\"><div class=\\\"mat-list-item-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\"></div><ng-content select=\\\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\\\"></ng-content><div class=\\\"mat-list-text\\\"><ng-content select=\\\"[mat-line], [matLine]\\\"></ng-content></div><ng-content></ng-content></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListItem.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: MatList, decorators: [{ type: Optional },] },\n { type: MatNavListCssMatStyler, decorators: [{ type: Optional },] },\n ]; };\n MatListItem.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n '_hasAvatar': [{ type: ContentChild, args: [MatListAvatarCssMatStyler,] },],\n };\n return MatListItem;\n}(_MatListItemMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatSelectionListBase = (function () {\n function MatSelectionListBase() {\n }\n return MatSelectionListBase;\n}());\nvar _MatSelectionListMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatSelectionListBase)));\n/**\n * \\@docs-private\n */\nvar MatListOptionBase = (function () {\n function MatListOptionBase() {\n }\n return MatListOptionBase;\n}());\nvar _MatListOptionMixinBase = mixinDisableRipple(MatListOptionBase);\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 checked.\n */\nvar MatListOption = (function (_super) {\n __extends(MatListOption, _super);\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _changeDetector\n * @param {?} selectionList\n */\n function MatListOption(_renderer, _element, _changeDetector, selectionList) {\n var _this = _super.call(this) || this;\n _this._renderer = _renderer;\n _this._element = _element;\n _this._changeDetector = _changeDetector;\n _this.selectionList = selectionList;\n _this._selected = false;\n _this._disabled = false;\n /**\n * Whether the option has focus.\n */\n _this._hasFocus = false;\n /**\n * Whether the label should appear before or after the checkbox. Defaults to 'after'\n */\n _this.checkboxPosition = 'after';\n /**\n * Emitted when the option is selected.\n */\n _this.selectChange = new EventEmitter();\n /**\n * Emitted when the option is deselected.\n */\n _this.deselected = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatListOption.prototype, \"disabled\", {\n /**\n * Whether the option is disabled.\n * @return {?}\n */\n get: function () { return (this.selectionList && this.selectionList.disabled) || this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatListOption.prototype, \"selected\", {\n /**\n * Whether the option is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ isSelected = coerceBooleanProperty(value);\n if (isSelected !== this._selected) {\n var /** @type {?} */ selectionModel = this.selectionList.selectedOptions;\n this._selected = isSelected;\n isSelected ? selectionModel.select(this) : selectionModel.deselect(this);\n this._changeDetector.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatListOption.prototype.ngOnInit = function () {\n if (this.selected) {\n this.selectionList.selectedOptions.select(this);\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n if (this.selectionList.disabled) {\n this.disabled = true;\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype.ngOnDestroy = function () {\n this.selectionList._removeOptionFromList(this);\n };\n /**\n * Toggles the selection state of the option.\n * @return {?}\n */\n MatListOption.prototype.toggle = function () {\n this.selected = !this.selected;\n };\n /**\n * Allows for programmatic focusing of the option.\n * @return {?}\n */\n MatListOption.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Whether this list item should show a ripple effect when clicked.\n * @return {?}\n */\n MatListOption.prototype._isRippleDisabled = function () {\n return this.disabled || this.disableRipple || this.selectionList.disableRipple;\n };\n /**\n * @return {?}\n */\n MatListOption.prototype._handleClick = function () {\n if (!this.disabled) {\n this.toggle();\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype._handleFocus = function () {\n this._hasFocus = true;\n this.selectionList._setFocusedOption(this);\n };\n /**\n * Retrieves the DOM element of the component host.\n * @return {?}\n */\n MatListOption.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatListOption.decorators = [\n { type: Component, args: [{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)': '_hasFocus = false',\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 template: \"<div class=\\\"mat-list-item-content\\\" [class.mat-list-item-content-reverse]=\\\"checkboxPosition == 'after'\\\" [class.mat-list-item-disabled]=\\\"disabled\\\"><div mat-ripple class=\\\"mat-list-item-ripple\\\" [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\"></div><mat-pseudo-checkbox #autocheckbox [state]=\\\"selected ? 'checked' : 'unchecked'\\\" [disabled]=\\\"disabled\\\"></mat-pseudo-checkbox><div class=\\\"mat-list-text\\\"><ng-content></ng-content></div></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListOption.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: MatSelectionList, decorators: [{ type: Optional }, { type: Inject, args: [forwardRef(function () { return MatSelectionList; }),] },] },\n ]; };\n MatListOption.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n 'checkboxPosition': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'selectChange': [{ type: Output },],\n 'deselected': [{ type: Output },],\n };\n return MatListOption;\n}(_MatListOptionMixinBase));\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\nvar MatSelectionList = (function (_super) {\n __extends(MatSelectionList, _super);\n /**\n * @param {?} _element\n * @param {?} tabIndex\n */\n function MatSelectionList(_element, tabIndex) {\n var _this = _super.call(this) || this;\n _this._element = _element;\n /**\n * The currently selected options.\n */\n _this.selectedOptions = new SelectionModel(true);\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n /**\n * @return {?}\n */\n MatSelectionList.prototype.ngAfterContentInit = function () {\n this._keyManager = new FocusKeyManager(this.options).withWrap();\n };\n /**\n * Focus the selection-list.\n * @return {?}\n */\n MatSelectionList.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Selects all of the options.\n * @return {?}\n */\n MatSelectionList.prototype.selectAll = function () {\n this.options.forEach(function (option) {\n if (!option.selected) {\n option.toggle();\n }\n });\n };\n /**\n * Deselects all of the options.\n * @return {?}\n */\n MatSelectionList.prototype.deselectAll = function () {\n this.options.forEach(function (option) {\n if (option.selected) {\n option.toggle();\n }\n });\n };\n /**\n * Sets the focused option of the selection-list.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._setFocusedOption = function (option) {\n this._keyManager.updateActiveItemIndex(this._getOptionIndex(option));\n };\n /**\n * Removes an option from the selection list and updates the active item.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._removeOptionFromList = function (option) {\n if (option._hasFocus) {\n var /** @type {?} */ optionIndex = this._getOptionIndex(option);\n // Check whether the option is the last item\n if (optionIndex > 0) {\n this._keyManager.setPreviousItemActive();\n }\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 * @param {?} event\n * @return {?}\n */\n MatSelectionList.prototype._keydown = function (event) {\n switch (event.keyCode) {\n case SPACE:\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 * Toggles the selected state of the currently focused option.\n * @return {?}\n */\n MatSelectionList.prototype._toggleSelectOnFocusedOption = function () {\n var /** @type {?} */ focusedIndex = this._keyManager.activeItemIndex;\n if (focusedIndex != null && this._isValidIndex(focusedIndex)) {\n var /** @type {?} */ focusedOption = this.options.toArray()[focusedIndex];\n if (focusedOption) {\n focusedOption.toggle();\n }\n }\n };\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param {?} index The index to be checked.\n * @return {?} True if the index is valid for our list of options.\n */\n MatSelectionList.prototype._isValidIndex = function (index) {\n return index >= 0 && index < this.options.length;\n };\n /**\n * Returns the index of the specified list option.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._getOptionIndex = function (option) {\n return this.options.toArray().indexOf(option);\n };\n MatSelectionList.decorators = [\n { type: Component, args: [{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 '(keydown)': '_keydown($event)',\n '[attr.aria-disabled]': 'disabled.toString()'\n },\n template: '<ng-content></ng-content>',\n styles: [\".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{margin:0}.mat-list,.mat-nav-list,.mat-selection-list{padding-top:8px;display:block}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{height:48px;line-height:16px}.mat-list .mat-subheader:first-child,.mat-nav-list .mat-subheader:first-child,.mat-selection-list .mat-subheader:first-child{margin-top:-8px}.mat-list .mat-list-item,.mat-nav-list .mat-list-item,.mat-selection-list .mat-list-item{display:block}.mat-list .mat-list-item .mat-list-item-content,.mat-nav-list .mat-list-item .mat-list-item-content,.mat-selection-list .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-item .mat-list-item-content-reverse,.mat-nav-list .mat-list-item .mat-list-item-content-reverse,.mat-selection-list .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-item .mat-list-item-ripple,.mat-nav-list .mat-list-item .mat-list-item-ripple,.mat-selection-list .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-item .mat-list-text,.mat-nav-list .mat-list-item .mat-list-text,.mat-selection-list .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-item .mat-list-text>*,.mat-nav-list .mat-list-item .mat-list-text>*,.mat-selection-list .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-item .mat-list-text:empty,.mat-nav-list .mat-list-item .mat-list-text:empty,.mat-selection-list .mat-list-item .mat-list-text:empty{display:none}.mat-list .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-item .mat-list-avatar,.mat-nav-list .mat-list-item .mat-list-avatar,.mat-selection-list .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-item .mat-list-icon,.mat-nav-list .mat-list-item .mat-list-icon,.mat-selection-list .mat-list-item .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list .mat-list-option,.mat-nav-list .mat-list-option,.mat-selection-list .mat-list-option{display:block}.mat-list .mat-list-option .mat-list-item-content,.mat-nav-list .mat-list-option .mat-list-item-content,.mat-selection-list .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-option .mat-list-item-content-reverse,.mat-nav-list .mat-list-option .mat-list-item-content-reverse,.mat-selection-list .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-option .mat-list-item-ripple,.mat-nav-list .mat-list-option .mat-list-item-ripple,.mat-selection-list .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-option .mat-list-text,.mat-nav-list .mat-list-option .mat-list-text,.mat-selection-list .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-option .mat-list-text>*,.mat-nav-list .mat-list-option .mat-list-text>*,.mat-selection-list .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-option .mat-list-text:empty,.mat-nav-list .mat-list-option .mat-list-text:empty,.mat-selection-list .mat-list-option .mat-list-text:empty{display:none}.mat-list .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-option .mat-list-avatar,.mat-nav-list .mat-list-option .mat-list-avatar,.mat-selection-list .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-option .mat-list-icon,.mat-nav-list .mat-list-option .mat-list-icon,.mat-selection-list .mat-list-option .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense],.mat-nav-list[dense],.mat-selection-list[dense]{padding-top:4px;display:block}.mat-list[dense] .mat-subheader,.mat-nav-list[dense] .mat-subheader,.mat-selection-list[dense] .mat-subheader{height:40px;line-height:8px}.mat-list[dense] .mat-subheader:first-child,.mat-nav-list[dense] .mat-subheader:first-child,.mat-selection-list[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list[dense] .mat-list-item,.mat-nav-list[dense] .mat-list-item,.mat-selection-list[dense] .mat-list-item{display:block}.mat-list[dense] .mat-list-item .mat-list-item-content,.mat-nav-list[dense] .mat-list-item .mat-list-item-content,.mat-selection-list[dense] .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-item .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-item .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-item .mat-list-text,.mat-nav-list[dense] .mat-list-item .mat-list-text,.mat-selection-list[dense] .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-item .mat-list-text>*,.mat-nav-list[dense] .mat-list-item .mat-list-text>*,.mat-selection-list[dense] .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-item .mat-list-text:empty,.mat-nav-list[dense] .mat-list-item .mat-list-text:empty,.mat-selection-list[dense] .mat-list-item .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-item .mat-list-avatar,.mat-nav-list[dense] .mat-list-item .mat-list-avatar,.mat-selection-list[dense] .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-item .mat-list-icon,.mat-nav-list[dense] .mat-list-item .mat-list-icon,.mat-selection-list[dense] .mat-list-item .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense] .mat-list-option,.mat-nav-list[dense] .mat-list-option,.mat-selection-list[dense] .mat-list-option{display:block}.mat-list[dense] .mat-list-option .mat-list-item-content,.mat-nav-list[dense] .mat-list-option .mat-list-item-content,.mat-selection-list[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-option .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-option .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-option .mat-list-text,.mat-nav-list[dense] .mat-list-option .mat-list-text,.mat-selection-list[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-option .mat-list-text>*,.mat-nav-list[dense] .mat-list-option .mat-list-text>*,.mat-selection-list[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-option .mat-list-text:empty,.mat-nav-list[dense] .mat-list-option .mat-list-text:empty,.mat-selection-list[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-option .mat-list-avatar,.mat-nav-list[dense] .mat-list-option .mat-list-avatar,.mat-selection-list[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-option .mat-list-icon,.mat-nav-list[dense] .mat-list-option .mat-list-icon,.mat-selection-list[dense] .mat-list-option .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-divider{display:block;border-top-style:solid;border-top-width:1px;margin:0}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item-content{cursor:pointer}.mat-nav-list .mat-list-item-content.mat-list-item-focus,.mat-nav-list .mat-list-item-content:hover{outline:0}.mat-list-option:not([disabled]){cursor:pointer}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectionList.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatSelectionList.propDecorators = {\n 'options': [{ type: ContentChildren, args: [MatListOption,] },],\n };\n return MatSelectionList;\n}(_MatSelectionListMixinBase));\n\nvar MatListModule = (function () {\n function MatListModule() {\n }\n MatListModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n exports: [\n MatList,\n MatListItem,\n MatListDivider,\n MatListAvatarCssMatStyler,\n MatLineModule,\n MatCommonModule,\n MatListIconCssMatStyler,\n MatListCssMatStyler,\n MatNavListCssMatStyler,\n MatDividerCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatPseudoCheckboxModule,\n MatSelectionList,\n MatListOption\n ],\n declarations: [\n MatList,\n MatListItem,\n MatListDivider,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListCssMatStyler,\n MatNavListCssMatStyler,\n MatDividerCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatSelectionList,\n MatListOption\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListModule.ctorParameters = function () { return []; };\n return MatListModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatListModule, MatListBase, _MatListMixinBase, MatListItemBase, _MatListItemMixinBase, MatListDivider, MatList, MatListCssMatStyler, MatNavListCssMatStyler, MatDividerCssMatStyler, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatListItem, MatSelectionListBase, _MatSelectionListMixinBase, MatListOptionBase, _MatListOptionMixinBase, MatListOption, MatSelectionList };\n//# sourceMappingURL=list.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, ContentChildren, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule, MatRippleModule, mixinDisabled } from '@angular/material/core';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { FocusKeyManager, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { RxChain, filter, first, startWith, switchMap } from '@angular/cdk/rxjs';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subscription } from 'rxjs/Subscription';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { of } from 'rxjs/observable/of';\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 * 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// TODO(kara): switch to :enter and :leave once Mobile Safari is sorted out.\nvar transformMenu = 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 * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\nvar fadeInItems = trigger('fadeInItems', [\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n]);\n\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * \\@docs-private\n * @return {?}\n */\nfunction 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 * 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 * @return {?}\n */\nfunction 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 * 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 * @return {?}\n */\nfunction 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/**\n * \\@docs-private\n */\nvar MatMenuItemBase = (function () {\n function MatMenuItemBase() {\n }\n return MatMenuItemBase;\n}());\nvar _MatMenuItemMixinBase = mixinDisabled(MatMenuItemBase);\n/**\n * This directive is intended to be used inside an mat-menu tag.\n * It exists mostly to set the role attribute.\n */\nvar MatMenuItem = (function (_super) {\n __extends(MatMenuItem, _super);\n /**\n * @param {?} _elementRef\n */\n function MatMenuItem(_elementRef) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n /**\n * Stream that emits when the menu item is hovered.\n */\n _this.hover = new Subject();\n /**\n * Whether the menu item is highlighted.\n */\n _this._highlighted = false;\n /**\n * Whether the menu item acts as a trigger for a sub-menu.\n */\n _this._triggersSubmenu = false;\n return _this;\n }\n /**\n * Focuses the menu item.\n * @return {?}\n */\n MatMenuItem.prototype.focus = function () {\n this._getHostElement().focus();\n };\n /**\n * @return {?}\n */\n MatMenuItem.prototype.ngOnDestroy = function () {\n this.hover.complete();\n };\n /**\n * Used to set the `tabindex`.\n * @return {?}\n */\n MatMenuItem.prototype._getTabIndex = function () {\n return this.disabled ? '-1' : '0';\n };\n /**\n * Returns the host DOM element.\n * @return {?}\n */\n MatMenuItem.prototype._getHostElement = function () {\n return this._elementRef.nativeElement;\n };\n /**\n * Prevents the default element actions if it is disabled.\n * @param {?} event\n * @return {?}\n */\n MatMenuItem.prototype._checkDisabled = function (event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n /**\n * Emits to the hover stream.\n * @return {?}\n */\n MatMenuItem.prototype._emitHoverEvent = function () {\n if (!this.disabled) {\n this.hover.next(this);\n }\n };\n /**\n * Gets the label to be used when determining whether the option should be focused.\n * @return {?}\n */\n MatMenuItem.prototype.getLabel = function () {\n var /** @type {?} */ element = this._elementRef.nativeElement;\n var /** @type {?} */ output = '';\n if (element.childNodes) {\n var /** @type {?} */ length_1 = element.childNodes.length;\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 (var /** @type {?} */ i = 0; i < length_1; i++) {\n if (element.childNodes[i].nodeType === Node.TEXT_NODE) {\n output += element.childNodes[i].textContent;\n }\n }\n }\n return output.trim();\n };\n MatMenuItem.decorators = [\n { type: Component, args: [{selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled'],\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 template: \"<ng-content></ng-content><div class=\\\"mat-menu-ripple\\\" *ngIf=\\\"!disabled\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\"></div>\",\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuItem.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatMenuItem;\n}(_MatMenuItemMixinBase));\n\n/**\n * Injection token to be used to override the default options for `mat-menu`.\n */\nvar MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options');\n/**\n * Start elevation for the menu panel.\n * \\@docs-private\n */\nvar MAT_MENU_BASE_ELEVATION = 2;\nvar MatMenu = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _ngZone\n * @param {?} _defaultOptions\n */\n function MatMenu(_elementRef, _ngZone, _defaultOptions) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /**\n * Subscription to tab events on the menu panel\n */\n this._tabSubscription = Subscription.EMPTY;\n /**\n * Config object to be passed into the menu's ngClass\n */\n this._classList = {};\n /**\n * Current state of the panel animation.\n */\n this._panelAnimationState = 'void';\n /**\n * Whether the menu should overlap its trigger.\n */\n this.overlapTrigger = this._defaultOptions.overlapTrigger;\n /**\n * Event emitted when the menu is closed.\n */\n this.close = new EventEmitter();\n }\n Object.defineProperty(MatMenu.prototype, \"xPosition\", {\n /**\n * Position of the menu in the X axis.\n * @return {?}\n */\n get: function () { return this._xPosition; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== 'before' && value !== 'after') {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenu.prototype, \"yPosition\", {\n /**\n * Position of the menu in the Y axis.\n * @return {?}\n */\n get: function () { return this._yPosition; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== 'above' && value !== 'below') {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenu.prototype, \"classList\", {\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 * @return {?}\n */\n set: function (classes) {\n if (classes && classes.length) {\n this._classList = classes.split(' ').reduce(function (obj, className) {\n obj[className] = true;\n return obj;\n }, {});\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMenu.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(function () { return _this.close.emit('keydown'); });\n };\n /**\n * @return {?}\n */\n MatMenu.prototype.ngOnDestroy = function () {\n this._tabSubscription.unsubscribe();\n this.close.emit();\n this.close.complete();\n };\n /**\n * Stream that emits whenever the hovered menu item changes.\n * @return {?}\n */\n MatMenu.prototype.hover = function () {\n var _this = this;\n if (this.items) {\n return RxChain.from(this.items.changes)\n .call(startWith, this.items)\n .call(switchMap, function (items) { return merge.apply(void 0, items.map(function (item) { return item.hover; })); })\n .result();\n }\n return RxChain.from(this._ngZone.onStable.asObservable())\n .call(first)\n .call(switchMap, function () { return _this.hover(); })\n .result();\n };\n /**\n * Handle a keyboard event from the menu, delegating to the appropriate action.\n * @param {?} event\n * @return {?}\n */\n MatMenu.prototype._handleKeydown = function (event) {\n switch (event.keyCode) {\n case ESCAPE:\n this.close.emit('keydown');\n event.stopPropagation();\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.close.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.close.emit('keydown');\n }\n break;\n default:\n this._keyManager.onKeydown(event);\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 * @return {?}\n */\n MatMenu.prototype.focusFirstItem = function () {\n this._keyManager.setFirstItemActive();\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 * @param {?=} posX\n * @param {?=} posY\n * @return {?}\n */\n MatMenu.prototype.setPositionClasses = function (posX, posY) {\n if (posX === void 0) { posX = this.xPosition; }\n if (posY === void 0) { posY = 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 * Sets the menu panel elevation.\n * @param {?} depth Number of parent menus that come before the menu.\n * @return {?}\n */\n MatMenu.prototype.setElevation = function (depth) {\n // The elevation starts at the base and increases by one for each level.\n var /** @type {?} */ newElevation = \"mat-elevation-z\" + (MAT_MENU_BASE_ELEVATION + depth);\n var /** @type {?} */ customElevation = Object.keys(this._classList).find(function (c) { return c.startsWith('mat-elevation-z'); });\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n };\n /**\n * Starts the enter animation.\n * @return {?}\n */\n MatMenu.prototype._startAnimation = function () {\n this._panelAnimationState = 'enter-start';\n };\n /**\n * Resets the panel animation to its initial state.\n * @return {?}\n */\n MatMenu.prototype._resetAnimation = function () {\n this._panelAnimationState = 'void';\n };\n /**\n * Callback that is invoked when the panel animation completes.\n * @param {?} event\n * @return {?}\n */\n MatMenu.prototype._onAnimationDone = function (event) {\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 MatMenu.decorators = [\n { type: Component, args: [{selector: 'mat-menu',\n template: \"<ng-template><div class=\\\"mat-menu-panel\\\" [ngClass]=\\\"_classList\\\" (keydown)=\\\"_handleKeydown($event)\\\" (click)=\\\"close.emit('click')\\\" [@transformMenu]=\\\"_panelAnimationState\\\" (@transformMenu.done)=\\\"_onAnimationDone($event)\\\" role=\\\"menu\\\"><div class=\\\"mat-menu-content\\\" [@fadeInItems]=\\\"'showing'\\\"><ng-content></ng-content></div></div></ng-template>\",\n styles: [\".mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:2px}.mat-menu-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-menu-panel.mat-menu-after.mat-menu-below{transform-origin:left top}.mat-menu-panel.mat-menu-after.mat-menu-above{transform-origin:left bottom}.mat-menu-panel.mat-menu-before.mat-menu-below{transform-origin:right top}.mat-menu-panel.mat-menu-before.mat-menu-above{transform-origin:right bottom}[dir=rtl] .mat-menu-panel.mat-menu-after.mat-menu-below{transform-origin:right top}[dir=rtl] .mat-menu-panel.mat-menu-after.mat-menu-above{transform-origin:right bottom}[dir=rtl] .mat-menu-panel.mat-menu-before.mat-menu-below{transform-origin:left top}[dir=rtl] .mat-menu-panel.mat-menu-before.mat-menu-above{transform-origin:left bottom}.mat-menu-panel.ng-animating{pointer-events:none}@media screen and (-ms-high-contrast:active){.mat-menu-panel{outline:solid 1px}}.mat-menu-content{padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;position:relative}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item .mat-icon{vertical-align:middle}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:'';display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:8px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n transformMenu,\n fadeInItems\n ],\n exportAs: 'matMenu'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenu.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: NgZone, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] },] },\n ]; };\n MatMenu.propDecorators = {\n 'xPosition': [{ type: Input },],\n 'yPosition': [{ type: Input },],\n 'templateRef': [{ type: ViewChild, args: [TemplateRef,] },],\n 'items': [{ type: ContentChildren, args: [MatMenuItem,] },],\n 'overlapTrigger': [{ type: Input },],\n 'classList': [{ type: Input, args: ['class',] },],\n 'close': [{ type: Output },],\n };\n return MatMenu;\n}());\n\n/**\n * Injection token that determines the scroll handling while the menu is open.\n */\nvar MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar 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 * Default top padding of the menu panel.\n */\nvar MENU_PANEL_TOP_PADDING = 8;\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 */\nvar MatMenuTrigger = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _element\n * @param {?} _viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _parentMenu\n * @param {?} _menuItemInstance\n * @param {?} _dir\n */\n function MatMenuTrigger(_overlay, _element, _viewContainerRef, _scrollStrategy, _parentMenu, _menuItemInstance, _dir) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._scrollStrategy = _scrollStrategy;\n this._parentMenu = _parentMenu;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closeSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._openedByMouse = false;\n /**\n * Event emitted when the associated menu is opened.\n */\n this.onMenuOpen = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n */\n this.onMenuClose = new EventEmitter();\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n Object.defineProperty(MatMenuTrigger.prototype, \"_deprecatedMatMenuTriggerFor\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () {\n return this.menu;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.menu = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMenuTrigger.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._checkMenu();\n this.menu.close.subscribe(function (reason) {\n _this._destroyMenu();\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.close.emit(reason);\n }\n });\n if (this.triggersSubmenu()) {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n this._hoverSubscription = filter\n .call(this._parentMenu.hover(), function (active) { return active === _this._menuItemInstance; })\n .subscribe(function () {\n _this._openedByMouse = true;\n _this.openMenu();\n });\n }\n };\n /**\n * @return {?}\n */\n MatMenuTrigger.prototype.ngOnDestroy = function () {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._cleanUpSubscriptions();\n };\n Object.defineProperty(MatMenuTrigger.prototype, \"menuOpen\", {\n /**\n * Whether the menu is open.\n * @return {?}\n */\n get: function () {\n return this._menuOpen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenuTrigger.prototype, \"dir\", {\n /**\n * The text direction of the containing app.\n * @return {?}\n */\n get: function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Whether the menu triggers a sub-menu or a top-level one.\n * @return {?}\n */\n MatMenuTrigger.prototype.triggersSubmenu = function () {\n return !!(this._menuItemInstance && this._parentMenu);\n };\n /**\n * Toggles the menu between the open and closed states.\n * @return {?}\n */\n MatMenuTrigger.prototype.toggleMenu = function () {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n };\n /**\n * Opens the menu.\n * @return {?}\n */\n MatMenuTrigger.prototype.openMenu = function () {\n var _this = this;\n if (!this._menuOpen) {\n this._createOverlay().attach(this._portal);\n this._closeSubscription = this._menuClosingActions().subscribe(function () {\n _this.menu.close.emit();\n });\n this._initMenu();\n if (this.menu instanceof MatMenu) {\n this.menu._startAnimation();\n }\n }\n };\n /**\n * Closes the menu.\n * @return {?}\n */\n MatMenuTrigger.prototype.closeMenu = function () {\n this.menu.close.emit();\n };\n /**\n * Focuses the menu trigger.\n * @return {?}\n */\n MatMenuTrigger.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Closes the menu and does the necessary cleanup.\n * @return {?}\n */\n MatMenuTrigger.prototype._destroyMenu = function () {\n if (this._overlayRef && this.menuOpen) {\n this._resetMenu();\n this._overlayRef.detach();\n this._closeSubscription.unsubscribe();\n if (this.menu instanceof MatMenu) {\n this.menu._resetAnimation();\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 * @return {?}\n */\n MatMenuTrigger.prototype._initMenu = function () {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this._setIsMenuOpen(true);\n // Should only set focus if opened via the keyboard, so keyboard users can\n // can easily navigate menu items. According to spec, mouse users should not\n // see the focus style.\n if (!this._openedByMouse) {\n this.menu.focusFirstItem();\n }\n };\n /**\n * Updates the menu elevation based on the amount of parent menus that it has.\n * @return {?}\n */\n MatMenuTrigger.prototype._setMenuElevation = function () {\n if (this.menu.setElevation) {\n var /** @type {?} */ depth = 0;\n var /** @type {?} */ parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\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 * @return {?}\n */\n MatMenuTrigger.prototype._resetMenu = function () {\n this._setIsMenuOpen(false);\n // Focus only needs to be reset to the host element if the menu was opened\n // by the keyboard and manually shifted to the first menu item.\n if (!this._openedByMouse) {\n this.focus();\n }\n this._openedByMouse = false;\n };\n /**\n * @param {?} isOpen\n * @return {?}\n */\n MatMenuTrigger.prototype._setIsMenuOpen = function (isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.onMenuOpen.emit() : this.onMenuClose.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\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 * @return {?}\n */\n MatMenuTrigger.prototype._checkMenu = function () {\n if (!this.menu) {\n throwMatMenuMissingError();\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 * @return {?}\n */\n MatMenuTrigger.prototype._createOverlay = function () {\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n var /** @type {?} */ config = this._getOverlayConfig();\n this._subscribeToPositions(/** @type {?} */ (config.positionStrategy));\n this._overlayRef = this._overlay.create(config);\n }\n return this._overlayRef;\n };\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @return {?} OverlayConfig\n */\n MatMenuTrigger.prototype._getOverlayConfig = function () {\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 * 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 * @param {?} position\n * @return {?}\n */\n MatMenuTrigger.prototype._subscribeToPositions = function (position) {\n var _this = this;\n this._positionSubscription = position.onPositionChange.subscribe(function (change) {\n var /** @type {?} */ posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n var /** @type {?} */ posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n _this.menu.setPositionClasses(posX, posY);\n });\n };\n /**\n * This method builds the position strategy for the overlay, so the menu is properly connected\n * to the trigger.\n * @return {?} ConnectedPositionStrategy\n */\n MatMenuTrigger.prototype._getPosition = function () {\n var _a = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'], originX = _a[0], originFallbackX = _a[1];\n var _b = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'], overlayY = _b[0], overlayFallbackY = _b[1];\n var _c = [overlayY, overlayFallbackY], originY = _c[0], originFallbackY = _c[1];\n var _d = [originX, originFallbackX], overlayX = _d[0], overlayFallbackX = _d[1];\n var /** @type {?} */ offsetY = 0;\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 // TODO(crisbeto): this should be a function, once the overlay supports it.\n // Right now it will be wrong for the fallback positions.\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n }\n else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n return this._overlay.position()\n .connectedTo(this._element, { originX: originX, originY: originY }, { overlayX: overlayX, overlayY: overlayY })\n .withDirection(this.dir)\n .withOffsetY(offsetY)\n .withFallbackPosition({ originX: originFallbackX, originY: originY }, { overlayX: overlayFallbackX, overlayY: overlayY })\n .withFallbackPosition({ originX: originX, originY: originFallbackY }, { overlayX: overlayX, overlayY: overlayFallbackY })\n .withFallbackPosition({ originX: originFallbackX, originY: originFallbackY }, { overlayX: overlayFallbackX, overlayY: overlayFallbackY });\n };\n /**\n * Cleans up the active subscriptions.\n * @return {?}\n */\n MatMenuTrigger.prototype._cleanUpSubscriptions = function () {\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 * @return {?}\n */\n MatMenuTrigger.prototype._menuClosingActions = function () {\n var _this = this;\n var /** @type {?} */ backdrop = ((this._overlayRef)).backdropClick();\n var /** @type {?} */ parentClose = this._parentMenu ? this._parentMenu.close : of();\n var /** @type {?} */ hover = this._parentMenu ? RxChain.from(this._parentMenu.hover())\n .call(filter, function (active) { return active !== _this._menuItemInstance; })\n .call(filter, function () { return _this._menuOpen; })\n .result() : of();\n return merge(backdrop, parentClose, hover);\n };\n /**\n * Handles mouse presses on the trigger.\n * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleMousedown = function (event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n this._openedByMouse = true;\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 * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleKeydown = function (event) {\n var /** @type {?} */ keyCode = event.keyCode;\n if (this.triggersSubmenu() && ((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 * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleClick = function (event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n };\n MatMenuTrigger.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuTrigger.ctorParameters = function () { return [\n { type: Overlay, },\n { type: ElementRef, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_SCROLL_STRATEGY,] },] },\n { type: MatMenu, decorators: [{ type: Optional },] },\n { type: MatMenuItem, decorators: [{ type: Optional }, { type: Self },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatMenuTrigger.propDecorators = {\n '_deprecatedMatMenuTriggerFor': [{ type: Input, args: ['mat-menu-trigger-for',] },],\n 'menu': [{ type: Input, args: ['matMenuTriggerFor',] },],\n 'onMenuOpen': [{ type: Output },],\n 'onMenuClose': [{ type: Output },],\n };\n return MatMenuTrigger;\n}());\n\nvar MatMenuModule = (function () {\n function MatMenuModule() {\n }\n MatMenuModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuModule.ctorParameters = function () { return []; };\n return MatMenuModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_SCROLL_STRATEGY, fadeInItems, transformMenu, MatMenuModule, MatMenu, MAT_MENU_DEFAULT_OPTIONS, MatMenuItem, MatMenuTrigger, MatMenuItemBase as ɵa22, _MatMenuItemMixinBase as ɵb22, MAT_MENU_SCROLL_STRATEGY_PROVIDER as ɵd22, MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY as ɵc22 };\n//# sourceMappingURL=menu.es5.js.map\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 */\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, Renderer2, Self, ViewChild, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\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 { ConnectedOverlayDirective, Overlay, OverlayModule, ViewportRuler } from '@angular/cdk/overlay';\nimport { filter, first, startWith } from '@angular/cdk/rxjs';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher, MatCommonModule, MatOptgroup, MatOption, MatOptionModule, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { MatFormField, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\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 */\nvar transformPanel = trigger('transformPanel', [\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\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 * 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 */\nvar fadeInContent = trigger('fadeInContent', [\n state('showing', style({ opacity: 1 })),\n transition('void => showing', [\n style({ opacity: 0 }),\n animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n]);\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\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 * @return {?}\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Cannot assign truthy non-array value to select in `multiple` mode.');\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 * @return {?}\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('Cannot assign a non-function value to `compareWith`.');\n}\n\nvar nextUniqueId = 0;\n/**\n * The max height of the select's overlay panel\n */\nvar SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis\n */\nvar SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n */\nvar SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n */\nvar SELECT_ITEM_HEIGHT_EM = 3;\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 */\nvar SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 20;\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 */\nvar SELECT_PANEL_VIEWPORT_PADDING = 8;\n/**\n * Injection token that determines the scroll handling while a select is open.\n */\nvar MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar 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.\n */\nvar MatSelectChange = (function () {\n /**\n * @param {?} source\n * @param {?} value\n */\n function MatSelectChange(source, value) {\n this.source = source;\n this.value = value;\n }\n return MatSelectChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSelectBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSelectBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSelectBase;\n}());\nvar _MatSelectMixinBase = mixinTabIndex(mixinDisabled(MatSelectBase));\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nvar MatSelectTrigger = (function () {\n function MatSelectTrigger() {\n }\n MatSelectTrigger.decorators = [\n { type: Directive, args: [{\n selector: 'mat-select-trigger'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectTrigger.ctorParameters = function () { return []; };\n return MatSelectTrigger;\n}());\nvar MatSelect = (function (_super) {\n __extends(MatSelect, _super);\n /**\n * @param {?} _viewportRuler\n * @param {?} _changeDetectorRef\n * @param {?} _ngZone\n * @param {?} _defaultErrorStateMatcher\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _dir\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} _parentFormField\n * @param {?} ngControl\n * @param {?} tabIndex\n * @param {?} _scrollStrategyFactory\n */\n function MatSelect(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, renderer, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, _scrollStrategyFactory) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._viewportRuler = _viewportRuler;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._ngZone = _ngZone;\n _this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n _this._dir = _dir;\n _this._parentForm = _parentForm;\n _this._parentFormGroup = _parentFormGroup;\n _this._parentFormField = _parentFormField;\n _this.ngControl = ngControl;\n _this._scrollStrategyFactory = _scrollStrategyFactory;\n /**\n * Whether or not the overlay panel is open.\n */\n _this._panelOpen = false;\n /**\n * Subscriptions to option events.\n */\n _this._optionSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the option list.\n */\n _this._changeSubscription = Subscription.EMPTY;\n /**\n * Subscription to tab events while overlay is focused.\n */\n _this._tabSubscription = Subscription.EMPTY;\n /**\n * Whether filling out the select is required in the form.\n */\n _this._required = false;\n /**\n * The scroll position of the overlay panel, calculated to center the selected option.\n */\n _this._scrollTop = 0;\n /**\n * Whether the component is in multiple selection mode.\n */\n _this._multiple = false;\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n */\n _this._compareWith = function (o1, o2) { return o1 === o2; };\n /**\n * Unique id for this input.\n */\n _this._uid = \"mat-select-\" + nextUniqueId++;\n /**\n * The cached font-size of the trigger element.\n */\n _this._triggerFontSize = 0;\n /**\n * View -> model callback called when value changes\n */\n _this._onChange = function () { };\n /**\n * View -> model callback called when select has been touched\n */\n _this._onTouched = function () { };\n /**\n * The IDs of child options to be passed to the aria-owns attribute.\n */\n _this._optionIds = '';\n /**\n * The value of the select panel's transform-origin property.\n */\n _this._transformOrigin = 'top';\n /**\n * Whether the panel's animation is done.\n */\n _this._panelDoneAnimating = false;\n /**\n * Strategy that will be used to handle scrolling while the select panel is open.\n */\n _this._scrollStrategy = _this._scrollStrategyFactory();\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 _this._offsetY = 0;\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 _this._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 * Stream that emits whenever the state of the select changes such that the wrapping\n * `MatFormField` needs to run change detection.\n */\n _this.stateChanges = new Subject();\n /**\n * Whether the select is focused.\n */\n _this.focused = false;\n /**\n * A name for this control that can be used by `mat-form-field`.\n */\n _this.controlType = 'mat-select';\n _this._disableRipple = false;\n /**\n * Aria label of the select. If not specified, the placeholder will be used as label.\n */\n _this.ariaLabel = '';\n /**\n * Event emitted when the select has been opened.\n */\n _this.onOpen = new EventEmitter();\n /**\n * Event emitted when the select has been closed.\n */\n _this.onClose = new EventEmitter();\n /**\n * Event emitted when the selected value has been changed by the user.\n */\n _this.change = new EventEmitter();\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 _this.valueChange = new EventEmitter();\n if (_this.ngControl) {\n _this.ngControl.valueAccessor = _this;\n }\n _this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n _this.id = _this.id;\n return _this;\n }\n Object.defineProperty(MatSelect.prototype, \"placeholder\", {\n /**\n * Placeholder to be shown if no value has been selected.\n * @return {?}\n */\n get: function () { return this._placeholder; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"required\", {\n /**\n * Whether the component is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"multiple\", {\n /**\n * Whether the user should be allowed to select multiple options.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._selectionModel) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"compareWith\", {\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 * @return {?}\n */\n get: function () { return this._compareWith; },\n /**\n * @param {?} fn\n * @return {?}\n */\n set: function (fn) {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"value\", {\n /**\n * Value of the select control.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"disableRipple\", {\n /**\n * Whether ripples for all options in the select are disabled.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setOptionDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"id\", {\n /**\n * Unique id of the element.\n * @return {?}\n */\n get: function () { return this._id; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"optionSelectionChanges\", {\n /**\n * Combined stream of all of the child options' change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.options.map(function (option) { return option.onSelectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSelect.prototype.ngOnInit = function () {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._initKeyManager();\n this._changeSubscription = startWith.call(this.options.changes, null).subscribe(function () {\n _this._resetOptions();\n _this._initializeSelection();\n });\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.ngOnDestroy = function () {\n this._dropSubscriptions();\n this._changeSubscription.unsubscribe();\n this._tabSubscription.unsubscribe();\n };\n /**\n * Toggles the overlay panel open or closed.\n * @return {?}\n */\n MatSelect.prototype.toggle = function () {\n this.panelOpen ? this.close() : this.open();\n };\n /**\n * Opens the overlay panel.\n * @return {?}\n */\n MatSelect.prototype.open = function () {\n var _this = this;\n if (this.disabled || !this.options.length) {\n return;\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 this._calculateOverlayPosition();\n this._highlightCorrectOption();\n this._panelOpen = true;\n this._changeDetectorRef.markForCheck();\n // Set the font size on the panel element once it exists.\n first.call(this._ngZone.onStable).subscribe(function () {\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 * @return {?}\n */\n MatSelect.prototype.close = function () {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this.focus();\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 * @return {?}\n */\n MatSelect.prototype.writeValue = function (value) {\n if (this.options) {\n this._setSelectionByValue(value);\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 * @return {?}\n */\n MatSelect.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\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 * @return {?}\n */\n MatSelect.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\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 * @return {?}\n */\n MatSelect.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n };\n Object.defineProperty(MatSelect.prototype, \"panelOpen\", {\n /**\n * Whether or not the overlay panel is open.\n * @return {?}\n */\n get: function () {\n return this._panelOpen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"selected\", {\n /**\n * The currently selected option.\n * @return {?}\n */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"triggerValue\", {\n /**\n * The value displayed in the trigger.\n * @return {?}\n */\n get: function () {\n if (!this._selectionModel || this._selectionModel.isEmpty()) {\n return '';\n }\n if (this._multiple) {\n var /** @type {?} */ selectedOptions = this._selectionModel.selected.map(function (option) { return option.viewValue; });\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Whether the element is in RTL mode.\n * @return {?}\n */\n MatSelect.prototype._isRtl = function () {\n return this._dir ? this._dir.value === 'rtl' : false;\n };\n /**\n * Handles all keydown events on the select.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleKeydown = function (event) {\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 * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleClosedKeydown = function (event) {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n else if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n this._handleClosedArrowKey(event);\n }\n };\n /**\n * Handles keyboard events when the selected is open.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleOpenKeydown = function (event) {\n var _this = this;\n var /** @type {?} */ keyCode = event.keyCode;\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? this._keyManager.setFirstItemActive() :\n this._keyManager.setLastItemActive();\n }\n else if ((keyCode === ENTER || keyCode === SPACE) && this._keyManager.activeItem) {\n event.preventDefault();\n this._keyManager.activeItem._selectViaInteraction();\n }\n else {\n this._keyManager.onKeydown(event);\n // TODO(crisbeto): get rid of the Promise.resolve when #6441 gets in.\n Promise.resolve().then(function () {\n if (_this.panelOpen) {\n _this._scrollActiveOptionIntoView();\n }\n });\n }\n };\n /**\n * When the panel element is finished transforming in (though not fading in), it\n * emits an event and focuses an option if the panel is open.\n * @return {?}\n */\n MatSelect.prototype._onPanelDone = function () {\n if (this.panelOpen) {\n this._scrollTop = 0;\n this.onOpen.emit();\n }\n else {\n this.onClose.emit();\n this._panelDoneAnimating = false;\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\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 * @return {?}\n */\n MatSelect.prototype._onFadeInDone = function () {\n this._panelDoneAnimating = this.panelOpen;\n this.panel.nativeElement.focus();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @return {?}\n */\n MatSelect.prototype._onFocus = function () {\n if (!this.disabled) {\n this.focused = true;\n this.stateChanges.next();\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 * @return {?}\n */\n MatSelect.prototype._onBlur = function () {\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 * Callback that is invoked when the overlay panel has been attached.\n * @return {?}\n */\n MatSelect.prototype._onAttached = function () {\n this._changeDetectorRef.detectChanges();\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n };\n /**\n * Returns the theme to be used on the panel.\n * @return {?}\n */\n MatSelect.prototype._getPanelTheme = function () {\n return this._parentFormField ? \"mat-\" + this._parentFormField.color : '';\n };\n Object.defineProperty(MatSelect.prototype, \"empty\", {\n /**\n * Whether the select has a value.\n * @return {?}\n */\n get: function () {\n return !this._selectionModel || this._selectionModel.isEmpty();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"errorState\", {\n /**\n * Whether the select is in an error state.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentFormGroup || this._parentForm;\n var /** @type {?} */ matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n var /** @type {?} */ control = this.ngControl ? (this.ngControl.control) : null;\n return matcher.isErrorState(control, parent);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSelect.prototype._initializeSelection = function () {\n var _this = this;\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(function () {\n _this._setSelectionByValue(_this.ngControl ? _this.ngControl.value : _this._value);\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 * @param {?} value\n * @param {?=} isUserInput\n * @return {?}\n */\n MatSelect.prototype._setSelectionByValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = false; }\n var /** @type {?} */ isArray = Array.isArray(value);\n if (this.multiple && value && !isArray) {\n throw getMatSelectNonArrayValueError();\n }\n this._clearSelection();\n if (isArray) {\n value.forEach(function (currentValue) { return _this._selectValue(currentValue, isUserInput); });\n this._sortValues();\n }\n else {\n var /** @type {?} */ correspondingOption = this._selectValue(value, isUserInput);\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 this._changeDetectorRef.markForCheck();\n };\n /**\n * Finds and selects and option based on its value.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?} Option that has the corresponding value.\n */\n MatSelect.prototype._selectValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = false; }\n var /** @type {?} */ correspondingOption = this.options.find(function (option) {\n try {\n // Treat null as a special reset value.\n return option.value != null && _this._compareWith(option.value, value);\n }\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 if (correspondingOption) {\n isUserInput ? correspondingOption._selectViaInteraction() : correspondingOption.select();\n this._selectionModel.select(correspondingOption);\n this.stateChanges.next();\n }\n return correspondingOption;\n };\n /**\n * Clears the select trigger and deselects every option in the list.\n * @param {?=} skip Option that should not be deselected.\n * @return {?}\n */\n MatSelect.prototype._clearSelection = function (skip) {\n this._selectionModel.clear();\n this.options.forEach(function (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 * @return {?}\n */\n MatSelect.prototype._initKeyManager = function () {\n var _this = this;\n this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(function () { return _this.close(); });\n };\n /**\n * Drops current option subscriptions and IDs and resets from scratch.\n * @return {?}\n */\n MatSelect.prototype._resetOptions = function () {\n this._dropSubscriptions();\n this._listenToOptions();\n this._setOptionIds();\n this._setOptionMultiple();\n this._setOptionDisableRipple();\n };\n /**\n * Listens to user-generated selection events on each option.\n * @return {?}\n */\n MatSelect.prototype._listenToOptions = function () {\n var _this = this;\n this._optionSubscription = filter.call(this.optionSelectionChanges, function (event) { return event.isUserInput; }).subscribe(function (event) {\n _this._onSelect(event.source);\n if (!_this.multiple) {\n _this.close();\n }\n });\n };\n /**\n * Invoked when an option is clicked.\n * @param {?} option\n * @return {?}\n */\n MatSelect.prototype._onSelect = function (option) {\n var /** @type {?} */ wasSelected = this._selectionModel.isSelected(option);\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 }\n else {\n this._clearSelection(option.value == null ? undefined : option);\n if (option.value == null) {\n this._propagateChanges(option.value);\n }\n else {\n this._selectionModel.select(option);\n this.stateChanges.next();\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n };\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n * @return {?}\n */\n MatSelect.prototype._sortValues = function () {\n var _this = this;\n if (this._multiple) {\n this._selectionModel.clear();\n this.options.forEach(function (option) {\n if (option.selected) {\n _this._selectionModel.select(option);\n }\n });\n this.stateChanges.next();\n }\n };\n /**\n * Unsubscribes from all option subscriptions.\n * @return {?}\n */\n MatSelect.prototype._dropSubscriptions = function () {\n this._optionSubscription.unsubscribe();\n };\n /**\n * Emits change event to set the model value.\n * @param {?=} fallbackValue\n * @return {?}\n */\n MatSelect.prototype._propagateChanges = function (fallbackValue) {\n var /** @type {?} */ valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(function (option) { return option.value; });\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this._onChange(valueToEmit);\n this.change.emit(new MatSelectChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Records option IDs to pass to the aria-owns property.\n * @return {?}\n */\n MatSelect.prototype._setOptionIds = function () {\n this._optionIds = this.options.map(function (option) { return option.id; }).join(' ');\n };\n /**\n * Sets the `multiple` property on each option. The promise is necessary\n * in order to avoid Angular errors when modifying the property after init.\n * @return {?}\n */\n MatSelect.prototype._setOptionMultiple = function () {\n var _this = this;\n if (this.multiple) {\n Promise.resolve(null).then(function () {\n _this.options.forEach(function (option) { return option.multiple = _this.multiple; });\n });\n }\n };\n /**\n * Sets the `disableRipple` property on each option.\n * @return {?}\n */\n MatSelect.prototype._setOptionDisableRipple = function () {\n var _this = this;\n if (this.options) {\n this.options.forEach(function (option) { return option.disableRipple = _this.disableRipple; });\n }\n };\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n * @return {?}\n */\n MatSelect.prototype._highlightCorrectOption = function () {\n if (this._selectionModel.isEmpty()) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(/** @type {?} */ ((this._getOptionIndex(this._selectionModel.selected[0]))));\n }\n };\n /**\n * Scrolls the active option into view.\n * @return {?}\n */\n MatSelect.prototype._scrollActiveOptionIntoView = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ activeOptionIndex = this._keyManager.activeItemIndex || 0;\n var /** @type {?} */ labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex, this.options, this.optionGroups);\n var /** @type {?} */ scrollOffset = (activeOptionIndex + labelCount) * itemHeight;\n var /** @type {?} */ panelTop = this.panel.nativeElement.scrollTop;\n if (scrollOffset < panelTop) {\n this.panel.nativeElement.scrollTop = scrollOffset;\n }\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 * @return {?}\n */\n MatSelect.prototype.focus = function () {\n this._elementRef.nativeElement.focus();\n };\n /**\n * Gets the index of the provided option in the option list.\n * @param {?} option\n * @return {?}\n */\n MatSelect.prototype._getOptionIndex = function (option) {\n return this.options.reduce(function (result, current, index) {\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 * @return {?}\n */\n MatSelect.prototype._calculateOverlayPosition = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ items = this._getItemCount();\n var /** @type {?} */ panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var /** @type {?} */ scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n var /** @type {?} */ maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n var /** @type {?} */ selectedOptionOffset = this.empty ? 0 : ((this._getOptionIndex(this._selectionModel.selected[0])));\n selectedOptionOffset += MatOption.countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\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 var /** @type {?} */ scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\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 * @param {?} selectedIndex\n * @param {?} scrollBuffer\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayScroll = function (selectedIndex, scrollBuffer, maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionOffsetFromScrollTop = itemHeight * selectedIndex;\n var /** @type {?} */ halfOptionHeight = itemHeight / 2;\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 var /** @type {?} */ optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n };\n Object.defineProperty(MatSelect.prototype, \"_ariaLabel\", {\n /**\n * Returns the aria-label of the select component.\n * @return {?}\n */\n get: function () {\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 enumerable: true,\n configurable: true\n });\n /**\n * Determines the `aria-activedescendant` to be set on the host.\n * @return {?}\n */\n MatSelect.prototype._getAriaActiveDescendant = function () {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\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 * @return {?}\n */\n MatSelect.prototype._calculateOverlayOffsetX = function () {\n var /** @type {?} */ overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n var /** @type {?} */ isRtl = this._isRtl();\n var /** @type {?} */ paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n var /** @type {?} */ offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n }\n else {\n var /** @type {?} */ selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n var /** @type {?} */ leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n var /** @type {?} */ rightOverflow = overlayRect.right + offsetX - viewportRect.width\n + (isRtl ? 0 : paddingWidth);\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 }\n else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\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 * 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 * @param {?} selectedIndex\n * @param {?} scrollBuffer\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayOffsetY = function (selectedIndex, scrollBuffer, maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var /** @type {?} */ maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n var /** @type {?} */ optionOffsetFromPanelTop;\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n var /** @type {?} */ firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n var /** @type {?} */ selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\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 var /** @type {?} */ partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\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 }\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 // 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 * 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 * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._checkOverlayWithinViewport = function (maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n var /** @type {?} */ topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n var /** @type {?} */ bottomSpaceAvailable = viewportRect.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n var /** @type {?} */ panelHeightTop = Math.abs(this._offsetY);\n var /** @type {?} */ totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var /** @type {?} */ panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n }\n else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n }\n else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n };\n /**\n * Adjusts the overlay panel up to fit in the viewport.\n * @param {?} panelHeightBottom\n * @param {?} bottomSpaceAvailable\n * @return {?}\n */\n MatSelect.prototype._adjustPanelUp = function (panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var /** @type {?} */ distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\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 // 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 * @param {?} panelHeightTop\n * @param {?} topSpaceAvailable\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._adjustPanelDown = function (panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var /** @type {?} */ distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\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 // 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 * @return {?}\n */\n MatSelect.prototype._getOriginBasedOnOption = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var /** @type {?} */ originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return \"50% \" + originY + \"px 0px\";\n };\n /**\n * Handles the user pressing the arrow keys on a closed select.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleClosedArrowKey = function (event) {\n var _this = this;\n if (this._multiple) {\n event.preventDefault();\n this.open();\n }\n else {\n var /** @type {?} */ prevActiveItem_1 = this._keyManager.activeItem;\n // Cycle though the select options even when the select is closed,\n // matching the behavior of the native select element.\n // TODO(crisbeto): native selects also cycle through the options with left/right arrows,\n // however the key manager only supports up/down at the moment.\n this._keyManager.onKeydown(event);\n // TODO(crisbeto): get rid of the Promise.resolve when #6441 gets in.\n Promise.resolve().then(function () {\n var /** @type {?} */ currentActiveItem = _this._keyManager.activeItem;\n if (currentActiveItem && currentActiveItem !== prevActiveItem_1) {\n _this._clearSelection();\n _this._setSelectionByValue(currentActiveItem.value, true);\n }\n });\n }\n };\n /**\n * Calculates the amount of items in the select. This includes options and group labels.\n * @return {?}\n */\n MatSelect.prototype._getItemCount = function () {\n return this.options.length + this.optionGroups.length;\n };\n /**\n * Calculates the height of the select's options.\n * @return {?}\n */\n MatSelect.prototype._getItemHeight = function () {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n };\n /**\n * @param {?} ids\n * @return {?}\n */\n MatSelect.prototype.setDescribedByIds = function (ids) {\n this._ariaDescribedby = ids.join(' ');\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.onContainerClick = function () {\n this.focus();\n this.open();\n };\n Object.defineProperty(MatSelect.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () { return this._panelOpen || !this.empty; },\n enumerable: true,\n configurable: true\n });\n MatSelect.decorators = [\n { type: Component, args: [{selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"<div cdk-overlay-origin class=\\\"mat-select-trigger\\\" aria-hidden=\\\"true\\\" (click)=\\\"toggle()\\\" #origin=\\\"cdkOverlayOrigin\\\" #trigger><div class=\\\"mat-select-value\\\"><ng-container *ngIf=\\\"empty\\\">&nbsp;</ng-container><span class=\\\"mat-select-value-text\\\" *ngIf=\\\"!empty\\\" [ngSwitch]=\\\"!!customTrigger\\\"><span *ngSwitchDefault>{{ triggerValue }}</span><ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content></span></div><div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div></div><ng-template cdk-connected-overlay hasBackdrop backdropClass=\\\"cdk-overlay-transparent-backdrop\\\" [scrollStrategy]=\\\"_scrollStrategy\\\" [origin]=\\\"origin\\\" [open]=\\\"panelOpen\\\" [positions]=\\\"_positions\\\" [minWidth]=\\\"_triggerRect?.width\\\" [offsetY]=\\\"_offsetY\\\" (backdropClick)=\\\"close()\\\" (attach)=\\\"_onAttached()\\\" (detach)=\\\"close()\\\"><div #panel class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\" [ngClass]=\\\"panelClass\\\" [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\" (@transformPanel.done)=\\\"_onPanelDone()\\\" [style.transformOrigin]=\\\"_transformOrigin\\\" [class.mat-select-panel-done-animating]=\\\"_panelDoneAnimating\\\" [style.font-size.px]=\\\"_triggerFontSize\\\"><div class=\\\"mat-select-content\\\" [@fadeInContent]=\\\"'showing'\\\" (@fadeInContent.done)=\\\"_onFadeInDone()\\\"><ng-content></ng-content></div></div></ng-template>\",\n styles: [\".mat-select{display:inline-block;width:100%;outline:0}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%}.mat-select-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-select-panel{outline:solid 1px}}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-placeholder{width:calc(100% - 18px)}\"],\n inputs: ['disabled', '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: [{ provide: MatFormFieldControl, useExisting: MatSelect }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelect.ctorParameters = function () { return [\n { type: ViewportRuler, },\n { type: ChangeDetectorRef, },\n { type: NgZone, },\n { type: ErrorStateMatcher, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: MatFormField, decorators: [{ type: Optional },] },\n { type: NgControl, decorators: [{ type: Self }, { type: Optional },] },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] },] },\n ]; };\n MatSelect.propDecorators = {\n 'trigger': [{ type: ViewChild, args: ['trigger',] },],\n 'panel': [{ type: ViewChild, args: ['panel',] },],\n 'overlayDir': [{ type: ViewChild, args: [ConnectedOverlayDirective,] },],\n 'options': [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n 'optionGroups': [{ type: ContentChildren, args: [MatOptgroup,] },],\n 'panelClass': [{ type: Input },],\n 'customTrigger': [{ type: ContentChild, args: [MatSelectTrigger,] },],\n 'placeholder': [{ type: Input },],\n 'required': [{ type: Input },],\n 'multiple': [{ type: Input },],\n 'compareWith': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disableRipple': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'errorStateMatcher': [{ type: Input },],\n 'id': [{ type: Input },],\n 'onOpen': [{ type: Output },],\n 'onClose': [{ type: Output },],\n 'change': [{ type: Output },],\n 'valueChange': [{ type: Output },],\n };\n return MatSelect;\n}(_MatSelectMixinBase));\n\nvar MatSelectModule = (function () {\n function MatSelectModule() {\n }\n MatSelectModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectModule.ctorParameters = function () { return []; };\n return MatSelectModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSelectModule, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, transformPanel, fadeInContent };\n//# sourceMappingURL=select.es5.js.map\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 */\nimport { A11yModule, ARIA_DESCRIBER_PROVIDER, AriaDescriber } from '@angular/cdk/a11y';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Renderer2, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { first } from '@angular/cdk/rxjs';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * Time in ms to delay before changing the tooltip visibility to hidden\n */\nvar TOUCHEND_HIDE_DELAY = 1500;\n/**\n * Time in ms to throttle repositioning after scroll events.\n */\nvar SCROLL_THROTTLE_MS = 20;\n/**\n * CSS class that will be attached to the overlay panel.\n */\nvar TOOLTIP_PANEL_CLASS = 'mat-tooltip-panel';\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @param {?} position\n * @return {?}\n */\nfunction getMatTooltipInvalidPositionError(position) {\n return Error(\"Tooltip position \\\"\" + position + \"\\\" is invalid.\");\n}\n/**\n * Injection token that determines the scroll handling while a tooltip is visible.\n */\nvar MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mat-tooltip-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS }); };\n}\n/**\n * \\@docs-private\n */\nvar 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 * 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 */\nvar MatTooltip = (function () {\n /**\n * @param {?} renderer\n * @param {?} _overlay\n * @param {?} _elementRef\n * @param {?} _scrollDispatcher\n * @param {?} _viewContainerRef\n * @param {?} _ngZone\n * @param {?} _platform\n * @param {?} _ariaDescriber\n * @param {?} _scrollStrategy\n * @param {?} _dir\n */\n function MatTooltip(renderer, _overlay, _elementRef, _scrollDispatcher, _viewContainerRef, _ngZone, _platform, _ariaDescriber, _scrollStrategy, _dir) {\n var _this = this;\n this._overlay = _overlay;\n this._elementRef = _elementRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewContainerRef = _viewContainerRef;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._ariaDescriber = _ariaDescriber;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._position = 'below';\n this._disabled = false;\n /**\n * The default delay in ms before showing the tooltip after show is called\n */\n this.showDelay = 0;\n /**\n * The default delay in ms before hiding the tooltip after hide is called\n */\n this.hideDelay = 0;\n this._message = '';\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._enterListener =\n renderer.listen(_elementRef.nativeElement, 'mouseenter', function () { return _this.show(); });\n this._leaveListener =\n renderer.listen(_elementRef.nativeElement, 'mouseleave', function () { return _this.hide(); });\n }\n }\n Object.defineProperty(MatTooltip.prototype, \"position\", {\n /**\n * Allows the user to define the position of the tooltip relative to the parent element\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._position) {\n this._position = value;\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"disabled\", {\n /**\n * Disables the display of the tooltip.\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n // If tooltip is disabled, hide immediately.\n if (this._disabled) {\n this.hide(0);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"_positionDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._position = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"message\", {\n /**\n * The message to be displayed in the tooltip\n * @return {?}\n */\n get: function () { return this._message; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message);\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 this._updateTooltipMessage();\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"tooltipClass\", {\n /**\n * Classes to be passed to the tooltip. Supports the same syntax as `ngClass`.\n * @return {?}\n */\n get: function () { return this._tooltipClass; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose the tooltip when destroyed.\n * @return {?}\n */\n MatTooltip.prototype.ngOnDestroy = function () {\n if (this._tooltipInstance) {\n this._disposeTooltip();\n }\n // Clean up the event listeners set in the constructor\n if (!this._platform.IOS) {\n this._enterListener();\n this._leaveListener();\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.message);\n };\n /**\n * Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input\n * @param {?=} delay\n * @return {?}\n */\n MatTooltip.prototype.show = function (delay) {\n if (delay === void 0) { delay = this.showDelay; }\n if (this.disabled || !this.message) {\n return;\n }\n if (!this._tooltipInstance) {\n this._createTooltip();\n }\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage(); /** @type {?} */\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 * @param {?=} delay\n * @return {?}\n */\n MatTooltip.prototype.hide = function (delay) {\n if (delay === void 0) { delay = this.hideDelay; }\n if (this._tooltipInstance) {\n this._tooltipInstance.hide(delay);\n }\n };\n /**\n * Shows/hides the tooltip\n * @return {?}\n */\n MatTooltip.prototype.toggle = function () {\n this._isTooltipVisible() ? this.hide() : this.show();\n };\n /**\n * Returns true if the tooltip is currently visible to the user\n * @return {?}\n */\n MatTooltip.prototype._isTooltipVisible = function () {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n };\n /**\n * Handles the keydown events on the host element.\n * @param {?} e\n * @return {?}\n */\n MatTooltip.prototype._handleKeydown = function (e) {\n if (this._isTooltipVisible() && e.keyCode === ESCAPE) {\n e.stopPropagation();\n this.hide(0);\n }\n };\n /**\n * Create the tooltip to display\n * @return {?}\n */\n MatTooltip.prototype._createTooltip = function () {\n var _this = this;\n var /** @type {?} */ overlayRef = this._createOverlay();\n var /** @type {?} */ portal = new ComponentPortal(TooltipComponent, this._viewContainerRef);\n this._tooltipInstance = overlayRef.attach(portal).instance; /** @type {?} */\n ((\n // Dispose the overlay when finished the shown tooltip.\n this._tooltipInstance)).afterHidden().subscribe(function () {\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 * @return {?}\n */\n MatTooltip.prototype._createOverlay = function () {\n var _this = this;\n var /** @type {?} */ origin = this._getOrigin();\n var /** @type {?} */ overlay = this._getOverlayPosition();\n // Create connected position strategy that listens for scroll events to reposition.\n var /** @type {?} */ strategy = this._overlay\n .position()\n .connectedTo(this._elementRef, origin.main, overlay.main)\n .withFallbackPosition(origin.fallback, overlay.fallback);\n strategy.withScrollableContainers(this._scrollDispatcher.getScrollContainers(this._elementRef));\n strategy.onPositionChange.subscribe(function (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.hide(0);\n }\n else {\n // Otherwise recalculate the origin based on the new position.\n _this._tooltipInstance._setTransformOrigin(change.connectionPair);\n }\n }\n });\n var /** @type {?} */ 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 this._overlayRef = this._overlay.create(config);\n return this._overlayRef;\n };\n /**\n * Disposes the current tooltip and the overlay it is attached to\n * @return {?}\n */\n MatTooltip.prototype._disposeTooltip = function () {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._tooltipInstance = null;\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 * @return {?}\n */\n MatTooltip.prototype._getOrigin = function () {\n var /** @type {?} */ isDirectionLtr = !this._dir || this._dir.value == 'ltr';\n var /** @type {?} */ position;\n if (this.position == 'above' || this.position == 'below') {\n position = { originX: 'center', originY: this.position == 'above' ? 'top' : 'bottom' };\n }\n else if (this.position == 'left' ||\n this.position == 'before' && isDirectionLtr ||\n this.position == 'after' && !isDirectionLtr) {\n position = { originX: 'start', originY: 'center' };\n }\n else if (this.position == 'right' ||\n this.position == 'after' && isDirectionLtr ||\n this.position == 'before' && !isDirectionLtr) {\n position = { originX: 'end', originY: 'center' };\n }\n else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n var _a = this._invertPosition(position.originX, position.originY), x = _a.x, y = _a.y;\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 * @return {?}\n */\n MatTooltip.prototype._getOverlayPosition = function () {\n var /** @type {?} */ isLtr = !this._dir || this._dir.value == 'ltr';\n var /** @type {?} */ position;\n if (this.position == 'above') {\n position = { overlayX: 'center', overlayY: 'bottom' };\n }\n else if (this.position == 'below') {\n position = { overlayX: 'center', overlayY: 'top' };\n }\n else if (this.position == 'left' ||\n this.position == 'before' && isLtr ||\n this.position == 'after' && !isLtr) {\n position = { overlayX: 'end', overlayY: 'center' };\n }\n else if (this.position == 'right' ||\n this.position == 'after' && isLtr ||\n this.position == 'before' && !isLtr) {\n position = { overlayX: 'start', overlayY: 'center' };\n }\n else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n var _a = this._invertPosition(position.overlayX, position.overlayY), x = _a.x, y = _a.y;\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 * @return {?}\n */\n MatTooltip.prototype._updateTooltipMessage = function () {\n var _this = this;\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 first.call(this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n if (_this._tooltipInstance) {\n ((_this._overlayRef)).updatePosition();\n }\n });\n }\n };\n /**\n * Updates the tooltip class\n * @param {?} tooltipClass\n * @return {?}\n */\n MatTooltip.prototype._setTooltipClass = function (tooltipClass) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n };\n /**\n * Inverts an overlay position.\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\n MatTooltip.prototype._invertPosition = function (x, y) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n }\n else if (y === 'bottom') {\n y = 'top';\n }\n }\n else {\n if (x === 'end') {\n x = 'start';\n }\n else if (x === 'start') {\n x = 'end';\n }\n }\n return { x: x, y: y };\n };\n MatTooltip.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tooltip], [matTooltip]',\n exportAs: 'matTooltip',\n host: {\n '(longpress)': 'show()',\n '(focus)': 'show()',\n '(blur)': 'hide(0)',\n '(keydown)': '_handleKeydown($event)',\n '(touchend)': 'hide(' + TOUCHEND_HIDE_DELAY + ')',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTooltip.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: Overlay, },\n { type: ElementRef, },\n { type: ScrollDispatcher, },\n { type: ViewContainerRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: AriaDescriber, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_TOOLTIP_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTooltip.propDecorators = {\n 'position': [{ type: Input, args: ['matTooltipPosition',] },],\n 'disabled': [{ type: Input, args: ['matTooltipDisabled',] },],\n '_positionDeprecated': [{ type: Input, args: ['tooltip-position',] },],\n 'showDelay': [{ type: Input, args: ['matTooltipShowDelay',] },],\n 'hideDelay': [{ type: Input, args: ['matTooltipHideDelay',] },],\n 'message': [{ type: Input, args: ['matTooltip',] },],\n 'tooltipClass': [{ type: Input, args: ['matTooltipClass',] },],\n };\n return MatTooltip;\n}());\n/**\n * Internal component that wraps the tooltip's content.\n * \\@docs-private\n */\nvar TooltipComponent = (function () {\n /**\n * @param {?} _changeDetectorRef\n */\n function TooltipComponent(_changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Property watched by the animation framework to show or hide the tooltip\n */\n this._visibility = 'initial';\n /**\n * Whether interactions on the page should close the tooltip\n */\n this._closeOnInteraction = false;\n /**\n * The transform origin used in the animation for showing and hiding the tooltip\n */\n this._transformOrigin = 'bottom';\n /**\n * Subject for notifying that the tooltip has been hidden from the view\n */\n this._onHide = new Subject();\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 * @return {?}\n */\n TooltipComponent.prototype.show = function (position, delay) {\n var _this = this;\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\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(function () {\n _this._visibility = 'visible';\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 * 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 * @return {?}\n */\n TooltipComponent.prototype.hide = function (delay) {\n var _this = this;\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId);\n }\n this._hideTimeoutId = setTimeout(function () {\n _this._visibility = 'hidden';\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 * @return {?}\n */\n TooltipComponent.prototype.afterHidden = function () {\n return this._onHide.asObservable();\n };\n /**\n * Whether the tooltip is being displayed.\n * @return {?}\n */\n TooltipComponent.prototype.isVisible = function () {\n return this._visibility === 'visible';\n };\n /**\n * Sets the tooltip transform origin according to the position of the tooltip overlay.\n * @param {?} overlayPosition\n * @return {?}\n */\n TooltipComponent.prototype._setTransformOrigin = function (overlayPosition) {\n var /** @type {?} */ axis = (this._position === 'above' || this._position === 'below') ? 'Y' : 'X';\n var /** @type {?} */ position = axis == 'X' ? overlayPosition.overlayX : overlayPosition.overlayY;\n if (position === 'top' || position === 'bottom') {\n this._transformOrigin = position;\n }\n else if (position === 'start') {\n this._transformOrigin = 'left';\n }\n else if (position === 'end') {\n this._transformOrigin = 'right';\n }\n else {\n throw getMatTooltipInvalidPositionError(this._position);\n }\n };\n /**\n * @return {?}\n */\n TooltipComponent.prototype._animationStart = function () {\n this._closeOnInteraction = false;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n TooltipComponent.prototype._animationDone = function (event) {\n var _this = this;\n var /** @type {?} */ toState = (event.toState);\n if (toState === 'hidden' && !this.isVisible()) {\n this._onHide.next();\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(function () { return _this._closeOnInteraction = true; });\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 * @return {?}\n */\n TooltipComponent.prototype._handleBodyInteraction = function () {\n if (this._closeOnInteraction) {\n this.hide(0);\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 * @return {?}\n */\n TooltipComponent.prototype._markForCheck = function () {\n this._changeDetectorRef.markForCheck();\n };\n TooltipComponent.decorators = [\n { type: Component, args: [{selector: 'mat-tooltip-component',\n template: \"<div class=\\\"mat-tooltip\\\" [ngClass]=\\\"tooltipClass\\\" [style.transform-origin]=\\\"_transformOrigin\\\" [@state]=\\\"_visibility\\\" (@state.start)=\\\"_animationStart()\\\" (@state.done)=\\\"_animationDone($event)\\\">{{message}}</div>\",\n styles: [\".mat-tooltip-panel{pointer-events:none!important}.mat-tooltip{color:#fff;border-radius:2px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px}@media screen and (-ms-high-contrast:active){.mat-tooltip{outline:solid 1px}}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n TooltipComponent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n return TooltipComponent;\n}());\n\nvar MatTooltipModule = (function () {\n function MatTooltipModule() {\n }\n MatTooltipModule.decorators = [\n { type: NgModule, args: [{\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: [MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, ARIA_DESCRIBER_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTooltipModule.ctorParameters = function () { return []; };\n return MatTooltipModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatTooltipModule, TOUCHEND_HIDE_DELAY, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, getMatTooltipInvalidPositionError, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MatTooltip, TooltipComponent };\n//# sourceMappingURL=tooltip.es5.js.map\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 */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Injectable, Input, NgModule, Output, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\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 */\nvar MatPaginatorIntl = (function () {\n function 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 this.changes = new Subject();\n /**\n * A label for the page size selector.\n */\n this.itemsPerPageLabel = 'Items per page:';\n /**\n * A label for the button that increments the current page.\n */\n this.nextPageLabel = 'Next page';\n /**\n * A label for the button that decrements the current page.\n */\n this.previousPageLabel = 'Previous page';\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n this.getRangeLabel = function (page, pageSize, length) {\n if (length == 0 || pageSize == 0) {\n return \"0 of \" + length;\n }\n length = Math.max(length, 0);\n var startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n var endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return startIndex + 1 + \" - \" + endIndex + \" of \" + length;\n };\n }\n MatPaginatorIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatPaginatorIntl.ctorParameters = function () { return []; };\n return MatPaginatorIntl;\n}());\n\n/**\n * The default page size if there is no page size and there are no provided page size options.\n */\nvar DEFAULT_PAGE_SIZE = 50;\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nvar PageEvent = (function () {\n function PageEvent() {\n }\n return PageEvent;\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 */\nvar MatPaginator = (function () {\n /**\n * @param {?} _intl\n * @param {?} _changeDetectorRef\n */\n function MatPaginator(_intl, _changeDetectorRef) {\n var _this = this;\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._pageIndex = 0;\n this._length = 0;\n this._pageSizeOptions = [];\n /**\n * Event emitted when the paginator changes the page size or page index.\n */\n this.page = new EventEmitter();\n this._intlChanges = _intl.changes.subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatPaginator.prototype, \"pageIndex\", {\n /**\n * The zero-based page index of the displayed list of items. Defaulted to 0.\n * @return {?}\n */\n get: function () { return this._pageIndex; },\n /**\n * @param {?} pageIndex\n * @return {?}\n */\n set: function (pageIndex) {\n this._pageIndex = pageIndex;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"length\", {\n /**\n * The length of the total number of items that are being paginated. Defaulted to 0.\n * @return {?}\n */\n get: function () { return this._length; },\n /**\n * @param {?} length\n * @return {?}\n */\n set: function (length) {\n this._length = length;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"pageSize\", {\n /**\n * Number of items to display on a page. By default set to 50.\n * @return {?}\n */\n get: function () { return this._pageSize; },\n /**\n * @param {?} pageSize\n * @return {?}\n */\n set: function (pageSize) {\n this._pageSize = pageSize;\n this._updateDisplayedPageSizeOptions();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"pageSizeOptions\", {\n /**\n * The set of provided page size options to display to the user.\n * @return {?}\n */\n get: function () { return this._pageSizeOptions; },\n /**\n * @param {?} pageSizeOptions\n * @return {?}\n */\n set: function (pageSizeOptions) {\n this._pageSizeOptions = pageSizeOptions;\n this._updateDisplayedPageSizeOptions();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatPaginator.prototype.ngOnInit = function () {\n this._initialized = true;\n this._updateDisplayedPageSizeOptions();\n };\n /**\n * @return {?}\n */\n MatPaginator.prototype.ngOnDestroy = function () {\n this._intlChanges.unsubscribe();\n };\n /**\n * Advances to the next page if it exists.\n * @return {?}\n */\n MatPaginator.prototype.nextPage = function () {\n if (!this.hasNextPage()) {\n return;\n }\n this.pageIndex++;\n this._emitPageEvent();\n };\n /**\n * Move back to the previous page if it exists.\n * @return {?}\n */\n MatPaginator.prototype.previousPage = function () {\n if (!this.hasPreviousPage()) {\n return;\n }\n this.pageIndex--;\n this._emitPageEvent();\n };\n /**\n * Whether there is a previous page.\n * @return {?}\n */\n MatPaginator.prototype.hasPreviousPage = function () {\n return this.pageIndex >= 1 && this.pageSize != 0;\n };\n /**\n * Whether there is a next page.\n * @return {?}\n */\n MatPaginator.prototype.hasNextPage = function () {\n var /** @type {?} */ numberOfPages = Math.ceil(this.length / this.pageSize) - 1;\n return this.pageIndex < numberOfPages && this.pageSize != 0;\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 * @param {?} pageSize\n * @return {?}\n */\n MatPaginator.prototype._changePageSize = function (pageSize) {\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 var /** @type {?} */ startIndex = this.pageIndex * this.pageSize;\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent();\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 * @return {?}\n */\n MatPaginator.prototype._updateDisplayedPageSizeOptions = function () {\n if (!this._initialized) {\n 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 this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) == -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort(function (a, b) { return a - b; });\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Emits an event notifying that a change of the paginator's properties has been triggered.\n * @return {?}\n */\n MatPaginator.prototype._emitPageEvent = function () {\n this.page.next({\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length\n });\n };\n MatPaginator.decorators = [\n { type: Component, args: [{selector: 'mat-paginator',\n exportAs: 'matPaginator',\n template: \"<div class=\\\"mat-paginator-page-size\\\"><div class=\\\"mat-paginator-page-size-label\\\">{{_intl.itemsPerPageLabel}}</div><mat-form-field *ngIf=\\\"_displayedPageSizeOptions.length > 1\\\" class=\\\"mat-paginator-page-size-select\\\"><mat-select [value]=\\\"pageSize\\\" [aria-label]=\\\"_intl.itemsPerPageLabel\\\" (change)=\\\"_changePageSize($event.value)\\\"><mat-option *ngFor=\\\"let pageSizeOption of _displayedPageSizeOptions\\\" [value]=\\\"pageSizeOption\\\">{{pageSizeOption}}</mat-option></mat-select></mat-form-field><div *ngIf=\\\"_displayedPageSizeOptions.length <= 1\\\">{{pageSize}}</div></div><div class=\\\"mat-paginator-range-label\\\">{{_intl.getRangeLabel(pageIndex, pageSize, length)}}</div><button mat-icon-button type=\\\"button\\\" class=\\\"mat-paginator-navigation-previous\\\" (click)=\\\"previousPage()\\\" [attr.aria-label]=\\\"_intl.previousPageLabel\\\" [matTooltip]=\\\"_intl.previousPageLabel\\\" [matTooltipPosition]=\\\"'above'\\\" [disabled]=\\\"!hasPreviousPage()\\\"><div class=\\\"mat-paginator-increment\\\"></div></button> <button mat-icon-button type=\\\"button\\\" class=\\\"mat-paginator-navigation-next\\\" (click)=\\\"nextPage()\\\" [attr.aria-label]=\\\"_intl.nextPageLabel\\\" [matTooltip]=\\\"_intl.nextPageLabel\\\" [matTooltipPosition]=\\\"'above'\\\" [disabled]=\\\"!hasNextPage()\\\"><div class=\\\"mat-paginator-decrement\\\"></div></button>\",\n styles: [\".mat-paginator{display:flex;align-items:center;justify-content:flex-end;min-height:56px;padding:0 8px}.mat-paginator-page-size{display:flex;align-items:center}.mat-paginator-page-size-label{margin:0 4px}.mat-paginator-page-size-select{margin:0 4px;width:56px}.mat-paginator-range-label{margin:0 32px}.mat-paginator-increment-button+.mat-paginator-increment-button{margin:0 0 0 8px}[dir=rtl] .mat-paginator-increment-button+.mat-paginator-increment-button{margin:0 8px 0 0}.mat-paginator-decrement,.mat-paginator-increment{width:8px;height:8px}.mat-paginator-decrement,[dir=rtl] .mat-paginator-increment{transform:rotate(45deg)}.mat-paginator-increment,[dir=rtl] .mat-paginator-decrement{transform:rotate(225deg)}.mat-paginator-decrement{margin-left:12px}[dir=rtl] .mat-paginator-decrement{margin-right:12px}.mat-paginator-increment{margin-left:16px}[dir=rtl] .mat-paginator-increment{margin-right:16px}\"],\n host: {\n 'class': 'mat-paginator',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPaginator.ctorParameters = function () { return [\n { type: MatPaginatorIntl, },\n { type: ChangeDetectorRef, },\n ]; };\n MatPaginator.propDecorators = {\n 'pageIndex': [{ type: Input },],\n 'length': [{ type: Input },],\n 'pageSize': [{ type: Input },],\n 'pageSizeOptions': [{ type: Input },],\n 'page': [{ type: Output },],\n };\n return MatPaginator;\n}());\n\nvar MatPaginatorModule = (function () {\n function MatPaginatorModule() {\n }\n MatPaginatorModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatButtonModule,\n MatSelectModule,\n MatTooltipModule,\n ],\n exports: [MatPaginator],\n declarations: [MatPaginator],\n providers: [MatPaginatorIntl],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPaginatorModule.ctorParameters = function () { return []; };\n return MatPaginatorModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatPaginatorModule, PageEvent, MatPaginator, MatPaginatorIntl };\n//# sourceMappingURL=paginator.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, Input, NgModule, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * <mat-progress-bar> component.\n */\nvar MatProgressBar = (function () {\n function MatProgressBar() {\n /**\n * Color of the progress bar.\n */\n this.color = 'primary';\n this._value = 0;\n this._bufferValue = 0;\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 this.mode = 'determinate';\n }\n Object.defineProperty(MatProgressBar.prototype, \"value\", {\n /**\n * Value of the progressbar. Defaults to zero. Mirrored to aria-valuenow.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._value = clamp(v || 0); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressBar.prototype, \"bufferValue\", {\n /**\n * Buffer value of the progress bar. Defaults to zero.\n * @return {?}\n */\n get: function () { return this._bufferValue; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._bufferValue = clamp(v || 0); },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the current transform value for the progress bar's primary indicator.\n * @return {?}\n */\n MatProgressBar.prototype._primaryTransform = function () {\n var /** @type {?} */ scale = this.value / 100;\n return { transform: \"scaleX(\" + scale + \")\" };\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 * @return {?}\n */\n MatProgressBar.prototype._bufferTransform = function () {\n if (this.mode == 'buffer') {\n var /** @type {?} */ scale = this.bufferValue / 100;\n return { transform: \"scaleX(\" + scale + \")\" };\n }\n };\n MatProgressBar.decorators = [\n { type: Component, args: [{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 template: \"<div class=\\\"mat-progress-bar-background mat-progress-bar-element\\\"></div><div class=\\\"mat-progress-bar-buffer mat-progress-bar-element\\\" [ngStyle]=\\\"_bufferTransform()\\\"></div><div class=\\\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\\\" [ngStyle]=\\\"_primaryTransform()\\\"></div><div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\",\n styles: [\".mat-progress-bar{display:block;height:5px;overflow:hidden;position:relative;transform:translateZ(0);transition:opacity 250ms linear;width:100%}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{background-repeat:repeat-x;background-size:10px 4px;display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:'';display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{animation:mat-progress-bar-primary-indeterminate-translate 2s infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{animation:mat-progress-bar-primary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{animation:mat-progress-bar-secondary-indeterminate-translate 2s infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{animation:mat-progress-bar-secondary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(.5,0,.70173,.49582);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(.30244,.38135,.55,.95635);transform:translateX(83.67142%)}100%{transform:translateX(200.61106%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.33473,.12482,.78584,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.66148)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:translateX(37.65191%)}48.35%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:translateX(84.38617%)}100%{transform:translateX(160.27778%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:scaleX(.4571)}44.15%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:scaleX(.72796)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-10px)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressBar.ctorParameters = function () { return []; };\n MatProgressBar.propDecorators = {\n 'color': [{ type: Input },],\n 'value': [{ type: Input },],\n 'bufferValue': [{ type: Input },],\n 'mode': [{ type: Input },],\n };\n return MatProgressBar;\n}());\n/**\n * Clamps a value to be between two numbers, by default 0 and 100.\n * @param {?} v\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\nfunction clamp(v, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 100; }\n return Math.max(min, Math.min(max, v));\n}\n\nvar MatProgressBarModule = (function () {\n function MatProgressBarModule() {\n }\n MatProgressBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressBarModule.ctorParameters = function () { return []; };\n return MatProgressBarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatProgressBarModule, MatProgressBar };\n//# sourceMappingURL=progress-bar.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, NgModule, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * \\@docs-private\n */\nvar MatProgressSpinnerBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatProgressSpinnerBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatProgressSpinnerBase;\n}());\nvar _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\nvar 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 * <mat-progress-spinner> component.\n */\nvar MatProgressSpinner = (function (_super) {\n __extends(MatProgressSpinner, _super);\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} platform\n * @param {?} _document\n */\n function MatProgressSpinner(_renderer, _elementRef, platform, _document) {\n var _this = _super.call(this, _renderer, _elementRef) || this;\n _this._renderer = _renderer;\n _this._elementRef = _elementRef;\n _this._document = _document;\n _this._baseSize = 100;\n _this._baseStrokeWidth = 10;\n _this._fallbackAnimation = false;\n /**\n * The width and height of the host element. Will grow with stroke width. *\n */\n _this._elementSize = _this._baseSize;\n _this._diameter = _this._baseSize;\n /**\n * Stroke width of the progress spinner.\n */\n _this.strokeWidth = 10;\n /**\n * Mode of the progress circle\n */\n _this.mode = 'determinate';\n _this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n // On IE and Edge, we can't animate the `stroke-dashoffset`\n // reliably so we fall back to a non-spec animation.\n var animationClass = _this._fallbackAnimation ?\n 'mat-progress-spinner-indeterminate-fallback-animation' :\n 'mat-progress-spinner-indeterminate-animation';\n _renderer.addClass(_elementRef.nativeElement, animationClass);\n return _this;\n }\n Object.defineProperty(MatProgressSpinner.prototype, \"diameter\", {\n /**\n * The diameter of the progress spinner (will set width and height of svg).\n * @return {?}\n */\n get: function () {\n return this._diameter;\n },\n /**\n * @param {?} size\n * @return {?}\n */\n set: function (size) {\n this._setDiameterAndInitStyles(size);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"value\", {\n /**\n * Value of the progress circle.\n * @return {?}\n */\n get: function () {\n return this.mode === 'determinate' ? this._value : 0;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (newValue != null && this.mode === 'determinate') {\n this._value = Math.max(0, Math.min(100, newValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatProgressSpinner.prototype.ngOnChanges = function (changes) {\n if (changes.strokeWidth || changes.diameter) {\n this._elementSize =\n this._diameter + Math.max(this.strokeWidth - this._baseStrokeWidth, 0);\n }\n };\n Object.defineProperty(MatProgressSpinner.prototype, \"_circleRadius\", {\n /**\n * The radius of the spinner, adjusted for stroke width.\n * @return {?}\n */\n get: function () {\n return (this.diameter - this._baseStrokeWidth) / 2;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_viewBox\", {\n /**\n * The view box of the spinner's svg element.\n * @return {?}\n */\n get: function () {\n return \"0 0 \" + this._elementSize + \" \" + this._elementSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_strokeCircumference\", {\n /**\n * The stroke circumference of the svg circle.\n * @return {?}\n */\n get: function () {\n return 2 * Math.PI * this._circleRadius;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_strokeDashOffset\", {\n /**\n * The dash offset of the svg circle.\n * @return {?}\n */\n get: function () {\n if (this.mode === 'determinate') {\n return this._strokeCircumference * (100 - this._value) / 100;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the diameter and adds diameter-specific styles if necessary.\n * @param {?} size\n * @return {?}\n */\n MatProgressSpinner.prototype._setDiameterAndInitStyles = function (size) {\n this._diameter = size;\n if (!MatProgressSpinner.diameters.has(this.diameter) && !this._fallbackAnimation) {\n this._attachStyleNode();\n }\n };\n /**\n * Dynamically generates a style tag containing the correct animation for this diameter.\n * @return {?}\n */\n MatProgressSpinner.prototype._attachStyleNode = function () {\n var /** @type {?} */ styleTag = this._renderer.createElement('style');\n styleTag.textContent = this._getAnimationText();\n this._renderer.appendChild(this._document.head, styleTag);\n MatProgressSpinner.diameters.add(this.diameter);\n };\n /**\n * Generates animation styles adjusted for the spinner's diameter.\n * @return {?}\n */\n MatProgressSpinner.prototype._getAnimationText = function () {\n return INDETERMINATE_ANIMATION_TEMPLATE\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 * Tracks diameters of existing instances to de-dupe generated styles (default d = 100)\n */\n MatProgressSpinner.diameters = new Set([100]);\n MatProgressSpinner.decorators = [\n { type: Component, args: [{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 template: \"<svg [style.width.px]=\\\"_elementSize\\\" [style.height.px]=\\\"_elementSize\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\"><circle cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.transform.rotate]=\\\"'360deg'\\\" [style.stroke-width.px]=\\\"strokeWidth\\\"></circle></svg>\",\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:translate(-50%,-50%) rotate(-90deg);top:50%;left:50%;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.1%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.01%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.01%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressSpinner.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatProgressSpinner.propDecorators = {\n 'diameter': [{ type: Input },],\n 'strokeWidth': [{ type: Input },],\n 'mode': [{ type: Input },],\n 'value': [{ type: Input },],\n };\n return MatProgressSpinner;\n}(_MatProgressSpinnerMixinBase));\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 */\nvar MatSpinner = (function (_super) {\n __extends(MatSpinner, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} platform\n * @param {?} document\n */\n function MatSpinner(renderer, elementRef, platform, document) {\n var _this = _super.call(this, renderer, elementRef, platform, document) || this;\n _this.mode = 'indeterminate';\n return _this;\n }\n MatSpinner.decorators = [\n { type: Component, args: [{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 template: \"<svg [style.width.px]=\\\"_elementSize\\\" [style.height.px]=\\\"_elementSize\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\"><circle cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.transform.rotate]=\\\"'360deg'\\\" [style.stroke-width.px]=\\\"strokeWidth\\\"></circle></svg>\",\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:translate(-50%,-50%) rotate(-90deg);top:50%;left:50%;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.1%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.01%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.01%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSpinner.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return MatSpinner;\n}(MatProgressSpinner));\n\nvar MatProgressSpinnerModule = (function () {\n function MatProgressSpinnerModule() {\n }\n MatProgressSpinnerModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule, PlatformModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressSpinnerModule.ctorParameters = function () { return []; };\n return MatProgressSpinnerModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatProgressSpinnerModule, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MatProgressSpinner, MatSpinner };\n//# sourceMappingURL=progress-spinner.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VIEWPORT_RULER_PROVIDER } from '@angular/cdk/overlay';\nimport { MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\n\n// Increasing integer for generating unique ids for radio components.\nvar nextUniqueId = 0;\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 */\nvar MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatRadioGroup; }),\n multi: true\n};\n/**\n * Change event object emitted by MatRadio and MatRadioGroup.\n */\nvar MatRadioChange = (function () {\n function MatRadioChange() {\n }\n return MatRadioChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatRadioGroupBase = (function () {\n function MatRadioGroupBase() {\n }\n return MatRadioGroupBase;\n}());\nvar _MatRadioGroupMixinBase = mixinDisabled(MatRadioGroupBase);\n/**\n * A group of radio buttons. May contain one or more `<mat-radio-button>` elements.\n */\nvar MatRadioGroup = (function (_super) {\n __extends(MatRadioGroup, _super);\n /**\n * @param {?} _changeDetector\n */\n function MatRadioGroup(_changeDetector) {\n var _this = _super.call(this) || this;\n _this._changeDetector = _changeDetector;\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 _this._value = null;\n /**\n * The HTML name attribute applied to radio buttons in this group.\n */\n _this._name = \"mat-radio-group-\" + nextUniqueId++;\n /**\n * The currently selected radio button. Should match value.\n */\n _this._selected = null;\n /**\n * Whether the `value` has been set to its initial value.\n */\n _this._isInitialized = false;\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n */\n _this._labelPosition = 'after';\n /**\n * Whether the radio group is disabled.\n */\n _this._disabled = false;\n /**\n * Whether the radio group is required.\n */\n _this._required = false;\n /**\n * The method to be called in order to update ngModel\n */\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * \\@docs-private\n */\n _this.onTouched = function () { };\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 _this.change = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatRadioGroup.prototype, \"name\", {\n /**\n * Name of the radio button group. All radio buttons inside this group will use this name.\n * @return {?}\n */\n get: function () { return this._name; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._name = value;\n this._updateRadioButtonNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"align\", {\n /**\n * Alignment of the radio-buttons relative to their labels. Can be 'before' or 'after'.\n * @deprecated\n * @return {?}\n */\n get: function () {\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 * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"labelPosition\", {\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n * @return {?}\n */\n get: function () {\n return this._labelPosition;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._labelPosition = (v == 'before') ? 'before' : 'after';\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"value\", {\n /**\n * Value of the radio button.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (this._value != newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._checkSelectedRadioButton = function () {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n };\n Object.defineProperty(MatRadioGroup.prototype, \"selected\", {\n /**\n * Whether the radio button is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} selected\n * @return {?}\n */\n set: function (selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"disabled\", {\n /**\n * Whether the radio group is disabled\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"required\", {\n /**\n * Whether the radio group is required\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n * @return {?}\n */\n MatRadioGroup.prototype.ngAfterContentInit = function () {\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 * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n * @return {?}\n */\n MatRadioGroup.prototype._touch = function () {\n if (this.onTouched) {\n this.onTouched();\n }\n };\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._updateRadioButtonNames = function () {\n var _this = this;\n if (this._radios) {\n this._radios.forEach(function (radio) {\n radio.name = _this.name;\n });\n }\n };\n /**\n * Updates the `selected` radio button from the internal _value state.\n * @return {?}\n */\n MatRadioGroup.prototype._updateSelectedRadioFromValue = function () {\n var _this = this;\n // If the value already matches the selected radio, do nothing.\n var /** @type {?} */ isAlreadySelected = this._selected != null && this._selected.value == this._value;\n if (this._radios != null && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(function (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 * @return {?}\n */\n MatRadioGroup.prototype._emitChangeEvent = function () {\n if (this._isInitialized) {\n var /** @type {?} */ event_1 = new MatRadioChange();\n event_1.source = this._selected;\n event_1.value = this._value;\n this.change.emit(event_1);\n }\n };\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._markRadiosForCheck = function () {\n if (this._radios) {\n this._radios.forEach(function (radio) { return radio._markForCheck(); });\n }\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatRadioGroup.prototype.writeValue = function (value) {\n this.value = value;\n this._changeDetector.markForCheck();\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 * @return {?}\n */\n MatRadioGroup.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\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 * @return {?}\n */\n MatRadioGroup.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\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 * @return {?}\n */\n MatRadioGroup.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n };\n MatRadioGroup.decorators = [\n { type: Directive, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioGroup.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n MatRadioGroup.propDecorators = {\n 'change': [{ type: Output },],\n '_radios': [{ type: ContentChildren, args: [forwardRef(function () { return MatRadioButton; }),] },],\n 'name': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n };\n return MatRadioGroup;\n}(_MatRadioGroupMixinBase));\n/**\n * \\@docs-private\n */\nvar MatRadioButtonBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatRadioButtonBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatRadioButtonBase;\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\nvar _MatRadioButtonMixinBase = mixinColor(mixinDisableRipple(MatRadioButtonBase), 'accent');\n/**\n * A radio-button. May be inside of\n */\nvar MatRadioButton = (function (_super) {\n __extends(MatRadioButton, _super);\n /**\n * @param {?} radioGroup\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _changeDetector\n * @param {?} _focusMonitor\n * @param {?} _radioDispatcher\n */\n function MatRadioButton(radioGroup, elementRef, renderer, _changeDetector, _focusMonitor, _radioDispatcher) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._changeDetector = _changeDetector;\n _this._focusMonitor = _focusMonitor;\n _this._radioDispatcher = _radioDispatcher;\n _this._uniqueId = \"mat-radio-\" + ++nextUniqueId;\n /**\n * The unique ID for the radio button.\n */\n _this.id = _this._uniqueId;\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 _this.change = new EventEmitter();\n /**\n * Whether this radio is checked.\n */\n _this._checked = false;\n /**\n * Value assigned to this radio.\n */\n _this._value = null;\n /**\n * Unregister function for _radioDispatcher *\n */\n _this._removeUniqueSelectionListener = function () { };\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 _this._removeUniqueSelectionListener =\n _radioDispatcher.listen(function (id, name) {\n if (id != _this.id && name == _this.name) {\n _this.checked = false;\n }\n });\n return _this;\n }\n Object.defineProperty(MatRadioButton.prototype, \"checked\", {\n /**\n * Whether this radio button is checked.\n * @return {?}\n */\n get: function () {\n return this._checked;\n },\n /**\n * @param {?} newCheckedState\n * @return {?}\n */\n set: function (newCheckedState) {\n if (this._checked != newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value != this.value) {\n this.radioGroup.selected = this;\n }\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 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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"value\", {\n /**\n * The value of this radio button.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"align\", {\n /**\n * Whether or not the radio-button should appear before or after the label.\n * @deprecated\n * @return {?}\n */\n get: function () {\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 * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"labelPosition\", {\n /**\n * Whether the label should appear after or before the radio button. Defaults to 'after'\n * @return {?}\n */\n get: function () {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._labelPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"disabled\", {\n /**\n * Whether the radio button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"required\", {\n /**\n * Whether the radio button is required.\n * @return {?}\n */\n get: function () {\n return this._required || (this.radioGroup && this.radioGroup.required);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"inputId\", {\n /**\n * ID of the native input element inside `<mat-radio-button>`\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * Focuses the radio button.\n * @return {?}\n */\n MatRadioButton.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\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 * @return {?}\n */\n MatRadioButton.prototype._markForCheck = function () {\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 * @return {?}\n */\n MatRadioButton.prototype.ngOnInit = function () {\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 * @return {?}\n */\n MatRadioButton.prototype.ngAfterViewInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n this._removeUniqueSelectionListener();\n };\n /**\n * Dispatch change event with current value.\n * @return {?}\n */\n MatRadioButton.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatRadioChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatRadioButton.prototype._onInputClick = function (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 * 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 * @param {?} event\n * @return {?}\n */\n MatRadioButton.prototype._onInputChange = function (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 var /** @type {?} */ groupValueChanged = this.radioGroup && this.value != this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\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 * @param {?} focusOrigin\n * @return {?}\n */\n MatRadioButton.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n if (this.radioGroup) {\n this.radioGroup._touch();\n }\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\n };\n MatRadioButton.decorators = [\n { type: Component, args: [{selector: 'mat-radio-button',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-radio-label\\\" #label><div class=\\\"mat-radio-container\\\"><div class=\\\"mat-radio-outer-circle\\\"></div><div class=\\\"mat-radio-inner-circle\\\"></div><div mat-ripple class=\\\"mat-radio-ripple\\\" [matRippleTrigger]=\\\"label\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"true\\\"></div></div><input #input class=\\\"mat-radio-input cdk-visually-hidden\\\" type=\\\"radio\\\" [id]=\\\"inputId\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [required]=\\\"required\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInputChange($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-radio-label-content\\\" [class.mat-radio-label-before]=\\\"labelPosition == 'before'\\\"><span style=\\\"display:none\\\">&nbsp;</span><ng-content></ng-content></div></label>\",\n styles: [\".mat-radio-button{display:inline-block}.mat-radio-label{cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;height:20px;left:0;position:absolute;top:0;transition:transform ease 280ms,background-color ease 280ms;width:20px;transform:scale(.001)}.mat-radio-checked .mat-radio-inner-circle{transform:scale(.5)}.mat-radio-label-content{display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-ripple{position:absolute;left:-15px;top:-15px;right:-15px;bottom:-15px;border-radius:50%;z-index:1;pointer-events:none}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioButton.ctorParameters = function () { return [\n { type: MatRadioGroup, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: FocusMonitor, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n MatRadioButton.propDecorators = {\n 'id': [{ type: Input },],\n 'name': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'checked': [{ type: Input },],\n 'value': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n 'change': [{ type: Output },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n };\n return MatRadioButton;\n}(_MatRadioButtonMixinBase));\n\nvar MatRadioModule = (function () {\n function MatRadioModule() {\n }\n MatRadioModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatRippleModule, MatCommonModule, A11yModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, VIEWPORT_RULER_PROVIDER],\n declarations: [MatRadioGroup, MatRadioButton],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioModule.ctorParameters = function () { return []; };\n return MatRadioModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatRadioModule, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioChange, MatRadioGroupBase, _MatRadioGroupMixinBase, MatRadioGroup, MatRadioButtonBase, _MatRadioButtonMixinBase, MatRadioButton };\n//# sourceMappingURL=radio.es5.js.map\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 */\nimport { A11yModule, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, Inject, Input, NgModule, NgZone, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { RxChain, filter, first, startWith, takeUntil } from '@angular/cdk/rxjs';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @param {?} position\n * @return {?}\n */\nfunction throwMatDuplicatedDrawerError(position) {\n throw Error(\"A drawer was already declared for 'position=\\\"\" + position + \"\\\"'\");\n}\n/**\n * Drawer toggle promise result.\n * @deprecated\n */\nvar MatDrawerToggleResult = (function () {\n /**\n * @param {?} type\n * @param {?} animationFinished\n */\n function MatDrawerToggleResult(type, animationFinished) {\n this.type = type;\n this.animationFinished = animationFinished;\n }\n return MatDrawerToggleResult;\n}());\nvar MatDrawerContent = (function () {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _container\n */\n function MatDrawerContent(_changeDetectorRef, _container) {\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\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 this._margins = { left: 0, right: 0 };\n }\n /**\n * @return {?}\n */\n MatDrawerContent.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._container._contentMargins.subscribe(function (margins) {\n _this._margins = margins;\n _this._changeDetectorRef.markForCheck();\n });\n };\n MatDrawerContent.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatDrawerContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatDrawerContainer; }),] },] },\n ]; };\n return MatDrawerContent;\n}());\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nvar MatDrawer = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _doc\n */\n function MatDrawer(_elementRef, _focusTrapFactory, _doc) {\n var _this = this;\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._doc = _doc;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /**\n * Whether the drawer is initialized. Used for disabling the initial animation.\n */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n /**\n * Whether the drawer is opened.\n */\n this._opened = false;\n /**\n * Emits whenever the drawer has started animating.\n */\n this._animationStarted = new EventEmitter();\n /**\n * Whether the drawer is animating. Used to prevent overlapping animations.\n */\n this._isAnimating = false;\n /**\n * Current state of the sidenav animation.\n */\n this._animationState = 'void';\n /**\n * Event emitted when the drawer is fully opened.\n */\n this.onOpen = new EventEmitter();\n /**\n * Event emitted when the drawer is fully closed.\n */\n this.onClose = new EventEmitter();\n /**\n * Event emitted when the drawer's position changes.\n */\n this.onPositionChanged = new EventEmitter();\n /**\n * @deprecated\n */\n this.onAlignChanged = new EventEmitter();\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 this._modeChanged = new Subject();\n this.onOpen.subscribe(function () {\n if (_this._doc) {\n _this._elementFocusedBeforeDrawerWasOpened = _this._doc.activeElement;\n }\n if (_this._isFocusTrapEnabled && _this._focusTrap) {\n _this._focusTrap.focusInitialElementWhenReady();\n }\n });\n this.onClose.subscribe(function () { return _this._restoreFocus(); });\n }\n Object.defineProperty(MatDrawer.prototype, \"position\", {\n /**\n * The side that the drawer is attached to.\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"align\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.position = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"mode\", {\n /**\n * Mode of the drawer; one of 'over', 'push' or 'side'.\n * @return {?}\n */\n get: function () { return this._mode; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._mode = value;\n this._modeChanged.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"disableClose\", {\n /**\n * Whether the drawer can be closed with the escape key or by clicking on the backdrop.\n * @return {?}\n */\n get: function () { return this._disableClose; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disableClose = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"_isFocusTrapEnabled\", {\n /**\n * @return {?}\n */\n get: function () {\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 enumerable: true,\n configurable: true\n });\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n * @return {?}\n */\n MatDrawer.prototype._restoreFocus = function () {\n var /** @type {?} */ activeEl = this._doc && this._doc.activeElement;\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._elementFocusedBeforeDrawerWasOpened.focus();\n }\n else {\n this._elementRef.nativeElement.blur();\n }\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngAfterContentInit = function () {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n this._enableAnimations = true;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngOnDestroy = function () {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n };\n Object.defineProperty(MatDrawer.prototype, \"opened\", {\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n * @return {?}\n */\n get: function () { return this._opened; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.toggle(coerceBooleanProperty(v));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Open the drawer.\n * @return {?}\n */\n MatDrawer.prototype.open = function () {\n return this.toggle(true);\n };\n /**\n * Close the drawer.\n * @return {?}\n */\n MatDrawer.prototype.close = function () {\n return this.toggle(false);\n };\n /**\n * Toggle this drawer.\n * @param {?=} isOpen Whether the drawer should be open.\n * @return {?}\n */\n MatDrawer.prototype.toggle = function (isOpen) {\n var _this = this;\n if (isOpen === void 0) { isOpen = !this.opened; }\n if (!this._isAnimating) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n }\n else {\n this._animationState = 'void';\n }\n this._currentTogglePromise = new Promise(function (resolve) {\n first.call(isOpen ? _this.onOpen : _this.onClose).subscribe(resolve);\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 ((this._currentTogglePromise));\n };\n /**\n * Handles the keyboard events.\n * \\@docs-private\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype.handleKeydown = function (event) {\n if (event.keyCode === ESCAPE && !this.disableClose) {\n this.close();\n event.stopPropagation();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStarted.emit(event);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationEnd = function (event) {\n var _this = this;\n var fromState = event.fromState, toState = event.toState;\n if (toState.indexOf('open') === 0 && fromState === 'void') {\n this.onOpen.emit(new MatDrawerToggleResult('open', true));\n }\n else if (toState === 'void' && fromState.indexOf('open') === 0) {\n this.onClose.emit(new MatDrawerToggleResult('close', true));\n }\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(function () {\n _this._isAnimating = false;\n _this._currentTogglePromise = null;\n });\n };\n Object.defineProperty(MatDrawer.prototype, \"_width\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n },\n enumerable: true,\n configurable: true\n });\n MatDrawer.decorators = [\n { type: Component, args: [{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', 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 },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDrawer.propDecorators = {\n 'position': [{ type: Input },],\n 'align': [{ type: Input },],\n 'mode': [{ type: Input },],\n 'disableClose': [{ type: Input },],\n 'onOpen': [{ type: Output, args: ['open',] },],\n 'onClose': [{ type: Output, args: ['close',] },],\n 'onPositionChanged': [{ type: Output, args: ['positionChanged',] },],\n 'onAlignChanged': [{ type: Output, args: ['align-changed',] },],\n 'opened': [{ type: Input },],\n };\n return MatDrawer;\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 */\nvar MatDrawerContainer = (function () {\n /**\n * @param {?} _dir\n * @param {?} _element\n * @param {?} _renderer\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n */\n function MatDrawerContainer(_dir, _element, _renderer, _ngZone, _changeDetectorRef) {\n var _this = this;\n this._dir = _dir;\n this._element = _element;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Event emitted when the drawer backdrop is clicked.\n */\n this.backdropClick = new EventEmitter();\n /**\n * Emits when the component is destroyed.\n */\n this._destroyed = new Subject();\n this._contentMargins = new Subject();\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 takeUntil.call(_dir.change, this._destroyed).subscribe(function () { return _this._validateDrawers(); });\n }\n }\n Object.defineProperty(MatDrawerContainer.prototype, \"start\", {\n /**\n * The drawer child with the `start` position.\n * @return {?}\n */\n get: function () { return this._start; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawerContainer.prototype, \"end\", {\n /**\n * The drawer child with the `end` position.\n * @return {?}\n */\n get: function () { return this._end; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngAfterContentInit = function () {\n var _this = this;\n startWith.call(this._drawers.changes, null).subscribe(function () {\n _this._validateDrawers();\n _this._drawers.forEach(function (drawer) {\n _this._watchDrawerToggle(drawer);\n _this._watchDrawerPosition(drawer);\n _this._watchDrawerMode(drawer);\n });\n if (!_this._drawers.length ||\n _this._isDrawerOpen(_this._start) ||\n _this._isDrawerOpen(_this._end)) {\n _this._updateContentMargins();\n }\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngOnDestroy = function () {\n this._destroyed.next();\n this._destroyed.complete();\n };\n /**\n * Calls `open` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.open = function () {\n this._drawers.forEach(function (drawer) { return drawer.open(); });\n };\n /**\n * Calls `close` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.close = function () {\n this._drawers.forEach(function (drawer) { return drawer.close(); });\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 * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerToggle = function (drawer) {\n var _this = this;\n RxChain.from(drawer._animationStarted)\n .call(takeUntil, this._drawers.changes)\n .call(filter, function (event) { return event.fromState !== event.toState; })\n .subscribe(function (event) {\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._renderer.addClass(_this._element.nativeElement, 'mat-drawer-transition');\n }\n _this._updateContentMargins();\n _this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n takeUntil.call(merge(drawer.onOpen, drawer.onClose), this._drawers.changes).subscribe(function () {\n return _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 * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerPosition = function (drawer) {\n var _this = this;\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 takeUntil.call(drawer.onPositionChanged, this._drawers.changes).subscribe(function () {\n first.call(_this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n _this._validateDrawers();\n });\n });\n };\n /**\n * Subscribes to changes in drawer mode so we can run change detection.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerMode = function (drawer) {\n var _this = this;\n if (drawer) {\n takeUntil.call(drawer._modeChanged, merge(this._drawers.changes, this._destroyed))\n .subscribe(function () {\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 * @param {?} isAdd\n * @return {?}\n */\n MatDrawerContainer.prototype._setContainerClass = function (isAdd) {\n if (isAdd) {\n this._renderer.addClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n };\n /**\n * Validate the state of the drawer children components.\n * @return {?}\n */\n MatDrawerContainer.prototype._validateDrawers = function () {\n var _this = this;\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(function (drawer) {\n if (drawer.position == 'end') {\n if (_this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n _this._end = drawer;\n }\n else {\n if (_this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n _this._start = drawer;\n }\n });\n this._right = this._left = null;\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 }\n else {\n this._left = this._end;\n this._right = this._start;\n }\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._onBackdropClicked = function () {\n this.backdropClick.emit();\n this._closeModalDrawer();\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._closeModalDrawer = function () {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(function (drawer) { return drawer && !drawer.disableClose && drawer.mode !== 'side'; })\n .forEach(function (drawer) { /** @type {?} */ return ((drawer)).close(); });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._isShowingBackdrop = function () {\n return (this._isDrawerOpen(this._start) && ((this._start)).mode != 'side')\n || (this._isDrawerOpen(this._end) && ((this._end)).mode != 'side');\n };\n /**\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._isDrawerOpen = function (drawer) {\n return drawer != null && drawer.opened;\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 * @return {?}\n */\n MatDrawerContainer.prototype._updateContentMargins = function () {\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 var /** @type {?} */ left = 0;\n var /** @type {?} */ right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n }\n else if (this._left.mode == 'push') {\n var /** @type {?} */ width = this._left._width;\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n }\n else if (this._right.mode == 'push') {\n var /** @type {?} */ width = this._right._width;\n right += width;\n left -= width;\n }\n }\n this._contentMargins.next({ left: left, right: right });\n };\n MatDrawerContainer.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-drawer\\\"></ng-content><ng-content select=\\\"mat-drawer-content\\\"></ng-content><mat-drawer-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-drawer-content>\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContainer.ctorParameters = function () { return [\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n ]; };\n MatDrawerContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatDrawer,] },],\n '_content': [{ type: ContentChild, args: [MatDrawerContent,] },],\n 'backdropClick': [{ type: Output },],\n };\n return MatDrawerContainer;\n}());\n\nvar MatSidenavContent = (function (_super) {\n __extends(MatSidenavContent, _super);\n /**\n * @param {?} changeDetectorRef\n * @param {?} container\n */\n function MatSidenavContent(changeDetectorRef, container) {\n return _super.call(this, changeDetectorRef, container) || this;\n }\n MatSidenavContent.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatSidenavContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatSidenavContainer; }),] },] },\n ]; };\n return MatSidenavContent;\n}(MatDrawerContent));\nvar MatSidenav = (function (_super) {\n __extends(MatSidenav, _super);\n function MatSidenav() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fixedInViewport = false;\n _this._fixedTopGap = 0;\n _this._fixedBottomGap = 0;\n return _this;\n }\n Object.defineProperty(MatSidenav.prototype, \"fixedInViewport\", {\n /**\n * Whether the sidenav is fixed in the viewport.\n * @return {?}\n */\n get: function () { return this._fixedInViewport; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedInViewport = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedTopGap\", {\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 * @return {?}\n */\n get: function () { return this._fixedTopGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedTopGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedBottomGap\", {\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 * @return {?}\n */\n get: function () { return this._fixedBottomGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedBottomGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n MatSidenav.decorators = [\n { type: Component, args: [{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', 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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenav.ctorParameters = function () { return []; };\n MatSidenav.propDecorators = {\n 'fixedInViewport': [{ type: Input },],\n 'fixedTopGap': [{ type: Input },],\n 'fixedBottomGap': [{ type: Input },],\n };\n return MatSidenav;\n}(MatDrawer));\nvar MatSidenavContainer = (function (_super) {\n __extends(MatSidenavContainer, _super);\n function MatSidenavContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatSidenavContainer.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-sidenav\\\"></ng-content><ng-content select=\\\"mat-sidenav-content\\\"></ng-content><mat-sidenav-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-sidenav-content>\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContainer.ctorParameters = function () { return []; };\n MatSidenavContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatSidenav,] },],\n '_content': [{ type: ContentChild, args: [MatSidenavContent,] },],\n };\n return MatSidenavContainer;\n}(MatDrawerContainer));\n\nvar MatSidenavModule = (function () {\n function MatSidenavModule() {\n }\n MatSidenavModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n A11yModule,\n OverlayModule,\n ScrollDispatchModule,\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavModule.ctorParameters = function () { return []; };\n return MatSidenavModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSidenavModule, throwMatDuplicatedDrawerError, MatDrawerToggleResult, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer };\n//# sourceMappingURL=sidenav.es5.js.map\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 */\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgModule, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { GestureConfig, MatCommonModule, MatRipple, MatRippleModule, applyCssTransform, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nvar nextUniqueId = 0;\nvar MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlideToggle; }),\n multi: true\n};\n/**\n * Change event object emitted by a MatSlideToggle.\n */\nvar MatSlideToggleChange = (function () {\n function MatSlideToggleChange() {\n }\n return MatSlideToggleChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSlideToggleBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSlideToggleBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSlideToggleBase;\n}());\nvar _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n/**\n * Represents a slidable \"switch\" toggle that can be moved between on and off.\n */\nvar MatSlideToggle = (function (_super) {\n __extends(MatSlideToggle, _super);\n /**\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _platform\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} tabIndex\n */\n function MatSlideToggle(elementRef, renderer, _platform, _focusMonitor, _changeDetectorRef, tabIndex) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._platform = _platform;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this.onChange = function (_) { };\n _this.onTouched = function () { };\n _this._uniqueId = \"mat-slide-toggle-\" + ++nextUniqueId;\n _this._required = false;\n _this._checked = false;\n /**\n * Name value will be applied to the input element if present\n */\n _this.name = null;\n /**\n * A unique id for the slide-toggle input. If none is supplied, it will be auto-generated.\n */\n _this.id = _this._uniqueId;\n /**\n * Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n */\n _this.labelPosition = 'after';\n /**\n * Used to set the aria-label attribute on the underlying input element.\n */\n _this.ariaLabel = null;\n /**\n * Used to set the aria-labelledby attribute on the underlying input element.\n */\n _this.ariaLabelledby = null;\n /**\n * An event will be dispatched each time the slide-toggle changes its value.\n */\n _this.change = new EventEmitter();\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatSlideToggle.prototype, \"required\", {\n /**\n * Whether the slide-toggle is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"checked\", {\n /**\n * Whether the slide-toggle element is checked or not\n * @return {?}\n */\n get: function () { return this._checked; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._checked = !!value;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"inputId\", {\n /**\n * Returns the unique id for the visual hidden input.\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._slideRenderer = new SlideToggleRenderer(this._elementRef, this._platform);\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n };\n /**\n * This function will called if the underlying input changed its value through user interaction.\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onChangeEvent = function (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 // Sync the value from the underlying input element with the slide-toggle component.\n this.checked = this._inputElement.nativeElement.checked;\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 we don't want\n // to trigger a change event, when the `checked` variable changes programmatically.\n this._emitChangeEvent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onInputClick = function (event) {\n // In some situations the user will release the mouse on the label element. The label element\n // redirects the click to the underlying input element and will result in a value change.\n // Prevent the default behavior if dragging, because the value will be set after drag.\n if (this._slideRenderer.dragging) {\n event.preventDefault();\n }\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 * @param {?} value\n * @return {?}\n */\n MatSlideToggle.prototype.writeValue = function (value) {\n this.checked = !!value;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Implemented as a part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlideToggle.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Focuses the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * Toggles the checked state of the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n MatSlideToggle.prototype._onInputFocusChange = function (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, centered: true });\n }\n else if (!focusOrigin) {\n this.onTouched();\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 * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n * @return {?}\n */\n MatSlideToggle.prototype._emitChangeEvent = function () {\n var /** @type {?} */ 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 * @return {?}\n */\n MatSlideToggle.prototype._onDragStart = function () {\n if (!this.disabled) {\n this._slideRenderer.startThumbDrag(this.checked);\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onDrag = function (event) {\n if (this._slideRenderer.dragging) {\n this._slideRenderer.updateThumbPosition(event.deltaX);\n }\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype._onDragEnd = function () {\n var _this = this;\n if (this._slideRenderer.dragging) {\n var /** @type {?} */ _previousChecked = this.checked;\n this.checked = this._slideRenderer.dragPercentage > 50;\n if (_previousChecked !== this.checked) {\n this._emitChangeEvent();\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(function () { return _this._slideRenderer.stopThumbDrag(); });\n }\n };\n /**\n * Method being called whenever the label text changes.\n * @return {?}\n */\n MatSlideToggle.prototype._onLabelTextChange = function () {\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 MatSlideToggle.decorators = [\n { type: Component, args: [{selector: 'mat-slide-toggle',\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 template: \"<label class=\\\"mat-slide-toggle-label\\\" #label><div class=\\\"mat-slide-toggle-bar\\\" [class.mat-slide-toggle-bar-no-side-margin]=\\\"!labelContent.textContent || !labelContent.textContent.trim()\\\"><input #input class=\\\"mat-slide-toggle-input cdk-visually-hidden\\\" type=\\\"checkbox\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [tabIndex]=\\\"tabIndex\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onChangeEvent($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-slide-toggle-thumb-container\\\" (slidestart)=\\\"_onDragStart()\\\" (slide)=\\\"_onDrag($event)\\\" (slideend)=\\\"_onDragEnd()\\\"><div class=\\\"mat-slide-toggle-thumb\\\"></div><div class=\\\"mat-slide-toggle-ripple\\\" mat-ripple [matRippleTrigger]=\\\"label\\\" [matRippleCentered]=\\\"true\\\" [matRippleDisabled]=\\\"disableRipple || disabled\\\"></div></div></div><span class=\\\"mat-slide-toggle-content\\\" #labelContent (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><ng-content></ng-content></span></label>\",\n styles: [\".mat-slide-toggle{display:inline-block;height:24px;line-height:24px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px,0,0)}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;cursor:pointer}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}.mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-right:8px;margin-left:0}.mat-slide-toggle-label-before .mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0,0,0);transition:all 80ms linear;transition-property:transform;cursor:-webkit-grab;cursor:grab}.mat-slide-toggle-thumb-container.mat-dragging,.mat-slide-toggle-thumb-container:active{cursor:-webkit-grabbing;cursor:grabbing;transition-duration:0s}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-thumb{background:#fff;border:solid 1px #000}}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;border-radius:8px}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-bar{background:#fff}}.mat-slide-toggle-input{bottom:0;left:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}.mat-slide-toggle-ripple{position:absolute;top:-13px;left:-13px;height:46px;width:46px;border-radius:50%;z-index:1;pointer-events:none}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggle.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: Platform, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatSlideToggle.propDecorators = {\n 'name': [{ type: Input },],\n 'id': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'required': [{ type: Input },],\n 'checked': [{ type: Input },],\n 'change': [{ type: Output },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n };\n return MatSlideToggle;\n}(_MatSlideToggleMixinBase));\n/**\n * Renderer for the Slide Toggle component, which separates DOM modification in its own class\n */\nvar SlideToggleRenderer = (function () {\n /**\n * @param {?} elementRef\n * @param {?} platform\n */\n function SlideToggleRenderer(elementRef, platform) {\n /**\n * Whether the thumb is currently being dragged.\n */\n this.dragging = false;\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 * @param {?} checked\n * @return {?}\n */\n SlideToggleRenderer.prototype.startThumbDrag = function (checked) {\n if (this.dragging) {\n return;\n }\n this._thumbBarWidth = this._thumbBarEl.clientWidth - this._thumbEl.clientWidth;\n this._thumbEl.classList.add('mat-dragging');\n this._previousChecked = checked;\n this.dragging = true;\n };\n /**\n * Resets the current drag and returns the new checked value.\n * @return {?}\n */\n SlideToggleRenderer.prototype.stopThumbDrag = function () {\n if (!this.dragging) {\n return false;\n }\n this.dragging = false;\n this._thumbEl.classList.remove('mat-dragging');\n // Reset the transform because the component will take care of the thumb position after drag.\n applyCssTransform(this._thumbEl, '');\n return this.dragPercentage > 50;\n };\n /**\n * Updates the thumb containers position from the specified distance.\n * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype.updateThumbPosition = function (distance) {\n this.dragPercentage = this._getDragPercentage(distance);\n // Calculate the moved distance based on the thumb bar width.\n var /** @type {?} */ 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 * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype._getDragPercentage = function (distance) {\n var /** @type {?} */ percentage = (distance / this._thumbBarWidth) * 100;\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 return Math.max(0, Math.min(percentage, 100));\n };\n return SlideToggleRenderer;\n}());\n\nvar MatSlideToggleModule = (function () {\n function MatSlideToggleModule() {\n }\n MatSlideToggleModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggleModule.ctorParameters = function () { return []; };\n return MatSlideToggleModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle };\n//# sourceMappingURL=slide-toggle.es5.js.map\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 */\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { BidiModule, Directionality } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { GestureConfig, MatCommonModule, mixinColor, mixinDisabled } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, END, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\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 */\nvar MIN_AUTO_TICK_SEPARATION = 30;\n/**\n * The thumb gap size for a disabled slider.\n */\nvar DISABLED_THUMB_GAP = 7;\n/**\n * The thumb gap size for a non-active slider at its minimum value.\n */\nvar MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n/**\n * The thumb gap size for an active slider at its minimum value.\n */\nvar MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n */\nvar MAT_SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlider; }),\n multi: true\n};\n/**\n * A simple change event emitted by the MatSlider component.\n */\nvar MatSliderChange = (function () {\n function MatSliderChange() {\n }\n return MatSliderChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSliderBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSliderBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSliderBase;\n}());\nvar _MatSliderMixinBase = mixinColor(mixinDisabled(MatSliderBase), 'accent');\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 */\nvar MatSlider = (function (_super) {\n __extends(MatSlider, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n */\n function MatSlider(renderer, elementRef, _focusMonitor, _changeDetectorRef, _dir) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._dir = _dir;\n _this._invert = false;\n _this._max = 100;\n _this._min = 0;\n _this._step = 1;\n _this._thumbLabel = false;\n _this._tickInterval = 0;\n _this._value = null;\n _this._vertical = false;\n /**\n * Event emitted when the slider value has changed.\n */\n _this.change = new EventEmitter();\n /**\n * Event emitted when the slider thumb moves.\n */\n _this.input = new EventEmitter();\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n */\n _this.onTouched = function () { };\n _this._percent = 0;\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 _this._isSliding = false;\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 _this._isActive = false;\n /**\n * The size of a tick interval as a percentage of the size of the track.\n */\n _this._tickIntervalPercent = 0;\n /**\n * The dimensions of the slider.\n */\n _this._sliderDimensions = null;\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * Subscription to the Directionality change EventEmitter.\n */\n _this._dirChangeSubscription = Subscription.EMPTY;\n return _this;\n }\n Object.defineProperty(MatSlider.prototype, \"invert\", {\n /**\n * Whether the slider is inverted.\n * @return {?}\n */\n get: function () { return this._invert; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._invert = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"max\", {\n /**\n * The maximum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._max; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"min\", {\n /**\n * The minimum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._min; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._min = coerceNumberProperty(v, this._min);\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 // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"step\", {\n /**\n * The values at which the thumb will snap.\n * @return {?}\n */\n get: function () { return this._step; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._step = coerceNumberProperty(v, this._step);\n if (this._step % 1 !== 0) {\n this._roundLabelTo = ((this._step.toString().split('.').pop())).length;\n }\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"thumbLabel\", {\n /**\n * Whether or not to show the thumb label.\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbLabelDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"tickInterval\", {\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 * @return {?}\n */\n get: function () { return this._tickInterval; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n }\n else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, /** @type {?} */ (this._tickInterval));\n }\n else {\n this._tickInterval = 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_tickIntervalDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.tickInterval; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this.tickInterval = v; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"value\", {\n /**\n * Value of the slider.\n * @return {?}\n */\n get: function () {\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 /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n if (v !== this._value) {\n this._value = coerceNumberProperty(v, this._value || 0);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"vertical\", {\n /**\n * Whether the slider is vertical.\n * @return {?}\n */\n get: function () { return this._vertical; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"displayValue\", {\n /**\n * The value to be used for display purposes.\n * @return {?}\n */\n get: function () {\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 return this.value || 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"percent\", {\n /**\n * The percentage of the slider that coincides with the value.\n * @return {?}\n */\n get: function () { return this._clamp(this._percent); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertAxis\", {\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 * @return {?}\n */\n get: function () {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_isMinValue\", {\n /**\n * Whether the slider is at its minimum value.\n * @return {?}\n */\n get: function () {\n return this.percent === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbGap\", {\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n * @return {?}\n */\n get: function () {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackBackgroundStyles\", {\n /**\n * CSS styles for the track background element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '-' : '';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + (1 - this.percent) + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackFillStyles\", {\n /**\n * CSS styles for the track fill element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '' : '-';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + this.percent + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksContainerStyles\", {\n /**\n * CSS styles for the ticks container element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ 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 var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '' : '-';\n var /** @type {?} */ offset = this._tickIntervalPercent / 2 * 100;\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksStyles\", {\n /**\n * CSS styles for the ticks element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ tickSize = this._tickIntervalPercent * 100;\n var /** @type {?} */ backgroundSize = this.vertical ? \"2px \" + tickSize + \"%\" : tickSize + \"% 2px\";\n var /** @type {?} */ 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 var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '-' : '';\n var /** @type {?} */ rotate = !this.vertical && this._direction == 'rtl' ? ' rotate(180deg)' : '';\n var /** @type {?} */ styles = {\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 if (this._isMinValue && this._thumbGap) {\n var /** @type {?} */ side = this.vertical ?\n (this._invertAxis ? 'Bottom' : 'Top') :\n (this._invertAxis ? 'Right' : 'Left');\n styles[\"padding\" + side] = this._thumbGap + \"px\";\n }\n return styles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbContainerStyles\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ 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 var /** @type {?} */ invertOffset = (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n var /** @type {?} */ offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': \"translate\" + axis + \"(-\" + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertMouseCoords\", {\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 * @return {?}\n */\n get: function () {\n return (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_direction\", {\n /**\n * The language direction for this slider element.\n * @return {?}\n */\n get: function () {\n return (this._dir && this._dir.value == 'rtl') ? 'rtl' : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, this._renderer, true)\n .subscribe(function (origin) {\n _this._isActive = !!origin && origin !== 'keyboard';\n _this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n this._dirChangeSubscription.unsubscribe();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onMouseenter = function () {\n if (this.disabled) {\n return;\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 * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onClick = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\n this._isSliding = false;\n this._focusHostElement();\n this._updateValueFromPosition({ x: event.clientX, y: event.clientY });\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 * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlide = function (event) {\n if (this.disabled) {\n return;\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 // Prevent the slide from selecting anything else.\n event.preventDefault();\n var /** @type {?} */ oldValue = this.value;\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\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 * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlideStart = function (event) {\n if (this.disabled || this._isSliding) {\n return;\n }\n // Simulate mouseenter in case this is a mobile device.\n this._onMouseenter();\n this._isSliding = true;\n this._focusHostElement();\n this._valueOnSlideStart = this.value;\n if (event) {\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\n event.preventDefault();\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onSlideEnd = function () {\n this._isSliding = false;\n if (this._valueOnSlideStart != this.value) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = null;\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onFocus = function () {\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 * @return {?}\n */\n MatSlider.prototype._onBlur = function () {\n this.onTouched();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onKeydown = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\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 if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n this._isSliding = true;\n event.preventDefault();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onKeyup = function () {\n this._isSliding = false;\n };\n /**\n * Increments the slider by the given number of steps (negative number decrements).\n * @param {?} numSteps\n * @return {?}\n */\n MatSlider.prototype._increment = function (numSteps) {\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 * @param {?} pos\n * @return {?}\n */\n MatSlider.prototype._updateValueFromPosition = function (pos) {\n if (!this._sliderDimensions) {\n return;\n }\n var /** @type {?} */ offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n var /** @type {?} */ size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ posComponent = this.vertical ? pos.y : pos.x;\n // The exact value is calculated from the event and used to find the closest snap value.\n var /** @type {?} */ percent = this._clamp((posComponent - offset) / size);\n if (this._invertMouseCoords) {\n percent = 1 - percent;\n }\n var /** @type {?} */ exactValue = this._calculateValue(percent);\n // This calculation finds the closest step by finding the closest whole number divisible by the\n // step relative to the min.\n var /** @type {?} */ 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 * @return {?}\n */\n MatSlider.prototype._emitChangeEvent = function () {\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 * @return {?}\n */\n MatSlider.prototype._emitInputEvent = function () {\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 * @return {?}\n */\n MatSlider.prototype._updateTickIntervalPercent = function () {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n if (this.tickInterval == 'auto') {\n var /** @type {?} */ trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ pixelsPerStep = trackSize * this.step / (this.max - this.min);\n var /** @type {?} */ stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n var /** @type {?} */ pixelsPerTick = stepsPerTick * this.step;\n this._tickIntervalPercent = pixelsPerTick / trackSize;\n }\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 * @param {?=} value\n * @return {?}\n */\n MatSlider.prototype._createChangeEvent = function (value) {\n if (value === void 0) { value = this.value; }\n var /** @type {?} */ event = new MatSliderChange();\n event.source = this;\n event.value = value;\n return event;\n };\n /**\n * Calculates the percentage of the slider that a value is.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype._calculatePercentage = function (value) {\n return ((value || 0) - this.min) / (this.max - this.min);\n };\n /**\n * Calculates the value a percentage of the slider corresponds to.\n * @param {?} percentage\n * @return {?}\n */\n MatSlider.prototype._calculateValue = function (percentage) {\n return this.min + percentage * (this.max - this.min);\n };\n /**\n * Return a number between two numbers.\n * @param {?} value\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\n MatSlider.prototype._clamp = function (value, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 1; }\n return Math.max(min, Math.min(value, max));\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 * @return {?}\n */\n MatSlider.prototype._getSliderDimensions = function () {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\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 * @return {?}\n */\n MatSlider.prototype._focusHostElement = function () {\n this._elementRef.nativeElement.focus();\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype.writeValue = function (value) {\n this.value = value;\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 * @return {?}\n */\n MatSlider.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\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 * @return {?}\n */\n MatSlider.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlider.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n };\n MatSlider.decorators = [\n { type: Component, args: [{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': '0',\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 template: \"<div class=\\\"mat-slider-wrapper\\\" #sliderWrapper><div class=\\\"mat-slider-track-wrapper\\\"><div class=\\\"mat-slider-track-background\\\" [ngStyle]=\\\"_trackBackgroundStyles\\\"></div><div class=\\\"mat-slider-track-fill\\\" [ngStyle]=\\\"_trackFillStyles\\\"></div></div><div class=\\\"mat-slider-ticks-container\\\" [ngStyle]=\\\"_ticksContainerStyles\\\"><div class=\\\"mat-slider-ticks\\\" [ngStyle]=\\\"_ticksStyles\\\"></div></div><div class=\\\"mat-slider-thumb-container\\\" [ngStyle]=\\\"_thumbContainerStyles\\\"><div class=\\\"mat-slider-focus-ring\\\"></div><div class=\\\"mat-slider-thumb\\\"></div><div class=\\\"mat-slider-thumb-label\\\"><span class=\\\"mat-slider-thumb-label-text\\\">{{displayValue}}</span></div></div></div>\",\n styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:0;vertical-align:middle}.mat-slider-wrapper{position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{background-repeat:repeat;background-clip:content-box;box-sizing:border-box;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),opacity .4s cubic-bezier(.25,.8,.25,1)}.cdk-keyboard-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label{cursor:-webkit-grab;cursor:grab}.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label:active,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb:active{cursor:-webkit-grabbing;cursor:grabbing}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(.7);transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),border-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform .4s cubic-bezier(.25,.8,.25,1),border-radius .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-sliding .mat-slider-thumb-container,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-track-fill{transition-duration:0s}.mat-slider-has-ticks .mat-slider-wrapper::after{content:'';position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}\"],\n inputs: ['disabled', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlider.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatSlider.propDecorators = {\n 'invert': [{ type: Input },],\n 'max': [{ type: Input },],\n 'min': [{ type: Input },],\n 'step': [{ type: Input },],\n 'thumbLabel': [{ type: Input },],\n '_thumbLabelDeprecated': [{ type: Input, args: ['thumb-label',] },],\n 'tickInterval': [{ type: Input },],\n '_tickIntervalDeprecated': [{ type: Input, args: ['tick-interval',] },],\n 'value': [{ type: Input },],\n 'vertical': [{ type: Input },],\n 'change': [{ type: Output },],\n 'input': [{ type: Output },],\n '_sliderWrapper': [{ type: ViewChild, args: ['sliderWrapper',] },],\n };\n return MatSlider;\n}(_MatSliderMixinBase));\n\nvar MatSliderModule = (function () {\n function MatSliderModule() {\n }\n MatSliderModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatCommonModule, BidiModule, A11yModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n providers: [{ provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSliderModule.ctorParameters = function () { return []; };\n return MatSliderModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSliderModule, MAT_SLIDER_VALUE_ACCESSOR, MatSliderChange, MatSliderBase, _MatSliderMixinBase, MatSlider };\n//# sourceMappingURL=slider.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Injectable, InjectionToken, Injector, NgModule, NgZone, Optional, Renderer2, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalHost, ComponentPortal, PortalHostDirective, PortalInjector, PortalModule } from '@angular/cdk/portal';\nimport { LIVE_ANNOUNCER_PROVIDER, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { MatCommonModule, extendObject } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { first } from '@angular/cdk/rxjs';\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nvar MatSnackBarRef = (function () {\n /**\n * @param {?} containerInstance\n * @param {?} _overlayRef\n */\n function MatSnackBarRef(containerInstance, _overlayRef) {\n var _this = this;\n this._overlayRef = _overlayRef;\n /**\n * Subject for notifying the user that the snack bar has closed.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the snack bar has opened and appeared.\n */\n this._afterOpened = new Subject();\n /**\n * Subject for notifying the user that the snack bar action was called.\n */\n this._onAction = new Subject();\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(function () { return _this.dismiss(); });\n containerInstance._onExit.subscribe(function () { return _this._finishDismiss(); });\n }\n /**\n * Dismisses the snack bar.\n * @return {?}\n */\n MatSnackBarRef.prototype.dismiss = function () {\n if (!this._afterClosed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n };\n /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n MatSnackBarRef.prototype.closeWithAction = function () {\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 * @param {?} duration\n * @return {?}\n */\n MatSnackBarRef.prototype._dismissAfter = function (duration) {\n var _this = this;\n this._durationTimeoutId = setTimeout(function () { return _this.dismiss(); }, duration);\n };\n /**\n * Marks the snackbar as opened\n * @return {?}\n */\n MatSnackBarRef.prototype._open = function () {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n };\n /**\n * Cleans up the DOM after closing.\n * @return {?}\n */\n MatSnackBarRef.prototype._finishDismiss = function () {\n this._overlayRef.dispose();\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 * @return {?}\n */\n MatSnackBarRef.prototype.afterDismissed = function () {\n return this._afterClosed.asObservable();\n };\n /**\n * Gets an observable that is notified when the snack bar has opened and appeared.\n * @return {?}\n */\n MatSnackBarRef.prototype.afterOpened = function () {\n return this.containerInstance._onEnter;\n };\n /**\n * Gets an observable that is notified when the snack bar action is called.\n * @return {?}\n */\n MatSnackBarRef.prototype.onAction = function () {\n return this._onAction.asObservable();\n };\n return MatSnackBarRef;\n}());\n\nvar MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nvar MatSnackBarConfig = (function () {\n function MatSnackBarConfig() {\n /**\n * The politeness level for the MatAriaLiveAnnouncer announcement.\n */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the MatAriaLiveAnnouncer\n */\n this.announcementMessage = '';\n /**\n * The length of time in milliseconds to wait before automatically dismissing the snack bar.\n */\n this.duration = 0;\n /**\n * Text layout direction for the snack bar.\n */\n this.direction = 'ltr';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * The horizontal position to place the snack bar.\n */\n this.horizontalPosition = 'center';\n /**\n * The vertical position to place the snack bar.\n */\n this.verticalPosition = 'bottom';\n }\n return MatSnackBarConfig;\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 */\nvar SimpleSnackBar = (function () {\n /**\n * @param {?} snackBarRef\n * @param {?} data\n */\n function SimpleSnackBar(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /**\n * Performs the action on the snack bar.\n * @return {?}\n */\n SimpleSnackBar.prototype.action = function () {\n this.snackBarRef.closeWithAction();\n };\n Object.defineProperty(SimpleSnackBar.prototype, \"hasAction\", {\n /**\n * If the action button should be shown.\n * @return {?}\n */\n get: function () {\n return !!this.data.action;\n },\n enumerable: true,\n configurable: true\n });\n SimpleSnackBar.decorators = [\n { type: Component, args: [{selector: 'simple-snack-bar',\n template: \"{{data.message}} <button class=\\\"mat-simple-snackbar-action\\\" *ngIf=\\\"hasAction\\\" (click)=\\\"action()\\\">{{data.action}}</button>\",\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;line-height:20px}.mat-simple-snackbar-action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;margin-left:48px}[dir=rtl] .mat-simple-snackbar-action{margin-right:48px;margin-left:0}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n SimpleSnackBar.ctorParameters = function () { return [\n { type: MatSnackBarRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DATA,] },] },\n ]; };\n return SimpleSnackBar;\n}());\n\n// TODO(jelbourn): we can't use constants from animation.ts here because you can't use\n// a text interpolation in anything that is analyzed statically with ngc (for AoT compile).\nvar SHOW_ANIMATION = '225ms cubic-bezier(0.4,0.0,1,1)';\nvar HIDE_ANIMATION = '195ms cubic-bezier(0.0,0.0,0.2,1)';\n/**\n * Internal component that wraps user-provided snack bar content.\n * \\@docs-private\n */\nvar MatSnackBarContainer = (function (_super) {\n __extends(MatSnackBarContainer, _super);\n /**\n * @param {?} _ngZone\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n */\n function MatSnackBarContainer(_ngZone, _renderer, _elementRef, _changeDetectorRef) {\n var _this = _super.call(this) || this;\n _this._ngZone = _ngZone;\n _this._renderer = _renderer;\n _this._elementRef = _elementRef;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether the component has been destroyed.\n */\n _this._destroyed = false;\n /**\n * Subject for notifying that the snack bar has exited from view.\n */\n _this._onExit = new Subject();\n /**\n * Subject for notifying that the snack bar has finished entering the view.\n */\n _this._onEnter = new Subject();\n /**\n * The state of the snack bar animations.\n */\n _this._animationState = 'void';\n return _this;\n }\n /**\n * Attach a component portal as content to this snack bar container.\n * @template T\n * @param {?} portal\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachComponentPortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n if (this.snackBarConfig.extraClasses) {\n // Not the most efficient way of adding classes, but the renderer doesn't allow us\n // to pass in an array or a space-separated list.\n for (var _i = 0, _a = this.snackBarConfig.extraClasses; _i < _a.length; _i++) {\n var cssClass = _a[_i];\n this._renderer.addClass(this._elementRef.nativeElement, cssClass);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-top');\n }\n return this._portalHost.attachComponentPortal(portal);\n };\n /**\n * Attach a template portal as content to this snack bar container.\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachTemplatePortal = function () {\n throw Error('Not yet implemented');\n };\n /**\n * Handle end of animations, updating the state of the snackbar.\n * @param {?} event\n * @return {?}\n */\n MatSnackBarContainer.prototype.onAnimationEnd = function (event) {\n var fromState = event.fromState, toState = event.toState;\n if ((toState === 'void' && fromState !== 'void') || toState.startsWith('hidden')) {\n this._completeExit();\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 var /** @type {?} */ onEnter_1 = this._onEnter;\n this._ngZone.run(function () {\n onEnter_1.next();\n onEnter_1.complete();\n });\n }\n };\n /**\n * Begin animation of snack bar entrance into view.\n * @return {?}\n */\n MatSnackBarContainer.prototype.enter = function () {\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 * @return {?}\n */\n MatSnackBarContainer.prototype.exit = function () {\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 * @return {?}\n */\n MatSnackBarContainer.prototype.ngOnDestroy = function () {\n this._destroyed = true;\n this._completeExit();\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 * @return {?}\n */\n MatSnackBarContainer.prototype._completeExit = function () {\n var _this = this;\n first.call(this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n _this._onExit.next();\n _this._onExit.complete();\n });\n };\n MatSnackBarContainer.decorators = [\n { type: Component, args: [{selector: 'snack-bar-container',\n template: \"<ng-template cdkPortalHost></ng-template>\",\n styles: [\".mat-snack-bar-container{border-radius:2px;box-sizing:content-box;display:block;margin:24px;max-width:568px;min-width:288px;padding:14px 24px;transform:translateY(100%) translateY(24px)}.mat-snack-bar-container.mat-snack-bar-center{margin:0;transform:translateY(100%)}.mat-snack-bar-container.mat-snack-bar-top{transform:translateY(-100%) translateY(-24px)}.mat-snack-bar-container.mat-snack-bar-top.mat-snack-bar-center{transform:translateY(-100%)}@media screen and (-ms-high-contrast:active){.mat-snack-bar-container{border:solid 1px}}\"],\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', animate(HIDE_ANIMATION)),\n transition('void => visible-top, void => visible-bottom', animate(SHOW_ANIMATION)),\n ])\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSnackBarContainer.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatSnackBarContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n };\n return MatSnackBarContainer;\n}(BasePortalHost));\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nvar MatSnackBar = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _live\n * @param {?} _injector\n * @param {?} _parentSnackBar\n */\n function MatSnackBar(_overlay, _live, _injector, _parentSnackBar) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._parentSnackBar = _parentSnackBar;\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 this._snackBarRefAtThisLevel = null;\n }\n Object.defineProperty(MatSnackBar.prototype, \"_openedSnackBarRef\", {\n /**\n * Reference to the currently opened snackbar at *any* level.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n },\n enumerable: true,\n configurable: true\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 * @template T\n * @param {?} component Component to be instantiated.\n * @param {?=} config Extra configuration for the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.openFromComponent = function (component, config) {\n var _this = this;\n var /** @type {?} */ _config = _applyConfigDefaults(config);\n var /** @type {?} */ snackBarRef = this._attach(component, _config);\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(function () {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (_this._openedSnackBarRef == snackBarRef) {\n _this._openedSnackBarRef = null;\n }\n });\n if (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(function () {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n }\n else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\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(function () { return snackBarRef._dismissAfter(/** @type {?} */ ((((_config)).duration))); });\n }\n if (_config.announcementMessage) {\n this._live.announce(_config.announcementMessage, _config.politeness);\n }\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\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 * @return {?}\n */\n MatSnackBar.prototype.open = function (message, action, config) {\n if (action === void 0) { action = ''; }\n var /** @type {?} */ _config = _applyConfigDefaults(config);\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: message, action: action };\n _config.announcementMessage = message;\n return this.openFromComponent(SimpleSnackBar, _config);\n };\n /**\n * Dismisses the currently-visible snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.dismiss = function () {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n };\n /**\n * Attaches the snack bar container component to the overlay.\n * @param {?} overlayRef\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attachSnackBarContainer = function (overlayRef, config) {\n var /** @type {?} */ containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef);\n var /** @type {?} */ containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n };\n /**\n * Places a new component as the content of the snack bar container.\n * @template T\n * @param {?} component\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attach = function (component, config) {\n var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ container = this._attachSnackBarContainer(overlayRef, config);\n var /** @type {?} */ snackBarRef = new MatSnackBarRef(container, overlayRef);\n var /** @type {?} */ injector = this._createInjector(config, snackBarRef);\n var /** @type {?} */ portal = new ComponentPortal(component, undefined, injector);\n var /** @type {?} */ contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n return snackBarRef;\n };\n /**\n * Creates a new overlay and places it in the correct location.\n * @param {?} config The user-specified snack bar config.\n * @return {?}\n */\n MatSnackBar.prototype._createOverlay = function (config) {\n var /** @type {?} */ overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n var /** @type {?} */ positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n var /** @type {?} */ isRtl = config.direction === 'rtl';\n var /** @type {?} */ isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n var /** @type {?} */ isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n }\n else if (isRight) {\n positionStrategy.right('0');\n }\n else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n }\n else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n };\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @template T\n * @param {?} config Config that was used to create the snack bar.\n * @param {?} snackBarRef Reference to the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype._createInjector = function (config, snackBarRef) {\n var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatSnackBarRef, snackBarRef);\n injectionTokens.set(MAT_SNACK_BAR_DATA, config.data);\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n };\n MatSnackBar.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatSnackBar.ctorParameters = function () { return [\n { type: Overlay, },\n { type: LiveAnnouncer, },\n { type: Injector, },\n { type: MatSnackBar, decorators: [{ type: Optional }, { type: SkipSelf },] },\n ]; };\n return MatSnackBar;\n}());\n/**\n * Applies default options to the snackbar config.\n * @param {?=} config The configuration to which the defaults will be applied.\n * @return {?} The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatSnackBarConfig(), config);\n}\n\nvar MatSnackBarModule = (function () {\n function MatSnackBarModule() {\n }\n MatSnackBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n providers: [MatSnackBar, LIVE_ANNOUNCER_PROVIDER]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSnackBarModule.ctorParameters = function () { return []; };\n return MatSnackBarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar };\n//# sourceMappingURL=snack-bar.es5.js.map\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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, EventEmitter, Injectable, Input, NgModule, Optional, Output, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { AnimationCurves, AnimationDurations } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * \\@docs-private\n * @param {?} id\n * @return {?}\n */\nfunction getSortDuplicateSortableIdError(id) {\n return Error(\"Cannot have two MatSortables with the same id (\" + id + \").\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderNotContainedWithinSortError() {\n return Error(\"MatSortHeader must be placed within a parent element with the MatSort directive.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderMissingIdError() {\n return Error(\"MatSortHeader must be provided with a unique id.\");\n}\n/**\n * \\@docs-private\n * @param {?} direction\n * @return {?}\n */\nfunction getSortInvalidDirectionError(direction) {\n return Error(direction + \" is not a valid sort direction ('asc' or 'desc').\");\n}\n\n/**\n * Container for MatSortables to manage the sort state and provide default sort parameters.\n */\nvar MatSort = (function () {\n function MatSort() {\n /**\n * Collection of all registered sortables that this directive manages.\n */\n this.sortables = new Map();\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the MatSortable's sort start.\n */\n this.start = 'asc';\n this._direction = '';\n /**\n * Event emitted when the user changes either the active sort or sort direction.\n */\n this.sortChange = new EventEmitter();\n }\n Object.defineProperty(MatSort.prototype, \"direction\", {\n /**\n * @return {?}\n */\n get: function () { return this._direction; },\n /**\n * The sort direction of the currently active MatSortable.\n * @param {?} direction\n * @return {?}\n */\n set: function (direction) {\n if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSort.prototype, \"disableClear\", {\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 * @return {?}\n */\n get: function () { return this._disableClear; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._disableClear = coerceBooleanProperty(v); },\n enumerable: true,\n configurable: true\n });\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.register = function (sortable) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n this.sortables.set(sortable.id, sortable);\n };\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.deregister = function (sortable) {\n this.sortables.delete(sortable.id);\n };\n /**\n * Sets the active sort id and determines the new sort direction.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.sort = function (sortable) {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n }\n else {\n this.direction = this.getNextSortDirection(sortable);\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 * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.getNextSortDirection = function (sortable) {\n if (!sortable) {\n return '';\n }\n // Get the sort direction cycle with the potential sortable overrides.\n var /** @type {?} */ disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n var /** @type {?} */ sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n // Get and return the next direction in the cycle\n var /** @type {?} */ nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n };\n MatSort.decorators = [\n { type: Directive, args: [{\n selector: '[matSort]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSort.ctorParameters = function () { return []; };\n MatSort.propDecorators = {\n 'active': [{ type: Input, args: ['matSortActive',] },],\n 'start': [{ type: Input, args: ['matSortStart',] },],\n 'direction': [{ type: Input, args: ['matSortDirection',] },],\n 'disableClear': [{ type: Input, args: ['matSortDisableClear',] },],\n 'sortChange': [{ type: Output, args: ['matSortChange',] },],\n };\n return MatSort;\n}());\n/**\n * Returns the sort direction cycle to use given the provided parameters of order and clear.\n * @param {?} start\n * @param {?} disableClear\n * @return {?}\n */\nfunction getSortDirectionCycle(start, disableClear) {\n var /** @type {?} */ sortOrder = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n return sortOrder;\n}\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 */\nvar MatSortHeaderIntl = (function () {\n function 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 this.changes = new Subject();\n /**\n * ARIA label for the sorting button.\n */\n this.sortButtonLabel = function (id) {\n return \"Change sorting for \" + id;\n };\n /**\n * A label to describe the current sort (visible only to screenreaders).\n */\n this.sortDescriptionLabel = function (id, direction) {\n return \"Sorted by \" + id + \" \" + (direction == 'asc' ? 'ascending' : 'descending');\n };\n }\n MatSortHeaderIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatSortHeaderIntl.ctorParameters = function () { return []; };\n return MatSortHeaderIntl;\n}());\n\nvar SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\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 */\nvar MatSortHeader = (function () {\n /**\n * @param {?} _intl\n * @param {?} changeDetectorRef\n * @param {?} _sort\n * @param {?} _cdkColumnDef\n */\n function MatSortHeader(_intl, changeDetectorRef, _sort, _cdkColumnDef) {\n this._intl = _intl;\n this._sort = _sort;\n this._cdkColumnDef = _cdkColumnDef;\n /**\n * Sets the position of the arrow that displays when sorted.\n */\n this.arrowPosition = 'after';\n if (!_sort) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n this._rerenderSubscription = merge(_sort.sortChange, _intl.changes).subscribe(function () {\n changeDetectorRef.markForCheck();\n });\n }\n Object.defineProperty(MatSortHeader.prototype, \"disableClear\", {\n /**\n * Overrides the disable clear value of the containing MatSort for this MatSortable.\n * @return {?}\n */\n get: function () { return this._disableClear; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._disableClear = coerceBooleanProperty(v); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSortHeader.prototype.ngOnInit = function () {\n if (!this.id && this._cdkColumnDef) {\n this.id = this._cdkColumnDef.name;\n }\n this._sort.register(this);\n };\n /**\n * @return {?}\n */\n MatSortHeader.prototype.ngOnDestroy = function () {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n };\n /**\n * Whether this MatSortHeader is currently sorted in either ascending or descending order.\n * @return {?}\n */\n MatSortHeader.prototype._isSorted = function () {\n return this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n };\n MatSortHeader.decorators = [\n { type: Component, args: [{selector: '[mat-sort-header]',\n template: \"<div class=\\\"mat-sort-header-container\\\" [class.mat-sort-header-position-before]=\\\"arrowPosition == 'before'\\\"><button class=\\\"mat-sort-header-button\\\" type=\\\"button\\\" [attr.aria-label]=\\\"_intl.sortButtonLabel(id)\\\"><ng-content></ng-content></button><div *ngIf=\\\"_isSorted()\\\" class=\\\"mat-sort-header-arrow\\\" [@indicatorToggle]=\\\"_sort.direction\\\"><div class=\\\"mat-sort-header-stem\\\"></div><div class=\\\"mat-sort-header-indicator\\\" [@indicator]=\\\"_sort.direction\\\"><div class=\\\"mat-sort-header-pointer-left\\\" [@leftPointer]=\\\"_sort.direction\\\"></div><div class=\\\"mat-sort-header-pointer-right\\\" [@rightPointer]=\\\"_sort.direction\\\"></div><div class=\\\"mat-sort-header-pointer-middle\\\"></div></div></div></div><span class=\\\"cdk-visually-hidden\\\" *ngIf=\\\"_isSorted()\\\">{{_intl.sortDescriptionLabel(id, _sort.direction)}}</span>\",\n styles: [\".mat-sort-header-container{display:flex;cursor:pointer}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:pointer;outline:0;font:inherit;color:currentColor}.mat-sort-header-arrow{height:12px;width:12px;margin:0 0 0 6px;position:relative;display:flex}.mat-sort-header-position-before .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0;transition:225ms cubic-bezier(.4,0,.2,1)}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;transition:225ms cubic-bezier(.4,0,.2,1);position:absolute;top:0}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\"],\n host: {\n '(click)': '_sort.sort(this)',\n '[class.mat-sort-header-sorted]': '_isSorted()',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatSortHeader.ctorParameters = function () { return [\n { type: MatSortHeaderIntl, },\n { type: ChangeDetectorRef, },\n { type: MatSort, decorators: [{ type: Optional },] },\n { type: CdkColumnDef, decorators: [{ type: Optional },] },\n ]; };\n MatSortHeader.propDecorators = {\n 'id': [{ type: Input, args: ['mat-sort-header',] },],\n 'arrowPosition': [{ type: Input },],\n 'start': [{ type: Input, args: ['start',] },],\n 'disableClear': [{ type: Input },],\n };\n return MatSortHeader;\n}());\n\nvar MatSortModule = (function () {\n function MatSortModule() {\n }\n MatSortModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n exports: [MatSort, MatSortHeader],\n declarations: [MatSort, MatSortHeader],\n providers: [MatSortHeaderIntl]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSortModule.ctorParameters = function () { return []; };\n return MatSortModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSortModule, MatSortHeader, MatSortHeaderIntl, MatSort };\n//# sourceMappingURL=sort.es5.js.map\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 */\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CdkStep, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, Inject, Injectable, Input, NgModule, Renderer2, SkipSelf, TemplateRef, ViewChildren, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ErrorStateMatcher, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStepLabel = CdkStepLabel;\nvar MatStepLabel = (function (_super) {\n __extends(MatStepLabel, _super);\n /**\n * @param {?} template\n */\n function MatStepLabel(template) {\n return _super.call(this, template) || this;\n }\n MatStepLabel.decorators = [\n { type: Directive, args: [{\n selector: '[matStepLabel]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n ]; };\n return MatStepLabel;\n}(_MatStepLabel));\n\n/**\n * Stepper data that is required for internationalization.\n */\nvar MatStepperIntl = (function () {\n function 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 this.changes = new Subject();\n /**\n * Label that is rendered below optional steps.\n */\n this.optionalLabel = 'Optional';\n }\n MatStepperIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatStepperIntl.ctorParameters = function () { return []; };\n return MatStepperIntl;\n}());\n\nvar MatStepHeader = (function () {\n /**\n * @param {?} _intl\n * @param {?} _focusMonitor\n * @param {?} _element\n * @param {?} renderer\n * @param {?} changeDetectorRef\n */\n function MatStepHeader(_intl, _focusMonitor, _element, renderer, changeDetectorRef) {\n this._intl = _intl;\n this._focusMonitor = _focusMonitor;\n this._element = _element;\n _focusMonitor.monitor(_element.nativeElement, renderer, true);\n this._intlSubscription = _intl.changes.subscribe(function () { return changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatStepHeader.prototype, \"index\", {\n /**\n * Index of the given step.\n * @return {?}\n */\n get: function () { return this._index; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._index = coerceNumberProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"selected\", {\n /**\n * Whether the given step is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"active\", {\n /**\n * Whether the given step label is active.\n * @return {?}\n */\n get: function () { return this._active; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._active = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"optional\", {\n /**\n * Whether the given step is optional.\n * @return {?}\n */\n get: function () { return this._optional; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._optional = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatStepHeader.prototype.ngOnDestroy = function () {\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 * @return {?}\n */\n MatStepHeader.prototype._stringLabel = function () {\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 * @return {?}\n */\n MatStepHeader.prototype._templateLabel = function () {\n return this.label instanceof MatStepLabel ? this.label : null;\n };\n /**\n * Returns the host HTML element.\n * @return {?}\n */\n MatStepHeader.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatStepHeader.decorators = [\n { type: Component, args: [{selector: 'mat-step-header',\n template: \"<div class=\\\"mat-step-header-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div [class.mat-step-icon]=\\\"icon !== 'number' || selected\\\" [class.mat-step-icon-not-touched]=\\\"icon == 'number' && !selected\\\" [ngSwitch]=\\\"icon\\\"><span *ngSwitchCase=\\\"'number'\\\">{{index + 1}}</span><mat-icon *ngSwitchCase=\\\"'edit'\\\">create</mat-icon><mat-icon *ngSwitchCase=\\\"'done'\\\">done</mat-icon></div><div class=\\\"mat-step-label\\\" [class.mat-step-label-active]=\\\"active\\\" [class.mat-step-label-selected]=\\\"selected\\\"><ng-container *ngIf=\\\"_templateLabel()\\\" [ngTemplateOutlet]=\\\"label.template\\\"></ng-container><div class=\\\"mat-step-text-label\\\" *ngIf=\\\"_stringLabel()\\\">{{label}}</div><div class=\\\"mat-step-optional\\\" *ngIf=\\\"optional\\\">{{_intl.optionalLabel}}</div></div>\",\n styles: [\".mat-step-header{overflow:hidden;outline:0;cursor:pointer;position:relative}.mat-step-optional{font-size:12px}.mat-step-icon,.mat-step-icon-not-touched{border-radius:50%;height:24px;width:24px;align-items:center;justify-content:center;display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"],\n host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepHeader.ctorParameters = function () { return [\n { type: MatStepperIntl, },\n { type: FocusMonitor, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n ]; };\n MatStepHeader.propDecorators = {\n 'icon': [{ type: Input },],\n 'label': [{ type: Input },],\n 'index': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'active': [{ type: Input },],\n 'optional': [{ type: Input },],\n };\n return MatStepHeader;\n}());\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStep = CdkStep;\nvar _MatStepper = CdkStepper;\nvar MatStep = (function (_super) {\n __extends(MatStep, _super);\n /**\n * @param {?} stepper\n * @param {?} _errorStateMatcher\n */\n function MatStep(stepper, _errorStateMatcher) {\n var _this = _super.call(this, stepper) || this;\n _this._errorStateMatcher = _errorStateMatcher;\n return _this;\n }\n /**\n * Custom error state matcher that additionally checks for validity of interacted form.\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n MatStep.prototype.isErrorState = function (control, form) {\n var /** @type {?} */ originalErrorState = this._errorStateMatcher.isErrorState(control, form);\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 var /** @type {?} */ customErrorState = !!(control && control.invalid && this.interacted);\n return originalErrorState || customErrorState;\n };\n MatStep.decorators = [\n { type: Component, args: [{selector: 'mat-step',\n template: \"<ng-template><ng-content></ng-content></ng-template>\",\n providers: [{ provide: ErrorStateMatcher, useExisting: MatStep }],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStep.ctorParameters = function () { return [\n { type: MatStepper, decorators: [{ type: Inject, args: [forwardRef(function () { return MatStepper; }),] },] },\n { type: ErrorStateMatcher, decorators: [{ type: SkipSelf },] },\n ]; };\n MatStep.propDecorators = {\n 'stepLabel': [{ type: ContentChild, args: [MatStepLabel,] },],\n };\n return MatStep;\n}(_MatStep));\nvar MatStepper = (function (_super) {\n __extends(MatStepper, _super);\n function MatStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepper.decorators = [\n { type: Directive, args: [{\n selector: '[matStepper]'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepper.ctorParameters = function () { return []; };\n MatStepper.propDecorators = {\n '_stepHeader': [{ type: ViewChildren, args: [MatStepHeader, { read: ElementRef },] },],\n '_steps': [{ type: ContentChildren, args: [MatStep,] },],\n };\n return MatStepper;\n}(_MatStepper));\nvar MatHorizontalStepper = (function (_super) {\n __extends(MatHorizontalStepper, _super);\n function MatHorizontalStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHorizontalStepper.decorators = [\n { type: Component, args: [{selector: 'mat-horizontal-stepper',\n exportAs: 'matHorizontalStepper',\n template: \"<div class=\\\"mat-horizontal-stepper-header-container\\\"><ng-container *ngFor=\\\"let step of _steps; let i = index; let isLast = last\\\"><mat-step-header class=\\\"mat-horizontal-stepper-header\\\" (click)=\\\"step.select()\\\" (keydown)=\\\"_onKeydown($event)\\\" [tabIndex]=\\\"_focusIndex === i ? 0 : -1\\\" [id]=\\\"_getStepLabelId(i)\\\" [attr.aria-controls]=\\\"_getStepContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [index]=\\\"i\\\" [icon]=\\\"_getIndicatorType(i)\\\" [label]=\\\"step.stepLabel || step.label\\\" [selected]=\\\"selectedIndex === i\\\" [active]=\\\"step.completed || selectedIndex === i\\\" [optional]=\\\"step.optional\\\"></mat-step-header><div *ngIf=\\\"!isLast\\\" class=\\\"mat-stepper-horizontal-line\\\"></div></ng-container></div><div class=\\\"mat-horizontal-content-container\\\"><div *ngFor=\\\"let step of _steps; let i = index\\\" class=\\\"mat-horizontal-stepper-content\\\" role=\\\"tabpanel\\\" [@stepTransition]=\\\"_getAnimationDirection(i)\\\" [id]=\\\"_getStepContentId(i)\\\" [attr.aria-labelledby]=\\\"_getStepLabelId(i)\\\" [attr.aria-expanded]=\\\"selectedIndex === i\\\"><ng-container [ngTemplateOutlet]=\\\"step.content\\\"></ng-container></div></div>\",\n styles: [\".mat-stepper-horizontal,.mat-stepper-vertical{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon,.mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon,[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:8px}.mat-vertical-stepper-header{display:flex;align-items:center;padding:24px;max-height:24px}.mat-vertical-stepper-header .mat-step-icon,.mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon,[dir=rtl] .mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{overflow:hidden}.mat-horizontal-stepper-content[aria-expanded=false]{height:0}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:'';position:absolute;top:-16px;bottom:-16px;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\"],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-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 },] },\n ];\n /**\n * @nocollapse\n */\n MatHorizontalStepper.ctorParameters = function () { return []; };\n return MatHorizontalStepper;\n}(MatStepper));\nvar MatVerticalStepper = (function (_super) {\n __extends(MatVerticalStepper, _super);\n function MatVerticalStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatVerticalStepper.decorators = [\n { type: Component, args: [{selector: 'mat-vertical-stepper',\n exportAs: 'matVerticalStepper',\n template: \"<div class=\\\"mat-step\\\" *ngFor=\\\"let step of _steps; let i = index; let isLast = last\\\"><mat-step-header class=\\\"mat-vertical-stepper-header\\\" (click)=\\\"step.select()\\\" (keydown)=\\\"_onKeydown($event)\\\" [tabIndex]=\\\"_focusIndex == i ? 0 : -1\\\" [id]=\\\"_getStepLabelId(i)\\\" [attr.aria-controls]=\\\"_getStepContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex === i\\\" [index]=\\\"i\\\" [icon]=\\\"_getIndicatorType(i)\\\" [label]=\\\"step.stepLabel || step.label\\\" [selected]=\\\"selectedIndex === i\\\" [active]=\\\"step.completed || selectedIndex === i\\\" [optional]=\\\"step.optional\\\"></mat-step-header><div class=\\\"mat-vertical-content-container\\\" [class.mat-stepper-vertical-line]=\\\"!isLast\\\"><div class=\\\"mat-vertical-stepper-content\\\" role=\\\"tabpanel\\\" [@stepTransition]=\\\"_getAnimationDirection(i)\\\" [id]=\\\"_getStepContentId(i)\\\" [attr.aria-labelledby]=\\\"_getStepLabelId(i)\\\" [attr.aria-expanded]=\\\"selectedIndex === i\\\"><div class=\\\"mat-vertical-content\\\"><ng-container [ngTemplateOutlet]=\\\"step.content\\\"></ng-container></div></div></div></div>\",\n styles: [\".mat-stepper-horizontal,.mat-stepper-vertical{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon,.mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon,[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:8px}.mat-vertical-stepper-header{display:flex;align-items:center;padding:24px;max-height:24px}.mat-vertical-stepper-header .mat-step-icon,.mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon,[dir=rtl] .mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{overflow:hidden}.mat-horizontal-stepper-content[aria-expanded=false]{height:0}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:'';position:absolute;top:-16px;bottom:-16px;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\"],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-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 },] },\n ];\n /**\n * @nocollapse\n */\n MatVerticalStepper.ctorParameters = function () { return []; };\n return MatVerticalStepper;\n}(MatStepper));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStepperNext = CdkStepperNext;\nvar _MatStepperPrevious = CdkStepperPrevious;\n/**\n * Button that moves to the next step in a stepper workflow.\n */\nvar MatStepperNext = (function (_super) {\n __extends(MatStepperNext, _super);\n function MatStepperNext() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepperNext.decorators = [\n { type: Directive, args: [{\n selector: 'button[matStepperNext]',\n host: { '(click)': '_stepper.next()' },\n providers: [{ provide: CdkStepper, useExisting: MatStepper }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperNext.ctorParameters = function () { return []; };\n return MatStepperNext;\n}(_MatStepperNext));\n/**\n * Button that moves to the previous step in a stepper workflow.\n */\nvar MatStepperPrevious = (function (_super) {\n __extends(MatStepperPrevious, _super);\n function MatStepperPrevious() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepperPrevious.decorators = [\n { type: Directive, args: [{\n selector: 'button[matStepperPrevious]',\n host: { '(click)': '_stepper.previous()' },\n providers: [{ provide: CdkStepper, useExisting: MatStepper }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperPrevious.ctorParameters = function () { return []; };\n return MatStepperPrevious;\n}(_MatStepperPrevious));\n\nvar MatStepperModule = (function () {\n function MatStepperModule() {\n }\n MatStepperModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperModule.ctorParameters = function () { return []; };\n return MatStepperModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatStepperModule, _MatStepLabel, MatStepLabel, _MatStep, _MatStepper, MatStep, MatStepper, MatHorizontalStepper, MatVerticalStepper, _MatStepperNext, _MatStepperPrevious, MatStepperNext, MatStepperPrevious, MatStepHeader, MatStepperIntl };\n//# sourceMappingURL=stepper.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, Input, NgModule, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { CDK_ROW_TEMPLATE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkTable, CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTable = CdkTable;\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nvar MatTable = (function (_super) {\n __extends(MatTable, _super);\n function MatTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatTable.decorators = [\n { type: Component, args: [{selector: 'mat-table',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styles: [\".mat-table{display:block}.mat-header-row,.mat-row{display:flex;border-bottom-width:1px;border-bottom-style:solid;align-items:center;min-height:48px;padding:0 24px}.mat-cell,.mat-header-cell{flex:1}\"],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTable.ctorParameters = function () { return []; };\n return MatTable;\n}(_MatTable));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatCellDef = CdkCellDef;\nvar _MatHeaderCellDef = CdkHeaderCellDef;\nvar _MatColumnDef = CdkColumnDef;\nvar _MatHeaderCell = CdkHeaderCell;\nvar _MatCell = CdkCell;\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 */\nvar MatCellDef = (function (_super) {\n __extends(MatCellDef, _super);\n function MatCellDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatCellDef.decorators = [\n { type: Directive, args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCellDef.ctorParameters = function () { return []; };\n return MatCellDef;\n}(_MatCellDef));\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 */\nvar MatHeaderCellDef = (function (_super) {\n __extends(MatHeaderCellDef, _super);\n function MatHeaderCellDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderCellDef.decorators = [\n { type: Directive, args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderCellDef.ctorParameters = function () { return []; };\n return MatHeaderCellDef;\n}(_MatHeaderCellDef));\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nvar MatColumnDef = (function (_super) {\n __extends(MatColumnDef, _super);\n function MatColumnDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatColumnDef.decorators = [\n { type: Directive, args: [{\n selector: '[matColumnDef]',\n providers: [{ provide: CdkColumnDef, useExisting: MatColumnDef }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatColumnDef.ctorParameters = function () { return []; };\n MatColumnDef.propDecorators = {\n 'name': [{ type: Input, args: ['matColumnDef',] },],\n };\n return MatColumnDef;\n}(_MatColumnDef));\n/**\n * Header cell template container that adds the right classes and role.\n */\nvar MatHeaderCell = (function (_super) {\n __extends(MatHeaderCell, _super);\n /**\n * @param {?} columnDef\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatHeaderCell(columnDef, elementRef, renderer) {\n var _this = _super.call(this, columnDef, elementRef, renderer) || this;\n renderer.addClass(elementRef.nativeElement, \"mat-column-\" + columnDef.cssClassFriendlyName);\n return _this;\n }\n MatHeaderCell.decorators = [\n { type: Directive, args: [{\n selector: 'mat-header-cell',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderCell.ctorParameters = function () { return [\n { type: CdkColumnDef, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatHeaderCell;\n}(_MatHeaderCell));\n/**\n * Cell template container that adds the right classes and role.\n */\nvar MatCell = (function (_super) {\n __extends(MatCell, _super);\n /**\n * @param {?} columnDef\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatCell(columnDef, elementRef, renderer) {\n var _this = _super.call(this, columnDef, elementRef, renderer) || this;\n renderer.addClass(elementRef.nativeElement, \"mat-column-\" + columnDef.cssClassFriendlyName);\n return _this;\n }\n MatCell.decorators = [\n { type: Directive, args: [{\n selector: 'mat-cell',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCell.ctorParameters = function () { return [\n { type: CdkColumnDef, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatCell;\n}(_MatCell));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatHeaderRowDef = CdkHeaderRowDef;\nvar _MatCdkRowDef = CdkRowDef;\nvar _MatHeaderRow = CdkHeaderRow;\nvar _MatRow = CdkRow;\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 */\nvar MatHeaderRowDef = (function (_super) {\n __extends(MatHeaderRowDef, _super);\n function MatHeaderRowDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderRowDef.decorators = [\n { type: Directive, args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef'],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderRowDef.ctorParameters = function () { return []; };\n return MatHeaderRowDef;\n}(_MatHeaderRowDef));\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 */\nvar MatRowDef = (function (_super) {\n __extends(MatRowDef, _super);\n function MatRowDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatRowDef.decorators = [\n { type: Directive, args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRowDef.ctorParameters = function () { return []; };\n return MatRowDef;\n}(_MatCdkRowDef));\n/**\n * Header template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatHeaderRow = (function (_super) {\n __extends(MatHeaderRow, _super);\n function MatHeaderRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderRow.decorators = [\n { type: Component, args: [{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 },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderRow.ctorParameters = function () { return []; };\n return MatHeaderRow;\n}(_MatHeaderRow));\n/**\n * Data row template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatRow = (function (_super) {\n __extends(MatRow, _super);\n function MatRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatRow.decorators = [\n { type: Component, args: [{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 },] },\n ];\n /**\n * @nocollapse\n */\n MatRow.ctorParameters = function () { return []; };\n return MatRow;\n}(_MatRow));\n\nvar MatTableModule = (function () {\n function MatTableModule() {\n }\n MatTableModule.decorators = [\n { type: NgModule, args: [{\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatTableModule.ctorParameters = function () { return []; };\n return MatTableModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatTableModule, _MatCellDef, _MatHeaderCellDef, _MatColumnDef, _MatHeaderCell, _MatCell, MatCellDef, MatHeaderCellDef, MatColumnDef, MatHeaderCell, MatCell, _MatTable, MatTable, _MatHeaderRowDef, _MatCdkRowDef, _MatHeaderRow, _MatRow, MatHeaderRowDef, MatRowDef, MatHeaderRow, MatRow };\n//# sourceMappingURL=table.es5.js.map\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 */\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PortalHostDirective, PortalModule, TemplatePortal, TemplatePortalDirective } from '@angular/cdk/portal';\nimport { ScrollDispatchModule, VIEWPORT_RULER_PROVIDER, ViewportRuler } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgModule, NgZone, Optional, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs/Subscription';\nimport { merge } from 'rxjs/observable/merge';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith, takeUntil } from '@angular/cdk/rxjs';\nimport { of } from 'rxjs/observable/of';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * \\@docs-private\n */\nvar MatInkBar = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _ngZone\n */\n function MatInkBar(_renderer, _elementRef, _ngZone) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._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 * @return {?}\n */\n MatInkBar.prototype.alignToElement = function (element) {\n var _this = this;\n this.show();\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(function () {\n requestAnimationFrame(function () { return _this._setStyles(element); });\n });\n }\n else {\n this._setStyles(element);\n }\n };\n /**\n * Shows the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.show = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n };\n /**\n * Hides the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.hide = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n };\n /**\n * Sets the proper styles to the ink bar element.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype._setStyles = function (element) {\n var /** @type {?} */ left = element ? (element.offsetLeft || 0) + 'px' : '0';\n var /** @type {?} */ width = element ? (element.offsetWidth || 0) + 'px' : '0';\n this._renderer.setStyle(this._elementRef.nativeElement, 'left', left);\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width);\n };\n MatInkBar.decorators = [\n { type: Directive, args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInkBar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: NgZone, },\n ]; };\n return MatInkBar;\n}());\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTabLabelBaseClass = TemplatePortalDirective;\n/**\n * Used to flag tab labels for use with the portal directive\n */\nvar MatTabLabel = (function (_super) {\n __extends(MatTabLabel, _super);\n /**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\n function MatTabLabel(templateRef, viewContainerRef) {\n return _super.call(this, templateRef, viewContainerRef) || this;\n }\n MatTabLabel.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n ]; };\n return MatTabLabel;\n}(_MatTabLabelBaseClass));\n\n/**\n * \\@docs-private\n */\nvar MatTabBase = (function () {\n function MatTabBase() {\n }\n return MatTabBase;\n}());\nvar _MatTabMixinBase = mixinDisabled(MatTabBase);\nvar MatTab = (function (_super) {\n __extends(MatTab, _super);\n /**\n * @param {?} _viewContainerRef\n */\n function MatTab(_viewContainerRef) {\n var _this = _super.call(this) || this;\n _this._viewContainerRef = _viewContainerRef;\n /**\n * The plain text label for the tab, used when there is no template label.\n */\n _this.textLabel = '';\n /**\n * The portal that will be the hosted content of the tab\n */\n _this._contentPortal = null;\n /**\n * Emits whenever the label changes.\n */\n _this._labelChange = new Subject();\n /**\n * Emits whenevfer the disable changes\n */\n _this._disableChange = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n _this.position = null;\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 _this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n _this.isActive = false;\n return _this;\n }\n Object.defineProperty(MatTab.prototype, \"content\", {\n /**\n * @return {?}\n */\n get: function () { return this._contentPortal; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatTab.prototype.ngOnChanges = function (changes) {\n if (changes.hasOwnProperty('textLabel')) {\n this._labelChange.next();\n }\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnDestroy = function () {\n this._disableChange.complete();\n this._labelChange.complete();\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnInit = function () {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n };\n MatTab.decorators = [\n { type: Component, args: [{selector: 'mat-tab',\n template: \"<ng-template><ng-content></ng-content></ng-template>\",\n inputs: ['disabled'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matTab',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTab.ctorParameters = function () { return [\n { type: ViewContainerRef, },\n ]; };\n MatTab.propDecorators = {\n 'templateLabel': [{ type: ContentChild, args: [MatTabLabel,] },],\n '_content': [{ type: ViewChild, args: [TemplateRef,] },],\n 'textLabel': [{ type: Input, args: ['label',] },],\n };\n return MatTab;\n}(_MatTabMixinBase));\n\n/**\n * Wrapper for the contents of a tab.\n * \\@docs-private\n */\nvar MatTabBody = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _dir\n */\n function MatTabBody(_elementRef, _dir) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /**\n * Event emitted when the tab begins to animate towards the center as the active tab.\n */\n this._onCentering = new EventEmitter();\n /**\n * Event emitted when the tab completes its animation towards the center.\n */\n this._onCentered = new EventEmitter(true);\n }\n Object.defineProperty(MatTabBody.prototype, \"position\", {\n /**\n * @param {?} position\n * @return {?}\n */\n set: function (position) {\n if (position < 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'left' : 'right';\n }\n else if (position > 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabBody.prototype, \"origin\", {\n /**\n * The origin position from which this tab should appear when it is centered into view.\n * @param {?} origin\n * @return {?}\n */\n set: function (origin) {\n if (origin == null) {\n return;\n }\n var /** @type {?} */ dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n this._origin = 'left';\n }\n else {\n this._origin = 'right';\n }\n },\n enumerable: true,\n configurable: true\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 * @return {?}\n */\n MatTabBody.prototype.ngOnInit = function () {\n if (this._position == 'center' && this._origin) {\n this._position = this._origin == 'left' ? 'left-origin-center' : 'right-origin-center';\n }\n };\n /**\n * After the view has been set, check if the tab content is set to the center and attach the\n * content if it is not already attached.\n * @return {?}\n */\n MatTabBody.prototype.ngAfterViewChecked = function () {\n if (this._isCenterPosition(this._position) && !this._portalHost.hasAttached()) {\n this._portalHost.attach(this._content);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabStarted = function (e) {\n if (this._isCenterPosition(e.toState)) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabComplete = function (e) {\n // If the end state is that the tab is not centered, then detach the content.\n if (!this._isCenterPosition(e.toState) && !this._isCenterPosition(this._position)) {\n this._portalHost.detach();\n }\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 /**\n * The text direction of the containing app.\n * @return {?}\n */\n MatTabBody.prototype._getLayoutDirection = function () {\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 * @param {?} position\n * @return {?}\n */\n MatTabBody.prototype._isCenterPosition = function (position) {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n };\n MatTabBody.decorators = [\n { type: Component, args: [{selector: 'mat-tab-body',\n template: \"<div class=\\\"mat-tab-body-content\\\" #content [@translateTab]=\\\"_position\\\" (@translateTab.start)=\\\"_onTranslateTabStarted($event)\\\" (@translateTab.done)=\\\"_onTranslateTabComplete($event)\\\"><ng-template cdkPortalHost></ng-template></div>\",\n styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"],\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', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabBody.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabBody.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n '_onCentering': [{ type: Output },],\n '_onCentered': [{ type: Output },],\n '_content': [{ type: Input, args: ['content',] },],\n 'position': [{ type: Input, args: ['position',] },],\n 'origin': [{ type: Input, args: ['origin',] },],\n };\n return MatTabBody;\n}());\n\n/**\n * Used to generate unique ID's for each tab component\n */\nvar nextId = 0;\n/**\n * A simple change event emitted on focus or selection changes.\n */\nvar MatTabChangeEvent = (function () {\n function MatTabChangeEvent() {\n }\n return MatTabChangeEvent;\n}());\n/**\n * \\@docs-private\n */\nvar MatTabGroupBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabGroupBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabGroupBase;\n}());\nvar _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\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 */\nvar MatTabGroup = (function (_super) {\n __extends(MatTabGroup, _super);\n /**\n * @param {?} _renderer\n * @param {?} elementRef\n * @param {?} _changeDetectorRef\n */\n function MatTabGroup(_renderer, elementRef, _changeDetectorRef) {\n var _this = _super.call(this, _renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether this component has been initialized.\n */\n _this._isInitialized = false;\n /**\n * The tab index that should be selected after the content has been checked.\n */\n _this._indexToSelect = 0;\n /**\n * Snapshot of the height of the tab body wrapper before another tab is activated.\n */\n _this._tabBodyWrapperHeight = 0;\n /**\n * Subscription to tabs being added/removed.\n */\n _this._tabsSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the tab labels.\n */\n _this._tabLabelSubscription = Subscription.EMPTY;\n _this._dynamicHeight = false;\n _this._selectedIndex = null;\n /**\n * Position of the tab header.\n */\n _this.headerPosition = 'above';\n /**\n * Output to enable support for two-way binding on `[(selectedIndex)]`\n */\n _this.selectedIndexChange = new EventEmitter();\n /**\n * Event emitted when focus has changed within a tab group.\n */\n _this.focusChange = new EventEmitter();\n /**\n * Event emitted when the tab selection has changed.\n */\n _this.selectedTabChange = new EventEmitter(true);\n /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n */\n _this.selectChange = _this.selectedTabChange;\n _this._groupId = nextId++;\n return _this;\n }\n Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n /**\n * Whether the tab group should grow to the size of the active tab.\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"_dynamicHeightDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"selectedIndex\", {\n /**\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * The index of the active tab.\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._indexToSelect = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab group.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\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 * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentChecked = function () {\n var _this = this;\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 var /** @type {?} */ indexToSelect = this._indexToSelect =\n Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0));\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 var /** @type {?} */ 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(function () { return _this.selectedIndexChange.emit(indexToSelect); });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach(function (tab, index) {\n tab.position = index - indexToSelect;\n tab.isActive = index === indexToSelect;\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 if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._subscribeToTabLabels();\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(function () {\n _this._subscribeToTabLabels();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngOnDestroy = function () {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n };\n /**\n * Waits one frame for the view to update, then updates the ink bar\n * Note: This must be run outside of the zone or it will create an infinite change detection loop.\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterViewChecked = function () {\n this._isInitialized = true;\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._focusChanged = function (index) {\n this.focusChange.emit(this._createChangeEvent(index));\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._createChangeEvent = function (index) {\n var /** @type {?} */ 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 * 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 * @return {?}\n */\n MatTabGroup.prototype._subscribeToTabLabels = function () {\n var _this = this;\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge.apply(void 0, this._tabs.map(function (tab) { return tab._disableChange; }).concat(this._tabs.map(function (tab) { return tab._labelChange; }))).subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * Returns a unique id for each tab label element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabLabelId = function (i) {\n return \"mat-tab-label-\" + this._groupId + \"-\" + i;\n };\n /**\n * Returns a unique id for each tab content element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabContentId = function (i) {\n return \"mat-tab-content-\" + this._groupId + \"-\" + i;\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 * @param {?} tabHeight\n * @return {?}\n */\n MatTabGroup.prototype._setTabBodyWrapperHeight = function (tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', this._tabBodyWrapperHeight + 'px');\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 this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', tabHeight + 'px');\n }\n };\n /**\n * Removes the height of the tab body wrapper.\n * @return {?}\n */\n MatTabGroup.prototype._removeTabBodyWrapperHeight = function () {\n this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', '');\n };\n MatTabGroup.decorators = [\n { type: Component, args: [{selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n template: \"<mat-tab-header #tabHeader [selectedIndex]=\\\"selectedIndex\\\" [disableRipple]=\\\"disableRipple\\\" (indexFocused)=\\\"_focusChanged($event)\\\" (selectFocusedIndex)=\\\"selectedIndex = $event\\\"><div class=\\\"mat-tab-label\\\" role=\\\"tab\\\" matTabLabelWrapper mat-ripple *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabLabelId(i)\\\" [tabIndex]=\\\"selectedIndex == i ? 0 : -1\\\" [attr.aria-controls]=\\\"_getTabContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [class.mat-tab-label-active]=\\\"selectedIndex == i\\\" [disabled]=\\\"tab.disabled\\\" [matRippleDisabled]=\\\"disableRipple\\\" (click)=\\\"tabHeader.focusIndex = selectedIndex = i\\\"><ng-template [ngIf]=\\\"tab.templateLabel\\\"><ng-template [cdkPortalHost]=\\\"tab.templateLabel\\\"></ng-template></ng-template><ng-template [ngIf]=\\\"!tab.templateLabel\\\">{{tab.textLabel}}</ng-template></div></mat-tab-header><div class=\\\"mat-tab-body-wrapper\\\" #tabBodyWrapper><mat-tab-body role=\\\"tabpanel\\\" *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabContentId(i)\\\" [attr.aria-labelledby]=\\\"_getTabLabelId(i)\\\" [class.mat-tab-body-active]=\\\"selectedIndex == i\\\" [content]=\\\"tab.content\\\" [position]=\\\"tab.position\\\" [origin]=\\\"tab.origin\\\" (_onCentered)=\\\"_removeTabBodyWrapperHeight()\\\" (_onCentering)=\\\"_setTabBodyWrapperHeight($event)\\\"></mat-tab-body></div>\",\n styles: [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{padding:0 12px}}@media (max-width:960px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs] .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatTabGroup.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatTabGroup.propDecorators = {\n '_tabs': [{ type: ContentChildren, args: [MatTab,] },],\n '_tabBodyWrapper': [{ type: ViewChild, args: ['tabBodyWrapper',] },],\n 'dynamicHeight': [{ type: Input },],\n '_dynamicHeightDeprecated': [{ type: Input, args: ['mat-dynamic-height',] },],\n 'selectedIndex': [{ type: Input },],\n 'headerPosition': [{ type: Input },],\n 'backgroundColor': [{ type: Input },],\n 'selectedIndexChange': [{ type: Output },],\n 'focusChange': [{ type: Output },],\n 'selectedTabChange': [{ type: Output },],\n 'selectChange': [{ type: Output },],\n };\n return MatTabGroup;\n}(_MatTabGroupMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatTabLabelWrapperBase = (function () {\n function MatTabLabelWrapperBase() {\n }\n return MatTabLabelWrapperBase;\n}());\nvar _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase);\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * \\@docs-private\n */\nvar MatTabLabelWrapper = (function (_super) {\n __extends(MatTabLabelWrapper, _super);\n /**\n * @param {?} elementRef\n */\n function MatTabLabelWrapper(elementRef) {\n var _this = _super.call(this) || this;\n _this.elementRef = elementRef;\n return _this;\n }\n /**\n * Sets focus on the wrapper element\n * @return {?}\n */\n MatTabLabelWrapper.prototype.focus = function () {\n this.elementRef.nativeElement.focus();\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetLeft = function () {\n return this.elementRef.nativeElement.offsetLeft;\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetWidth = function () {\n return this.elementRef.nativeElement.offsetWidth;\n };\n MatTabLabelWrapper.decorators = [\n { type: Directive, args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabelWrapper.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatTabLabelWrapper;\n}(_MatTabLabelWrapperMixinBase));\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 */\nvar EXAGGERATED_OVERSCROLL = 60;\n/**\n * \\@docs-private\n */\nvar MatTabHeaderBase = (function () {\n function MatTabHeaderBase() {\n }\n return MatTabHeaderBase;\n}());\nvar _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\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 */\nvar MatTabHeader = (function (_super) {\n __extends(MatTabHeader, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n * @param {?} _dir\n */\n function MatTabHeader(_elementRef, _renderer, _changeDetectorRef, _viewportRuler, _dir) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._renderer = _renderer;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n _this._dir = _dir;\n /**\n * The tab index that is focused.\n */\n _this._focusIndex = 0;\n /**\n * The distance in pixels that the tab labels should be translated to the left.\n */\n _this._scrollDistance = 0;\n /**\n * Whether the header should scroll to the selected index after the view has been checked.\n */\n _this._selectedIndexChanged = false;\n /**\n * Combines listeners that will re-align the ink bar whenever they're invoked.\n */\n _this._realignInkBar = Subscription.EMPTY;\n /**\n * Whether the controls for pagination should be displayed\n */\n _this._showPaginationControls = false;\n /**\n * Whether the tab list can be scrolled more towards the end of the tab label list.\n */\n _this._disableScrollAfter = true;\n /**\n * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n */\n _this._disableScrollBefore = true;\n _this._selectedIndex = 0;\n /**\n * Event emitted when the option is selected.\n */\n _this.selectFocusedIndex = new EventEmitter();\n /**\n * Event emitted when a label is focused.\n */\n _this.indexFocused = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n /**\n * The index of the active tab.\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selectedIndexChanged = this._selectedIndex != value;\n this._selectedIndex = value;\n this._focusIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentChecked = function () {\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 // 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 // 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 * @param {?} event\n * @return {?}\n */\n MatTabHeader.prototype._handleKeydown = function (event) {\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 * Aligns the ink bar to the selected tab on load.\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentInit = function () {\n var _this = this;\n var /** @type {?} */ dirChange = this._dir ? this._dir.change : of(null);\n var /** @type {?} */ resize = this._viewportRuler.change(150);\n this._realignInkBar = startWith.call(merge(dirChange, resize), null).subscribe(function () {\n _this._updatePagination();\n _this._alignInkBarToSelectedTab();\n });\n };\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngOnDestroy = function () {\n this._realignInkBar.unsubscribe();\n };\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n * @return {?}\n */\n MatTabHeader.prototype._onContentChanges = function () {\n this._updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Updating the view whether pagination should be enabled or not\n * @return {?}\n */\n MatTabHeader.prototype._updatePagination = function () {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n };\n Object.defineProperty(MatTabHeader.prototype, \"focusIndex\", {\n /**\n * Tracks which element has focus; used for keyboard navigation\n * @return {?}\n */\n get: function () { return this._focusIndex; },\n /**\n * When the focus index is set, we must manually send focus to the correct label\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (!this._isValidIndex(value) || this._focusIndex == value) {\n return;\n }\n this._focusIndex = value;\n this.indexFocused.emit(value);\n this._setTabFocus(value);\n },\n enumerable: true,\n configurable: true\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 * @param {?} index\n * @return {?}\n */\n MatTabHeader.prototype._isValidIndex = function (index) {\n if (!this._labelWrappers) {\n return true;\n }\n var /** @type {?} */ tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;\n return !!tab && !tab.disabled;\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 * @param {?} tabIndex\n * @return {?}\n */\n MatTabHeader.prototype._setTabFocus = function (tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers && this._labelWrappers.length) {\n this._labelWrappers.toArray()[tabIndex].focus();\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 var /** @type {?} */ containerEl = this._tabListContainer.nativeElement;\n var /** @type {?} */ dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\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 * @param {?} offset\n * @return {?}\n */\n MatTabHeader.prototype._moveFocus = function (offset) {\n if (this._labelWrappers) {\n var /** @type {?} */ tabs = this._labelWrappers.toArray();\n for (var /** @type {?} */ 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 * @return {?}\n */\n MatTabHeader.prototype._focusNextTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? 1 : -1);\n };\n /**\n * Decrement the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusPreviousTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? -1 : 1);\n };\n /**\n * The layout direction of the containing app.\n * @return {?}\n */\n MatTabHeader.prototype._getLayoutDirection = function () {\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 * @return {?}\n */\n MatTabHeader.prototype._updateTabScrollPosition = function () {\n var /** @type {?} */ scrollDistance = this.scrollDistance;\n var /** @type {?} */ translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', \"translate3d(\" + translateX + \"px, 0, 0)\");\n };\n Object.defineProperty(MatTabHeader.prototype, \"scrollDistance\", {\n /**\n * @return {?}\n */\n get: function () { return this._scrollDistance; },\n /**\n * Sets the distance in pixels that the tab header should be transformed in the X-axis.\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\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 enumerable: true,\n configurable: true\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 * @param {?} scrollDir\n * @return {?}\n */\n MatTabHeader.prototype._scrollHeader = function (scrollDir) {\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\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 * 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 * @param {?} labelIndex\n * @return {?}\n */\n MatTabHeader.prototype._scrollToLabel = function (labelIndex) {\n var /** @type {?} */ selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n var /** @type {?} */ labelBeforePos, /** @type {?} */ labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = selectedLabel.getOffsetLeft();\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n }\n else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\n }\n var /** @type {?} */ beforeVisiblePos = this.scrollDistance;\n var /** @type {?} */ afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\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 * 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 * @return {?}\n */\n MatTabHeader.prototype._checkPaginationEnabled = function () {\n var /** @type {?} */ isEnabled = this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\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 * @return {?}\n */\n MatTabHeader.prototype._checkScrollingControls = function () {\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 * 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 * @return {?}\n */\n MatTabHeader.prototype._getMaxScrollDistance = function () {\n var /** @type {?} */ lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n var /** @type {?} */ 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 * @return {?}\n */\n MatTabHeader.prototype._alignInkBarToSelectedTab = function () {\n var /** @type {?} */ selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n null;\n this._inkBar.alignToElement(selectedLabelWrapper);\n };\n MatTabHeader.decorators = [\n { type: Component, args: [{selector: 'mat-tab-header',\n template: \"<div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollBefore || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollBefore\\\" (click)=\\\"_scrollHeader('before')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div><div class=\\\"mat-tab-label-container\\\" #tabListContainer (keydown)=\\\"_handleKeydown($event)\\\"><div class=\\\"mat-tab-list\\\" #tabList role=\\\"tablist\\\" (cdkObserveContent)=\\\"_onContentChanges()\\\"><div class=\\\"mat-tab-labels\\\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollAfter || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollAfter\\\" (click)=\\\"_scrollHeader('after')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div>\",\n styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatTabHeader.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabHeader.propDecorators = {\n '_labelWrappers': [{ type: ContentChildren, args: [MatTabLabelWrapper,] },],\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabListContainer': [{ type: ViewChild, args: ['tabListContainer',] },],\n '_tabList': [{ type: ViewChild, args: ['tabList',] },],\n 'selectedIndex': [{ type: Input },],\n 'selectFocusedIndex': [{ type: Output },],\n 'indexFocused': [{ type: Output },],\n };\n return MatTabHeader;\n}(_MatTabHeaderMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatTabNavBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabNavBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabNavBase;\n}());\nvar _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nvar MatTabNav = (function (_super) {\n __extends(MatTabNav, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _dir\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n */\n function MatTabNav(renderer, elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._dir = _dir;\n _this._ngZone = _ngZone;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n /**\n * Subject that emits when the component has been destroyed.\n */\n _this._onDestroy = new Subject();\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(MatTabNav.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab nav.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabNav.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled for all links or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setLinkDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Notifies the component that the active link has been changed.\n * @param {?} element\n * @return {?}\n */\n MatTabNav.prototype.updateActiveLink = function (element) {\n this._activeLinkChanged = this._activeLinkElement != element;\n this._activeLinkElement = element;\n if (this._activeLinkChanged) {\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n var /** @type {?} */ dirChange = _this._dir ? _this._dir.change : of(null);\n return takeUntil.call(merge(dirChange, _this._viewportRuler.change(10)), _this._onDestroy)\n .subscribe(function () { return _this._alignInkBar(); });\n });\n this._setLinkDisableRipple();\n };\n /**\n * Checks if the active link has been changed and, if so, will update the ink bar.\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentChecked = function () {\n if (this._activeLinkChanged) {\n this._alignInkBar();\n this._activeLinkChanged = false;\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngOnDestroy = function () {\n this._onDestroy.next();\n this._onDestroy.complete();\n };\n /**\n * Aligns the ink bar to the active link.\n * @return {?}\n */\n MatTabNav.prototype._alignInkBar = function () {\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 * @return {?}\n */\n MatTabNav.prototype._setLinkDisableRipple = function () {\n var _this = this;\n if (this._tabLinks) {\n this._tabLinks.forEach(function (link) { return link.disableRipple = _this.disableRipple; });\n }\n };\n MatTabNav.decorators = [\n { type: Component, args: [{selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color', 'disableRipple'],\n template: \"<div class=\\\"mat-tab-links\\\" (cdkObserveContent)=\\\"_alignInkBar()\\\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>\",\n styles: [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden}.mat-tab-link:focus{outline:0;opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}\"],\n host: { 'class': 'mat-tab-nav-bar' },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabNav.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n ]; };\n MatTabNav.propDecorators = {\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabLinks': [{ type: ContentChildren, args: [forwardRef(function () { return MatTabLink; }), { descendants: true },] },],\n 'backgroundColor': [{ type: Input },],\n };\n return MatTabNav;\n}(_MatTabNavMixinBase));\nvar MatTabLinkBase = (function () {\n function MatTabLinkBase() {\n }\n return MatTabLinkBase;\n}());\nvar _MatTabLinkMixinBase = mixinDisabled(MatTabLinkBase);\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nvar MatTabLink = (function (_super) {\n __extends(MatTabLink, _super);\n /**\n * @param {?} _tabNavBar\n * @param {?} _elementRef\n * @param {?} ngZone\n * @param {?} platform\n * @param {?} globalOptions\n */\n function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions) {\n var _this = _super.call(this) || this;\n _this._tabNavBar = _tabNavBar;\n _this._elementRef = _elementRef;\n /**\n * Whether the tab link is active or not.\n */\n _this._isActive = false;\n /**\n * Whether the ripples for this tab should be disabled or not.\n */\n _this._disableRipple = false;\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 return _this;\n }\n Object.defineProperty(MatTabLink.prototype, \"active\", {\n /**\n * Whether the link is active.\n * @return {?}\n */\n get: function () { return this._isActive; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._isActive = value;\n if (value) {\n this._tabNavBar.updateActiveLink(this._elementRef);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = value;\n this._tabLinkRipple.disabled = this.disableRipple;\n this._tabLinkRipple._updateRippleRenderer();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"tabIndex\", {\n /**\n * \\@docs-private\n * @return {?}\n */\n get: function () {\n return this.disabled ? -1 : 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabLink.prototype.ngOnDestroy = function () {\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 MatTabLink.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled'],\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 },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLink.ctorParameters = function () { return [\n { type: MatTabNav, },\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n ]; };\n MatTabLink.propDecorators = {\n 'active': [{ type: Input },],\n };\n return MatTabLink;\n}(_MatTabLinkMixinBase));\n\nvar MatTabsModule = (function () {\n function MatTabsModule() {\n }\n MatTabsModule.decorators = [\n { type: NgModule, args: [{\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 MatTabHeader\n ],\n providers: [VIEWPORT_RULER_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabsModule.ctorParameters = function () { return []; };\n return MatTabsModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatInkBar, MatTabBody, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, MatTabBase as ɵe23, _MatTabMixinBase as ɵf23, MatTabHeaderBase as ɵa23, _MatTabHeaderMixinBase as ɵb23, MatTabLabelWrapperBase as ɵc23, _MatTabLabelWrapperMixinBase as ɵd23, MatTabLinkBase as ɵi23, MatTabNavBase as ɵg23, _MatTabLinkMixinBase as ɵj23, _MatTabNavMixinBase as ɵh23 };\n//# sourceMappingURL=tabs.es5.js.map\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 */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, NgModule, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\n\nvar MatToolbarRow = (function () {\n function MatToolbarRow() {\n }\n MatToolbarRow.decorators = [\n { type: Directive, args: [{\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: { 'class': 'mat-toolbar-row' },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbarRow.ctorParameters = function () { return []; };\n return MatToolbarRow;\n}());\n/**\n * \\@docs-private\n */\nvar MatToolbarBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatToolbarBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatToolbarBase;\n}());\nvar _MatToolbarMixinBase = mixinColor(MatToolbarBase);\nvar MatToolbar = (function (_super) {\n __extends(MatToolbar, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n */\n function MatToolbar(renderer, elementRef) {\n return _super.call(this, renderer, elementRef) || this;\n }\n MatToolbar.decorators = [\n { type: Component, args: [{selector: 'mat-toolbar',\n exportAs: 'matToolbar',\n template: \"<div class=\\\"mat-toolbar-layout\\\"><mat-toolbar-row><ng-content></ng-content></mat-toolbar-row><ng-content select=\\\"mat-toolbar-row\\\"></ng-content></div>\",\n styles: [\".mat-toolbar{display:flex;box-sizing:border-box;width:100%;padding:0 16px;flex-direction:column}.mat-toolbar .mat-toolbar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar{min-height:64px}.mat-toolbar-row{height:64px}@media (max-width:600px){.mat-toolbar{min-height:56px}.mat-toolbar-row{height:56px}}\"],\n inputs: ['color'],\n host: {\n 'class': 'mat-toolbar',\n 'role': 'toolbar'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n return MatToolbar;\n}(_MatToolbarMixinBase));\n\nvar MatToolbarModule = (function () {\n function MatToolbarModule() {\n }\n MatToolbarModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbarModule.ctorParameters = function () { return []; };\n return MatToolbarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatToolbarModule, MatToolbarRow, MatToolbarBase, _MatToolbarMixinBase, MatToolbar };\n//# sourceMappingURL=toolbar.es5.js.map\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 */\nimport { Version } from '@angular/core';\nimport { AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, getMatAutocompleteMissingPanelError } from '@angular/material/autocomplete';\nimport { MatAnchor, MatButton, MatButtonBase, MatButtonCssMatStyler, MatButtonModule, MatFab, MatIconButtonCssMatStyler, MatMiniFab, MatRaisedButtonCssMatStyler, _MatButtonMixinBase } from '@angular/material/button';\nimport { MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupBase, MatButtonToggleGroupMultiple, MatButtonToggleModule, _MatButtonToggleGroupMixinBase } from '@angular/material/button-toggle';\nimport { MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage } from '@angular/material/card';\nimport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckbox, MatCheckboxBase, MatCheckboxChange, MatCheckboxModule, MatCheckboxRequiredValidator, TransitionCheckState, _MatCheckboxMixinBase, _MatCheckboxRequiredValidator } from '@angular/material/checkbox';\nimport { MatBasicChip, MatChip, MatChipBase, MatChipInput, MatChipList, MatChipListChange, MatChipRemove, MatChipSelectionChange, MatChipsModule, _MatChipMixinBase } from '@angular/material/chips';\nimport { APR, AUG, AnimationCurves, AnimationDurations, CompatibilityModule, DEC, DateAdapter, ErrorStateMatcher, FEB, GestureConfig, JAN, JUL, JUN, MAR, MATERIAL_COMPATIBILITY_MODE, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, MAT_ELEMENTS_SELECTOR, MAT_NATIVE_DATE_FORMATS, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MAT_RIPPLE_GLOBAL_OPTIONS, MAY, MD_ELEMENTS_SELECTOR, MatCommonModule, MatLine, MatLineModule, MatLineSetter, MatNativeDateModule, MatOptgroup, MatOptgroupBase, MatOption, MatOptionModule, MatOptionSelectionChange, MatPrefixRejector, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleModule, MdPrefixRejector, NOV, NativeDateAdapter, NativeDateModule, NoConflictStyleCompatibilityMode, OCT, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, RippleRef, RippleState, SEP, ShowOnDirtyErrorStateMatcher, _MatOptgroupMixinBase, applyCssTransform, extendObject, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MatCalendar, MatCalendarBody, MatCalendarCell, MatDatepicker, MatDatepickerContent, MatDatepickerInput, MatDatepickerInputEvent, MatDatepickerIntl, MatDatepickerModule, MatDatepickerToggle, MatMonthView, MatYearView, coerceDateProperty } from '@angular/material/datepicker';\nimport { MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, throwMatDialogContentAlreadyAttachedError } from '@angular/material/dialog';\nimport { AccordionItem, CdkAccordion, MatAccordion, MatExpansionModule, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion';\nimport { MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatPlaceholder, MatPrefix, MatSuffix, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError } from '@angular/material/form-field';\nimport { MatGridList, MatGridListModule, MatGridTile } from '@angular/material/grid-list';\nimport { ICON_REGISTRY_PROVIDER, ICON_REGISTRY_PROVIDER_FACTORY, MatIcon, MatIconBase, MatIconModule, MatIconRegistry, _MatIconMixinBase, getMatIconFailedToSanitizeError, getMatIconNameNotFoundError, getMatIconNoHttpProviderError } from '@angular/material/icon';\nimport { MatInput, MatInputModule, MatTextareaAutosize, getMatInputUnsupportedTypeError } from '@angular/material/input';\nimport { MatDividerCssMatStyler, MatList, MatListAvatarCssMatStyler, MatListBase, MatListCssMatStyler, MatListDivider, MatListIconCssMatStyler, MatListItem, MatListItemBase, MatListModule, MatListOption, MatListOptionBase, MatListSubheaderCssMatStyler, MatNavListCssMatStyler, MatSelectionList, MatSelectionListBase, _MatListItemMixinBase, _MatListMixinBase, _MatListOptionMixinBase, _MatSelectionListMixinBase } from '@angular/material/list';\nimport { MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger, fadeInItems, transformMenu } from '@angular/material/menu';\nimport { MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner, MatProgressSpinnerBase, MatProgressSpinnerModule, MatSpinner, _MatProgressSpinnerMixinBase } from '@angular/material/progress-spinner';\nimport { MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioButton, MatRadioButtonBase, MatRadioChange, MatRadioGroup, MatRadioGroupBase, MatRadioModule, _MatRadioButtonMixinBase, _MatRadioGroupMixinBase } from '@angular/material/radio';\nimport { MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MatSelect, MatSelectBase, MatSelectChange, MatSelectModule, MatSelectTrigger, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, _MatSelectMixinBase, fadeInContent, transformPanel } from '@angular/material/select';\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent, MatDrawerToggleResult, MatSidenav, MatSidenavContainer, MatSidenavContent, MatSidenavModule, throwMatDuplicatedDrawerError } from '@angular/material/sidenav';\nimport { MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggle, MatSlideToggleBase, MatSlideToggleChange, MatSlideToggleModule, _MatSlideToggleMixinBase } from '@angular/material/slide-toggle';\nimport { MAT_SLIDER_VALUE_ACCESSOR, MatSlider, MatSliderBase, MatSliderChange, MatSliderModule, _MatSliderMixinBase } from '@angular/material/slider';\nimport { HIDE_ANIMATION, MAT_SNACK_BAR_DATA, MatSnackBar, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarModule, MatSnackBarRef, SHOW_ANIMATION, SimpleSnackBar } from '@angular/material/snack-bar';\nimport { MatSort, MatSortHeader, MatSortHeaderIntl, MatSortModule } from '@angular/material/sort';\nimport { MatHorizontalStepper, MatStep, MatStepHeader, MatStepLabel, MatStepper, MatStepperIntl, MatStepperModule, MatStepperNext, MatStepperPrevious, MatVerticalStepper, _MatStep, _MatStepLabel, _MatStepper, _MatStepperNext, _MatStepperPrevious } from '@angular/material/stepper';\nimport { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule, _MatCdkRowDef, _MatCell, _MatCellDef, _MatColumnDef, _MatHeaderCell, _MatHeaderCellDef, _MatHeaderRow, _MatHeaderRowDef, _MatRow, _MatTable } from '@angular/material/table';\nimport { MatInkBar, MatTab, MatTabBody, MatTabChangeEvent, MatTabGroup, MatTabGroupBase, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabsModule, _MatTabGroupMixinBase } from '@angular/material/tabs';\nimport { MatToolbar, MatToolbarBase, MatToolbarModule, MatToolbarRow, _MatToolbarMixinBase } from '@angular/material/toolbar';\nimport { MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MatTooltip, MatTooltipModule, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, TOUCHEND_HIDE_DELAY, TooltipComponent, getMatTooltipInvalidPositionError } from '@angular/material/tooltip';\n\n/**\n * Current version of Angular Material.\n */\nvar VERSION = new Version('0.0.0-PLACEHOLDER');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { VERSION, MatAutocompleteSelectedEvent, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger, MatButtonModule, MatButtonCssMatStyler, MatRaisedButtonCssMatStyler, MatIconButtonCssMatStyler, MatFab, MatMiniFab, MatButtonBase, _MatButtonMixinBase, MatButton, MatAnchor, MatButtonToggleGroupBase, _MatButtonToggleGroupMixinBase, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle, MatButtonToggleModule, MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardImage, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardXlImage, MatCardAvatar, MatCard, MatCardHeader, MatCardTitleGroup, MatCardModule, MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, TransitionCheckState, MatCheckboxChange, MatCheckboxBase, _MatCheckboxMixinBase, MatCheckbox, MatCheckboxModule, _MatCheckboxRequiredValidator, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckboxRequiredValidator, MatChipsModule, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatBasicChip, MatChip, MatChipRemove, MatChipInput, AnimationCurves, AnimationDurations, MatCommonModule, MATERIAL_SANITY_CHECKS, mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MATERIAL_COMPATIBILITY_MODE, MAT_ELEMENTS_SELECTOR, MD_ELEMENTS_SELECTOR, MatPrefixRejector, MdPrefixRejector, CompatibilityModule, NoConflictStyleCompatibilityMode, NativeDateModule, MatNativeDateModule, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter, MAT_NATIVE_DATE_FORMATS, ShowOnDirtyErrorStateMatcher, ErrorStateMatcher, GestureConfig, MatLine, MatLineSetter, MatLineModule, MatOptionModule, MatOptionSelectionChange, MatOption, MatOptgroupBase, _MatOptgroupMixinBase, MatOptgroup, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRef, RippleState, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, MatRippleModule, MatPseudoCheckboxModule, MatPseudoCheckbox, applyCssTransform, extendObject, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, MatDatepickerModule, MatCalendar, MatCalendarCell, MatCalendarBody, coerceDateProperty, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepickerContent, MatDatepicker, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, MatDatepickerInputEvent, MatDatepickerInput, MatDatepickerIntl, MatDatepickerToggle, MatMonthView, MatYearView, MatDialogModule, MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog, throwMatDialogContentAlreadyAttachedError, MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogConfig, MatDialogRef, CdkAccordion, MatAccordion, AccordionItem, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelDescription, MatExpansionPanelTitle, MatExpansionModule, MatFormFieldModule, MatError, MatFormField, MatFormFieldControl, getMatFormFieldPlaceholderConflictError, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, MatHint, MatPlaceholder, MatPrefix, MatSuffix, MatGridTile, MatGridListModule, MatGridList, MatIconModule, MatIconBase, _MatIconMixinBase, MatIcon, getMatIconNameNotFoundError, getMatIconNoHttpProviderError, getMatIconFailedToSanitizeError, MatIconRegistry, ICON_REGISTRY_PROVIDER_FACTORY, ICON_REGISTRY_PROVIDER, MatInputModule, MatTextareaAutosize, MatInput, getMatInputUnsupportedTypeError, MatListModule, MatListBase, _MatListMixinBase, MatListItemBase, _MatListItemMixinBase, MatListDivider, MatList, MatListCssMatStyler, MatNavListCssMatStyler, MatDividerCssMatStyler, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatListItem, MatSelectionListBase, _MatSelectionListMixinBase, MatListOptionBase, _MatListOptionMixinBase, MatListOption, MatSelectionList, MAT_MENU_SCROLL_STRATEGY, fadeInItems, transformMenu, MatMenuModule, MatMenu, MAT_MENU_DEFAULT_OPTIONS, MatMenuItem, MatMenuTrigger, MatPaginatorModule, PageEvent, MatPaginator, MatPaginatorIntl, MatProgressBarModule, MatProgressBar, MatProgressSpinnerModule, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MatProgressSpinner, MatSpinner, MatRadioModule, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioChange, MatRadioGroupBase, _MatRadioGroupMixinBase, MatRadioGroup, MatRadioButtonBase, _MatRadioButtonMixinBase, MatRadioButton, MatSelectModule, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, transformPanel, fadeInContent, MatSidenavModule, throwMatDuplicatedDrawerError, MatDrawerToggleResult, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer, MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle, MatSliderModule, MAT_SLIDER_VALUE_ACCESSOR, MatSliderChange, MatSliderBase, _MatSliderMixinBase, MatSlider, MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar, MatSortModule, MatSortHeader, MatSortHeaderIntl, MatSort, MatStepperModule, _MatStepLabel, MatStepLabel, _MatStep, _MatStepper, MatStep, MatStepper, MatHorizontalStepper, MatVerticalStepper, _MatStepperNext, _MatStepperPrevious, MatStepperNext, MatStepperPrevious, MatStepHeader, MatStepperIntl, MatTableModule, _MatCellDef, _MatHeaderCellDef, _MatColumnDef, _MatHeaderCell, _MatCell, MatCellDef, MatHeaderCellDef, MatColumnDef, MatHeaderCell, MatCell, _MatTable, MatTable, _MatHeaderRowDef, _MatCdkRowDef, _MatHeaderRow, _MatRow, MatHeaderRowDef, MatRowDef, MatHeaderRow, MatRow, MatInkBar, MatTabBody, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, MatToolbarModule, MatToolbarRow, MatToolbarBase, _MatToolbarMixinBase, MatToolbar, MatTooltipModule, TOUCHEND_HIDE_DELAY, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, getMatTooltipInvalidPositionError, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MatTooltip, TooltipComponent };\n//# sourceMappingURL=material.es5.js.map\n"],"names":["InjectionToken","Directive","NgModule","isDevMode","BidiModule","Optional","Inject","coerceBooleanProperty","LOCALE_ID","Subject","style","first","Injectable","HammerGestureConfig","delay","ElementRef","NgZone","Platform","Input","PlatformModule","Component","ViewEncapsulation","ChangeDetectionStrategy","EventEmitter","ENTER","SPACE","ChangeDetectorRef","Output","CommonModule","startWith","fromEvent","trigger","state","transition","animate","Renderer2","ViewChild","ContentChild","ContentChildren","ActiveDescendantKeyManager","TemplateRef","Overlay","NG_VALUE_ACCESSOR","forwardRef","merge","of","RxChain","filter","ESCAPE","UP_ARROW","DOWN_ARROW","TAB","doOperator","switchMap","TemplatePortal","OverlayConfig","ViewContainerRef","Directionality","Host","DOCUMENT","OverlayModule","Self","FocusMonitor","A11yModule","_uniqueIdCounter","UniqueSelectionDispatcher","UNIQUE_SELECTION_DISPATCHER_PROVIDER","nextUniqueId","Attribute","CheckboxRequiredValidator","NG_VALIDATORS","ObserversModule","DELETE","BACKSPACE","Subscription","FocusKeyManager","SelectionModel","RIGHT_ARROW","LEFT_ARROW","NgForm","FormGroupDirective","NgControl","FocusTrapFactory","PortalHostDirective","BasePortalHost","defer","ComponentPortal","PortalInjector","Injector","Location","SkipSelf","PortalModule","SecurityContext","map","_throw","catchOperator","forkJoin","Observable","finallyOperator","share","Http","DomSanitizer","HOME","END","PAGE_UP","PAGE_DOWN","first$1","Validators","getSupportedInputTypes","isFakeMousedownFromScreenReader","ViewportRuler","ConnectedOverlayDirective","ScrollDispatcher","AriaDescriber","ARIA_DESCRIBER_PROVIDER","VIEWPORT_RULER_PROVIDER","takeUntil","coerceNumberProperty","ScrollDispatchModule","HAMMER_GESTURE_CONFIG","_applyConfigDefaults","LiveAnnouncer","LIVE_ANNOUNCER_PROVIDER","keyframes","CdkColumnDef","CdkStepLabel","CdkStep","CdkStepper","ViewChildren","CdkStepperNext","CdkStepperPrevious","CdkStepperModule","CdkTable","CDK_TABLE_TEMPLATE","CdkCellDef","CdkHeaderCellDef","CdkHeaderCell","CdkCell","CdkHeaderRowDef","CdkRowDef","CdkHeaderRow","CdkRow","CDK_ROW_TEMPLATE","CdkTableModule","TemplatePortalDirective","nextId","Version"],"mappings":"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"}
\No newline at end of file