{"version":3,"file":"material-paginator.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","material/core.es5.js","material/button.es5.js","material/form-field.es5.js","material/select.es5.js","material/tooltip.es5.js","material/paginator.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 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: \"\",\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 `` 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: \"
\",\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 { 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: \"
\",\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: \"
\",\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 { 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 `` 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: \"
{{hintLabel}}
\",\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 { 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: \"
 {{ triggerValue }}
\",\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: \"
{{message}}
\",\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: \"
{{_intl.itemsPerPageLabel}}
1\\\" class=\\\"mat-paginator-page-size-select\\\">{{pageSizeOption}}
{{pageSize}}
{{_intl.getRangeLabel(pageIndex, pageSize, length)}}
\",\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"],"names":["InjectionToken","Directive","NgModule","isDevMode","BidiModule","Optional","Inject","coerceBooleanProperty","Subject","style","first","Injectable","HammerGestureConfig","ElementRef","NgZone","Platform","Input","PlatformModule","Component","ViewEncapsulation","ChangeDetectionStrategy","EventEmitter","ENTER","SPACE","ChangeDetectorRef","Output","CommonModule","Self","forwardRef","Renderer2","FocusMonitor","A11yModule","nextUniqueId","nextUniqueId$1","startWith","fromEvent","trigger","state","transition","animate","ViewChild","ContentChild","ContentChildren","Overlay","Subscription","merge","SelectionModel","UP_ARROW","DOWN_ARROW","HOME","END","ActiveDescendantKeyManager","filter","ViewportRuler","Directionality","NgForm","FormGroupDirective","NgControl","Attribute","ConnectedOverlayDirective","OverlayModule","ESCAPE","ComponentPortal","OverlayConfig","ScrollDispatcher","ViewContainerRef","AriaDescriber","ARIA_DESCRIBER_PROVIDER"],"mappings":"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"}